cracking-android
cracking-android copied to clipboard
Cracking Android Technical Interviews
Cracking the Android Interview
Table of Contents
- About this project
- Fundamentals
- Android SDK
- Kotlin
- Gradle
- Android studio
- UI
- Best Practices
- Arquitecture
- Network operation
- Firebase
- Test
- Proguard
- CI/CD
- Crash Reports
- MAD(Modern Android Development)
About
After 7 years of experience in Android development, I have been on both sides as an interviewer and as a candidate. Cracking a technical job interview can be a challenging task and we have to be prepared to demonstrate our knowledge. That's why I decided to create this study guide according to my experiences and try to keep it updated to help others and myself get the dream job when facing a new interview. Feel free to make a pull request and collaborate.
note: References come from authors of the blogs, stackoverflow posts and the online android community.
Enjoy it ;)
Fundamentals
🙂
-
✔️ Android components : Reference
-
✔️ Fragment lifecycle and Activity lifecyle
-
✔️ Implicity vs explicity intents
-
✔️ .dex files : Reference
-
✔️ Multidex : Reference
-
✔️ Abstract class vs interface : Reference
Android_SDK
🛠
- ✔️ Components, Patterns, Architecture : Reference
Kotlin
😃
- ✔️ Advantages vs Java : Reference
- ✔️ Inline functions
- ✔️ Differents between lazy, latein : Reference
- ✔️ Extension functions : Reference
- ✔️ Kotlin kapt : Reference
- ✔️ Data class : Reference
- ✔️ Static class Kotlin : Reference
- ✔️ Singleton in Kotlin : Reference
Gradle
😅
-Gradle settings
-Build config
-BuildTypes
-Signing configuration
-Android keystore
-Flavors
Android_Studio
🧑💻
-Profile tools
-Apk analyzer
-Database inspector
UI
🧑🎨
-Viewbindings vs databinding vs kotlin synthetics
-RecyclerView.Adapter.StateRestorationPolicy
-Recycler adapter why list adapter, Adapter viewholder,onbindviewholder,oncreateviewholder definitions
-Diff call utils
-UX patterns
-Jetpack Compose
Best_Practices
💪
- ✔️ Design Patterns : Reference
- ✔️ SOLID : Reference
- ✔️ Inversion Control vs dependency injection : Reference
- ✔️ HILT vs Koin vs Dagger 2 : Reference
- ✔️ Ktlint : Reference
- ✔️ Memory leaks : Reference
- ✔️ Png to webp/ vector smaller apk
Architecture
😎
- ✔️ MVVM : Reference
- ✔️ MVVM vs MVC vs MVI : Reference
- ✔️ Clean Architecture : Reference
- ✔️ SaveStateHandle advantages
Network
📱
✔️ Retrofit vs ktor vs volley
✔️ Converter gson vs moshi
✔️ Parcelable vs Serializable
✔️ Okhttp
✔️ Interceptors
✔️ Glide vs Picasso vs coil
Firebase
🔧
✔️ Crashlitics
✔️ Push Notifications
✔️ Firebase test labs
Test
✅
- ✔️ Fundamentals : Reference
- ✔️ Robolectric : Reference
- ✔️ Mockk : Reference
- ✔️ Mock, stups, spies : Reference
- ✔️ Screenshots test : Reference
- ✔️ Expresso : Reference
- ✔️ Mockwebserver : Reference
- ✔️ Firebase remote config A/B testing : Reference
Proguard
⚙️
✔️ Rules
✔️ Advantages
CI_CD
💻
✔️ Bitrise vs Github actions vs Jenkins
Crash
❌
- ✔️ Bugsnag vs Crashlitics: Reference
MAD
👌
- ✔️ AndroidX: Reference
- ✔️ Jetpack : Reference
- ✔️ Architecture components : Reference
- ✔️ Flow – Livedata : Reference
- ✔️ Coroutines Advantages coroutines vs rx java, rx android : Reference
- ✔️ Room : Reference
- ✔️ Paging : Reference
Contact
Carlos Adan - @carlyad4m