hellosagar / android-interview-questions

I'm contributing to help others!
MIT License
48 stars 15 forks source link
android android-architecture interview-preparation interview-questions kotlin mvvm-android mvvm-architecture

Android interview questions that I've faced so far or I think is important

I'm creating this repository after getting rejected from ShareChat

Android Components

Explain briefly all the Android application components

App components are the essential building blocks of an Android app. Each component is an entry point through which the system or a user can enter your app. There are four different types of app components :

What is an Activity?

An activity provides the window in which the app draws its UI. This window typically fills the screen, but may be smaller than the screen and float on top of other windows. Generally, one activity implements one screen in an app. For instance, one of an app’s activities may implement a Preferences screen, while another activity implements a Select Photo screen.


Activity Lifecycle

Activity Lifecycle (in execution order) -

Method Called When
onCreate() Activity is first created.
onStart() Activity is becoming visible to the user.
onResume() Activity will start interacting with the user.
onPause() Activity is not interactable to the user.
onStop() Activity is no longer visible to the user.
onRestart() After activity is stopped, prior to start.
onDestroy() Before activity is destroyed.

*Note - The onCreate() and onDestroy() methods are called only once throughout the activity lifecycle.

Uses case of activity lifecycle with execution order

When activity is opened:
onCreate()

onStart()

onResume()
When moved to another activity:

Here A == first activity and B == second activity

onPause() - (A)

onCreate() - (B)

onStart() - (B)

onResume() - (B)

onStop() - (A)
When another activity is closed and moving back to first activity:
onPause() - (B)

onRestart() - (A)

onStart() - (A)

onResume() - (A)

onStop() - (B)

onDestroy() - (B)

onStart vs onResume

onStart() -> called when the activity becomes visible, but might not be in the foreground (e.g. an AlertFragment is on top or any other possible use case).

onResume() -> called when the activity is in the foreground, or the user can interact with the Activity.

onPause vs onStop

onPause() -> If you can still see any part of it (Activity coming to foreground either doesn't occupy the whole screen, or it is somewhat transparent).

onStop() -> If you cannot see any part of it

A dialog, for example, may not cover the entire previous Activity, and this would be a time for onPause() to be called

5 Anti patterns in android

Thanks to Philipp Lackner for making a video on this - Link

6 Design pattern every android developer must know

Thanks to Philipp Lackner for making a video on this - Link

SOLID stands for:

S - Single-responsiblity Principle

O - Open-closed Principle

L - Liskov Substitution Principle

I - Interface Segregation Principle

D - Dependency Inversion Principle

Summary: We can say that the Single Responsibility Principle is about actors and high level architecture. The Open/Closed Principle is about class design and feature extensions. The Liskov Substitution Principle is about subtyping and inheritance. The Interface Segregation Principle (ISP) is about business logic to clients communication. And the Dependency Inversion Principale (DIP) is about leads or helps us respect all the other principles.

Thanks to Abderrazak Laanaya for writing a article on this - Link

General Questions

What is expected that you know