<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های آراز شمس الدینلوی</title><link>https://virgool.ir/feed/@araz.shams</link><description>آراز شمس الدینلوی هستم و تقریبا 6 سال هستش توی زمینه فرانت اند فعالیت دارم. بیشتر تخصصم توی angular 2+ و react js هست و سابقه همکاری توی شرکت هایی مثل دیجیکالا یا شیپور رو دارم.</description><language>fa</language><pubDate>2026-11-11 02:25:25</pubDate><image><url>https://files.virgool.ir/upload/users/407361/avatar/nRsEcz.png</url><title>آراز شمس الدینلوی</title><link>https://virgool.ir/@araz.shams</link></image><item><title>تجربه مصاحبه های من بعد از مهاجرت</title><link>https://virgool.ir/@araz.shams/تجربه-مصاحبه-بعد-از-مهاجرت-vqenuwyap4wy</link><description>سلام دوستان، وقتتون بخیرحدود یک ماهه که برای پیدا کردن کار به ترکیه اومدم. از همون روز اول سعی کردم بازار جهانی و فرآیندهای استخدام رو بررسی کنم. تا امروز بیش از ۱۵۰ رزومه ارسال کردم، با شرکت‌ها و Recruiterهای مختلف صحبت کردم و تجربه‌های جالبی به دست آوردم که دوست دارم باهاتون به اشتراک بذارم.۱. AI دیگر یک مزیت نیست، یک انتظار است.منظورم استفاده از ابزارهایی مثل Cursor، Claude Code یا GitHub Copilot هست. تقریبا همه شرکت‌هایی که باهاشون صحبت کردم انتظار داشتن تجربه کار با این ابزارها رو داشته باشم. البته در آزمون‌ها و مصاحبه‌های فنی معمولا استفاده از AI ممنوعه و باید توانایی واقعی خودتون رو نشون بدین، اما بعد از استخدام خیلی از شرکت‌ها حتی برای شما اکانت تهیه می‌کنن تا از AI برای طراحی معماری، ریفکتور کردن، مستندسازی و افزایش کیفیت کد استفاده کنید. چیزی که چند بار شنیدم این بود: از AI به عنوان Pair Programmer استفاده کن، نه ابزاری برای نوشتن کل پروژه از صفر.۲. بازار کار هنوز زنده است.برخلاف چیزی که این روزها زیاد می‌شنویم، AI جای همه برنامه‌نویس‌ها رو نگرفته. حتی چند شرکت بدون اینکه من اپلای کرده باشم، بعد از دیدن پروفایلم درخواست ارسال رزومه دادن.اما چند نکته واقعا مهمه:حتما یک Portfolio آنلاین داشته باشید (Vercel، GitHub Pages یا هر سرویس مشابه).رزومه و پروفایل LinkedIn شما فوق‌العاده مهم هستند. Recruiterها قبل از تماس، پروفایل لینکدین رو بررسی می‌کنن.رزومه رو تک‌ستونه، ساده، ATS-Friendly و بدون عکس طراحی کنید.لینک GitHub، Portfolio، ایمیل و اطلاعات تماس رو حتما داخل رزومه قرار بدین.به نظر من رزومه کاملتون رو داخل پست‌های لینکدین منتشر نکنید. رزومه سرمایه حرفه‌ای شماست و بهتره فقط برای موقعیت‌های مناسب ارسال بشه.۳. شبکه ارتباطی از هر چیزی مهم‌تره.سعی کنید با Recruiterها، Engineering Managerها و Technical Leadها ارتباط بگیرید. آدم‌های مرتبط با حوزه کاری‌تون رو دنبال کنید، به درخواست‌های اتصال یادداشت کوتاه اضافه کنید و شبکه‌تون رو هدفمند بسازید. خیلی از فرصت‌ها قبل از اینکه آگهی بشن، از طریق همین ارتباطات پیدا می‌شن.۴. رقابت در Frontend بالاست.فرانت‌اند یکی از رقابتی‌ترین شاخه‌های برنامه‌نویسیه. اگر امکانش رو دارید، مهارت‌های Full Stack رو هم یاد بگیرید؛ اگر نه، روی تقویت رزومه، پروژه‌های شخصی، لینکدین و شبکه حرفه‌ای‌تون سرمایه‌گذاری کنید.و در آخر...ممکنه ۲۰۰ رزومه بفرستید و فقط چند پاسخ بگیرید، اما این طبیعی است. مهم اینه که ناامید نشید، یادگیری رو متوقف نکنید و هر روز یک قدم جلوتر برید.امیدوارم این تجربه برای کسی مفید باشه. اگر شما هم تجربه‌ای از بازار کار بین‌المللی دارید، خوشحال می‌شم در کامنت‌ها به اشتراک بذارید.</description><category>آراز شمس الدینلوی</category><author>آراز شمس الدینلوی</author><pubDate>Fri, 28 Aug 2026 14:12:21 +0330</pubDate></item><item><title>سوالات مصاحبه برای کتابخانه React.js</title><link>https://virgool.ir/JustReact/react-interview-questions-axkxtkyrenxs</link><description>ری اکت پر طرفدار ترین کتابخانه جاوا اسکریپتبا سلام خدمت دوستانری اکت پرطرفدارترین کتابخانه ری اکت هست و مطمئنا تخصص داشتن توی این کتابخونه میتونه موقعیت شغلی و حقوق شمارو تا چند برابر افزایش بده. کتابخانه ری اکت توسط فیسبوک در سال 2013 ارائه شد و با استقبال بی نظیر توسعه دهنده های جاوا اسکریپت قرار گرفت.توی مقاله قبلم راجع به سوالاتی که ممکن هست درباره فریمورک انگولار پرسیده بشه رو براتون نوشتم. توی این مقاله میخوام راجع به سوالاتی که ممکن است از کتابخانه ری اکت پرسیده بشه رو براتون مینویسم. توجه داشته باشید که بنده خلاصه ای از پاسخ ها رو مینویسم و در صورت لزوم حتما بیشتر جستجو کنید و اطلاعات خودتون رو توی اون زمینه بالا ببرید.خوب بیشتر از این شمارو منتظر نمیزارم بریم سراغ سوالات:1) چرا ری اکت کتابخونه هست و فریمورک نیست؟به این دلیل به ری اکت میگن کتابخونه چون هسته این کتابخونه شامل همه امکانات لازم برای ساختن یه وبسایت کامل رو نداره. مثلا روتر ری اکت رو باید به صورت جدا به کتابخونه اضافه کنید و ...2) کامپوننت چیست؟کامپوننت ها در واقعه تکه هایی از کد شما هستن که اجزای تشکیل دهنده صفحتون رو میسازن. با استفاده از کامپوننت شما هم نیاز به تکرار کد ندارید و هم کد خوانا تری دارید.3) ری کانسیلیشن (reconcilation) چیست؟ری اکت برای دوباره رندر کردن کد شما ساختاری را استفاده میکند که به صورت بهینه و در کمترین زمان ممکن این رندر شدن به پایان برسه. به این شیوه میگن reconcilation که توی خود سایت ری اکت میتونید دقیقا این ساختار رو مطالعه کنید4) ریداکس چیست؟ریداکس در یه استیت مرکزی اپلیکیشن شما هستش و همه کامپوننت های شما به این استیت دسترسی دارن.5) آیا با context api کار کردید و چه استفاده ای داره؟کانتکست api در واقع یه متغیر گلوبال هست و برای پاس دادن یه متغیر یا یک مقداری به child component ها استفاده میشه. با استفاده از این روش میتونید از ایراد prop drilling جلوگیری کنید.6) مشکل prop drilling رو توضیح بدید و بگین که چطوری میشه جلوگیری کرد ازش؟این ایراد زمانی پیش میاد که شما میخواید یه property رو به کامپوننت های بچه پاس بدید و توی این مسیر از یه سری کامپوننت رد میشه این پراپرتی های شما که هیچ استفاده ای ازش ندارن. به این ایراد میگن prop drilling و با استفاده از context api یا redux یا composition میتونید از این ایراد جلوگیری کنید.7) کامپوننت composition چیست و چه کارایی دارد؟شما میتونید چند کامپوننت رو با هم با ساختاری که خودتون میخواید ترکیب کنید و یه کامپوننت جدید ایجاد کنید و از اون توی قسمت های مختلف سایتتون استفاده کنید. به این ویژگی میگن component composition.8) چرا با وجود context api باز هم از redux استفاده میشه و فرق اینا چی هست؟توی خود ریداکس از ویژگی context استفاده شده اما این 2 ویژگی تفاوت هایی با هم دارن. کانتکست کاراییش برای زمانی هستش که شما میخواید یک مقدار رو به child component ها پاس بدید و مورد استفادش توی این موارد هست اما ریداکس هسته مرکزی دیتا های ذخیره شده شماست و همه کامپوننت ها همزمان به این دیتا دسترسی دارن. همچنین ریداکس یه سری middleware داره که امکانات بیشتری رو نسبت به context api در اختیار شما قرار میدن.9) ریداکس middleware چی هستن و چه استفاده ای دارن؟در واقع اینها یک واسط هستن برای استفاده شما از ریداکس که یه سری ویژگی رو در اختیار شما قرار میدن. دو تا از معروف ترین middleware هایی که در ریداکس استفاده میشه redux thunk و redux saga هستن. به طور مثال توی ریداکس تانک شما میتونید به جای دیتا یه فانکشن پاس بدید توی ریداکستون و ...10) فرق استیت و پراپ چی هستش؟استیت ها در واقع دیتای شما هستن و زمانی که به child component پاس داده میشن به عنوان پراپرتی قابل استفاده هستن و قابل تغییر نخواهند بود مگر استیتی که پاس داده شده تغییر کنه.11) ویژگی destruction و spread رو توضیح بدید.توی ویژگی destruction شما میتونید به یه پراپرتی از یه آبجکت بدون انجام هیچ عملیات اضافه دسترسی داشته باشید    به عنوان مثال شما یک شی دارید به اسم a با این فرمت:let a = {&#39;name&#39;: &#39;Araz&#39;, &#39;family&#39;: &#39;Shams&#39;};حالا شما میخواید به پراپرتی نیم دسترسی داشته باشید. این کار به سادگی با روش descruction قابل دسترسی هست&#34;let {name} = a;یا مثال زیر:var obj = {a: 1, b: 2, c: 3};var {a=5, b=5, d=5} = obj;خوب میرسیم به ویژگی spread. شما میتونی یه آرایه رو پخش کنید به صورتی که همه المان هارو جدا جدا بهشون دسترسی داشته باشید. معمولا برای پاس دادن پراپرتی ها یا کپی کردن آرایه و غیره استفاده میشه و معمولا با سه نقطه یا (...) نشون داده میشه مثلا مثال زیر برای کپی کردن استفاده میشه:let a = [1,2,3]&#39;let b = [...a];12) ویژگی rest و spread چه فرق هایی با هم دارن؟ویژگی spread رو توی سوال قبل گفتم اما ویژگی rest از همون spread استفاده میکنه توی تابع ها و شما هر چقدر بخواید میتونید آرگومان پاس بدید به تابع.13) توی ری اکت ما چند مدل کامپوننت داریم؟سه مدل داریم: functional component, class component, pure componentکلاس کامپوننت ها در واقع همون کامپوننت های اپ شما هستن که با ویژگی کلاس تعریف میشن. اما functional component ها در واقع همون کامپوننت های شما هستن که با تابع تعریف میشن و pure component ها برای سرعت بخشیدن به سایت شما انجام میشه که کامپوننت هایی که نیاز به ری رندر شدن زیاد ندارن و طی شرایط خاصی باید ری رندر بشن و به ازای هر ورودی همون خروجی رو میگیرن توی هر زمانی استفاده میشه.14) لایف سایکل های ری اکت رو توی کلاس کامپوننت ها نام ببرید:زمانی که شما یه کلاس کامپوننت میسازید یه سری تابع به صورت اتوماتیک صدا زده میشن که طی شرایط خاصی لازم میشن. اینجا این لایف سایکل هارو نام میبرم به ترتیب و مطالعش با خودتون:componentWillMount, componentDidMount, componentShouldUpdate, componentWillReceiveProps, componentUnmount15) مزیت functional component نسبت به class component ها چیست؟مزیت توابع نسبت به کلاس ها این هست که هم کد شما خوانا تر هست و هم قابلیت به اشتراک گذاشتن منطق رو توی کامپوننت های مختلف دارید بر خلاف کلاس کامپوننت ها.16) هوک چیه و چه استفاده هایی داره؟شما همون امکاناتی که توی کلاس کامپوننت ها دارید میتونید توی فانکشنال کامپوننت ها هم داشته باشید با استفاده از هوک ها. همچنین شما خودتون میتونی هوک اختصاصی خودتون رو بنویسید که بهش میگن custom hook که همون بحث به اشتراک گذاشتن منطق توی قسمت های مختلف هست.17) معروفترین هوک توی ری اکت رو نام ببرید به نظر شخصیتون و بگین چه استفاده هایی داره؟معروفترین هوک توی ری اکت هوک useEffect هست و لایف سایکل های component did mount و componentunmount رو براتون شبیه سازی میکنه. چیزی که توی این هوک مینویسید در واقع همون componentdidmount هست و چیزی که return میکنید همون componentunmount هست.18) ارگومان دومی که به useEffect پاس داده میشه چیه و چه ویژگی هایی داره؟ارگومان دوم در واقع همون وابستگی ها یا dependency های لایف سایکل useEffect هست و به شما میگه که به ازای تغییر چه ویژگی هایی باید این هوک دوباره اجرا بشه ... اگر یه آرایه خالی باشه یعنی یه بار فقط توی didmount کامپوننتون قابل اجراست19) چرا توی فانکشنال کامپوننت ها باید حتما react ایمپورت بشه وگرنه ارور میگیریم؟دلیلش این هستش که شما توی html که دارید رندر میگیرین از ویژگی React.createElement استفاده میکنید و نیاز هست حتما ایمپورت بشه البته از ری اکت 17 به بعد لازم نیست که ایمپورت کنید و ری اکت ساختار خاص خودش رو داره.20) ویرچوال دام (Virtual Dom) چیه و چه فرقی با Real Dom داره؟در واقع Virtual Dom کد اچ تی ام ال شما هست که به صورت آبجکت جاوا اسکریپت ذخیره میشه و سرعت اپ شمارو نسبت به Real Dom به شدت میبره بالا. توی ری اکت شما میتونید قسمتی از کد خودتون رو تغییر بدید و دوباره رندر بگیرین که بر خلاف Real Dom که کد html دوباره رندر گرفته میشه.21) چند تا از هوک هارو نام ببرید.useEffect, useState, useReduce, useSelector, useContext, useMemo,22) کاستوم هوک ها (custom hooks) چی هستش و چه استفاده ای داره؟اینها در واقع همون هوک هایی هستن که شما برای خودتون مینویسید و هوک دیفالت ریک اکت نیست و همون لاجیکی هستش که شما شیر میکنید بین کامپوننت های مختلفتون و با استفاده از روش destruction که قبلا بهتون گفتیم میتونید بهشون دسترسی داشته باشید23) پراپرتی هارو چطوری  validate میکنید؟با استفاده از ویژگی proptypes ها24) رفرنس ها یا refs ها چی هستن و چه استفاده ای دارن؟رفرنس ها در واقع اشاره میکنن به یه ورودی شما و شما میتونی هر کاری با اون input کنید مثل focus و ... همچنین میتونید این رفرنس رو پاس بدید و توی کامپوننت های دیگه ازش استفاده کنید.25) های اوردر کامپوننت HOC یا Higher Order Components ها چی هستن؟اینها کامپوننت هایی هستن که یه کامپوننت به عنوان ورودی میگیرن و یه کامپوننت جدید رو برمیگردونن.26) فرق بین controlled component و un controlled component ها چی هست؟فرقشون این هست که توی controlled component ها شما تغییرات ورودی خودتون رو دنبال میکنید توی فرم و هر تغییری که ایجاد میشه توی state خودتون ذخیره میکنید با استفاده از  و ... اما توی un controlled ها شما فقط موقع ارسال فرم و ثبت فرم با استفاده از refs ها به دیتای فرمتون دسترسی دارید و از اونها استفاده میکنید27) شما زمانی که توی constructor خودتون از super() استفاده میکنید چه ویژگی داره؟باعث میشه که بتونید از props.this توی کلاس خودتون استفاده کنید در غیر این صورت مقدار undefined برگشت داده میشه. البته اصولی تر بخوام بگم ارث بری کلاس کامپوننت شما از ری اکت کامپوننت هست.28 ) جی اس ایکس یا jsx چیست؟همون کد های اچ تی ام ال شما که توی کد جاوا اسکریپت استفاده میشه که باعث ایجاده virtual dom میشه رو میگن jsx یعنی مخفف javascript xml.29) چرا برای به روز کردن استیت از useState استفاده میکنیم و مستقیم مقدار دهی نمیکنیم؟به این دلیل که اگر مستقیم مقداردهی بشه کامپوننت شما دوباره رندر نمیشه.30) پروفایلر ها یا profiler ها چی هستن و چه استفاده ای دارن؟پروفایلر ها یک تگ اچ تی ام ال مانند هستن که یه متد دارن به اسم onRender که شما میتونید زمانی که اون تیکه کد رندر میشه یه متد رو صدا بزنید. برای بررسی کردن سرعت کامپوننت و اینکه اگر میخواید عملیاتی توی رندر شدن اون تیکه کد انجام بدید استفاده میشه31) پرتال ها یا portal ها چی هستن و چه استفاده ای دارن؟شما میتونید توی کامپوننت خودتون یه تیکه کد رو بیرون از کامپوننت رندر بگیرین. مثلا شما میخواید یه مودال رو قبل از بسته شدن تگ body بیرون از کامپوننت رندر بگیرین که از پورتال ها استفاده میشه32) کلید ها یا keys توی loop هایی که روی DOM میزنید چه استفاده ای داره؟این کلید ها باید یکتا باشه و ری اکت با استفاده از این کلید ها شناسایی میکنه دام شمارو توی لوپ و میتونه تغییرات و ایونت هرو بهتر اعمال کنه.33) فرگمنت ها یا Fragment ها چی هستن؟اینها در واقع تگ های اچ تی ام الی هستن که موقع رندر شدن رندر نمیشن و از DOM اضافه جلوگیری میکنن. مثلا شما توی کامپوننت ری اکتتون یه روت یا root دارید که میتونه همین فرگمنت ها باشه و از دام اضافه جلوگیری میکنه34) برای هندل کردن ارور ها از چی استفاده میشه توی ری اکت؟از یه چیزی به اسم ErrorBoundaries استفاده میشه. این تگ رو دور اون قسمتی که میخواید چک کنید ببینید ارور داره یا نه قرار میدین و با استفاده از متد  که زمانی که یه ارور اتفاق میوفته یه متد رو صدا میزنید.35) برای سرعت بخشید به یه اپ چه پیشنهاداتی دارید؟استفاده از purecomponent ها و useMemo ها برای کش کردن اپتون و همچنین کامپوننت های کوچک که هزینه رندر کردن رو بیاره پایین و لیست های طولانیتون رو فقط اون فیلد هایی که نیازه رو استفاده کنید که بهش میگن virtualize long lists و همچنین تا جایی که ممکنه از رندر کردن های بی جا و حجم زیاد اچ تی ام ال جلوگیری کنید. همچنین تغییراتی که توی لیست هاتون میدین و نمیخواید توی چایلد ها استفاده بشه از concat و غیره میتونی استفاده کنید که پراپرتی هاتون تغییر نکنه و ...این لینک رو بخونید: https://reactjs.org/docs/optimizing-performance.html36) وب کامپوننت ها چی هستن و چه استفاده ای دارن؟شما میتونید تگ اچ تی ام ال جدید تعریف کنید که شامل قسمت های مختلفی از لاجیکتون باشه که از HTMLElement ها ارث بری میکنن و میتونید هر جا خواستید استفاده کنید.37) توی ری اکت strict mode چیست؟یه سری استاندارد هست که باعث میشه کدتون خواناتر و تمیزتر باشه. لینک زیر رو بخونید:https://reactjs.org/docs/strict-mode.html38) برای تست نوشتن از چی استفاده میکنید؟معمولا ری اکت رو با jest تست نویسی میکنن که میتونید برید مطالعه کنید.39) معمولا ریکوئست هاتون رو با چی میزنین و توی کدوم لایف سایکل؟بهترین لایف سایکل برای ریکوئست هاتون componentdidmount هست و معمولا از کتابخونه axios استفاده میشه که دیتا های بیشتری رو در اختیارتون میزاره.40) توی ریداکس action ها و dispatcher ها و reducer ها و Provider ها چی هستن؟اکشن ها در واقع همون اتفاقاتی هستن که قراره به دیتای مرکزیتون اطلاع داده باشه و این اطلاع توسط dispatcher ها اتفاق میوفته و به reducer ها پاس داده میشه این اکشن ها. این reducer ها استیت جدید شمارو تعریف میکنن بر اساس اکشن ها و توی دیتای مرکزی و ذخیره مرکزیتون ذخیره میکنن.     همچنین Provider ها ناحیه ای که این دیتا قابل دسترسی هست رو براتون مشخص میکنه که معمولا توی App.js بیرون کل DOM قرار داده میشه.41) لیزی لودینگ یا Lazy Loading چیست؟این اتفاق باعث میشه کد شما تیکه تیکه بشه و در لود اولیه کد کدتون اجرا نشه و فقط کامپوننت هایی که قراره رندر بشن لود بشن. این اتفاق با استفاده از React.lazy اتفاق میوفته و بیرونش یه تگ Suspense میزان که یه متد به اسم fallback داره که شما میتونید یه لودینگ بزارید تا زمانی که کامپوننت شما لود میشه.42) روتر ری اکت چیست و چه استفاده ای داره؟چون ری اکت برای اپ های تک صفحه ای استفاده میشه یا SPA لینک های شما بدون رفرش شدن صفحه لود میشن. این کار با استفاده از روتر ری اکت قابل انجام هست که از پکیج react-router-dom استفاده میشه و شما میتونید صفحاتتون رو تعریف کنید و لینک کنید به هم بدون رفرش شدن صفحه.43) شما babel میدونید چیه؟در واقع یک کامپایلر هست که میاد jsx شمارو تبدیل به کدی میکنه که قابل شناسایی برای مرورگر ها هستش. یک polyfill هم به حساب میاد چون هم مرورگر های قدیمی میشناسنش هم مرورگر های جدید44) سرور کامپوننت های یا React Server Component (RSC) چیست؟شمارو ارجاع میدم به این مقاله کامل و جامع: https://virgool.io/JustReact/react-server-component-juywzxefdyzm?source=grid_footer_post-----0-4445) این که اساسا css in js چیه و چه مشکلی رو حل میکنه و با چه سیستم های کار کردی توی این زمینه؟شما میتوانید استایل هارو به صورت یک آبجکت تعریف کنید و توی jsx از اونها استفاده کنید و bind کنید به virtual dom. این ابجکت به صورت اینلاین سی اس اس اضافه میشه. فرضا شما یه کامپوننت پدر دارید و یه کامپوننت چایلد. استایل های کامپوننت پدر ممکنه توی چایلد نوشته بشه و اور رایت بشه. با استفاده از این متد میشه استایل اینلاین داد و از این مشکل جلوگیری کرد. یکی از سیستم هایی که توی این زمینه کار میکنه jss هست.این خلاصه ای بود از تجربه من توی 3 4 سال تجربه توی برنامه نویسی ری اکت. این مطالب صرفا جهت اطلاع شما عزیزان نوشته شده و میتونید برای درک عمیق تر این مطالب از سایت خود ری اکت استفاده کنید.https://reactjs.org/امیدوارم که این مطالب کمکتون کرده باشه. لینک لینکداین خودم رو هم میزارم در صورت داشتن سوال خوشحال میشم باهاتون در ارتباط باشم https://www.linkedin.com/in/araz-shams/تشکر از شما دوستانآراز شمس الدینلوی</description><category>آراز شمس الدینلوی</category><author>آراز شمس الدینلوی</author><pubDate>Tue, 12 Jan 2021 12:39:02 +0330</pubDate></item><item><title>نمونه سوالات انگولار که در مصاحبه پرسیده میشود</title><link>https://virgool.ir/@araz.shams/نمونه-سوالات-انگولار-که-در-مصاحبه-پرسیده-میشود-hx9gnwvo94uc</link><description>سوالات مصاحبه انگولاربا سلام خدمت شما دوستانبنده آراز شمس الدین هستم و تقریبا 4 ساله که دارم با انگولار کار میکنم. از ورژن 1 که angularjs نام داشت تا ورژن 10 که الان دارم این مقاله رو مینویسم کار کردم و تقریبا تسلط دارم. توی این مقاله میخوام نمونه سوالاتی که ممکنه از شما در angular پرسیده بشه به همراه پاسخش رو براتون بنویسم امیدوارم که مورد پسندتون قرار بگیره.سوال: فرق Two-Way Binding و One-way Binding در انگولار چیست؟پاسخ: معمولا Two-way Binding توسط NgModel ها در انگولار صورت میگیره و شما هم از کنترلرتون به ویوتون دیتا میفرستید و هم مستقیم از ویوتون به کنترلرتون. اما One-Way Binding یا از ویو به کنترلر هست یا از کنترلر به ویو و معمولا برای هندل کردن ایونت ها یا property binding ها استفاده میشودسوال: در انگولار چند مدل ماژول هست؟پاسخ: در انگولار دو مدل ماژول داریم: Featured Module, Root Module. روت ماژول ها توی کل پروژه قابل دسترسی هستن و معمولا توی app.module تعریف میشوند. اما Featured Module ها معمولا با همین روت ماژول ها کار میکنن و مختص یه سری کامپوننت خاص هستند.سوال: در انگولار چند مدل پایپ داریم.پاسخ: دو مدل. pure و unpure. که pure زمانی صدا زده میشه که فقط مقداری که بهش پاس میدیم تغییر کنه اما توی unpure هر زمانی که توی ویوتون تغییری ایجاد بشه صدا زده میشه.سوال: در انگولار چند مدل دارکتیو داریم.پاسخ: سه مدل. attribute directive ها معمولا برای bind کردن اتریبیوت ها به DOM شما استفاده میشه. مثل ngClass. اما structure directive تغییری اساسی در DOM ایجاد میکند مثلا حذف میکند یا اضافه میکند مثل ngIf یا ngFor. در نهایت component directive ها که مسئول نشان دادن ویو شما هستن.سوال: دکوریتور ها در انگولار چی هستن؟پاسخ: دکوریتور ها دیزاین پترن هایی هستن که رفتار کلاس شمارو عوض میکنن بدون اینکه توی سورس برنامه دست بزنید. معمولا با @ شروع میشن به عنوان مثال @Module و @component و @input و ...سوال: hostbinding ها چی هستن؟پاسخ: شما با استفاده از این دکوریتور میتوانید تمام DOM هایی که یک ویژگی خاص دارند مثلا کلاس خاص یا یه اتریبیوت خاص را bind کنید و همزمان تغییری ایجاد کنید.سوال: hostlistener ها چی هستن؟پاسخ: شما میتونید با استفاده از این دکوریتور به یک اتفاق روی یک DOM گوش کنید.سوال: فرق ng-content و ng-template و ng-container چیست؟پاسخ: ng-content برای این است که هر کانتنتی که از parent این کامپوننت بهش داده میشه رو نمایش بده. اما ng-template ها به خودی خود رندر گرفته نمیشن و معمولا به آنها رفرنس داده میشه تا بارها در جاهای مختلف توسط ng-container ها نمایش داده بشه. ng-container ها هم یک پدر برای چند node میتونن باشن و از اضافه کردن DOM اضافه جلوگیری میکنن.سوال: DI یا Dependency Injection در انگولار چیست؟پاسخ: در انگولار معمولا سرویس ها برای DI استفاده میشن و @injectable رو دارن. این دکوریتور باعث میشه که این سرویس یک بار خودش new بشه و یه رفرنس از خودش نگه داره و هر جا که استفاده میشه از همون رفرنس استفاده کنه. در واقع singleton دیزاین پترن بهش میگن.سوال: observable ها چی هستن و چه تفاوتی با promise دارند؟پاسخ: promise ها مثل observable ها برای کارهای async در جاوا اسکریپت استفاده میشن اما promise ها یک ایونت رو هندل میکنن و یه جواب به شما برمیگردونن و قابل کنسل شدن هم نیستند اما observable ها استریم هستن و هر زمان که شما بخواید میتونید ازشون جواب بگیرید و قابل کنسل شدن هم هستند.سوال: subject ها چی هستند و چند مدل از اونارو بگین؟پاسخ: subject ها یه نوع خواصی از observable ها هستند که هم observer هستند و هم observable یعنی هم دیتا میفرستند هم میگیرند و برای برقرار کردن ارتباط بین کامپوننت ها استفاده میشوند مثل ایونت امیتر ها(event emitter).از انواع اونا میتونید به behaviour subject, async subject و ... اشاره کرد.سوال: از rxjs چه استفاده هایی کردید؟پاسخ: هم برای state management ها استفاده میشن مثل ngrx هم یه سری قابلیت دارند مثل map کردن دیتا برای شما به یه مدل خواص یا فیلتر کردنشون ... همچنین subject ها هم از خواص rxjs هستند.سوال: برای هندل کردن async tast ها از چه چیزی استفاده میکنید؟پاسخ: انگولار یک ماژول داره به اسم HttpClient که برای این منظور استفاده میشنسوال: interceptor ها چی هستن و چه استفاده ای دارند؟پاسخ: interceptor ها به عنوان middleware عمل میکنن و قبل از فرستادن ریکوئست یا قبل از گرفتن پاسخ یه رفتاری رو به درخواست شما اضافه میکنن. به عنوان مثال برای اضافه کردن هدر authorization استفاده میشن.سوال: ssr چیست و چه مزیتی دارد؟پاسخ: رندر کردن کد شما با سرور node رو میگن server side rendering. چون انگولار یه فریم ورک spa هست کد شما رندر نمیشه و شما میتونید با استفاده از سرور node express بیاید کدتون رو رندر بگیرین.از مزیت هاش میشه به بهبود SEO و بالا بردن لود صفحتون اشاره کنیدسوال: lazy loading چیست و چه مزیتی دارد؟پاسخ: شما زمانی که پروژه انگولارتون رو build میکنید کل صفحاتتون توی لود اولیه لود میشن که بار زیادی میزاره و سرعت لودتتون رو کمتر میکنه. با استفاده از lazy loading شما میاید build تون رو chunk chunk میکنید و هر صفحه براتون جدا جدا لود میشه و سرعت لودتون رو میبره بالا.سوال: برای نوشتن تست از چی استفاده میکنید؟پاسخ: انگولار از jasmine و karma برای نوشتن تست استفاده میکنه که شما باید باهاش آشنا باشید و به مفاهیم testbed کاملا آشنا باشید.سوال: توی انگولار چند مدل بیلد شدن داریم؟پاسخ: دو مدل که just-in-time (JIT) هست که زمان ران شدن یا runtime شروع به کامپایل شدن میکنه و یکی هم aot یا ahead-of-time هست که الان دیفالت انگولار روی این مد هست و کامپایل شدن زمان بیلد صورت میگیره و کد کامپایل شده میره سمت مرور گر که سرعت سایت رو میبره بالا.توی این چند سال تجربه ای که از انگولار دارم معمولا این سوالات توی مصاحبه ها پرسیده میشوند. سعی کنید این مباحث رو عمیقا درک کنید که اگر سوال مفهومی از اینها پرسیده شد اطلاعات کافی داشته باشید.با تشکر از شما دوستان</description><category>آراز شمس الدینلوی</category><author>آراز شمس الدینلوی</author><pubDate>Tue, 24 Nov 2020 14:24:08 +0330</pubDate></item></channel></rss>