Interview Prep
Real questions for real interviews. C#, Python, Go. Junior → System Design.
Quiz me →C# / .NET
Junior
- What is the difference between value types and reference types in C#?
- Find all duplicate integers in an array in O(n) time
- Tell me about a time you worked through a difficult bug or exception
- What is the difference between an interface and an abstract class in C#?
- What is boxing and unboxing in C#, and why is it a performance concern?
- Two Sum — return indices of two numbers that add up to a target
- Check if a string is a palindrome (ignoring case and non-alphanumeric characters)
- Tell me about a time you explained a technical decision to a non-technical stakeholder
Mid-level
- How does async/await work under the hood in C#? What is the state machine?
- Implement a generic LRU Cache with O(1) get and put operations
- What is the difference between IEnumerable<T> and IQueryable<T>?
- What is dependency injection (DI) and how does ASP.NET Core's built-in container work?
- Explain delegates, Func, Action, and events in C# — when do you use each?
- Merge overlapping intervals from a list of [start, end] pairs
- Tell me about a time you significantly improved the performance of a system
- What is middleware in ASP.NET Core and how is the pipeline composed?
Senior
- Explain the .NET Garbage Collector — what are the generations and what triggers a Gen 2 collection?
- Implement a bounded producer-consumer queue using System.Threading.Channels
- Describe a significant architectural decision you made under uncertainty
- What are Span<T> and Memory<T> in C#, and when should you use them?
- Implement a thread-safe lazy singleton and explain Lazy<T>
System Design
- Design a distributed rate limiter for an API gateway handling 100,000 requests per second
- Design an event-sourced order management system for an e-commerce platform
- Design a URL shortener service (high availability, 100M URLs, 10k reads/sec)
- Explain the CAP theorem and how it applies to distributed .NET services
- Describe how you would approach a high-stakes technical decision with significant uncertainty
Python
Junior
- What is the difference between a list and a tuple in Python, and when would you use each?
- Write a generator function that yields Fibonacci numbers indefinitely
- What are *args and **kwargs in Python, and when do you use them?
- What is a list comprehension in Python, and how does it differ from a generator expression?
- Two Sum in Python — return indices of two numbers that add to a target
- Tell me about a bug that was hard to find and how you debugged it
Mid-level
- What is the GIL in CPython and when does it limit performance?
- Implement a memoization decorator in Python
- What are context managers in Python and how do you implement one with __enter__ and __exit__?
- Implement a retry decorator with configurable attempts and exponential backoff
- Tell me about a time you optimised a slow Python service in production
- Design a Python service for processing real-time user activity events with rate limiting
Senior
- How does Python's asyncio event loop work, and when do you prefer it over threading?
- Implement an async retry function with exponential backoff in Python (asyncio)
- What are Python descriptors and how do they underpin properties and ORM fields?
- Describe leading a major refactor in a Python codebase — how you managed risk and team buy-in
System Design
- Design a real-time data pipeline in Python capable of processing 1 million events per day
- Design a URL shortener in Python — architecture, storage, and scale to 1B URLs
- When do you choose SQL vs NoSQL, and what are the consistency trade-offs?
- Describe a time you drove a critical technical decision at the system architecture level
Go
Junior
- What is the difference between a goroutine and an OS thread?
- Write a Go function that fans out HTTP requests using goroutines and collects results via channels
- How do interfaces work in Go? Explain duck typing and implicit satisfaction
- What are slices in Go, and how do they differ from arrays?
- Two Sum in Go — return indices of two numbers that add up to a target
- Tell me about a time you had to quickly learn a new tool or language to deliver something
Mid-level
- Explain Go's error handling pattern. When should you use panic and recover?
- Implement a concurrent worker pool in Go
- Tell me about a time you improved the reliability or performance of a production system
- What is the context package in Go and how do you use it for cancellation and deadlines?
- Explain the select statement in Go — how does it multiplex channels?
- Implement a context-aware system design for a real production challenge you've faced
Senior
System Design
- Design a horizontally scalable push notification service in Go
- What is consistent hashing and when would you use it in a Go distributed system?
- Implement a minimal distributed job queue in Go (workers, retries, dead-letter)
- Describe a time you led a significant technical initiative — architecture, delivery, and trade-offs