Nailing Your Next Flutter Interview
Tags: flutter, interview, dart, mobile
Published: 2021-11-03 18:41:38

So I'd like you to think about it, you love building with flutter right? and flutter's like your best friend just like me. What if there's an opportunity for you to get your dream job and then the interview doesn't go as planned due to the "tough" questions that you were asked? Well, the questions are not so tough and this article focuses on answering some of the questions around flutter interviews. 

If you are interviewing for a mid-level role majorly, these are some of the questions that you will be asked. 



#Interview Questions
**1. What is the difference between Stateful and Stateless widgets?** Stateful widgets are mutable widgets which means that their state can change over time. Stateful widgets for example are used when the part of the UI must change dynamically during runtime. Stateless widgets are the opposite of stateful widgets and they only get called once during runtime.

**2. Is Dart a single-threaded language or a multi-threaded language?** Dart is a single-threaded language and it makes use of Isolates to run tasks or processes concurrently.

**3. What are Dart Isolates?** Since dart is a single-threaded programming language, it uses [Isolates](https://www.youtube.com/watch?v=vl_AaCgudcY&t=4s) to run the concurrent tasks. Isolates are separate parts of your app, they have their own event loops, event queues, and memories. They perform tasks isolated from the main thread and they communicate with the main thread when these tasks are done.

**4. What are event loops in Dart?** Dart uses  [event loops](https://www.youtube.com/watch?v=vl_AaCgudcY&t=4s)  to handle events asynchronously. Event loops make asynchronous programming possible in dart. Being a single-threaded language, it is impossible for dart to predict when certain functions will happen in your app and because of this, dart runs an event loop to carry out events. It grabs events or functions from the event queue in your app, processes it and picks the next one, and processes it until the event queue is empty.

**5. How does flutter take care of garbage in memory?** In flutter, Dart uses garbage collection to take care of garbage in memory. Garbage collection is the process of searching dart objects that are dynamically allocated live in a portion of memory to locate and reclaim, regions of "dead" memory—memory that is no longer being used by an application. This process allows the memory to be re-used and minimizes the risk of an application running out of memory, causing it to crash. Garbage collection is performed automatically by the Dart VM (Dart Virtual Machine – It is a piece of software that directly executes dart code). In DevTools, you can perform garbage collection on demand by clicking the GC button.

**6.What is MVVM architecture?**  [MVVM](https://medium.com/flutterworld/flutter-mvvm-architecture-f8bed2521958)  which is an abbreviation for MODEL-VIEW-VIEW-MODEL is an architectural pattern that uses property-based data binding to establish a connection between the View-Model and the View and drives the View changes through the View-Model. This architectural design separates your UI from your logic and it helps your app with scalability and maintainability.

**=> Model:** This component stores application data and it works with the view-model to get and store data.

**=> View:** This is your user interface and it houses components that are visible to the screen. It provides the visualization to data stores in the model and offers interaction to the user.

**=> View-Model:** The view model handles the logic behind your app. It houses the methods, function calls, and other factors that can help to maintain the actual state of the view.

**7. How do you manage Scalability in a Flutter app?** Scalability in flutter ensures you have the right architecture in place in other to be able to add new features to your app without breaking the rest of it. You can manage scalability by using a good software architectural design e.g. MVVM.  

**8. Why is null safety important?**  [Null safety](https://dart.dev/null-safety)  in dart ensures nun-nullable fields in your app are not assigned null values. This is important as it helps your app runs faster and it also prevents your app from crashing. 

**9. How do you migrate your app to null safety?**  To migrate your app to null safety, you can open your app in the terminal and run $‘dart migrate’. It is also essential to check the dependencies of your app and ensure they support null safety before migrating to null safety. To do this, you can run $’ pub outdated’ on your terminal and check for the dependencies that need to be upgraded then update them before migrating your app. You can also watch this [video](https://www.youtube.com/watch?v=bvq7wbn4VAA) for more clarification.

#Conclusion
Getting your dream tech job goes beyond your technical skills and it is quite important for you to be inclined about the theoretical background of your preferred programming language and its framework. 
I hope this article was helpful and I hope you nail your next flutter interview.