Top 30 Easy Mobile Dev Concepts Quiz for Beginners
30 easy multiple-choice Mobile Dev concept questions, the vocabulary and first principles, the parts you need before anything else makes sense. They come from 30 bites in the Mobile Dev library, the gentlest slice of the 662 Mobile Dev concept questions in the library. Answer them here or read straight down. Every question carries the correct option, why it is correct, and a link to the bite it came from.
Mobile app development across platforms
30 questions. Pick an answer, or open “Show the answer” to read it.
Answers are graded in your browser. Nothing is saved, and no XP or streak is earned here. The app keeps score.
Question 1 of 30
A developer needs to store a user's current score in a game, which will change throughout gameplay. Which Kotlin keyword should be used?
Show the answer
Answer: c · var
The card states that 'var' should be used for values that need to be reassigned, such as a user's score, while 'val' is for values that remain constant after initial assignment. Choosing 'val' here would lead to a compilation error when trying to update the score.
Read the full bite: Kotlin Variables: `val` for Constants, `var` for Variables
Question 2 of 30
For displaying long, scrolling lists of data in React Native, which component is recommended for optimal performance?
Show the answer
Answer: d · FlatList, because it efficiently renders only the items currently visible on screen.
FlatList is the recommended component for long lists because it optimizes performance by only rendering items currently visible on screen. ScrollView, while providing scrolling, renders all its children at once, which can lead to performance issues with extensive content.
Read the full bite: React Native Core Components: Your UI Building Blocks
Question 3 of 30
A Swift function tries to compile the line let total = 0 followed later in the same function by total = total + 10. What happens?
Show the answer
Answer: c · It fails to compile, because let creates a constant that can only be assigned once, and the second line attempts a second assignment
let enforces single assignment for any type, value or reference, and the compiler catches a second assignment as an error before the program ever runs. Option A is wrong because the let versus var distinction is unrelated to value versus reference semantics, and option C is wrong because Swift never silently ignores a reassignment, it is a hard compile error.
Question 4 of 30
Which keyword is best for a variable initialized at runtime from an API call, never to change?
Show the answer
Answer: a · final
The 'final' keyword is used for variables whose values are determined at runtime and assigned once, making them immutable thereafter. 'const' is incorrect because it requires the value to be known at compile-time, which is not the case for an API response.
Question 5 of 30
What is the main consequence of using the not-null assertion operator (!!) in Kotlin?
Show the answer
Answer: b · It tells the compiler to trust that a value is not null, potentially leading to a runtime NullPointerException if it is.
The not-null assertion operator (!!) bypasses Kotlin's compile-time null safety, forcing the compiler to assume a value is non-null. If the value turns out to be null at runtime, it will result in a NullPointerException, defeating the purpose of Kotlin's null safety. Option A is incorrect because it introduces risk, and options C and D describe the Elvis operator (?:) and safe call operator (?.), respectively.
Read the full bite: Kotlin Null Safety: Catch Nulls at Compile Time
Question 6 of 30
What is the main benefit of using control flow statements like if and for in Swift?
Show the answer
Answer: c · They allow a program to make decisions and repeat specific actions.
Control flow statements are essential because they enable programs to make decisions based on conditions and to repeat blocks of code, moving beyond a simple linear execution. While they can help structure logic to avoid errors, their primary role isn't automatic error fixing or direct speed optimization.
Read the full bite: Swift Control Flow: Directing Your Code's Path
Question 7 of 30
Which of the following is a key benefit of using StyleSheet.create() for styling in React Native?
Show the answer
Answer: c · It optimizes performance by processing style objects once and referencing them efficiently on the native side.
The card explicitly states that StyleSheet.create() processes style objects once and sends them to the native side, which is much faster than re-serializing raw JavaScript style objects on every render. Its primary use is for static styling, not dynamic changes, although it can be combined with dynamic styles.
Question 8 of 30
What is a direct consequence of Dart's principle that "everything is an object"?
Show the answer
Answer: c · Even basic data types like integers and strings have callable methods.
The core idea is that even simple types like int and String are objects, meaning they come with built-in methods and properties, unlike primitive types in other languages. Dart does not have primitive types that need conversion; all values are objects from the start, and 'null' itself is an object of type 'Null'.
Read the full bite: Dart's Core Data Types: Everything is an Object
Question 9 of 30
What is a mandatory requirement when using an `if` expression to assign a value to a variable in Kotlin?
Show the answer
Answer: b · An `else` branch must always be present to cover all possible outcomes.
When `if` is used as an expression, it must always return a value. To guarantee this, the compiler requires an `else` branch to cover all possible cases. The last line of a branch implicitly becomes its return value, without needing an explicit `return` keyword.
Read the full bite: Kotlin's Control Flow Expressions: `if` and `when`
Question 10 of 30
What is the primary reason for using control flow statements in a program?
Show the answer
Answer: a · To allow the program to make decisions and repeat actions based on conditions.
The card explains that control flow allows programs to "react to different inputs, repeat tasks, and handle problems," which directly translates to making decisions and repeating actions. Defining reusable code blocks (functions) is a separate concept, even though functions often contain control flow.
Read the full bite: Dart's Control Flow: Telling Your Code What to Do Next
Question 11 of 30
To perfectly center a child component both horizontally and vertically within its parent using Flexbox, which properties should be applied to the parent container?
Show the answer
Answer: c · flex: 1, justifyContent: 'center', alignItems: 'center'
Option C is correct because 'flex: 1' makes the parent fill available space, 'justifyContent: 'center'' centers children along the primary axis (vertical by default), and 'alignItems: 'center'' centers them along the cross axis (horizontal by default). Option B is incorrect because setting 'flexDirection: 'row'' would change the primary axis, altering how 'justifyContent' and 'alignItems' center the content relative axes.
Read the full bite: Flexbox: Responsive Layouts in React Native
Question 12 of 30
What is the main purpose of using functions in Kotlin?
Show the answer
Answer: d · To package reusable logic, preventing code duplication and enhancing structure.
The card states functions exist "to solve the problem of code repetition and disorganization" by packaging logic into "a single, named block that can be called from anywhere." Option C is incorrect because while good code structure can aid optimization, functions' primary role isn't automatic speed enhancement.
Read the full bite: Kotlin Functions: Named, Reusable Code Blocks
Question 13 of 30
What is the primary characteristic that makes Dart's arrow function syntax (=>) suitable for a function?
Show the answer
Answer: a · It implicitly returns the result of a single, concise expression.
Arrow syntax is designed for functions that compute and return the result of a single expression, implicitly handling the return. Options A and B describe scenarios where a block body function is required, while option D incorrectly states that arrow syntax requires an explicit return keyword.
Read the full bite: Dart Function Syntax: Block Body vs. Arrow Notation
Question 14 of 30
When a struct and a class instance are independently passed to functions that modify them, which statement accurately describes the effect on the original instances?
Show the answer
Answer: b · The original class is modified, but the original struct remains unchanged.
Structs are value types, so passing them to a function creates a copy, and modifications within the function do not affect the original. Classes are reference types, meaning the function receives a reference to the original instance, so changes made through that reference will modify the original object.
Question 15 of 30
Which action would cause an error or unexpected behavior when using React Native's View component?
Show the answer
Answer: a · Directly placing plain text content, like "Hello World", as a child of a View.
The card explicitly states that 'All text content must be placed inside a <Text> component, or your app will throw an error.' The other options describe valid and common uses of the View component for layout and styling.
Read the full bite: The View Component: React Native's UI Building Block
Question 16 of 30
When is the Swift Result type most advantageous for handling failable operations?
Show the answer
Answer: d · When an asynchronous operation needs to explicitly communicate either a success value or a specific error.
The Result type shines in asynchronous programming, providing a standard and type-safe way to pass either a success value or a specific error, especially when errors cannot be propagated with 'throws' across completion handler boundaries. Option A is incorrect because 'throws' is generally preferred for synchronous functions.
Read the full bite: The Result Type: Modeling Success and Failure
Question 17 of 30
Consider a protocol with a default method implementation provided by a protocol extension. If a type conforming to this protocol also implements that same method, which version will be executed?
Show the answer
Answer: d · The type's specific implementation will be executed, taking precedence over the default.
The card explicitly states: "If the conforming type provides its own implementation for a method, the type's specific version is called at runtime, overriding the default." This allows for customization while still providing a fallback. Option A is incorrect because the type's specific implementation takes precedence.
Read the full bite: Protocol Extensions: Default Behavior for Free
Question 18 of 30
Which statement best describes why Dispatchers.Unconfined is generally discouraged for common use cases?
Show the answer
Answer: d · Its behavior after a suspending function can lead to unpredictable thread execution.
Dispatchers.Unconfined is discouraged because it starts on the current thread but can resume on any thread used by a suspending function, leading to unpredictable execution. This is distinct from creating new threads (which is more relevant to newSingleThreadContext) or always running on the main thread.
Read the full bite: Coroutine Dispatchers: Telling Your Coroutines Which Thread to Use
Question 19 of 30
What is the primary reason styles applied to a parent View component do not directly affect text within a child Text component?
Show the answer
Answer: b · Text components operate within a distinct "text world" where styles must be explicitly defined or nested.
The Text component creates a special "text world" with its own layout and styling rules, meaning styles from a parent View are not inherited. Instead, styles must be applied directly to the Text component itself or through nested Text components.
Read the full bite: React Native's Text Component: Beyond Displaying Words
Question 20 of 30
What is the primary effect of cancelling a CoroutineScope?
Show the answer
Answer: b · All coroutines that were launched within that scope are automatically cancelled.
The core function of a CoroutineScope is to manage the lifecycle of its child coroutines; thus, cancelling the scope automatically cancels all coroutines launched within it. Option C is incorrect because existing coroutines are also cancelled, not continued, and new launches would fail rather than just being prevented.
Read the full bite: CoroutineScope: The Parent of Your Coroutines
Question 21 of 30
When displaying an image from a network URL using React Native's Image component, which of the following is a critical requirement for the image to be visible?
Show the answer
Answer: a · You must specify explicit width and height in the style prop.
The card explicitly states that for network images, 'you must provide an explicit width and height in the style prop' because React Native cannot know remote image dimensions, and 'Without these styles, the image will have zero dimensions and be invisible'. While wrapping in a View (C) is common for layout, the Image component itself needs the dimensions to render a network image.
Question 22 of 30
What happens if a Kotlin Flow is created but no terminal operator like .collect() is invoked?
Show the answer
Answer: b · The Flow's producer code will not execute, and no values will be emitted.
Flows are 'cold,' meaning their producer code only executes when a terminal operator like .collect() is called. Without a collector, the flow builder block never runs, so no values are emitted. Option C is incorrect because nothing is emitted to be discarded.
Question 23 of 30
Which statement accurately describes a limitation of static methods in Dart?
Show the answer
Answer: b · They cannot use the 'this' keyword or access instance-specific data.
Static methods belong to the class, not an individual instance. Therefore, they cannot refer to instance-specific data or the 'this' keyword, which points to the current instance. Option D is incorrect because static methods are called directly on the class, without needing an instance.
Read the full bite: Static Members: Belong to the Class, Not the Instance
Question 24 of 30
Which statement accurately describes the primary role of an Xcode project?
Show the answer
Answer: d · It acts as a central blueprint, organizing references to all files, build settings, and instructions needed to build an app.
An Xcode project serves as a central repository that organizes references to all necessary files, build settings, and instructions for building an app, acting as its blueprint. It does not directly contain all files within the .xcodeproj file, nor is it solely a text editor or just for App Store deployment.
Read the full bite: Xcode Project: Your App's Blueprint and Toolbox
Question 25 of 30
What is the primary advantage of using Interface Builder for UI development?
Show the answer
Answer: d · It enables visual design and arrangement of UI components, accelerating layout.
Interface Builder's main benefit is its visual approach to UI design, allowing developers to quickly lay out screens without writing extensive layout code. While it connects to code, it does not remove the need for code files or automatically generate all UI logic, and programmatic UI is an alternative method.
Read the full bite: Interface Builder: Visual UI Design for iOS/macOS
Question 26 of 30
What is the primary advantage of using an Asset Catalog for managing images in an iOS application?
Show the answer
Answer: b · It automates the selection and delivery of the correct image variant (e.g., resolution, appearance) for the current device context.
The card emphasizes that Asset Catalogs solve the "chaos of managing multiple versions" by automatically serving "the perfect version for the current context" (B). While assets are compiled into an optimized format, the primary advantage is the intelligent management and automatic selection of different variants, not just compression (C). Options A and C describe scenarios explicitly mentioned as "when not to use it" for Asset Catalogs.
Read the full bite: Asset Catalogs: Your App's Smart Media Library
Question 27 of 30
What is the main benefit of Android Studio's design for Android app development?
Show the answer
Answer: c · It integrates all essential tools like code editing, building, and testing into one platform.
The card highlights Android Studio as an "all-in-one workshop" and a "single, official, and tightly integrated environment" that combines code editing, building, and testing. The option about a lightweight environment is incorrect as the card explicitly mentions underestimating its resource needs as a "footgun."
Read the full bite: Android Studio: The Official Workshop for Android Apps
Question 28 of 30
Which scenario is the primary reason to opt for React Native's Pressable component over the Button component?
Show the answer
Answer: a · The button requires a custom background gradient and an embedded image.
The card explicitly states that the Button component should not be used for significant custom styling, such as adding an icon or applying a gradient background, recommending Pressable for these needs. Options A, B, and D describe functionalities that are either supported by the Button component or are handled by the onPress callback and state management, not by the component's styling limitations.
Question 29 of 30
What is the primary consequence if you forget to update your app's state within the onValueChange callback for a React Native Switch?
Show the answer
Answer: b · The Switch will visually revert to its previous state after the user interaction.
The card explicitly states that if the state isn't updated, "the switch will appear to snap back to its original position." This is because the Switch's visual state is controlled by the 'value' prop, which won't change if the underlying state isn't updated. Option D is incorrect because the visual state does not persist; it reverts.
Read the full bite: React Native's Controlled Switch Component
Question 30 of 30
Which statement best describes the primary function of the Dart event loop?
Show the answer
Answer: b · It manages the sequential execution of asynchronous operations and user input on a single thread, ensuring the UI remains responsive.
The card explicitly states the event loop is a "single-threaded task manager" whose purpose is "to keep a user interface responsive" by processing events "one at a time." Option B accurately reflects this. Option C is incorrect because the event loop is single-threaded; heavy CPU tasks require spawning a new Isolate, not parallel execution by the event loop itself.
Read the full bite: The Dart Event Loop: Your App's Task Manager
Could you explain these out loud?
That is what an interview actually tests. Tezvyn gives you questions like these with what the interviewer is really checking, the answer that lands, and the mistake that ends the conversation, in the four minutes before your next meeting.
The iPhone app is on the way
We are building it. Until it lands, nothing here is held back from you: every interview card, your saved cards, streaks and the job board all work in Safari, plus hundreds of free practice quizzes of thirty questions each. Sign in and it all carries over to the app the day it arrives.
Want it as an icon? Tap Share at the bottom of Safari, then Add to Home Screen. It opens full screen and the cards you have read stay available offline.