Bird
Raised Fist0
Kafkadevops~20 mins

Interactive queries in Kafka - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Kafka Interactive Queries Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this Kafka Streams interactive query?
Consider a Kafka Streams application with a state store named user-store. The following code snippet queries the store for a user ID and prints the result.

ReadOnlyKeyValueStore<String, String> store = streams.store(StoreQueryParameters.fromNameAndType("user-store", QueryableStoreTypes.keyValueStore()));
String user = store.get("user123");
System.out.println(user);

Assuming the store contains the entry {"user123": "Alice"}, what will be printed?
Kafka
ReadOnlyKeyValueStore<String, String> store = streams.store(StoreQueryParameters.fromNameAndType("user-store", QueryableStoreTypes.keyValueStore()));
String user = store.get("user123");
System.out.println(user);
AAlice
Bnull
Cuser123
DThrows a NullPointerException
Attempts:
2 left
💡 Hint
The store.get() method returns the value associated with the key or null if not found.
🧠 Conceptual
intermediate
1:30remaining
Which statement about Kafka Streams interactive queries is true?
Select the correct statement about interactive queries in Kafka Streams.
AInteractive queries require stopping the Kafka Streams application to access state.
BInteractive queries allow querying the local state store of a Kafka Streams instance.
CInteractive queries can only be performed on remote Kafka brokers, not local stores.
DInteractive queries automatically replicate state stores to all instances.
Attempts:
2 left
💡 Hint
Think about where the state store lives and how queries access it.
🔧 Debug
advanced
2:30remaining
Why does this interactive query code throw an exception?
Given the following code snippet:

ReadOnlyKeyValueStore<String, String> store = streams.store("user-store", QueryableStoreTypes.keyValueStore());
String user = store.get("user123");
System.out.println(user);

When running, it throws a IllegalArgumentException. What is the cause?
AThe key "user123" does not exist in the store, causing the exception.
BThe QueryableStoreTypes.keyValueStore() is not supported for interactive queries.
CThe store name must be passed using StoreQueryParameters, not as separate arguments.
DThe streams object is not started before querying the store.
Attempts:
2 left
💡 Hint
Check the method signature for streams.store() in recent Kafka versions.
📝 Syntax
advanced
2:30remaining
Which code snippet correctly performs an interactive query to get all entries from a key-value store?
You want to iterate over all entries in a local key-value store named user-store. Which snippet is correct?
A
ReadOnlyKeyValueStore&lt;String, String&gt; store = streams.store(StoreQueryParameters.fromNameAndType("user-store", QueryableStoreTypes.keyValueStore()));
KeyValueIterator&lt;String, String&gt; iter = store.all();
while (iter.hasNext()) {
  KeyValue&lt;String, String&gt; kv = iter.next();
  System.out.println(kv.key + ": " + kv.value);
}
iter.close();
B
ReadOnlyKeyValueStore&lt;String, String&gt; store = streams.store("user-store", QueryableStoreTypes.keyValueStore());
for (KeyValue&lt;String, String&gt; kv : store) {
  System.out.println(kv.key + ": " + kv.value);
}
C
KeyValueIterator&lt;String, String&gt; iter = streams.store(StoreQueryParameters.fromNameAndType("user-store", QueryableStoreTypes.keyValueStore())).all();
for (KeyValue&lt;String, String&gt; kv : iter) {
  System.out.println(kv.key + ": " + kv.value);
}
D
ReadOnlyKeyValueStore&lt;String, String&gt; store = streams.store(StoreQueryParameters.fromNameAndType("user-store", QueryableStoreTypes.keyValueStore()));
Iterator&lt;KeyValue&lt;String, String&gt;&gt; iter = store.iterator();
while (iter.hasNext()) {
  KeyValue&lt;String, String&gt; kv = iter.next();
  System.out.println(kv.key + ": " + kv.value);
}
Attempts:
2 left
💡 Hint
Check the correct method to get all entries and how to iterate the KeyValueIterator.
🚀 Application
expert
3:00remaining
How to implement a fault-tolerant interactive query across multiple Kafka Streams instances?
You have a Kafka Streams application running on 3 instances, each with a local state store user-store. You want to query the state for a user ID, but the key may be on any instance. Which approach ensures fault-tolerant interactive queries?
AStore all keys redundantly on all instances to query any local store directly.
BQuery the local store on each instance sequentially until the key is found or all checked.
CBroadcast the query to all instances simultaneously and merge results client-side.
DUse the Kafka Streams Metadata API to find the instance hosting the key, then query that instance's store via a REST call.
Attempts:
2 left
💡 Hint
Think about how Kafka Streams partitions state and how to locate the correct instance.

Practice

(1/5)
1.

What is the main purpose of interactive queries in Kafka Streams?

easy
A. To create new Kafka topics dynamically
B. To write data back to Kafka topics
C. To read live state data directly from the Kafka Streams application
D. To monitor Kafka broker health status

Solution

  1. Step 1: Understand interactive queries concept

    Interactive queries allow reading live state from Kafka Streams state stores.
  2. Step 2: Identify the main use case

    The main use is to get real-time data from the app without extra databases.
  3. Final Answer:

    To read live state data directly from the Kafka Streams application -> Option C
  4. Quick Check:

    Interactive queries = read live state [OK]
Hint: Interactive queries read live state, not write or monitor [OK]
Common Mistakes:
  • Confusing interactive queries with writing data
  • Thinking it creates topics
  • Assuming it monitors brokers
2.

Which of the following is the correct way to get a state store named myStore of type ReadOnlyKeyValueStore in Kafka Streams?

easy
A. store = streams.store("myStore", ReadOnlyKeyValueStore.class);
B. store = streams.getStore("myStore", ReadOnlyKeyValueStore);
C. store = streams.getStore("myStore", ReadOnlyKeyValueStore.class);
D. store = streams.store("myStore", ReadOnlyKeyValueStore);

Solution

  1. Step 1: Recall Kafka Streams store retrieval syntax

    The correct method is streams.store(storeName, storeType.class) in Java.
  2. Step 2: Match the correct syntax

    store = streams.store("myStore", ReadOnlyKeyValueStore.class); uses streams.store with class type, which is correct method name and syntax.
  3. Final Answer:

    store = streams.store("myStore", ReadOnlyKeyValueStore.class); -> Option A
  4. Quick Check:

    Use streams.store with class type [OK]
Hint: Use streams.store("name", StoreClass.class) syntax [OK]
Common Mistakes:
  • Using streams.getStore instead of streams.store
  • Omitting .class for type
  • Passing type without .class
3.

Given the following code snippet in a Kafka Streams app, what will be the output if the key "user123" exists with value "active" in the state store?

var store = streams.store("userStatusStore", ReadOnlyKeyValueStore.class);
var status = store.get("user123");
System.out.println(status);
medium
A. null
B. "active"
C. Throws NullPointerException
D. Compilation error

Solution

  1. Step 1: Understand store.get(key) behavior

    The get method returns the value for the key if it exists, else null.
  2. Step 2: Check given key and value

    Since "user123" exists with value "active", store.get("user123") returns "active".
  3. Final Answer:

    "active" -> Option B
  4. Quick Check:

    store.get(existingKey) = value [OK]
Hint: store.get(key) returns value or null if missing [OK]
Common Mistakes:
  • Assuming null is returned even if key exists
  • Expecting exceptions on missing keys
  • Confusing syntax causing compile errors
4.

Identify the error in this Kafka Streams interactive query code snippet:

var store = streams.store("ordersStore", ReadOnlyKeyValueStore.class);
var order = store.get(12345);
System.out.println(order);
medium
A. Passing integer key instead of string key
B. Missing try-catch block for exceptions
C. Using streams.store instead of streams.getStore
D. Incorrect store type ReadOnlyKeyValueStore

Solution

  1. Step 1: Check method to get state store

    The method streams.store is correct.
  2. Step 2: Validate key type and store type

    Key type mismatch: passing integer 12345 instead of string key (common for ordersStore).
  3. Final Answer:

    Passing integer key instead of string key -> Option A
  4. Quick Check:

    Key type must match store definition [OK]
Hint: Use correct key type in store.get(key) [OK]
Common Mistakes:
  • Passing int literal without quotes for string keys
  • Assuming key type must be string always
  • Ignoring exception handling (not mandatory here)
5.

You want to build a real-time dashboard that shows the current count of active users using Kafka Streams interactive queries. Which approach best fits this requirement?

hard
A. Write user statuses to a separate database and query it periodically
B. Store counts in a local variable updated by Kafka Streams processors
C. Use Kafka consumer to read all user status events and aggregate externally
D. Use a ReadOnlyKeyValueStore to store user statuses and query counts live

Solution

  1. Step 1: Identify real-time state storage method

    Kafka Streams state stores hold live data accessible via interactive queries.
  2. Step 2: Choose best approach for live dashboard

    Using ReadOnlyKeyValueStore allows querying current counts directly without extra DB.
  3. Final Answer:

    Use a ReadOnlyKeyValueStore to store user statuses and query counts live -> Option D
  4. Quick Check:

    Interactive queries + state store = real-time dashboard [OK]
Hint: Use state store with interactive queries for live data [OK]
Common Mistakes:
  • Relying on external DB instead of state store
  • Polling Kafka consumer instead of querying store
  • Using local variables which are not shared state
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