نظرات برای مصاحبه رول سنیور در فرانت از نظر Max
توییتی از یکی کاربران توییتر دیدم در مورد نظراتش برای نحوه و سوالتی که خودش نظرش هست با یک فرانت کار انجام بده و اون رو ولید کنه برای رول سنیور لینک توییت https://twitter.com/realmaxtsh/status/1753450480313766298
در این رشتو کلمات و مباحث زیادی مطرح شد که من هر کدوم رو جداگانه اینجا قرار می دهم و نیاز هست زیرش یک پاسخ قرار بگیرد. باید توجه داشته باشیم ممکن است برخی از مباحث بیشتر به تجربه مصاحبه کننده بستگی داشته باشد و استک و فناوری که دارند استفاده می کنند به صورت مثال شاید کشینگ و رندرینگ در nextjs14 به صورت کامل ساده سازی شده است و دیپ شدن در اون مشکلی را حل نکند. به شخصه فکر می کنم برخی مواقع ممکن است کانسپت ها باعث عدم جذب یک فرد شود که مشخصا شخش فقط کلمه کلیدی آن را بلد نیست
ولی همیشه هر مصاحبه کننده یک نکته یا چند نکته ویژه برای مصاحبه شونده دارد و دنبال کردن سوالات زیر واقعا می تونه در پیشرفت کمک کنه.
سوال اول: من میام میگم مشکل من cache کردن asset هام توی Client-Side ام هست، از مصاحبه شونده میپرسم که راجب Cache تو مرورگر و Service Worker چی میدونی؟ قبلا کار کردی؟ استراتژی های استاندارد کش چیه؟ **
هر کدوم چه use case هایی داره؟ فایل های image, font, json رو چطور باید کش بکنیم. فایل های JS و css و html رو چطور کش بکنیم و ... یا میام راجب پرفورمنس و پترن های مختلفش توی React میپرسم که چطوری بتونیم بهبودش بدیم. پترن های Rendering رو بشناسه و بدونه برای کجا خوبه.
**
یه سوال دیگه این مثلا میتونه باشه که من یه ابزار Conversation دارم که AI هست و یوزر چت میکنه، نحوه ارتباط اینها با Back-End از طریق network چطوری انجام میشه و چه روشی براش هست؟
توی فرانت اگه سابقه چت به 1000 تا چت برسه چطوری باید اینارو رندر کنیم که صفحه laggy نشه؟
**
یه سوال دیگه اینه که من میخوام تغییراتی که توی state های صفحه میدم رو با یه نفر دیگه share بکنم. مثلا یه صفحه باز کردم 10 تا کانفیگ رو تغییر دادم و میخوام اینو با یه نفر دیگه share کنم راه حل چیه؟
**
یه سوال دیگه اینه که من وب اپم 50 تا صفحه داره و هر صفحه 200 کیلوبایت یا بیشتر حجم کدش هست، چطوری صفحه بندی رو توی فرانت مدیریت بکنم توی client-side router که باندل سایزم استاندارد باشه؟ چه روش هایی برای این حل این مشکل وجود داره؟
**
بعدی: با توجه به مدل بیزنس ما، چه سیستم authentication و authorization برای کلاینت میشه پیاده کرد؟ چه retry policy روی ریکوئست های نتوورک API هامون باید بذاریم؟ چطوری رفرش توکن رو مدیریت کنیم، چه زمانی توکن و رفرش توکن باید valid باشه و چه زمانی کاربر مجبور بشه لاگین کنه؟
**
سوال بعدی: چطوری role-base فیچر هارو بذاریم؟ چطوری صفحه هارو role base کاربر ها بتونن ببینن یا نبینن؟
سوال بعدی: من میخوام یه سیستم دیزاین برای theme ام بسازم، چه راه حلی با توجه به ساختاری که داریم ارائه میدی؟ چطوری کمپوننت هارو بسازیم و بتونیم شیر کنیم و ...
**
سوال بعدی: fetch as render یا fetch in parallel with render چطوریه؟ توی ریکت چطوری میشه با این روش تجربه کاربری بهتری ارائه داد؟
سوال بعدی: ما توی react چطوری با به کار بردن مفهوم colocation میتونیم performance رو بهبود بدیم؟
**
برای ذخیره اطلاعات توی مرورگر چه روش هایی هست؟ local storage و indexDB, session storage و cache و cookie هر کدوم رو قبلا چه استفاده ای داشتی و راجبشون توضیح بده.
**
سوال بعدی: من میخوام real-time notification داشته باشم، چه ابزار هایی رو باید استفاده کنم؟ پوش نوتیفیکشن توی سرویس وورکر چطور کار میکنه؟ لایف سایکل سرویس وورکر چیه؟
**
بعدی: چطوری CSRF و XSS رو باهاش مقابله کنیم؟
سوال بعدی: فلگ های ست کردن توی کوکی که خیلی مهم هستن چین و توضیح بده مثلا same-site چیکار میکنه، http only چیکار میکنه، secure چیکار میکنه؟ میشه کوکی رو از سمت سرور ست کرد یا نه؟
**
اگه نه چرا اگه آره چرا؟ اگه میشه ست کرد چطوری توی فرانت باید کوکی رو توی درخواست برگردونیم؟
بعدی: یه سری API های مهم مرورگر رو بگو و چیکار میکنن مثلا broadcast channel رو کار کردی؟ کاربردش چیه؟
**
یه موقع هست من کاستوم بیزنس خاصی دارم مثلا نیاز به نمایش چارت ها و دیاگرام های پیچیده است اون موقع میپرسم چه ابزارهایی کار کردی مثلا D3.js رو کار کردی یا نه، پکیج های چارت چیا استفاده کردی و چقدر میشناسی.
**
حالا قسمت هیجان انگیزش اینجاست که اگه خیلی بخوام دست خط و طرز فکر طرف رو بسنجم و یکم هم زیادی تند برم ازش میخوام که live code بیاد و مثلا هوک useState, useCallback رو from scratch پیاده سازی کنه توی pure js
**
از تست نویسی چی میدونی؟ تا به حال TDD نوشتی؟ چه زمانی TDD خوبه چه زمانی TaDD خوبه؟ استاتیک تست چیه؟ توی فرانت برای چیا باید یونیت تست، اینتگریشن و E2E نوشت؟
تا به حال CI/CD نوشتی؟ چه مراحل حداقلی توی دیپلوی یه پروژه فرانت روی پروداکشن توی Pileline باید بذاریم و...