
Frontend sistem tasarımı mülakatlarına güvenle yaklaşmak için Türkçe uygulamalı rehber.
Frontend sistem tasarımı mülakatları zor görünebilir. “Paylaşımlı görev panosu tasarla” dendiğinde React, WebSocket, cache, API ve performans aynı anda akla gelir. Daha iyi başlangıç basittir: Teknoloji seçmeden önce kullanıcının ne yapması gerektiğini tanımlayın.
Şunları sorun: Kullanıcı görev oluşturabilir, düzenleyebilir ve taşıyabilir mi? Pano paylaşımlı mı? Değişiklikler anlık mı görünmeli? Ekler ve çevrimdışı düzenleme kapsamda mı?
Varsayımı açıkça söyleyin: Kimliği doğrulanmış ekip üyeleri için web görev panosu tasarlıyorum. Kullanıcılar sütunları görür, görev oluşturur ve taşır; pano açıkken ekip arkadaşlarının değişikliklerini görür. Ekler ve offline düzenleme kapsam dışıdır.
Bu, “Jira’nın tamamını tasarla” yerine somut bir problem verir.
Fonksiyonel gereksinimler davranışı anlatır: panoyu görüntüleme, görev taşıma, filtreleme ve ekip değişikliklerini görme. Gecikme, erişilebilirlik, güvenilirlik ve ölçeklenebilirlik mimariyi etkileyen kalite gereksinimleridir.
Görev taşınırken kullanıcı kartı sürükler, arayüz hemen güncellenir, istemci mutasyonu gönderir, sunucu kanonik durumu döner ve diğer kullanıcılara olay gider. İstek başarısız olursa durum geri alınır.
İstemcinin görev kimliği, sütun, sıra ve sürüme ihtiyacı vardır. Güncelleme sözleşmesi columnId, position ve version taşıyabilir. Sunucu nihai görevi yeni sürümüyle döndürmelidir. Aynı görev paralel düzenlenirse last-write-wins veya eski sürümü reddedip yenileme isteme gibi bir kural açıklayın.
Menü, sürükleme önizlemesi ve form değerleri yerel UI state'tir. Filtreler ve seçili pano URL state olmalıdır. Pano ve görevler gibi server state query cache'te tutulmalıdır. Realtime olayları ikinci kalıcı kopya oluşturmak yerine ilgili cache kaydını günceller veya geçersiz kılar.
Seyrek güncellemelerde polling yeterlidir. Tek yönlü sunucu güncellemelerinde Server-Sent Events uygundur. Presence, typing veya çift yönlü işbirliği WebSocket'i haklı çıkarabilir. Önce güncellik ihtiyacını, sonra teknolojiyi anlatın.
Optimistic update için snapshot alın, arayüzü yerelde güncelleyin, mutasyonu gönderin ve hata olursa snapshot'a dönün. Mutlu yol kadar hata yolunu da tasarlayın.
Frontend sistem tasarımı, kütüphane sayma yarışması değildir. Kullanıcının hedefiyle başlayın; state, API, rendering ve realtime kararları böylece net biçimde gerekçelenir.
Henüz onaylı yorum yok. Yeni yanıtlar moderasyon bekleyebilir.