Bird
Raised Fist0
Android Kotlinmobile~10 mins

Cloud Firestore integration in Android Kotlin - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to get an instance of Firestore.

Android Kotlin
val db = FirebaseFirestore.[1]()
Drag options to blanks, or click blank then click option'
AgetInstance
Binitialize
Cconnect
Dstart
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'initialize()' instead of 'getInstance()'.
Trying to create Firestore with 'connect()'.
2fill in blank
medium

Complete the code to add a new document to the 'users' collection.

Android Kotlin
db.collection("users").[1](userData)
Drag options to blanks, or click blank then click option'
Aget
Bupdate
Cadd
Ddelete
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'get()' which only reads data.
Using 'update()' which requires an existing document.
3fill in blank
hard

Fix the error in the code to listen for realtime updates on 'messages' collection.

Android Kotlin
db.collection("messages").addSnapshotListener { snapshots, [1] ->
    if (error != null) {
        return@addSnapshotListener
    }
    // process snapshots
}
Drag options to blanks, or click blank then click option'
Athrowable
Bexception
Cfailure
Derror
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'exception' or 'error' which are not the parameter names here.
Using 'failure' which is not defined.
4fill in blank
hard

Fill both blanks to update the 'age' field of a document with ID 'userId' in 'users' collection.

Android Kotlin
db.collection("users").document(userId).[1](mapOf("age" to [2]))
Drag options to blanks, or click blank then click option'
Aupdate
Bset
C25
D30
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'set()' which replaces the whole document.
Using a wrong age value.
5fill in blank
hard

Fill all three blanks to query 'products' collection for items with price greater than 100 and order by price ascending.

Android Kotlin
db.collection("products").whereGreaterThan("[1]", [2]).orderBy("[3]")
Drag options to blanks, or click blank then click option'
Aprice
B100
Dname
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'name' instead of 'price' for filtering or ordering.
Using a wrong number for comparison.

Practice

(1/5)
1. What is the primary purpose of Cloud Firestore in an Android app?
easy
A. To compile Kotlin code
B. To design the app's user interface
C. To store and sync app data in the cloud
D. To manage app permissions

Solution

  1. Step 1: Understand Cloud Firestore's role

    Cloud Firestore is a cloud database service that stores and syncs app data.
  2. Step 2: Differentiate from other app functions

    UI design, code compilation, and permission management are handled by other tools, not Firestore.
  3. Final Answer:

    To store and sync app data in the cloud -> Option C
  4. Quick Check:

    Cloud Firestore = Data storage and sync [OK]
Hint: Remember Firestore is a cloud database, not UI or code tool [OK]
Common Mistakes:
  • Confusing Firestore with UI design tools
  • Thinking Firestore compiles code
  • Assuming Firestore manages app permissions
2. Which Kotlin code correctly initializes a Firestore instance?
easy
A. val db = FirebaseFirestore.getInstance()
B. val db = Firestore.getInstance()
C. val db = Firebase.getFirestore()
D. val db = FirestoreClient.get()

Solution

  1. Step 1: Recall Firestore initialization syntax

    The official way to get Firestore instance in Kotlin is FirebaseFirestore.getInstance().
  2. Step 2: Check other options for correctness

    Other options use incorrect class or method names not in Firestore API.
  3. Final Answer:

    val db = FirebaseFirestore.getInstance() -> Option A
  4. Quick Check:

    Correct Firestore init = val db = FirebaseFirestore.getInstance() [OK]
Hint: Use FirebaseFirestore.getInstance() to start Firestore [OK]
Common Mistakes:
  • Using Firestore.getInstance() which does not exist
  • Confusing FirebaseFirestore with Firebase class
  • Using FirestoreClient which is not part of Android SDK
3. Given this code snippet, what will be printed if the document exists with field "name" = "Alice"?
val db = FirebaseFirestore.getInstance()
db.collection("users").document("user1").get()
  .addOnSuccessListener { document ->
    if (document != null && document.exists()) {
      println(document.getString("name"))
    } else {
      println("No such document")
    }
  }
medium
A. Alice
B. No such document
C. null
D. Error at runtime

Solution

  1. Step 1: Understand the get() and success listener

    The get() fetches the document asynchronously; if it exists, the listener runs the success block.
  2. Step 2: Check document existence and print field

    Since document exists and has "name" = "Alice", println(document.getString("name")) prints "Alice".
  3. Final Answer:

    Alice -> Option A
  4. Quick Check:

    Document exists with name = Alice [OK]
Hint: If document exists, getString returns the field value [OK]
Common Mistakes:
  • Assuming document is null when it exists
  • Expecting 'No such document' incorrectly
  • Confusing getString with get() returning document
4. Identify the error in this Firestore write operation:
val db = FirebaseFirestore.getInstance()
db.collection("users").document("user1").set("name", "Bob")
medium
A. document() must be called after set()
B. Collection name cannot be "users"
C. FirebaseFirestore.getInstance() is incorrect
D. set() requires a Map or an object, not two parameters

Solution

  1. Step 1: Check set() method signature

    set() expects a single argument: a Map or an object representing fields and values.
  2. Step 2: Analyze the provided code

    Passing two parameters "name", "Bob" is invalid and causes a compile error.
  3. Final Answer:

    set() requires a Map or an object, not two parameters -> Option D
  4. Quick Check:

    set() needs one argument (Map/object) [OK]
Hint: Use a Map for set(), not separate key-value parameters [OK]
Common Mistakes:
  • Passing multiple parameters to set() instead of a Map
  • Calling document() after set() instead of before
  • Thinking collection name restrictions cause error
5. You want to listen in real-time to changes in a Firestore collection "messages" and update your UI accordingly. Which code snippet correctly sets up this listener?
hard
A. db.collection("messages").get().addOnSuccessListener { snapshots -> for (doc in snapshots) { println(doc.getString("text")) } }
B. db.collection("messages").addSnapshotListener { snapshots, e -> if (e != null) { println("Listen failed") } else { for (doc in snapshots!!) { println(doc.getString("text")) } } }
C. db.collection("messages").document().addSnapshotListener { doc, e -> println(doc?.getString("text")) }
D. db.collection("messages").addListener { snapshots -> println(snapshots) }

Solution

  1. Step 1: Understand real-time listeners in Firestore

    addSnapshotListener listens for real-time updates on a collection or document.
  2. Step 2: Analyze each option

    db.collection("messages").addSnapshotListener { snapshots, e -> if (e != null) { println("Listen failed") } else { for (doc in snapshots!!) { println(doc.getString("text")) } } } correctly uses addSnapshotListener on collection with error check and iterates snapshots. db.collection("messages").get().addOnSuccessListener { snapshots -> for (doc in snapshots) { println(doc.getString("text")) } } uses get() which is one-time fetch. db.collection("messages").document().addSnapshotListener { doc, e -> println(doc?.getString("text")) } listens on a document without specifying ID. db.collection("messages").addListener { snapshots -> println(snapshots) } uses non-existent addListener method.
  3. Final Answer:

    db.collection("messages").addSnapshotListener { snapshots, e -> if (e != null) { println("Listen failed") } else { for (doc in snapshots!!) { println(doc.getString("text")) } } } -> Option B
  4. Quick Check:

    Real-time listener = addSnapshotListener on collection [OK]
Hint: Use addSnapshotListener on collection for real-time updates [OK]
Common Mistakes:
  • Using get() instead of addSnapshotListener for real-time
  • Calling addSnapshotListener on document without ID
  • Using non-existent addListener method
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard