TripStack·Software Engineer·Onsite - System Design / Architecture
- In Go, walk through the difference between synchronous and asynchronous execution, and between blocking and non-blocking I/O.
- Compare OS threads and goroutines across scheduler model, stack growth, memory overhead, context-switch cost, and how they communicate.
- How does Go's concurrency model compare to another language like Java, Python, or C++? Think about threads, async/await patterns, and things like the GIL in terms of real-world throughput and latency.
- Compare relational, document, columnar, and key-value databases across data modeling flexibility, ACID vs BASE tradeoffs, indexing and joins, and how they scale via sharding and replication.
- Design the end-to-end storage architecture for a flight booking platform that needs to handle complex search queries and high write concurrency. Cover your primary database choice, schema or document design, caching layer, and both read and write paths.
“Started okay but I muddled the blocking vs async distinction a bit.”