Table Operations: Implement a Lightweight In-Memory Table with Insert, Delete, and Query Operations
Question Details
Problem
Implement an in-memory database table that supports:
- insert(row: dict) -- add a row (rows have a unique id field).
- delete(id) -- remove a row by id.
- query(filters: dict) -> list[dict] --
return all rows matching all key-value filters (AND semantics).
- update(id, changes: dict) -- update specific fields of a row.
python
class Table:
def insert(self, row: dict) -> None: ...
def delete(self, id: int) -> None: ...
def query(self, filters: dict) -> list[dict]: ...
def update(self, id: int, changes: dict) -> None: ...
Example:
t.insert({"id":1,"name":"Alice","dept":"Eng"})
t.insert({"id":2,"name":"Bob", "dept":"Eng"})
t.query({"dept":"Eng"}) -> [{"id":1,...},{"id":2,...}]
t.update(1, {"dept":"PM"})
t.query({"dept":"Eng"}) -> [{"id":2,...}]
Follow-ups
1. query scans all rows. How would you add an index on a specific column to speed up equality lookups?
2. Support range queries (age > 30). What data structure would you use for a range index?
3. How do you handle schema evolution -- adding a new column to existing rows?
4. Implement query with OR semantics as well as AND. How does the filter language change?
Full Details
Problem
Implement an in-memory database table that supports:
- insert(row: dict) -- add a row (rows have a unique id field).
- delete(id) -- remove a row by id.
- query(filters: dict) -> list[dict] --
return all rows matching all key-value filters (AND semantics).
- update(id, changes: dict) -- update specific fields of a row.
python
class Table:
def insert(self, row: dict) -> None: ...
def delete(self, id: int) -> None: ...
def query(self, filters: dict) -> list[dict]: ...
def update(self, id: int, changes: dict) -> None: ...
Example:
t.insert({"id":1,"name":"Alice","dept":"Eng"})
t.insert({"id":2,"name":"Bob", "dept":"Eng"})
t.query({"dept":"Eng"}) -> [{"id":1,...},{"id":2,...}]
t.update(1, {"dept":"PM"})
t.query({"dept":"Eng"}) -> [{"id":2,...}]
Follow-ups
1. query scans all rows. How would you add an index on a specific column to speed up equality lookups?
2. Support range queries (age > 30). What data structure would you use for a range index?
3. How do you handle schema evolution -- adding a new column to existing rows?
4. Implement query with OR semantics as well as AND. How does the filter language change?
About This Question
This is a reported interview question from a airtable interview during the phone round.
It covers the following topics: Coding, Sql, Phone, Onsite .