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.
| Sual | 20-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
- Flutter sənədlərirəsmidocs.flutter.dev
- Flutter API arayışırəsmiapi.flutter.dev
- Performans praktikalarırəsmidocs.flutter.dev