درود دوستان. هشتمین و آخرین قسمت از مجموعه پست‌های سوالات مصاحبه فرانت‌اند رو می‌خوایم بررسی کنیم و با سوال‌های زیر آشنا می‌شیم:

۷۱. از gzip چی می‌دونید؟
۷۲. منظور از Transitive Dependency توی فایل package.json چیه؟
۷۳. چه چالش‌هایی برای یک توسعه‌دهندهٔ سینیور وجود داره؟
۷۴. منظور و هدف از Semantic HTML چیه؟
۷۵. توی تایپ‌اسکریپت تایپ‌های void و never چه فرقی باهم دارن؟
۷۶. چه زمانی از State management توی برنامه‌ها استفاده کنیم؟
۷۷. چه تکنیک‌هایی برای نمایش بهینهٔ تصاویر توی صفحهٔ وب می‌شناسید؟
۷۸. Debounce و Throttle چه فرقی با هم دارن؟
۷۹. چرا پیشنهاد میشه از await توی حلقه‌ها استفاده نکنیم؟
۸۰. چرا اجرای کد زیر هیچوقت به پایان نمیرسه؟

 

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

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

 

 

۷۱. از gzip چی می‌دونید؟

یکی از مهمترین تکنیک‌های افزایش سرعت برنامه‌های وب استفاده از gzip هست. gzip یک الگوریتم و قابلیت هست که باید توی سرور فعالسازی و کانفیگ بشه و هدف اون فشرده‌سازی و کاهش دادن اندازهٔ فایل‌هایی هست که از سرور به سمت کلاینت فرستاده میشن. به‌طوری که حجم یک فایل می‌تونه تا ٪۹۰ کاهش پیدا کنه که در نتیجه معیارهایی مثل سرعت، UX و SEO برنامهٔ ما بهبود پیدا می‌کنه. gzip معمولاً به صورت پیشفرض روی همهٔ سرورها فعال هست و همچنین تقریباً همهٔ مرورگرها از اون به‌طور خودکار پشتیبانی می‌کنن.

 

۷۲. منظور از Transitive Dependency توی فایل package.json چیه؟

فرض کنیم قصد داریم پکیج A رو توسط دستور npm install به برنامه اضافه کنیم. فرض کنیم پکیج A توی خودش وابسته به پکیج B هست. این یعنی توسعه‌دهندهٔ پکیج A، پکیج B رو توی قسمت dependencies فایل package.json پکیج A قرار داده. حالا فرض کنیم پکیج B هم وابسته به یک پکیج دیگه به اسم C هست. پس پکیج A بطور غیر مستقیم به پکیج C هم وابستگی داره. به نحوه وابستگی پکیج A به C، میگن وابستگی Transitive. یعنی پکیج A برای فعالیتش نیاز به حضور پکیج C داره: