Sparround

Rapid-fire Flutter sualları

Flutter müsahibələrinin çoxu 10-20 qısa sualla başlayır — hər birinə 20-30 saniyə. Məqsəd dərinlik yox, əsasların oturuşub-oturuşmadığını yoxlamaqdır.

Cavab düsturu üç hissədən ibarətdir:

1. Birbaşa cavab — girişsiz, sualı təkrarlamadan 2. Bir sətirlik NİYƏ — mexanizm və ya səbəb 3. Bir konkret nümunə — bu, əzbərlə real bilik arasındakı fərqi göstərən hissədir

Üçü birlikdə 20-25 saniyə çəkir. Uzun cavab bu raundda mənfi siqnaldır: sualın sadə olduğunu görmədiyini bildirir.

Sual20-30 saniyəlik cavab
Stateless vs Stateful?Stateless daxili dəyişən vəziyyət saxlamır. Widget immutable olduğu üçün dəyişən vəziyyət ayrıca `State` obyektində yaşayır və rebuild-dən sağ çıxır — controller-ləri ona görə orada saxlayıram.
`setState` nə edir?Callback-i sinxron işlədir və elementi dirty işarələyir; rebuild növbəti frame-də olur. Ona görə içində `await` etmək mənasızdır.
Üç ağac hansılardır?Widget (konfiqurasiya, ucuz), element (canlı nüsxə, vəziyyəti saxlayır), render (ölçmə və çəkmə). Diffing element ağacında baş verir.
`const` nə qazandırır?Widget kompilyasiyada yaradılıb canonicalize olunur, rebuild-də eyni obyekt kimi tanınır və bütün alt ağac atlanır.
Key nə vaxt lazımdır?Eyni tipdə, sırası dəyişə bilən və vəziyyəti olan siyahıda. Onsuz uyğunlaşma mövqe üzrə gedir və vəziyyət səhv elementə keçir.
Layout qaydası?Constraints aşağı gedir, ölçülər yuxarı qayıdır, mövqeyi valideyn təyin edir. Ona görə uşaq valideynin ölçüsünü bilmir.
Expanded vs Flexible?Expanded uşağı boş yeri doldurmağa məcbur edir (tight), Flexible az yer tutmağa icazə verir (loose). Expanded əslində tight fit-li Flexible-dır.
InheritedWidget nədir?Ağacın aşağısına data paylayan mexanizm. `of(context)` həm tapır, həm abunə olur — data dəyişəndə yalnız asılı elementlər rebuild olur. Provider bunun üzərində qurulub.
BuildContext nədir?Widget-in element ağacındakı mövqeyi. Mövqe olduğu üçün onunla yuxarı baxmaq olur — "No Scaffold found" xətası da səhv səviyyəli context-dən yaranır.
watch vs read?watch abunə olur və rebuild tetikleyir, read yalnız oxuyur. Qayda: build-də watch, callback-də read.
Future vs Stream?Future bir dəfəlik nəticə, Stream davamlı hadisə ardıcıllığı. Sorğu — Future; real-vaxt yenilənmə — Stream.
Isolate nə üçündür?Ağır sinxron hesablamanı UI thread-dən çıxarmaq. Yaddaş paylaşılmır, mesajlaşma ilə işləyir — ona görə race condition yoxdur.
UI vs raster thread?UI thread Dart-ı işlədir (build, layout), raster thread GPU ilə çəkir. Jank hansındadırsa, həlli də fərqlidir.
Frame büdcəsi?60 fps üçün təxminən 16 ms. Aşılanda kadr buraxılır və istifadəçi kəkələmə görür.
Widget test nə tələb etmir?Real cihaz. Ona görə saniyələrlə işləyir və hər PR-da CI-da işlədilə bilir.
pumpAndSettle tələsi?Sonsuz animasiya varsa heç vaxt qayıtmır və test timeout verir. Belə ekranlarda dəqiq `pump(Duration)` istifadə olunur.
Hot reload vs hot restart?Hot reload kodu dəyişir, vəziyyəti saxlayır. Hot restart tətbiqi sıfırdan başladır, vəziyyət itir. `main()` və qlobal dəyişikliklər restart tələb edir.
Profile rejimi nə üçün?Performans ölçməsi üçün. Debug optimallaşdırılmır, release-də isə profiling alətləri bağlıdır.

Interview ipucu. Bu raundda "bilmirəm" demək tamamilə normaldır və uydurmaqdan qat-qat yaxşıdır. 15 sualdan 2-3-nə bilmədiyini demək gözlənilir; intervyuerlər uydurmanı demək olar həmişə hiss edir və ondan sonra bütün cavablarına şübhə ilə yanaşırlar. "Dəqiq bilmirəm, amma güman edirəm ki..." formulası isə həm dürüstlük, həm də düşüncə tərzini göstərir.

📚 Mənbələr və sənədlər