The stereotype of software engineering interviews, grinding LeetCode and hoping for easy problems, misses what most hiring processes actually test. Yes, coding rounds happen. But system design, communication, and engineering judgment are often what separate the hired candidates from the rejected ones.
This guide covers what's actually evaluated across all the rounds you'll encounter, from early-stage startups to large tech companies.
What rounds to expect
Most mid-to-large company interview loops include:
- Recruiter screen, background check, compensation alignment
- Technical phone screen, 1-2 coding questions, sometimes a take-home
- Coding round(s), algorithms and data structures (1-3 rounds)
- System design, design a real system (typically for mid-senior levels)
- Behavioural / leadership, past experience, values, collaboration
- Hiring manager conversation, team fit, role expectations
At startups, you might instead get a take-home project, a paid trial day, or a technical conversation with the CTO. Fewer rounds, more variability.
Coding questions, what's actually tested
Coding rounds test problem-solving, not encyclopaedic algorithm knowledge. Most questions can be solved with a solid understanding of: arrays, strings, hash maps, trees, graphs, binary search, two pointers, sliding window, dynamic programming basics, and recursion.
What interviewers are evaluating beyond correctness:
- Do you clarify constraints and edge cases before writing code?
- Can you think through a brute-force solution before optimising?
- Do you communicate your thinking as you go?
- Do you test your own code with examples?
A candidate who writes clean O(n log n) code in silence and submits is weaker than one who walks through their approach, considers a brute-force, explains the optimisation, and catches their own bug.
System design questions
Typical questions at mid-senior level:
- "Design Twitter's news feed"
- "Design a URL shortener like bit.ly"
- "Design a ride-sharing system"
- "Design a distributed key-value store"
- "Design a video streaming service"
The framework: clarify requirements (scale, read vs. write heavy, latency needs), estimate scale (users, requests/sec, storage), design components (API, storage schema, caching layer, message queues), discuss trade-offs (SQL vs. NoSQL, eventual vs. strong consistency), handle failure scenarios.
System design interviews reward breadth of knowledge more than depth. Know the major building blocks, CDNs, load balancers, database sharding, caching with Redis/Memcached, message queues, consistent hashing, and understand when and why to use each.
Behavioural questions for engineers
Engineering behavioural rounds often focus on collaboration, technical judgment, and handling ambiguity. Common questions:
- "Tell me about a time you disagreed with a technical decision."
- "Tell me about the most complex system you've worked on."
- "How do you handle tech debt when there's always product pressure?"
- "Tell me about a time you mentored a junior engineer."
- "Describe a production incident you were involved in. What happened and what did you do?"
These are best answered using the STAR framework. For engineering-specific questions, be specific about technical decisions. "We decided to use Kafka instead of a REST API" tells an interviewer more than "we made an architectural choice."
Most common SWE interview questions (non-coding)
- "What's the difference between a process and a thread?"
- "How does HTTP differ from HTTPS?"
- "Explain the CAP theorem."
- "What is database indexing and when would you use it?"
- "What's the difference between horizontal and vertical scaling?"
- "How does a browser render a webpage?"
- "What happens when you type a URL into a browser?"
These fundamentals come up in both phone screens and system design conversations. Knowing the answer well enough to explain it clearly in 60-90 seconds is the goal.