✦ INTERVIEW PREP
Software Engineer Interview Questions
Behavioral, technical, and situational questions asked in real Software Engineer interviews — with verified sample answers.
Companies known for these questions:
Behavioral Questions
Tell me about a time you disagreed with a technical decision and how you handled it.
At my previous company, our team was considering using a monolithic architecture for a new service I believed should be microservices-based for scalability. I prepared a 2-page technical comparison, presented both options to the lead architect, and suggested a spike to validate the microservices approach. After the spike confirmed better scaling characteristics, the team adopted my recommendation. Key lesson: back disagreements with evidence, not opinions.
Describe a situation where you had to meet a tight deadline.
During a critical API migration, our team was 2 weeks from launch when we discovered a performance regression. I organised a war room, split the debugging tasks across 3 engineers, and personally stayed late to rewrite the caching layer. We hit the deadline with 4 hours to spare. I logged the root cause in our post-mortem system to prevent recurrence.
How do you handle technical debt vs new feature development?
I advocate for a 70/30 split: 70% feature work, 30% tech debt reduction in each sprint. I track tech debt in a shared board and pitch debt items by attaching them to business outcomes — e.g. 'fixing this database index will reduce our P95 latency by 40ms, directly improving our checkout conversion.' This framing gets buy-in from product managers.
Technical Questions
Explain the difference between horizontal and vertical scaling. When would you use each?
Vertical scaling adds more resources to a single machine (more RAM, CPU). Horizontal scaling adds more machines. Use vertical for stateful services where distributing state is complex, and horizontal for stateless services where you need high availability and can distribute load. Most modern cloud architectures prefer horizontal scaling for resilience.
How would you design a URL shortener service?
Core components: (1) POST endpoint to accept long URL, generate short code (Base62 encoding of an auto-incrementing ID or MD5 hash), store mapping in Redis for fast reads + PostgreSQL for persistence. (2) GET endpoint to look up short code, return 301 redirect. Scaling: CDN for caching hot redirects, read replicas for DB. Rate limiting via Redis sorted sets. Analytics: log clicks asynchronously to Kafka.
Situational Questions
A production service starts returning 500 errors at 2 AM. Walk me through your incident response.
1) Alert triage: check PagerDuty severity, confirm blast radius (how many users affected). 2) Mitigation first: rollback last deployment via feature flag or deploy revert — don't debug in prod. 3) Communication: post in #incidents Slack channel, update status page within 5 minutes. 4) Root cause: check logs (Datadog/Splunk), recent deployments, DB error rates. 5) Post-mortem within 48 hours with timeline, root cause, and preventive actions.
Software engineer interviews are among the most structured in tech, following a consistent pattern across major companies. The typical process: (1) Recruiter screen — 30 min culture + background check; (2) Technical phone screen — 45-60 min live coding (LeetCode medium difficulty); (3) System design interview — 60 min architecture discussion for Senior+ roles; (4) Behavioral interviews — 2-4 rounds focused on past experience and decision-making (Amazon: Leadership Principles; Google: Googliness + role-related knowledge). Top companies specifically test for: problem decomposition, code quality, time/space complexity analysis, and communication while coding. Recommended preparation: 150+ LeetCode problems, Grokking System Design, and the STAR framework for behavioral questions. Remote interviews add complexity — ensure stable internet, IDE setup (usually CoderPad or shared editor), and test your audio setup. Most remote interviews are async-friendly: post-offer, work is predominantly remote with async communication.