Filter interviews by
I was interviewed in Nov 2024.
The components of an Android app include activities, services, broadcast receivers, and content providers.
Activities: UI components that represent a single screen with a user interface.
Services: Background tasks that run independently of the UI.
Broadcast Receivers: Respond to system-wide broadcast announcements.
Content Providers: Manage a shared set of app data.
Activity is a single focused thing that user can do, while Fragment is a modular section of an activity.
Activity represents a single screen with a user interface, while Fragment represents a behavior or a portion of user interface in an Activity.
An Activity can contain multiple Fragments, but a Fragment cannot exist independently without an Activity.
Fragments have their own lifecycle, while they are dependent on the li...
Databinding is a feature that allows you to bind UI components in your layout to data sources in your app.
Databinding eliminates the need for boilerplate code to update UI components with data.
It allows for easier communication between UI components and data sources.
Databinding can improve code readability and maintainability.
Example: Binding a TextView directly to a ViewModel property in an Android app.
The view is attached to the Fragment during the onAttach() lifecycle event.
The onAttach() method is called when the Fragment is associated with its host Activity.
This is the first lifecycle method called after the Fragment is created.
The onAttach() method receives the Activity as a parameter, allowing the Fragment to interact with its host.
Yes, an activity can exist without a view in Android.
An activity can perform background tasks without displaying any UI elements.
For example, a music player app may have an activity to handle playback controls in the background.
Activities without views are commonly used for tasks like data processing, network operations, or service handling.
A broadcast receiver is an Android component that allows the system to deliver events or messages to the app.
Broadcast receivers can be used to listen for system-wide broadcast announcements, such as when the device is booted or when the battery is low.
They can also be used to receive custom broadcast messages sent by other apps or components within the same app.
Broadcast receivers are registered in the AndroidManifest...
LateInit is used for non-nullable properties that are initialized later, while Lazy is used for properties that are initialized only once when accessed.
LateInit is used for non-nullable properties that are initialized later in the code.
Lazy is used for properties that are initialized only once when accessed, making it suitable for expensive operations.
LateInit properties must be initialized before accessing, while Lazy
Yes, I have experience working with ViewPager2 and ListAdapter.
Implemented ViewPager2 to create swipeable screens in Android apps.
Utilized ListAdapter to efficiently manage data for RecyclerViews.
Used ListAdapter's DiffUtil to efficiently update RecyclerView items.
Pagination in Android can be achieved by using libraries like Paging Library or implementing custom pagination logic.
Use Paging Library provided by Android Architecture Components
Implement custom pagination logic by loading data in chunks
Update RecyclerView adapter with new data as user scrolls
I have worked on various layouts including linear, relative, grid, and constraint layouts.
Implemented linear layouts to arrange views in a single column or row.
Utilized relative layouts to position views relative to each other.
Used grid layouts for displaying data in a grid-like structure.
Implemented constraint layouts for creating complex and flexible UI designs.
To set a view in the middle in ConstraintLayout, use layout_constraintStart_toStartOf, layout_constraintEnd_toEndOf, layout_constraintTop_toTopOf, and layout_constraintBottom_toBottomOf attributes.
Use layout_constraintStart_toStartOf and layout_constraintEnd_toEndOf to align horizontally in the middle.
Use layout_constraintTop_toTopOf and layout_constraintBottom_toBottomOf to align vertically in the middle.
Set both hori...
A suspend function is a function that can be paused and resumed at a later time without blocking the main thread.
Suspend functions are used in Kotlin coroutines to perform asynchronous operations.
They are defined using the 'suspend' keyword in the function signature.
Suspend functions can only be called from within another suspend function or a coroutine builder like 'launch' or 'async'.
Coroutines in Android can be launched using the 'launch' function from the CoroutineScope.
Use the 'launch' function from the CoroutineScope to start a coroutine.
Specify the context in which the coroutine should run, such as Dispatchers.Main for the main thread.
Handle exceptions within the coroutine using try-catch blocks.
Example: CoroutineScope(Dispatchers.Main).launch { // coroutine code here }
Use runOnUiThread or withContext(Dispatchers.Main) to update UI in coroutine scope.
Use runOnUiThread to update UI from a background thread.
Use withContext(Dispatchers.Main) to switch to the main thread in coroutine scope.
Example: runOnUiThread { textView.text = "Updated text" }
Example: withContext(Dispatchers.Main) { textView.text = "Updated text" }
HashMap is unordered, LinkedHashMap maintains insertion order.
HashMap does not maintain insertion order, LinkedHashMap maintains insertion order.
HashMap allows one null key and multiple null values, LinkedHashMap allows one null key and multiple null values.
HashMap is faster for iteration, LinkedHashMap is slower due to maintaining order.
Syntax for HashMap in Kotlin and Java with values.
In Kotlin:
val hashMap = hashMapOf<String, Int>()
hashMap.put("key1", 1)
hashMap.put("key2", 2)
In Java:
HashMap<String, Integer> hashMap = new HashMap<>();
hashMap.put("key1", 1);
hashMap.put("key2", 2);
Val is immutable, Var is mutable in Kotlin programming language.
Val is used for read-only variables, cannot be reassigned.
Var is used for mutable variables, can be reassigned.
Val is preferred for better code safety and readability.
Example: val name = "John" vs var age = 30
Let and apply are scoped functions in Kotlin used for executing a block of code on an object.
Let function is used to execute a block of code on a non-null object and return the result.
Apply function is used to initialize an object and perform operations on it without explicitly returning a value.
Data can be sent between two activities in Android using Intent with putExtra() method.
Create an Intent object in the sending activity
Use putExtra() method to add data to the Intent
Start the second activity with startActivity() method, passing the Intent
Retrieve the data in the receiving activity using getIntent() and getExtra()
Hot and Cold Flow is a design pattern used in Android development to manage the flow of data between components.
Hot Flow refers to the flow of data that is actively being observed and updated in real-time.
Cold Flow refers to the flow of data that is not actively being observed and updated, but can be retrieved when needed.
Hot Flow is typically used for real-time updates, while Cold Flow is used for fetching data on dem
RecyclerView is more efficient for displaying large datasets and supports various layout managers, while ListView is simpler and easier to implement.
RecyclerView is more efficient for displaying large datasets as it only creates enough views to fill the screen, while ListView creates all views at once.
RecyclerView supports various layout managers like LinearLayoutManager, GridLayoutManager, and StaggeredGridLayoutManag...
Sealed classes are used to restrict inheritance in Kotlin, allowing a class to have a fixed set of subclasses.
Sealed classes are declared using the 'sealed' keyword.
They can only be extended within the same file where they are declared.
Sealed classes are often used in conjunction with when expressions for exhaustive checking.
Back stack is a stack of activities in Android that keeps track of the navigation history.
Back stack is managed by the Android system to handle the navigation flow of activities.
When a new activity is started, it is pushed onto the back stack.
Pressing the back button pops the top activity off the stack and navigates to the previous activity.
Activities in the back stack can be brought to the foreground by using the appr
Hashcode is a unique identifier for an object, equals() compares the content of two objects, and == checks if two references point to the same object.
Hashcode is an integer value generated by a hashing algorithm to uniquely identify an object.
equals() method is used to compare the content of two objects for equality.
== operator checks if two references point to the same object in memory.
Example: String class overrides ...
Top trending discussions
I applied via LinkedIn and was interviewed in Nov 2024. There was 1 interview round.
I applied via Recruitment Consulltant and was interviewed in Jun 2024. There were 2 interview rounds.
MVVM is a design pattern that separates the UI, business logic, and data layers in an Android app.
MVVM stands for Model-View-ViewModel.
Model represents the data and business logic.
View is the UI component that displays the data.
ViewModel acts as a mediator between the Model and View, handling user interactions and updating the UI.
Data binding is often used to connect the ViewModel with the View in MVVM.
Example: In an A...
A Content Provider is a component in Android that manages access to a structured set of data.
Content Providers are used to share data between different applications.
They provide a standard interface for connecting data in one process with code running in another process.
Content Providers can be used to store and retrieve data from a SQLite database, a file, or even the web.
Examples of Content Providers include Contacts
Coroutines are a way to perform asynchronous operations in Android, securing app data involves encryption, SSL pinning enhances security, FCM for notifications.
Coroutines are used for managing asynchronous operations in Android, allowing for efficient and non-blocking code execution.
Securing app data involves using encryption techniques such as AES to protect sensitive information from unauthorized access.
SSL pinning i...
Binary search is a search algorithm that finds the position of a target value within a sorted array.
Divide the array into two halves and compare the target value with the middle element.
If the target value is less than the middle element, search the left half. If greater, search the right half.
Repeat the process until the target value is found or the subarray is empty.
Concurrency technique in Android allows multiple tasks to run simultaneously, improving performance and responsiveness.
Concurrency in Android can be achieved using AsyncTask, Handlers, Executors, and RxJava.
AsyncTask allows running background tasks on a separate thread and updating UI on the main thread.
Handlers are used to post and process Runnable objects on a thread's message queue.
Executors provide a high-level API...
To check if a number is palindrome, reverse the number and compare it with the original number.
Convert the number to a string to easily reverse it
Reverse the string and compare it with the original string
If they are the same, the number is a palindrome
To find the smallest number in a list, iterate through the list and keep track of the smallest number found so far.
Iterate through the list and compare each number with the current smallest number.
If a number is smaller than the current smallest number, update the smallest number.
Return the smallest number found after iterating through the entire list.
I applied via Naukri.com and was interviewed in Nov 2023. There was 1 interview round.
Use counting sort algorithm to achieve O(n) time complexity.
Count the frequency of each string in the array.
Create a new array based on the frequency counts.
Iterate through the new array to reconstruct the sorted array.
Coding test based on array
Interview experience
Software Engineer
10
salaries
| ₹6 L/yr - ₹13 L/yr |
Software Engineer2
10
salaries
| ₹7.5 L/yr - ₹17.5 L/yr |
Senior Software Engineer
10
salaries
| ₹6.3 L/yr - ₹17 L/yr |
Software Engineer II
7
salaries
| ₹9 L/yr - ₹27 L/yr |
Software Developer II
5
salaries
| ₹7.5 L/yr - ₹12 L/yr |
TCS
Infosys
Wipro
HCLTech