As Android Engineers, we all are doing great, putting all our knowledge and skills into making beautiful apps and helping the world to unleash the power of their mobile devices
But, when it comes to interviews, we have a huge syllabus in front of us to dig into no matter what depth we go into
So today, this article will guide you in preparing for your Android Engineering Interview
Now, how we will go ahead in this article...
Week 1
?? Brush up on your Kotlin skills
- Basics should be crystal clear, let's say they ask about differences in val and const val, or they ask what does object { } do
- More Focus should be put on Coroutines Concept as it is something that each org wants and as an Android Engineer this is very important
- Learning about extension functions and remembering the name will not help as those are something that any engineer can do by looking at the documentation, but the Art here is the way of using them
Week 2
?? Learn Topics like Activity & Fragment Lifecycle
?? Understand the Lifecycle Callbacks in different scenarios?
- Don't mug up the callbacks, try to understand the purpose of each and you will get the idea when which function gets invoked
- Moving between fragments is where the callbacks get trickier, so put more effort into learning and understanding those
- Don't stick to only Activity and Simple Fragment, try to implement the Dialog fragments too and understand the behavior
- Don't get Confused between Lifecycle and View Lifecycle
Week 3
?? ViewModel, Lifecycle, and other Design Patterns
- Start Learning about Different Design Patterns -> Creational patterns, Structural patterns, Behavioral patterns
- Understand the areas when and where a pattern is useful and how it is different from others
- Learn about SOLID Principles
- Dive into the Architecture zone, What is MVVM and why people are shifting from MVP to MVVM, What does Context have to do here
- What is ViewModel and How does it work internally? Now, when we are talking about How * works internally, they don't want you to answer the codebase, but the reason and the problem that particular thing is solving and the approach it is performing
Week 4
- If you know XML, well and good, you must have played with Data Bindings and other stuff.... for this article we are jumping to the Jetpack Compose UI part
- Start learning about What Jetpack Compose is solving which XML can't
- Learn about Jetpack Compose various concepts like Recomposition, State-Hoisting, Side-Effects and a lot more one can find on the official webpage
- The best way to learn this is to Create a sample app and see how to UI is rendering on screen and how the data is getting updated
- We are not focused on how beautiful a UI one can make, but on how scalable and loosely functions one can write for the sake of usability and testing
- Writing the UI in such a way that a Future Engineer has to put less effort into modifying or reusing it
Week 5 - 6
- Start with learning the Lifecycle of a Service and the callbacks
- Learn about all types of Services -> Foreground Services, Background Services, and Bound Services
- See what issues does Service Component has and Does Andriod is shifting to another option for performing the same thing which one can do using Services or not
- Services <-> Work Manager <-> Job Schedule <-> Alaram Manager, try to find and see the relation between these and see when to use what and what the limitation one has
Week 7
- Learn about Broadcast Receiver, try to create your own, and try to use the existing one too, by having a sample app
- Implement a sample app for handling the Notifications and get a thorough understanding of Notifaciton in different API levels
Week 8
- Learn different types of Memory Storage available
- Try to implement each and understand the use of each, and when to use which storage
- Local Database, Shared Preferences, Data Store, In-Memory Cache, Volatile Memory, Disk Cache, Shared Storage, App-Specific Storage, SQLite, ROOM, all these types of terms are open for exploration and understand when to use what and how does it impact your mobile application
Week 9
- Learn about networking and pick any third-party libraries like Retrofit and explore how the API calls are happening
- Put more focus on, how to write your networking layer in such a way that it can be scaled in the future, without creating any dependency on the third-party library, because libraries are something that an engineer picks after putting a lot of params in mind, but no one knows what future is, so our code should be easily migratable to other best option
- All this will help you in your System Design Round as well
Week 10
- Learn about how images are rendering on screen and how you can make your app load all the images super fast
- Explore libraries like Glide, Coil, and others to see how the libraries are loading the image fast
- Understand the Cache System a library is using to lessen the effort of loading images again and again
- Put extra effort into learning about the Thread Pool and how a pool of threads can be used in other places as well
- Try to create your Image Loading Library
Week 11
- Understand why testing is needed and how it will help you to write better code
- Start writing Tests for your simple logic, as it is called Unit Testing. One can use any library available like Robolectric which helps in performing Unit Testing very smoothly
- Jump to UI Testing and test your UI in different devices and edge cases like, if the internet is not available or some data is not coming, then your app is giving its best UI on screen or not. This will help you in enhancing your User Experience
Week 12
- See, all the things you can automate as an Android Engineer, starting from building APK on every commit or running test cases
- Making some decisions over Coding Style and Methods
- Maybe this stuff will not come up in your Interview, but this will widely come up when you get into your regular job so... it's a must
Week 13
- Always have a pet project by your side to learn any new concept coming into the market
- I have explained the benefits and approach to the pet project here
Week 14
- You will always feel that you are not interview-ready and need more time to prepare, but the real preparation is Giving an Interview only
- When you give one interview and fail, you get a chance to learn what mistakes you made so that you can improve and not perform in the future
- So, Keep Practicing and don't fall into the Scam of Creating a Learning Streak or those green boxes on GitHub, as no one cares for this and it also doesn't matter to you after a few days of doing it
So, If you have read this far and you think this 4-month roadmap will help you... Start Today
Don't forget to Subscribe to this newsletter for more articles,
And our YouTube channel where we meet face-to-face :)