Rapid-fire suallar
Müsahibənin ilk 10 dəqiqəsində adətən qısa, faktik suallar verilir. Onların məqsədi dərinlik yoxlamaq deyil — əsasların yerində olduğunu təsdiqləməkdir. Cavablar 1-2 cümlə olmalıdır: uzun izahat burada zəiflik kimi qəbul olunur.
Aşağıdaki cədvəllər bu suallar üçün hazır, qısa cavablardır. Hər birini səsli təkrarlayın — müsahibədə tərəddüd etmədən cavab vermək bilikdən az əhəmiyyətli deyil.
| Sual | Qısa cavab |
|---|---|
| `setState` nə edir? | State-i dəyişib widget-i "dirty" işarələyir; həmin `State` obyektinin bütün alt ağacı yenidən qurulur. |
| `context.watch` ilə `context.read` fərqi? | `watch` abunə olur və rebuild tetikləyir; `read` yalnız oxuyur, callback-lər üçündür. |
| `InheritedWidget` nə üçündür? | Ağacda aşağıya məlumat ötürmək və abunəçiləri `updateShouldNotify` ilə xəbərdar etmək; Provider bunun üzərində örtükdür. |
| `ValueNotifier` nə vaxt bildiriş verir? | Yeni dəyər köhnəsinə `==` üzrə bərabər olmadıqda. |
| Riverpod-da `ref.watch` harada işlədilir? | `build` metodunda və provider-in gövdəsində; sənədə görə əsas seçimdir. |
| `AsyncValue` nədir? | Loading/error/data vəziyyətlərini bir sealed tipdə birləşdirən Riverpod tipi. |
| `autoDispose` nə edir? | Dinləyici qalmadıqda provider-in state-ini təmizləyir; codegen-də default aktivdir. |
| `family` nə üçündür? | Provider-ə arqument ötürmək; hər arqument üçün ayrı state saxlanılır. |
| Cubit ilə Bloc fərqi? | Cubit-də metodlar, Bloc-da event-lər state-i dəyişir; Bloc traceability və event transformasiyaları verir. |
| Bloc təkrar state-i necə idarə edir? | `state == nextState` olduqda dəyişiklik baş vermir. |
| `BlocListener` niyə lazımdır? | Rebuild etmədən yan effekt üçün: SnackBar, dialoq, naviqasiya. |
| `Equatable` niyə istifadə olunur? | State-ə dəyər semantikası vermək; `==` olmadan rebuild filtrləri düzgün işləmir. |
| Sual | Qısa cavab |
|---|---|
| "UI yenilənmir" — ilk üç şübhəli? | Abunə olmayan oxunuş (`read`), bildirişin göndərilməməsi, mutable state ucbatından `==` fərq görməməsi. |
| `ProviderNotFoundException` səbəbi? | Oxunuşda istifadə olunan `context`-in yuxarısında həmin provider yoxdur (dialoq, yeni route, öz context-i). |
| Riverpod-da testdə asılılığı necə əvəz edirsiniz? | `ProviderContainer.test(overrides: [...])` və ya `ProviderScope(overrides: [...])`. |
| `blocTest`-in `seed` parametri? | Bloc-a ilkin state verir — testi lazımi vəziyyətdən başlatmaq üçün. |
| `droppable` transformer-i nə edir? | Bir event işlənərkən əlavə olunan event-ləri atır (ikiqat ödənişin qarşısını alır). |
| `await`-dan sonra `context` istifadəsi? | `mounted` yoxlanışı lazımdır; `use_build_context_synchronously` lint-i bunu tutur. |
| State harada yaşamalıdır — rəsmi cavab? | UI state view model-də, paylaşılan/sessiya state-i repository-də; service state saxlamır. |
| `const` konstruktor performansa nə verir? | Flutter rebuild işinin böyük hissəsini qısa yolla keçir — rəsmi tövsiyədir. |
| Rebuild-ləri necə ölçürsünüz? | DevTools → Performance → **Track Widget Builds**. |
| Riverpod 3-də `valueOrNull`? | `value` adına dəyişdirilib; `AsyncValue` isə sealed olub. |
| `mapEventToState` hardadır? | bloc v8.0.0-da silinib, yerinə `on<Event>` gəlib. |
| Hansı library ən performanslıdır? | Üçü də eyni mexanizm üzərindədir; performansı abunəliyin sahəsi və immutability təyin edir. |
Rapid-fire bölməsində iki tələ var. Birincisi — çox danışmaq: sual "nə edir?" formasındadırsa, iki cümlə kifayətdir; müsahib dərinlik istəsə, özü soruşacaq. İkincisi — bilmədiyini gizlətmək: "Dəqiq xatırlamıram, amma yanaşma belədir..." cavabı uydurmaqdan qat-qat yaxşıdır və təcrübəli müsahib bunu dəyərləndirir.
📚 Mənbələr və sənədlər
- Flutter: state management sənədlərirəsmidocs.flutter.dev
- Riverpod sənədlərirəsmiriverpod.dev
- Bloc konseptlərirəsmibloclibrary.dev
- package:providerrəsmipub.dev