PracHub
QuestionsPremiumCoachesLearningGuidesInterview Prep
|Home/Coding & Algorithms/Oracle

Implement in-memory data structures and booking API

Last updated: Mar 29, 2026

Quick Overview

This question evaluates proficiency in data structures and algorithms, systems-level data modeling, and practical API design by testing in-memory key-value stores, list and string operations, LRU eviction mechanics, linked-list and tree manipulation, and stateful booking behavior.

  • hard
  • Oracle
  • Coding & Algorithms
  • Software Engineer

Implement in-memory data structures and booking API

Company: Oracle

Role: Software Engineer

Category: Coding & Algorithms

Difficulty: hard

Interview Round: Technical Screen

## Part A — Implement a simplified Redis-like in-memory store (Go) Implement an in-memory key-value store that supports **string values** and **list-of-strings values**. ### Supported operations 1. **`SET(key, value)`** - Set `key` to a **string** `value`. - If the key already exists, **override** the previous value (regardless of prior type). 2. **`LIST_PUSH(key, value)`** - Treat `key` as a **list of strings**. - Push `value` to the **head** of the list. - If the key does not exist, create a new list. - If the key exists as a string, define the expected behavior (e.g., overwrite to a list, or return an error) and be consistent. 3. **`GET(key)`** - Return the value for `key`, which may be: - a string, or - a list of strings, or - “not found”. 4. **`LIST_REMOVE(key, count, value)`** - Remove elements equal to `value` from the list at `key`. - Removal semantics: - if `count > 0`: remove the **first `count`** matching elements scanning from head → tail. - if `count < 0`: remove the **last `|count|`** matching elements scanning from tail → head. - if `count = 0`: remove **all** matching elements. - Return an appropriate result (e.g., number removed, or error if key missing/not a list). ### Notes / constraints - **Expiration/TTL support is deferred** (do not implement unless asked). - Aim for clean interfaces and well-defined error cases. - Assume single-process, in-memory storage (no persistence required). --- ## Part B — LRU cache Design and implement an **LRU (Least Recently Used) cache** with typical operations: - `Get(key) -> value or not found` - `Put(key, value)` Constraints/requirements: - Fixed capacity `C`. - `Get`/`Put` should be **O(1)** average time. - When capacity is exceeded, evict the **least recently used** item. --- ## Part C — Merge sorted linked lists 1. Given two sorted singly linked lists, merge them into a single sorted linked list. 2. Follow-up: Given **K** sorted singly linked lists, merge them into one sorted list. Clarify: - Whether you can reuse nodes (in-place) or must allocate new nodes. - Expected time complexity targets. --- ## Part D — Delete target leaf nodes from a binary tree Given a binary tree root and an integer `target`, repeatedly delete all **leaf nodes** whose value equals `target`. - After deletions, a parent may become a new leaf; if its value is also `target`, it should be deleted as well. - Return the resulting tree root (which may be `null`). --- ## Part E — Hospital appointment booking API (implementation-focused) Implement a stateful API/service for booking appointments. ### Scenario - A hospital has **1,000 doctors**. - Each doctor works **9:00 AM to 5:00 PM**. - Appointment slot duration is **15 minutes**. ### Required behavior - Provide an operation such as `Book(doctorId, date) -> bookedTimeSlot | error`. - The call should book the **first available** 15-minute slot for the given `doctorId` on the given `date`. - If there is no availability, return an error. - The system must **maintain booking state across API calls** (e.g., across multiple POST requests during the program run). ### Clarifications to handle - Timezone/date representation. - Concurrency expectations (e.g., two callers booking the same doctor/date at the same time). - What data structure you will use to track availability efficiently.

Quick Answer: This question evaluates proficiency in data structures and algorithms, systems-level data modeling, and practical API design by testing in-memory key-value stores, list and string operations, LRU eviction mechanics, linked-list and tree manipulation, and stateful booking behavior.

Related Interview Questions

  • Solve Five Coding Problems - Oracle (medium)
  • Compute letter frequencies from encoded string - Oracle (medium)
  • Count closed islands in a grid - Oracle (easy)
  • Implement an LRU cache - Oracle (medium)
  • Return a valid course completion order - Oracle (medium)
Oracle logo
Oracle
Feb 12, 2026, 12:00 AM
Software Engineer
Technical Screen
Coding & Algorithms
4
0
Loading...

Part A — Implement a simplified Redis-like in-memory store (Go)

Implement an in-memory key-value store that supports string values and list-of-strings values.

Supported operations

  1. SET(key, value)
    • Set key to a string value .
    • If the key already exists, override the previous value (regardless of prior type).
  2. LIST_PUSH(key, value)
    • Treat key as a list of strings .
    • Push value to the head of the list.
    • If the key does not exist, create a new list.
    • If the key exists as a string, define the expected behavior (e.g., overwrite to a list, or return an error) and be consistent.
  3. GET(key)
    • Return the value for key , which may be:
      • a string, or
      • a list of strings, or
      • “not found”.
  4. LIST_REMOVE(key, count, value)
    • Remove elements equal to value from the list at key .
    • Removal semantics:
      • if count > 0 : remove the first count matching elements scanning from head → tail.
      • if count < 0 : remove the last |count| matching elements scanning from tail → head.
      • if count = 0 : remove all matching elements.
    • Return an appropriate result (e.g., number removed, or error if key missing/not a list).

Notes / constraints

  • Expiration/TTL support is deferred (do not implement unless asked).
  • Aim for clean interfaces and well-defined error cases.
  • Assume single-process, in-memory storage (no persistence required).

Part B — LRU cache

Design and implement an LRU (Least Recently Used) cache with typical operations:

  • Get(key) -> value or not found
  • Put(key, value)

Constraints/requirements:

  • Fixed capacity C .
  • Get / Put should be O(1) average time.
  • When capacity is exceeded, evict the least recently used item.

Part C — Merge sorted linked lists

  1. Given two sorted singly linked lists, merge them into a single sorted linked list.
  2. Follow-up: Given K sorted singly linked lists, merge them into one sorted list.

Clarify:

  • Whether you can reuse nodes (in-place) or must allocate new nodes.
  • Expected time complexity targets.

Part D — Delete target leaf nodes from a binary tree

Given a binary tree root and an integer target, repeatedly delete all leaf nodes whose value equals target.

  • After deletions, a parent may become a new leaf; if its value is also target , it should be deleted as well.
  • Return the resulting tree root (which may be null ).

Part E — Hospital appointment booking API (implementation-focused)

Implement a stateful API/service for booking appointments.

Scenario

  • A hospital has 1,000 doctors .
  • Each doctor works 9:00 AM to 5:00 PM .
  • Appointment slot duration is 15 minutes .

Required behavior

  • Provide an operation such as Book(doctorId, date) -> bookedTimeSlot | error .
  • The call should book the first available 15-minute slot for the given doctorId on the given date .
  • If there is no availability, return an error.
  • The system must maintain booking state across API calls (e.g., across multiple POST requests during the program run).

Clarifications to handle

  • Timezone/date representation.
  • Concurrency expectations (e.g., two callers booking the same doctor/date at the same time).
  • What data structure you will use to track availability efficiently.

Submit Your Answer

Sign in to leave a comment

Loading comments...

Browse More Questions

More Coding & Algorithms•More Oracle•More Software Engineer•Oracle Software Engineer•Oracle Coding & Algorithms•Software Engineer Coding & Algorithms
PracHub

Master your tech interviews with 8,500+ real questions from top companies.

Product

  • Questions
  • Learning Tracks
  • Interview Guides
  • Resources
  • Premium
  • For Universities
  • Student Access

Browse

  • By Company
  • By Role
  • By Category
  • Topic Hubs
  • SQL Questions
  • Compare Platforms
  • Discord Community

Support

  • support@prachub.com
  • (916) 541-4762

Legal

  • Privacy Policy
  • Terms of Service
  • About Us

© 2026 PracHub. All rights reserved.