0
0
Expressframework~20 mins

In-memory caching with node-cache in Express - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Node-Cache Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
component_behavior
intermediate
2:00remaining
What is the output of this caching example?
Consider this Express route using node-cache. What will be the response when the route is called twice in a row?
Express
import express from 'express';
import NodeCache from 'node-cache';

const app = express();
const cache = new NodeCache({ stdTTL: 5 });

app.get('/data', (req, res) => {
  const cachedData = cache.get('key');
  if (cachedData) {
    return res.send(`Cached: ${cachedData}`);
  }
  const data = 'fresh-data';
  cache.set('key', data);
  res.send(`New: ${data}`);
});
ABoth calls return 'Cached: fresh-data'
BFirst call: 'Cached: fresh-data', second call: 'New: fresh-data'
CBoth calls return 'New: fresh-data'
DFirst call: 'New: fresh-data', second call: 'Cached: fresh-data'
Attempts:
2 left
💡 Hint
Think about what happens when the cache is empty and then filled.
state_output
intermediate
2:00remaining
What is the cache size after these operations?
Given this code snippet using node-cache, how many keys remain in the cache after execution?
Express
import NodeCache from 'node-cache';
const cache = new NodeCache({ stdTTL: 2 });

cache.set('a', 1);
cache.set('b', 2);
setTimeout(() => {
  cache.set('c', 3);
}, 1500);

setTimeout(() => {
  console.log(cache.keys().length);
}, 3000);
A1
B2
C3
D0
Attempts:
2 left
💡 Hint
Remember the TTL and when keys expire.
🔧 Debug
advanced
2:00remaining
Why does this cache retrieval always return undefined?
Look at this Express route using node-cache. Why does it always respond with 'Cache miss' even after setting the value?
Express
import express from 'express';
import NodeCache from 'node-cache';

const app = express();
const cache = new NodeCache();

app.get('/item', (req, res) => {
  const value = cache.get('item');
  if (value) {
    return res.send(`Cached: ${value}`);
  }
  cache.set('item', 'value');
  res.send('Cache miss');
});
ABecause the key 'item' is misspelled in cache.get compared to cache.set.
BBecause cache.get returns undefined if the key is not found, so the first call returns 'Cache miss' but subsequent calls return 'Cached: value'.
CBecause the cache instance is recreated on every request, so the cache is always empty.
DBecause cache.set is asynchronous and the value is not set before cache.get runs.
Attempts:
2 left
💡 Hint
Check if the cache instance is reused and if set/get are synchronous.
📝 Syntax
advanced
2:00remaining
Which option correctly sets a cache with a custom TTL?
You want to store a key 'user' with value 'Alice' in node-cache with a TTL of 10 seconds. Which code is correct?
Acache.set('user', 'Alice', ttl=10);
Bcache.set('user', 'Alice', { ttl: 10 });
Ccache.set('user', 'Alice', 10);
Dcache.set('user', 'Alice', ttl: 10);
Attempts:
2 left
💡 Hint
Check the node-cache set method signature for TTL parameter.
🧠 Conceptual
expert
2:00remaining
What happens if you set a key with TTL 0 in node-cache?
In node-cache, what is the behavior when you set a key with TTL value 0?
AThe key is stored permanently and never expires unless deleted manually.
BThe key expires immediately and is removed from the cache.
CSetting TTL 0 causes a runtime error.
DThe key is stored with the default TTL set in the cache constructor.
Attempts:
2 left
💡 Hint
Think about what TTL 0 means in caching terms.