نمونه سوالات انگولار که در مصاحبه پرسیده میشود

سوالات مصاحبه انگولاربا سلام خدمت شما دوستانبنده آراز شمس الدین هستم و تقریبا 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 هست که الان دیفالت انگولار روی این مد هست و کامپایل شدن زمان بیلد صورت میگیره و کد کامپایل شده میره سمت مرور گر که سرعت سایت رو میبره بالا.توی این چند سال تجربه ای که از انگولار دارم معمولا این سوالات توی مصاحبه ها پرسیده میشوند. سعی کنید این مباحث رو عمیقا درک کنید که اگر سوال مفهومی از اینها پرسیده شد اطلاعات کافی داشته باشید.با تشکر از شما دوستان