# Some good exercises ## Map/Hashtable/Dictionary The task is to build a map/hashtable datastructure using only `basic` data type. https://en.wikipedia.org/wiki/Hash_table This would be equivalent to Javascripts `Map` that allows you to perform several map operations. e.g `get`, `set`, etc.. See Javascripts map here: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map Use any collision resolution method you like and feel free to add any cool features you see fit Sample usage for your map would be something like ``` const m = new MyMap() m.set("a", 1) const v = m.get("a") console.log(1 == v) // true ``` ## Cache The task is to build an in-memory key-value store (cache). You can use any in-built complex data types like `Map`, `Set`, etc.. (or you can use your custom Map from the map exercise above 😉 ) https://en.wikipedia.org/wiki/Cache_(computing) Your cache should be configurable with the following options: - size: The max number of items the cache can hold - strategy: The replacement/eviction strategy to use. LRU or LFU. See https://en.wikipedia.org/wiki/Cache_replacement_policies - ttl: A duration after which the item should be automatically evicted from the cache. i.e The item is `stale` Sample usage for your map would be something like ``` const options = {...} const c = new Cache(options) c.set("a", 1) const v = m.get("a") console.log(1 == v) // true ```