Skip to main content

How to prepare for a technical interview

How to prepare for in-person or online tech interview

Written by Robyn Luyt
Updated today

Getting a great tech job isn't just about smarts; it's about preparation, practice, and the ability to communicate your brilliance under pressure. Think of this guide as your game plan.
​

1. Core Preparation Strategy: Building a Solid Foundation

Getting better at technical interviews is a proven process that involves studying, practicing questions, and performing mock interviews.

Action

Goal

Decide on a Language

Mastery Over Trendiness: Choose the language where you can write idiomatic, beautiful code without a second thought. Confidence is contagious, and it starts with your tools.

Study CS Fundamentals

Know Your Building Blocks: Algorithms (like Dynamic Programming) and Data Structures (Graphs, Trees, Heaps) are the universal language of software. Focus on fluency in complexity to spot bottlenecks fast.

Practice Solving

Pattern Recognition: Use Online Judges (LeetCode is king) not just to find an answer, but to recognize the underlying pattern. The goal is to see a problem and instantly associate it with a known structure (e.g., "This is a Sliding Window problem!").

Mock Interviews

Practice the Performance: This is the most crucial step! Your interviewer can't read your mind. Practice talking out loud, explaining your plan, and handling stress. Communication is the highest-weighted skill.

2. The Modern Coding Interview: Best Practices

Remember, the interviewer is looking for a collaborator, not a robot. Your job is to make the entire process a transparent, two-way conversation.
​

Before and Upon Receiving the Question

  • Preparation (Remote): Use earphones, ensure a quiet environment, and have paper/pencil ready for drawing out examples (especially for Trees/Graphs).

  • Clarification is Mandatory: Never jump straight into coding. Repeat and rephrase the question to the interviewer.

    • Goal: Seek clarification on constraints, edge cases, and input details. Interviewers often deliberately omit details to test if you ask the right questions.

Key Clarification Questions:

  • What is the size and range of the input?

  • What are the edge cases? Are there duplicates, negative numbers, single-element cases, or empty inputs?

  • How is the input presented (e.g., is this a list of edges, or an adjacency matrix for a graph?)?

Problem Solving & Coding

  • High-Level Approach: Start with the simple, maybe "bad" solution (the brute force). Don't apologize for it. Just state the Time and Space Complexity. Then, say, "I think we can do better by..." This shows your thought process is sound.

  • Optimization: The "Can we do better?" question is standard. Look for repeated work that can be optimized by caching (Dynamic Programming) or by using a more efficient data structure.

  • Getting Unstuck:

    • Talk through it: Explain why your initial approach failed to guide yourself back on track.

    • New Test Cases: Write down more test cases and step through them to spot a pattern.

    • Enumerate Techniques: Systematically consider common structures and techniques: Dictionaries, Dynamic Programming, Greedy Algorithms.

  • While Coding:

    • Use clear, descriptive variable names (avoid single-letter names unless for iteration).

    • Talk out loud about the section of code you are currently implementing and its purpose.

    • Refactor: If you find yourself copying and pasting large chunks of code, extract them into a function to demonstrate code quality.

Review and Final Steps

  • Code Review: After finishing, read through your code as if you were debugging someone else's work. Fix any syntax or minor bugs.

  • Walkthrough: Come up with small test cases and step through the code line-by-line, stating the values of important variables (emulating a debugger). This proves correctness.

  • Final Analysis: State the Time and Space Complexity of your final solution. Explain any trade-offs you made (e.g., trading memory for speed).

  • Extension Questions (Scale): Be prepared for questions about handling input too large for memory (Big Data). The common answer involves Distributed Processing (e.g., MapReduce concept), reading data in chunks, and combining the results.

3. Modernizing

Technical interviews are shifting away from pure algorithm puzzles toward Systems Design and understanding current, high-impact technologies.
​

Core Systems Design Focus

Systems design interviews for senior and mid-level roles now heavily favor real-world, scalable, and resilient systems.

Topic

Key concepts to know

Source links

Distributed Transactions

Two-Phase Commit (2PC), Saga Pattern, Idempotency (for retries), and Distributed Locks. Understanding how to maintain consistency across services.

Microservices Architecture

Service Discovery (e.g., Consul, Eureka), API Gateways (e.g., Zuul, Kong), Circuit Breakers (e.g., Hystrix concept), and observability (logs, metrics, tracing).

Event-Driven Systems

Deep knowledge of Messaging Queues (e.g., Kafka, RabbitMQ). Differentiate between Pub/Sub and Work Queues. Discuss back-pressure and message ordering/delivery guarantees.

Emerging Tech Domains

Interviewers will test awareness and foundational knowledge in domains currently disrupting the tech industry.

Domain

Essential knowledge

Source Links

AI/ML Integration

Vector Databases (e.g., Pinecone, Chroma) and their role in Retrieval-Augmented Generation (RAG) for large language models (LLMs). Understand the basic architecture of a modern LLM application.

Modern Data Warehousing

Data Lakes vs. Data Warehouses. Concepts like Data Mesh and using tools like dbt (data build tool) for data transformation and modeling.

Security & Privacy

Basics of Zero Trust Architecture (never trust, always verify), OAuth 2.0/OpenID Connect for authentication, and how to prevent common vulnerabilities (e.g., SQL Injection, XSS).

DevOps & Infrastructure

Beyond basic CI/CD, know Infrastructure as Code (IaC) principles (Terraform/Pulumi) and Kubernetes fundamentals (Pods, Services, Deployments) for modern deployment and scaling.

Additional Resources:

Did this answer your question?