درود به همگی ✌️ از قسمت چهارم مجموعه پست‌های سوالات مصاحبه فرانت‌اند می‌خوایم ۱۰ سوال زیر رو بررسی کنیم. می‌تونین از فرم بالا استفاده کنین تا در جریان قسمت‌های جدید قرار بگیرین.

۳۱. Snapshot Test چیه و چه مزایا و معایبی داره؟
۳۲. توی جاوااسکریپت Same-origin policy چیه؟
۳۳. توی جاوااسکریپت Map و WeakMap چه فرقی با هم دارن؟
۳۴. تکنیک Currying رو توی جاوااسکریپت پیاده‌سازی کنین
۳۵. چند اصل دنیای نرم‌افزار رو می‌شناسید؟
۳۶. منظور از درخواست‌های Idempotent توی درخواست‌های HTTP چیه؟
۳۷. توی یک صفحه وب برای دانلود ریسورس‌ها چه زمانی از preload و چه زمانی از prefetch استفاده کنیم؟
۳۸. منظور از Box Model توی CSS چیه؟
۳۹. منظور از <!DOCTYPE html> توی صفحه‌های HTML چیه؟
۴۰. هدف از اتریـبـیوت‌های data-* توی HTML چی هست؟

 

قبل از شروع، مثل پست‌های قبل این مجموعه، می‌خوام یاد کنیم از عزیز. امیدوارم روحش شاد و در آرامش باشه ✨💚

خب، بریم که سوالات رو بررسی کنیم.

 

۳۱. Snapshot Test چیه و چه مزایا و معایبی داره؟

Snapshot Test یک تکنیک تست‌کردن برنامه‌های فرانت‌اند هست که توی اون بررسی میشه که آیا یک کامپوننت یا قسمتی از ظاهر برنامه در طول توسعهٔ اون ثابت و بدون تغییر باقی ‌می‌مونه یا نه. معنی تحت‌اللفظی کلمهٔ Snapshot به معنی یک عکس لحظه‌ای هست. توی این تکنیک:

۱. ابتدا کامپوننت رندر میشه
۲. یک Snapshot در صورت عدم وجود اون، تهیه و ذخیره میشه
۳. توی تست‌های بعدی، از UI مد نظر یک Snapshot تهیه میشه و با Snapshot ابتدایی مقایسه و در صورت عدم تطابق، تست Fail میشه
۴. در صورت نیاز می‌تونیم Snapshot ابتدایی رو آپدیت کنیم

از مزایای Snapshot Test اینه که می‌تونیم یک کامپوننت بزرگ و پیچیده رو بدون نوشتن کدها و تست‌های زیاد تست کنیم. زمانی این تست Fail میشه که تغییری توی ظاهر اون کامپوننت صورت گرفته باشه.
از معایب این روش تست اینه که دقیقاً مشخص نیست چه ویژگی‌‌ای از کامپوننت داره تست میشه. بنابراین اگه قصد داریم نحوهٔ کارایی و منطق این کامپوننت رو تست کنیم، این روش کارایی چندانی نداره. پس بهتره فقط زمانی از این تکنیک استفاده کنیم که پایدار بودن ظاهر یک کامپوننت (مثلاً دکمه یا ظاهر یک فرم) برامون اهمیت داره.