Your question is Thread-Safe LRU Cache for Serving. Start with the requirements on the right.
Run and submit as often as you like. When you're ready, talk me through your approach or go straight to the code.
Goldman Sachs Marquee model-serving workers need a bounded cache for recently used model results. Implement a thread-safe least recently used (LRU) cache that supports constant-time get and put operations.
Your function receives a positive capacity and a sequence of operations. Each operation is either ["get", key] or ["put", key, value]. Return the results of all get operations in order. A missing key returns -1; put operations produce no output.
The cache must satisfy these rules:
get marks the key as most recently used.get cannot observe a partially completed update or eviction. It is acceptable to process the supplied operations sequentially while using a lock internally.Input: integer capacity and a list of operation lists containing integer keys and values. Output: a list of values from get operations, in order.
def lru_cache(capacity, operations):