DataStax Apache Cassandra Developer Associate Certification — Questions and Answers
Question 1: What role does the CommitLog play in Cassandra's write path?
- It caches frequently read rows
- It provides durability by recording every write before the MemTable (Correct answer)
- It indexes partitions for fast lookup
- It merges SSTables during compaction
Correct answer: It provides durability by recording every write before the MemTable
The CommitLog is written to first on every mutation to ensure durability in case of a node crash before the MemTable is flushed.
Question 2: What does the term 'eventual consistency' mean in the context of Cassandra?
- Reads always return the latest write
- All nodes are always in sync
- All replicas will converge to the same value given no new updates (Correct answer)
- Writes are synchronous across all replicas
Correct answer: All replicas will converge to the same value given no new updates
Eventual consistency guarantees that if no new updates are made, all replicas will eventually return the same value.
Question 3: In Cassandra, what is 'upsert' behavior?
- Cassandra merges new and existing rows using a conflict resolution algorithm
- Cassandra throws an error if a row already exists during INSERT
- Cassandra requires a prior SELECT to check existence before writing
- Cassandra always treats INSERT and UPDATE as an upsert — existing rows are overwritten at the cell level (Correct answer)
Correct answer: Cassandra always treats INSERT and UPDATE as an upsert — existing rows are overwritten at the cell level
Cassandra's INSERT and UPDATE both perform cell-level upserts: they write the new value regardless of whether the row exists, with no existence check by default.
Question 4: What is 'key cache' in Cassandra and how does it improve performance?
- Caches the entire row for hot partitions
- Caches Bloom filter results to avoid recalculation
- Caches the most recently executed CQL queries
- Caches partition key to SSTable offset mappings, reducing disk seeks for frequently accessed partitions (Correct answer)
Correct answer: Caches partition key to SSTable offset mappings, reducing disk seeks for frequently accessed partitions
The key cache stores the position of a partition key within an SSTable, so Cassandra can skip the index lookup and seek directly to the data on subsequent accesses.
Question 5: What is 'ALLOW FILTERING' in CQL and why should it be used with caution?
- It enables full-text search on TEXT columns
- It allows filtering on materialized view columns
- It enables server-side filtering with secondary indexes only
- It forces Cassandra to scan all partitions to satisfy a query without a partition key, which is expensive (Correct answer)
Correct answer: It forces Cassandra to scan all partitions to satisfy a query without a partition key, which is expensive
ALLOW FILTERING permits queries without a partition key filter but causes a full cluster scan, which is extremely inefficient on large datasets.
Question 6: Which compaction strategy is best suited for time-series data that is mostly appended and rarely updated?
- UnifiedCompactionStrategy (UCS)
- LeveledCompactionStrategy (LCS)
- SizeTieredCompactionStrategy (STCS)
- TimeWindowCompactionStrategy (TWCS) (Correct answer)
Correct answer: TimeWindowCompactionStrategy (TWCS)
TWCS groups SSTables into time windows and compacts within each window, making it ideal for time-series data with little or no overwrites.
Question 7: In a Cassandra cluster, what does 'bootstrap' refer to?
- Restarting all nodes after a cluster-wide upgrade
- The process by which a new node joins the ring and streams its assigned data from existing nodes (Correct answer)
- Starting the Cassandra daemon for the first time
- The initial schema creation when a keyspace is first defined
Correct answer: The process by which a new node joins the ring and streams its assigned data from existing nodes
During bootstrap, a new node contacts the seed nodes, receives its token assignments, and streams the corresponding data from current owners before becoming fully operational.
Question 8: In cassandra.yaml, what does 'concurrent_reads' control?
- The number of client connections allowed
- The number of threads dedicated to serving read requests (Correct answer)
- The CQL read timeout in milliseconds
- The maximum number of SSTables read simultaneously
Correct answer: The number of threads dedicated to serving read requests
concurrent_reads sets the size of the thread pool handling read requests; the default is 32 and can be tuned based on CPU cores and workload.
Question 9: What does 'vnodes' (virtual nodes) provide in Cassandra?
- Isolated namespaces for keyspaces
- Logical shards for multi-tenancy
- More even data distribution by assigning multiple token ranges per physical node (Correct answer)
- Virtual replicas for read performance
Correct answer: More even data distribution by assigning multiple token ranges per physical node
Vnodes assign multiple non-contiguous token ranges to each physical node, resulting in more balanced data distribution and easier cluster scaling.
Question 10: Which Cassandra compaction strategy minimizes read amplification and is best for mixed read/write workloads?
- TimeWindowCompactionStrategy (TWCS)
- DateTieredCompactionStrategy (DTCS)
- SizeTieredCompactionStrategy (STCS)
- LeveledCompactionStrategy (LCS) (Correct answer)
Correct answer: LeveledCompactionStrategy (LCS)
LCS maintains SSTables in levels with size limits, minimizing read amplification to roughly 1 SSTable per read at the cost of higher write I/O.
Question 11: Which CQL keyword allows incrementing or decrementing a numeric column atomically in Cassandra?
- UPDATE ... SET col = col + n (counter table) (Correct answer)
- INCREMENT
- MERGE
- ATOMIC
Correct answer: UPDATE ... SET col = col + n (counter table)
Counter tables support `UPDATE tbl SET col = col + 1 WHERE key = ?` for distributed atomic increments/decrements without lightweight transactions.
Question 12: Which CQL function generates a new unique time-based UUID suitable for use as a clustering key?
- toTimestamp()
- currentTime()
- now() (Correct answer)
- uuid()
Correct answer: now()
The now() function in CQL generates a new TIMEUUID based on the current time, useful for inserting rows with a time-ordered clustering key.
Question 13: In Cassandra data modeling, what is 'denormalization'?
- Partitioning a large table into smaller ones
- Storing duplicate data in multiple tables to support different query patterns efficiently (Correct answer)
- Normalizing data into separate tables with foreign keys
- Removing duplicate columns from a table
Correct answer: Storing duplicate data in multiple tables to support different query patterns efficiently
Because Cassandra cannot perform joins, data is intentionally duplicated across multiple tables, each designed for a specific query access pattern.
Question 14: Which CQL collection type preserves insertion order and allows duplicate values?
- list (Correct answer)
- map
- set
- tuple
Correct answer: list
A list is an ordered collection of values that permits duplicates, unlike a set which is unordered and deduplicates, or a map which stores key-value pairs.
Question 15: How does the virtual node (vnode) feature improve cluster operations compared to single-token assignment?
- Vnodes reduce the number of SSTables per node
- Vnodes compress partition keys to reduce network traffic
- Vnodes make data distribution more even and simplify adding or removing nodes (Correct answer)
- Vnodes allow a single node to act as both coordinator and replica
Correct answer: Vnodes make data distribution more even and simplify adding or removing nodes
With vnodes, each physical node owns many small token ranges, so bootstrapping and decommissioning redistributes data in smaller, parallel streams.
Question 16: What does 'nodetool move' do in Cassandra?
- Moves CommitLog files to a new directory
- Transfers ownership of all token ranges to a peer node
- Changes the token assignment of the current node to rebalance data distribution (Correct answer)
- Migrates all data to a new data center
Correct answer: Changes the token assignment of the current node to rebalance data distribution
nodetool move changes the node's token to a new value, causing Cassandra to stream the appropriate data to/from neighboring nodes to maintain correct distribution.
Question 17: What is the purpose of the 'internode_encryption' setting in cassandra.yaml?
- Enforces CQL over SSL for clients
- Encrypts CommitLog entries
- Enables TLS encryption for communication between Cassandra nodes (Correct answer)
- Encrypts data at rest in SSTables
Correct answer: Enables TLS encryption for communication between Cassandra nodes
internode_encryption controls whether TLS is used to secure gossip and streaming traffic between nodes in the cluster.
Question 18: Which cassandra.yaml configuration section controls SSL/TLS encryption for connections between clients and Cassandra nodes?
- client_encryption_options (Correct answer)
- tls_encryption_options
- ssl_options
- server_encryption_options
Correct answer: client_encryption_options
client_encryption_options in cassandra.yaml governs TLS settings for the native CQL protocol used by client drivers connecting to Cassandra.
Question 19: What availability risk is introduced by leaving the system_auth keyspace at its default replication factor of 1?
- A single node failure can make authentication unavailable cluster-wide (Correct answer)
- Performance degrades significantly under concurrent logins
- Users will be unable to change their passwords
- Superuser credentials become visible to other nodes
Correct answer: A single node failure can make authentication unavailable cluster-wide
With RF=1 for system_auth, if the single node holding a credential replica goes down, authentication requests routed to that token range will fail, potentially locking users out.
Question 20: How do you assign superuser privileges to a role when creating it in Cassandra?
- CREATE ROLE admin WITH PRIVILEGE = SUPER
- CREATE ROLE admin WITH ROLE = SUPERUSER
- CREATE ROLE admin WITH ADMIN = true
- CREATE ROLE admin WITH SUPERUSER = true (Correct answer)
Correct answer: CREATE ROLE admin WITH SUPERUSER = true
The SUPERUSER = true option in CREATE ROLE or ALTER ROLE grants full administrative access, allowing the role to manage all other roles and permissions.
Question 21: How do you enable authentication in Cassandra?
- Create a superuser via cqlsh only
- Enable TLS in cassandra-env.sh
- Set authenticator: AllowAllAuthenticator in cassandra.yaml
- Set authenticator: PasswordAuthenticator in cassandra.yaml (Correct answer)
Correct answer: Set authenticator: PasswordAuthenticator in cassandra.yaml
Setting authenticator to PasswordAuthenticator in cassandra.yaml enables username/password authentication using the system_auth keyspace.
Question 22: Which of the following data types is utilized to produce our own data kinds?
- User-defined data types (Correct answer)
- None of the Above
- Collection data types
- Both Answer
Correct answer: User-defined data types
Explanation: <br> As the name suggests, User-defined data types are used to create data types of our own. In Cassandra, user-defined data types are used to group multiple columns into a single data type, allowing you to define custom structures for your data.
Question 23: What does the CQL statement 'UPDATE ... IF EXISTS' provide?
- A batch update across multiple partitions
- A lightweight transaction that only applies the update if the row already exists (Correct answer)
- An upsert that creates the row if missing
- A conditional update using Paxos consensus
Correct answer: A lightweight transaction that only applies the update if the row already exists
IF EXISTS uses Cassandra's lightweight transaction (LWT) mechanism backed by Paxos to perform a compare-and-swap, only updating if the row already exists.
Question 24: What does the 'nodetool drain' command do before a node shutdown?
- Clears the key cache and row cache
- Decommissions the node and rebalances tokens
- Removes the node from the ring
- Flushes all MemTables, stops accepting writes, and drains the CommitLog so the node can be safely stopped (Correct answer)
Correct answer: Flushes all MemTables, stops accepting writes, and drains the CommitLog so the node can be safely stopped
nodetool drain ensures all pending writes are flushed to SSTables and the CommitLog is cleared, allowing a clean node shutdown without data loss.
Question 25: What does 'nodetool decommission' do?
- Forces a node to restart
- Safely removes a node by streaming its data to other nodes before leaving the ring (Correct answer)
- Marks a node as down in gossip
- Deletes all data on a node immediately
Correct answer: Safely removes a node by streaming its data to other nodes before leaving the ring
nodetool decommission moves the node's token ranges to other nodes and then cleanly removes it from the ring.
Question 26: You need to read the most recent 10 events for a user from a time-ordered table. Which CQL clause should you use?
- TOP 10
- LIMIT 10 (Correct answer)
- ROWNUM <= 10
- FETCH FIRST 10 ROWS ONLY
Correct answer: LIMIT 10
The LIMIT clause in CQL restricts the number of rows returned per partition, making it efficient for paginated or top-N queries.
Question 27: Which CQL data type is used to store a universally unique identifier generated natively by Cassandra?
- text
- uuid
- timeuuid (Correct answer)
- blob
Correct answer: timeuuid
timeuuid (version 1 UUID) embeds a timestamp, enabling time-ordered sorting and the use of now() and dateOf() functions in CQL.
Question 28: What is a user-defined type (UDT) in Cassandra CQL?
- A custom compaction strategy
- A custom partition key type
- A stored procedure written in Java
- A named group of typed fields that can be embedded as a column value in a table (Correct answer)
Correct answer: A named group of typed fields that can be embedded as a column value in a table
A UDT allows you to define a reusable composite type with named fields (e.g., address with street, city, zip) that can be used as a column value in tables.
Question 29: What is the default native transport port used by Cassandra for CQL client connections?
- 9042 (Correct answer)
- 7199
- 7001
- 7000
Correct answer: 9042
Port 9042 is the default CQL native transport port that drivers and tools like cqlsh use to connect to Cassandra.
Question 30: Which of the subsequent APIs is used by Cassandra's Column Families and Tables?
- Column Family-CQL API ;Table-CQL API
- Column Family-Thrift API ;Table-Thrift API
- Column Family-CQL API ;Table-Thrift API (Correct answer)
- Column Family-Thrift API ;Table-CQL API
Correct answer: Column Family-CQL API ;Table-Thrift API
Explanation: <br> Correct Answer: Column Family-CQL API ;Table-Thrift API.
Question 31: What is the difference between a partition key and a clustering key in a Cassandra primary key?
- The partition key determines data distribution; clustering keys determine sort order within a partition (Correct answer)
- The clustering key determines which node stores data; the partition key sorts rows
- There is no difference; they are synonyms
- The partition key is optional; the clustering key is mandatory
Correct answer: The partition key determines data distribution; clustering keys determine sort order within a partition
The partition key routes data to a node via consistent hashing, while clustering columns control the physical sort order of rows stored within that partition.
Question 32: Which Cassandra metric indicates that a node is receiving more writes than it can process?
- High key cache hit rate
- High Bloom filter false positive rate
- Low SSTable count
- High MutationStage pending tasks in tpstats (Correct answer)
Correct answer: High MutationStage pending tasks in tpstats
A growing pending task count in the MutationStage thread pool indicates write throughput is exceeding the node's processing capacity.
Question 33: What does the `ALLOW FILTERING` clause do in a CQL SELECT statement?
- Permits queries without a WHERE clause on primary keys
- Forces use of a secondary index
- Enables server-side filtering that may require a full partition scan (Correct answer)
- Disables client-side filtering for performance
Correct answer: Enables server-side filtering that may require a full partition scan
ALLOW FILTERING permits Cassandra to filter data server-side, potentially scanning many partitions, which can be very slow at scale.
Question 34: What CQL statement is used to create a new keyspace in Cassandra?
- CREATE KEYSPACE (Correct answer)
- CREATE DATABASE
- CREATE NAMESPACE
- CREATE SCHEMA
Correct answer: CREATE KEYSPACE
CREATE KEYSPACE is the CQL command to define a new keyspace, specifying the replication strategy and factor.
Question 35: How does increasing the 'memtable_flush_writers' setting improve Cassandra write performance?
- It increases the number of threads flushing MemTables to SSTables in parallel, improving throughput on multi-disk setups (Correct answer)
- It reduces the MemTable size, causing more frequent smaller flushes
- It enables concurrent writes to the same partition
- It compresses MemTable data before flushing
Correct answer: It increases the number of threads flushing MemTables to SSTables in parallel, improving throughput on multi-disk setups
More flush writer threads allow Cassandra to flush multiple MemTables to disk concurrently, benefiting systems with multiple data directories or fast SSDs.
Question 36: What does a Cassandra consistency level of QUORUM mean for a cluster with a replication factor of 3?
- The nearest replica must acknowledge
- At least 2 replicas must acknowledge (Correct answer)
- All 3 replicas must acknowledge
- Only 1 replica must acknowledge
Correct answer: At least 2 replicas must acknowledge
QUORUM requires a majority, calculated as floor(RF/2) + 1, so for RF=3 that means 2 acknowledgments.
Question 37: What is the 'row cache' in Cassandra and when should it be used?
- A cache of CQL prepared statement results
- A disk-based cache for recently flushed SSTables
- A client-side cache maintained by the driver
- An in-JVM cache of entire partitions for tables with very few partitions and high read frequency (Correct answer)
Correct answer: An in-JVM cache of entire partitions for tables with very few partitions and high read frequency
The row cache stores entire partition rows in off-heap memory and is only beneficial for tables with a small number of frequently accessed partitions.
Question 38: A write with consistency level LOCAL_ONE means Cassandra will wait for acknowledgment from:
- One replica plus the coordinator node
- One replica only in the local datacenter (Correct answer)
- The closest replica determined by dynamic snitch
- One replica across all datacenters
Correct answer: One replica only in the local datacenter
LOCAL_ONE requires acknowledgment from exactly one replica in the same datacenter as the coordinator, reducing cross-DC latency.
Question 39: Cassandra utilizes _________ by default for cluster communication.
- 3000
- 7000 (Correct answer)
- 5000
- 9000
Correct answer: 7000
Explanation: <br> Cassandra uses port numbers 9042 for native protocol clients, 7000 for cluster communication (or 7001 if SSL is enabled), and 7199 for JMX by default.
Question 40: What does the 'listen_address' parameter in cassandra.yaml define?
- The address of the seed node
- The address Cassandra listens on for CQL client connections
- The IP address the node uses to communicate with other nodes in the cluster (Correct answer)
- The Thrift RPC address
Correct answer: The IP address the node uses to communicate with other nodes in the cluster
listen_address is the IP that other Cassandra nodes use to reach this node for inter-node communication (gossip, streaming, repairs).
Question 41: Which CQL statement correctly grants SELECT permission on table 'orders' in keyspace 'sales' to role 'analyst'?
- GRANT READ ON TABLE sales.orders TO analyst
- PERMIT SELECT ON TABLE sales.orders TO analyst
- ALLOW SELECT ON sales.orders FOR analyst
- GRANT SELECT ON TABLE sales.orders TO analyst (Correct answer)
Correct answer: GRANT SELECT ON TABLE sales.orders TO analyst
The correct syntax is GRANT <permission> ON <resource> TO <role>, using standard SQL-style permission names like SELECT, MODIFY, and ALTER.
Question 42: What are the default superuser credentials in a freshly installed Apache Cassandra cluster?
- root / cassandra
- admin / admin
- user / password
- cassandra / cassandra (Correct answer)
Correct answer: cassandra / cassandra
Cassandra ships with a default superuser account where both the username and password are 'cassandra', which must be changed immediately in production.
Question 43: What is the purpose of the ALLOW FILTERING clause in a CQL SELECT statement?
- Enables server-side post-processing of results not supported by the primary key or index (Correct answer)
- Forces a full table scan on all coordinator nodes
- Bypasses Cassandra's consistency level check
- Allows filtering on static columns
Correct answer: Enables server-side post-processing of results not supported by the primary key or index
ALLOW FILTERING instructs Cassandra to perform an in-memory filter on data that cannot be satisfied by the partition key or a secondary index, which can be expensive.
Question 44: What is 'tombstone' in Cassandra?
- A log entry for schema changes
- A deletion marker stored in SSTables to represent deleted data (Correct answer)
- A backup snapshot file
- A marker written at node startup
Correct answer: A deletion marker stored in SSTables to represent deleted data
A tombstone is a deletion marker written to an SSTable that tells Cassandra to ignore older versions of that data during reads.
Question 45: Which JVM garbage collector is recommended for Cassandra to minimize GC pause times?
- Serial GC
- G1GC or ZGC (Correct answer)
- CMS GC
- Parallel GC
Correct answer: G1GC or ZGC
G1GC (and increasingly ZGC for newer JDKs) is recommended for Cassandra to keep GC pauses short and avoid stop-the-world events that affect latency.
Question 46: Which authenticator must be configured in cassandra.yaml to require clients to provide a username and password?
- PasswordAuthenticator (Correct answer)
- AllowAllAuthenticator
- SecureAuthenticator
- CassandraAuthenticator
Correct answer: PasswordAuthenticator
PasswordAuthenticator stores credentials in the system_auth keyspace and requires clients to supply a username and password during connection.
Question 47: Which directory parameter in cassandra.yaml specifies where SSTables are stored on disk?
- commitlog_directory
- data_file_directories (Correct answer)
- saved_caches_directory
- hints_directory
Correct answer: data_file_directories
data_file_directories defines the on-disk path(s) where Cassandra writes SSTable files for all keyspaces and tables.
Question 48: What is the purpose of 'full repair' vs 'incremental repair' in Cassandra?
- Full repair compacts all SSTables; incremental repair only compacts new SSTables
- Full repair checks all SSTables; incremental repair only checks SSTables written since the last repair (Correct answer)
- Full repair runs on the entire cluster; incremental repair runs on a single node
- They are equivalent — the terms are interchangeable
Correct answer: Full repair checks all SSTables; incremental repair only checks SSTables written since the last repair
Incremental repair marks repaired SSTables and only re-repairs unrepaired SSTables in subsequent runs, significantly reducing repair time and cluster overhead.
Question 49: What is the recommended approach to add a new datacenter to an existing Cassandra cluster without downtime?
- Bootstrap new nodes in the datacenter, then run nodetool rebuild on each to stream data (Correct answer)
- Use ALTER KEYSPACE to add the datacenter, then run nodetool repair on existing nodes
- Stop all nodes, update cassandra.yaml, then restart the entire cluster
- Run nodetool decommission on old datacenter nodes before adding the new ones
Correct answer: Bootstrap new nodes in the datacenter, then run nodetool rebuild on each to stream data
New nodes join the ring, and `nodetool rebuild` streams the required token ranges from an existing datacenter, allowing a live, zero-downtime datacenter addition.
Question 50: What does the gc_grace_seconds property control in a Cassandra table?
- The minimum time tombstones are retained before compaction can purge them (Correct answer)
- The interval between automatic repair cycles
- How long Cassandra waits before evicting data from the memtable
- The timeout before a coordinator retries a failed write
Correct answer: The minimum time tombstones are retained before compaction can purge them
gc_grace_seconds (default 864000 = 10 days) defines how long tombstones are kept to ensure deleted data does not resurface on nodes that were down during the deletion.
Question 51: Which architecture model does Apache Cassandra follow?
- Master-slave
- Hub-and-spoke
- Peer-to-peer (masterless) (Correct answer)
- Primary-secondary with arbiter
Correct answer: Peer-to-peer (masterless)
Cassandra uses a fully peer-to-peer masterless architecture where every node can accept reads and writes.
Question 52: What is the impact of too many tombstones in a Cassandra partition?
- Increased write throughput
- Faster compaction cycles
- Reduced replication overhead
- Degraded read performance because Cassandra must scan and filter tombstones during reads (Correct answer)
Correct answer: Degraded read performance because Cassandra must scan and filter tombstones during reads
Reads must traverse tombstones to determine what data is live; a partition with millions of tombstones can cause read timeouts and TombstoneOverwhelmingException.
Question 53: What is a 'materialized view' in Cassandra?
- A view stored in memory only, not persisted to disk
- A read-only cached copy of a base table with a different primary key for alternate access patterns (Correct answer)
- A writable denormalized copy of a table managed by the user
- A cross-keyspace join of two tables
Correct answer: A read-only cached copy of a base table with a different primary key for alternate access patterns
A materialized view is automatically maintained by Cassandra as a separate table built from a base table, allowing efficient queries on non-primary-key columns.
Question 54: What is the purpose of the FROZEN keyword in CQL when used with collections or UDTs?
- Compresses the collection on disk
- Marks the column as read-only
- Enables secondary indexing on nested fields
- Serializes the entire collection/UDT as a single blob, preventing partial updates (Correct answer)
Correct answer: Serializes the entire collection/UDT as a single blob, preventing partial updates
FROZEN serializes the entire collection or user-defined type as a single immutable value; updates must replace the entire value, enabling it to be used as a primary key component.
Question 55: What does 'speculative execution' do in Cassandra drivers?
- Pre-compiles CQL statements to reduce parse overhead
- Sends duplicate requests to multiple replicas and uses the fastest response to reduce tail latency (Correct answer)
- Executes a query on a secondary index speculatively
- Pre-fetches the next page of results
Correct answer: Sends duplicate requests to multiple replicas and uses the fastest response to reduce tail latency
Speculative execution fires off the same query to an additional replica after a configurable delay, reducing tail latency by using the faster response.
Question 56: Which CQL data type should be used to store a universally unique identifier in Cassandra?
- UUID or TIMEUUID (Correct answer)
- BLOB
- TEXT
- BIGINT
Correct answer: UUID or TIMEUUID
UUID stores a random version-4 UUID while TIMEUUID stores a version-1 time-based UUID, both natively supported as primary key types in Cassandra.
Question 57: What does the 'endpoint_snitch' configuration control in Cassandra?
- How Cassandra determines the topology (rack/DC) of nodes for replica placement (Correct answer)
- The gossip heartbeat interval
- The CQL protocol version
- Network traffic encryption
Correct answer: How Cassandra determines the topology (rack/DC) of nodes for replica placement
The endpoint_snitch tells Cassandra how nodes are organized into racks and data centers so it can place replicas intelligently to maximize fault tolerance.
Question 58: What does 'hinted handoff' do when a replica node is temporarily down?
- The write is permanently rejected
- The coordinator waits indefinitely for the down node to recover
- Another replica is permanently promoted to own that token range
- The coordinator stores the write as a hint and replays it to the node when it recovers (Correct answer)
Correct answer: The coordinator stores the write as a hint and replays it to the node when it recovers
Hinted handoff lets the coordinator temporarily store missed writes for a down replica and deliver them once that node comes back online, improving write availability.
Question 59: What mechanism does Cassandra use to detect and recover from failed nodes automatically?
- Paxos consensus
- Gossip protocol with hinted handoff (Correct answer)
- Raft leader election
- ZooKeeper coordination
Correct answer: Gossip protocol with hinted handoff
Cassandra uses gossip for failure detection and hinted handoff to store missed writes temporarily on behalf of a down replica.
Question 60: What is the recommended approach to improve Cassandra read latency for a table that is read in random order with many SSTables?
- Trigger nodetool compact to reduce SSTable count (Correct answer)
- Switch the consistency level to ONE
- Increase the replication factor
- Add more clustering columns
Correct answer: Trigger nodetool compact to reduce SSTable count
Reducing the number of SSTables through compaction lowers read amplification since fewer files need to be consulted to reconstruct a partition.
DataStax Apache Cassandra Developer Associate Certification
The DataStax Apache Cassandra Developer Associate certification validates knowledge of CQL, data modeling, Cassandra architecture, and cluster operations. It targets developers and administrators working with Apache Cassandra in production environments.
Exam Rules
- You can skip questions and return to them later
- Flag questions for review before submitting
- No feedback shown until you submit the entire exam
- Unanswered questions count as wrong — answer everything
- 10 pretest questions are mixed in and don't affect your score
- Timer auto-submits when time runs out
- Your progress is auto-saved every 30 seconds