yoklateknik mülakat

Frontend Performance Mülakat Soruları

75 doğrulanmış Frontend Performance mülakat sorusu — cevaplarıyla çöz, açıklamalarıyla öğren, gerçek simülasyonda kendini test et.

Gerçek simülasyonu dene →

Örnek sorular

PerformanceZorluk 1
Bir ürün fotoğrafı 2 MB'lık bir PNG olarak sunuluyor ve yavaş yükleniyor. İndirilen boyutu gözle görülür kalite kaybı olmadan en güvenilir şekilde hangisi küçültür?
  • aDosyanın uzantısını .png'den .jpg'ye değiştirmek, böylece format değişir
  • bFotoğrafı JPEG veya WebP gibi lossy bir formata yeniden encode etmek
  • c<img> elementine açık width ve height attribute'ları eklemek
  • dGörselin opacity değerini CSS ile düşürüp daha hafif render etmek
Açıklama:Fotoğraflar, keskin kenarlı grafikler için tasarlanmış lossless PNG yerine JPEG veya WebP gibi lossy formatlarda çok daha iyi sıkışır. Uzantıyı değiştirmek (a) byte'ları yeniden encode etmez — dosya 2 MB'lık PNG olarak kalır. width/height attribute'ları (c) layout alanını rezerve edip kaymayı önler ama indirilen byte sayısını değiştirmez.
PerformanceZorluk 2
<img src="gallery-12.jpg" loading="lazy" alt="...">

Buradaki loading="lazy" attribute'u ne yapar?
  • aGörseli tarayıcıya göndermeden önce anlık olarak sıkıştırır
  • bGörselin önceliğini düşürür; böylece hep sayfanın script'lerinden sonra iner
  • cGörselin yüklenmesini, görsel ekrana girmek üzere olana dek erteler
  • dÖnce küçük bir placeholder yükler, hover'da tam görseli yerine koyar
Açıklama:loading="lazy", tarayıcıya ekran dışındaki bir görseli, kullanıcı yakınına kaydırana kadar getirmemesini söyler; böylece hiç görülmeyebilecek görseller için bandwidth harcanmaz. Sıkıştırma yapmaz (a) ve script sırasıyla ilgisizdir (b); placeholder değiştirme deseni (d) attribute'un yaptığı değil, senin kurduğun bir şeydir.
PerformanceZorluk 1
Tek ve çok büyük bir JavaScript bundle göndermek sayfa performansı için neden genelde kötüdür?
  • aTarayıcı, sayfa etkileşime hazır olmadan önce tümünü indirip parse edip çalıştırmak zorundadır
  • bBüyük dosyalar tarayıcıda asla cache'lenemez, bu yüzden her ziyarette yeniden inerler
  • cBir megabyte'tan büyük JavaScript dosyaları çoğu tarayıcı tarafından reddedilir
  • dTek büyük bir dosya, kaçınılmaz olarak birkaç küçük dosyadan daha fazla bug içerir
Açıklama:Büyük bundle etkileşimi geciktirir: kullanıcı, tarayıcı henüz gerekmeyebilecek kodu indirip parse edip çalıştırırken bekler. Büyük dosyalar da küçükler gibi cache'lenebilir (b), onları reddeden bir boyut sınırı yoktur (c) ve bug sayısı bundling ile ilgisizdir (d).
PerformanceZorluk 2
Bir single-page app, nadiren kullanılan admin dashboard dahil her ekranı içeren tek bir bundle yüklüyor. Login sayfasındaki kullanıcılar bunun tamamını bekliyor. Bunu en iyi hangi teknik çözer?
  • aBundle'ın tamamını bir CDN'e taşımak; böylece kullanıcıya daha yakın bir sunucudan iner
  • bBundle'ı minify etmek; böylece kullanılmayan admin kodu daha az byte tutar
  • cBundle'ı yükleyen script tag'ine loading="lazy" attribute'u eklemek
  • dBundle'ı bölmek; her ekranın kodu ancak o ekran açıldığında getirilir
Açıklama:Code splitting, login sayfasının yalnızca ihtiyaç duyduğunu indirmesini sağlar; admin dashboard'ın kodu sonradan, gerektiğinde yüklenir. CDN (a) ve minification (b) biraz yardımcı olsa da admin kodunu yine her ziyaretçiye baştan gönderir; loading="lazy" ise bir görsel/iframe attribute'udur, uygulama modüllerini ertelemenin yolu değildir (c).
PerformanceZorluk 1
Bir CSS veya JavaScript dosyasını minify etmek ne yapar?
  • aKaynak kodu şifreler, böylece rakipler onu okuyamaz
  • bBoşlukları ve yorumları siler, isimleri kısaltır; böylece dosya boyutunu düşürür
  • cDosyayı paralel yüklenen daha küçük parçalara böler
  • dKodu, CPU'nun doğrudan çalıştırdığı daha hızlı, makine seviyesinde bir binary'ye derler
Açıklama:Minification, makinenin ihtiyaç duymadığı karakterleri — boşluk, yorum, uzun değişken adları — atarak daha küçük ama işlevsel olarak birebir aynı bir dosya üretir. Şifreleme değildir (a); kod yeniden formatlandıktan sonra hâlâ okunabilir. Dosyayı bölmez (c), binary'ye derlemez (d).
PerformanceZorluk 2
Bir sayfa, <head> içinde <link rel="stylesheet" href="app.css"> ile büyük bir stylesheet içeriyor. Kullanıcılar bu inene kadar boş ekran görüyor. Tarayıcı neden bekler?
  • a<body> içindeki HTML parse edilmeden önce <head> bölümünün tamamı inmelidir
  • bStylesheet'ler her zaman HTML dokümanının kendisinden önce indirilir
  • cCSS render-blocking'tir: tarayıcı, stilleri elde edene dek boyamayı geciktirir
  • dTarayıcı, sayfayı göstermeden önce her stylesheet'i bir script gibi çalıştırır
Açıklama:Varsayılan olarak CSS render'ı bloklar — tarayıcı stilsiz içeriği boyamaktan kaçınır; bu yüzden head'deki büyük bir stylesheet, gelene kadar first paint'i geciktirir. Head, body parse'ını topluca bloklamaz (a); HTML parse'ı sürer ama boyama bekler. CSS bir script değildir (d) ve HTML parse'ı başladıktan sonra istenir, önce değil (b).

2925 soruluk Frontend bankasında kendini sına.

Mülakata başla