Career guide

Complete Guide to Technical Interview Preparation for Software Engineers

Technical interviews are easier to prepare for when you know what each round is testing. A timed coding problem tests a different skill from explaining a production bug or designing a service. Practise the wrong format for two weeks and you can arrive with plenty of solved questions but little to say about your own work.

Sumant Khattar · CEO & Founder, Walkin24 20 min read

This guide covers technical interview preparation for software engineering freshers and experienced developers in India. It includes a topic checklist, a worked Python problem, computer science basics, project and system design questions, a two-week plan and a way to rehearse your explanations. Use the vacancy and the interview instructions to decide which sections deserve most of your time.

Know which round you’re walking into

Before you choose a problem list, ask the recruiter about the expected format, allowed programming languages, assessment environment and whether a project discussion or system design round is planned. Interview formats differ between employers and between roles at the same employer.

RoundWhat you may need to doHow to prepare
Online coding assessmentSolve timed problems and submit working code.Practise in a plain editor or assessment-like environment, with tests and a timer.
Live codingExplain an approach while implementing it.Ask clarifying questions, state trade-offs, write code and test aloud.
CS fundamentalsExplain databases, OS, networks, OOP or language behaviour.Practise concise explanations and one concrete example per concept.
Project deep-diveDefend decisions and work recorded on your resume.Review architecture, ownership, tests, problems and results.
Debugging or practical exerciseInvestigate unfamiliar code, a failing test or a slow endpoint.State the problem, form a hypothesis and check the fix.
System designExplain the structure and trade-offs of a service.Define requirements, draw components, estimate constraints and discuss failures.
Behavioural or collaboration roundDiscuss decisions, disagreements, mistakes and teamwork.Prepare truthful events from your own work or projects.

Recruiters do not grade you like a college professor. In an online assessment on a platform such as HackerRank or Mercer Mettl, test cases pass or fail. In a live round on Google Meet, interviewers watch how you think. Twenty minutes of silent typing that ends in code that does not run usually goes worse than a close attempt you explained out loud.

What freshers need vs experienced devs

A fresher applying for a software developer position often needs programming skills, data structures, algorithms and the ability to explain a college project. A mid-level backend engineer may additionally need API design, databases, debugging and practical concurrency. Senior candidates should expect deeper discussion of architecture, trade-offs and decisions they have made.

TopicFresher or entry levelExperienced backendFrontend-focusedSenior or lead
Arrays, strings, maps, recursionHighHighHighUseful baseline
Trees, graphs, searchingHigh for coding roundsHigh for coding roundsDepends on assessmentDepends on assessment
Language fundamentals and testsHighHighHighHigh
Database queries and transactionsBasic to moderateHighAPI and data-flow understandingHigh
Browser, UI state and accessibilityRole-dependentRole-dependentHighDepends on team
API design, concurrency and cachingIntroductoryHighIntegration focusHigh
System design and trade-offsBasicModerate to highRole-dependentHigh
Project ownership and debuggingHighHighHighHigh

These are preparation priorities, not universal hiring rules. A company hiring embedded engineers, mobile developers or infrastructure specialists may assess a different set of skills. Let the actual vacancy change your study plan.

Stop memorising solutions: spot the pattern

Memorising a solution can make a familiar question feel easy and a slightly different one feel impossible. For each topic, learn what problem it solves, the trade-off in time and space, and a test case that would expose a weak implementation.

TopicQuestion to practiseWhat to explain
Arrays and hash mapsFind two values that add to a target.Why a map avoids repeated scanning and how duplicates work.
Two pointersCheck whether a sorted list has a pair with a target sum.Which pointer moves and why sorting matters.
Sliding windowFind the longest substring with no repeated character.How the window stays valid and when its left edge moves.
Binary searchFind a value in a sorted array.The sorted-input requirement, boundaries and termination.
Stack or queueValidate bracket pairs or process tasks in order.Why the data structure matches the order of operations.
Trees and graphsTraverse nodes and prevent repeated visits.BFS vs DFS, visited sets and memory trade-offs.
HeapKeep the largest k values seen so far.Why heap operations help when k is small.
Dynamic programmingCount ways to climb stairs under given rules.The repeated subproblems and a clear recurrence.

After solving a problem, explain three things: why the algorithm works, how it behaves on edge cases and what its complexity costs. That last step turns a coding exercise into interview preparation.

Worked coding example: longest substring without repeating characters

Problem: given a string, return the length of its longest contiguous substring containing no repeated character. For example, "abcabcbb" returns 3 because "abc" is one valid longest substring. The empty string returns 0.

One simple way is to try every starting position and grow a substring until a repeated character is found. That can take quadratic time in the worst case. A sliding window avoids starting the same search again and again.

Maintain two things: left, the first index of the current valid window, and last_seen, the most recent index of each character. If a character appears again within the current window, move left past its previous position. Never move left backwards.

longest_unique_substring.pypython
1def longest_unique_substring_length(text: str) -> int:2    last_seen = {}3    left = 04    best = 05 6    for right, character in enumerate(text):7        if character in last_seen and last_seen[character] >= left:8            left = last_seen[character] + 19 10        last_seen[character] = right11        best = max(best, right - left + 1)12 13    return best

Line 7 is the line interviewers wait for you to explain: the >= left check stops an old duplicate from dragging the window backwards.

The gotcha interviewers are waiting for: "abba"

Look at the string "abba". When you reach the second "a", its last recorded position is index 0. If you don’t check whether that index is still inside your current window, your left pointer jumps backwards and the window breaks. With the check, the second "b" has already moved left to index 2, so the old "a" is ignored and the answer stays 2, not 3. Pointing out this edge case before the interviewer mentions it shows you actually understand the algorithm.

InputExpected resultReason to test it
""0Empty input
"aaaa"1All characters repeat
"abba"2Old duplicates must not move the left edge backwards
"abcabcbb"3Multiple valid windows
"pwwkew"3Repeated characters separated by others

The loop processes each character once. Dictionary access is expected constant time on average, so the expected time complexity is O(n). The dictionary stores at most one entry per distinct character seen, giving O(k) extra space, where k is the number of distinct characters in the input. State those reasons when discussing complexity.

In a live round, explain the sliding-window invariant before writing the code. After coding, run at least the empty and "abba" cases. An interviewer can learn a great deal from how you notice and fix an edge case.

Big O without the usual confusion

Complexity describes how resource use grows as the input grows. Do not confuse an algorithm’s overall time with the cost of one operation inside it. Use a table only when you can explain the assumption behind it.

PatternTypical expected timeImportant condition
One pass through n itemsO(n)Each item needs constant work.
Binary searchO(log n)Input is sorted and indexed access is efficient.
Two nested full scansO(n²)Each loop may process all n items.
Comparison-based general sortO(n log n)Depends on the algorithm and its worst-case guarantees.
Hash-map lookupExpected O(1) per lookupWorst case and hashing details depend on the implementation.
BFS or DFS on adjacency listsO(V + E)Each vertex and edge is processed a limited number of times.

If an interviewer asks for an improvement, first identify the main problem. Could storing previous results remove repeated work? Would a two-pointer approach work after sorting? Is additional memory acceptable? An O(n) answer is not automatically better if it uses too much memory or violates the constraints.

Computer science fundamentals you should be able to explain

A strong answer connects a definition to a real decision. Use these questions to check whether you understand the concepts behind the words.

AreaQuestionWhat a clear answer needs
OOPWhen would you use composition rather than inheritance?Reuse, coupling and an example of changing behaviour.
Operating systemsHow are processes and threads different?Address space, shared memory and a concurrency risk.
DatabasesWhat does an index help with, and what does it cost?Faster qualifying lookups in some cases; storage and write overhead.
SQLWhat is the difference between INNER JOIN and LEFT JOIN?Which unmatched rows are kept, with a small example.
TransactionsWhy do transactions matter for transferring money?Atomicity, failures and consistency requirements.
NetworkingWhat changes when a connection uses HTTPS?TLS protecting data in transit and certificate validation.
APIsWhat is idempotency and why can it matter for retries?Repeating an operation without an unintended additional effect.
TestingHow do unit and integration tests differ?Scope, dependencies and what each test can reveal.
GitHow would you recover from a bad change?History, revert or fix-forward options, and team safety.

For a SQL interview, write a small query and explain the result with a few sample rows. For a backend role, describe the request path from client to service to database. For frontend work, be ready to discuss state, network failures, accessibility and what the user sees while data loads.

How to handle a live debugging test without panicking

Imagine a page that normally loads in a second now takes five seconds after a release. A weak answer jumps straight to “add caching.” A stronger one checks where the time is spent.

Start by clarifying what changed: all users or some, one route or the whole application, one region or every region? If possible, reproduce the problem. Compare a normal request with a slow one. Check server time, recent deployments, database queries and external calls. Form a hypothesis and test it with evidence.

How a strong answer sounds
“If the slowdown started with one release, I’d compare the timings before and after. Before changing caching or infrastructure, I would check whether the extra time is in the application, the database or an external dependency. Then I’d verify the fix and watch for new problems.”

That is a method, not a claim that you have solved this particular incident. If asked about a real bug from your experience, give its actual cause and explain how you confirmed the fix.

Practise with a simple broken function or failing test. State the expected behaviour, reproduce the failure, find the cause, fix it and run a regression check. Do not silently change the problem’s assumptions.

Be ready to defend every line on your resume

You might solve algorithms well and still struggle to explain a project that carries your name. For each project, prepare a one-minute explanation and answers to these five follow-ups:

  1. 1What user or system problem were you solving?
  2. 2Which components did you personally build, test or maintain?
  3. 3What other options did you consider, and why did you choose this approach?
  4. 4What failed or surprised you during development?
  5. 5How did you check the result, and what would you change next?
Fresher example
“I completed the login form and validation for our college event app. I chose server-side validation as well as browser checks because a user can bypass browser rules. I tested missing inputs and duplicate registration attempts.” Only use this if it describes your own work.
Experienced example
“We had intermittent timeouts on our API during a batch job. I traced the timing to a long-running database query, looked at the execution plan, and then worked with a teammate to change how the batch fetched records. We verified the output was correct before deploying.” Add actual measurements only if you have them and are allowed to discuss them.

For work under confidentiality agreements, explain patterns and trade-offs without exposing customer records, secrets or internal architecture diagrams.

System design preparation for mid-level and senior engineers

System design is a conversation about requirements and choices. Do not begin by drawing every component you know. Ask who will use the service, its main operations, any latency or availability goals and what scale is likely.

Consider a hypothetical link-shortening service. Users submit a long URL and receive a short link. Other users open the short link and are redirected. Before drawing a design, clarify whether links expire, whether users need accounts, how collisions are handled and what happens when a target URL is blocked.

A first design might include an API that validates requests, a generator for unique identifiers and a data store mapping identifiers to target URLs. Frequently accessed mappings might be cached. Then discuss the costs: cache invalidation, abuse prevention, read traffic, storage growth and how to prevent duplicate identifiers. If the interviewer supplies traffic figures, estimate from those rather than inventing impressive numbers.

Avoid buzzword bingo. When asked to design a simple link shortener, do not open with “Kafka, Redis and Cassandra.” Ask basic questions first: how many links are created per day, and do they expire? Start with a simple database and a basic API, and add caches or queues only when your numbers justify them.

Use this sequence for most design discussions:

StageQuestion to answer
ScopeWhat must the system do, and what is outside the first version?
WorkloadWhat traffic, data size, latency and reliability matter?
InterfaceWhat are the main APIs and data contracts?
DataWhat must be stored and how will it be accessed?
ComponentsWhich services, queues, caches or stores are justified?
FailuresWhat breaks when a dependency fails or a request is retried?
Trade-offsWhat did you optimise, and what did you accept as a cost?

If you have never built a large distributed system, say so. You can still reason through the requirements and explain which assumptions you would validate in a real project.

A practical 45-minute live coding practice session

Some rounds are shorter and some are longer. For a 45-minute practice session, this split helps you avoid spending the entire time planning:

Your 45-minute rehearsal

Minutes per stage. A rehearsal aid, not an employer’s schedule.

  1. Clarify · 0–5 minConfirm inputs, outputs, constraints and edge cases.
  2. Baseline · 5–10 minDescribe a straightforward solution and identify its cost.
  3. Implement · 10–30 minWrite the best suitable approach in your chosen language.
  4. Test · 30–40 minRun normal, boundary and failure cases; fix mistakes.
  5. Wrap up · 40–45 minSummarise correctness, complexity and remaining trade-offs.
A practical rehearsal split for a 45-minute live coding exercise.

If your solution takes longer, say what is working and what remains instead of going silent.

Practise without your IDE

Most developers lean on VS Code, autocomplete, Copilot and linters every day. Then the interview drops them into a bare Google Doc, CoderPad or HackerEarth window where autocomplete is off and auto-indent may not work. Rehearse for that:

  • Write Python or Java in a plain text editor with no plugins, then run it to see what you got wrong.
  • Speak your thoughts out loud. If you are stuck on a loop index, explain what you are trying to calculate instead of freezing.
  • Know the standard library calls you use most (sorting, maps, string methods) well enough to type them from memory.

A two-week technical interview study plan

Your 14-day routine

Like a workout plan: 60 to 90 minutes on most days, more on mock-round days. End each day with tested code or an explanation said out loud.

  1. Day1Confirm interview format; review one recent project List of round requirements and top three gaps
  2. Day2Arrays, strings and hash maps Two solved problems with edge-case tests
  3. Day3Two pointers, sliding window, binary search Two problems and a spoken complexity explanation
  4. Day4Stacks, queues, linked lists One working solution and one dry run
  5. Day5Trees, traversal and recursion A traversal implementation and test cases
  6. Day6Graphs, BFS and DFS One graph problem with a visited-set explanation
  7. Day7Timed coding rehearsalMock round One complete 45-minute round and a mistake log
  8. Day8SQL, database indexes and transactions Example queries and concise concept answers
  9. Day9Operating systems, networking, language basics Answers to six fundamentals questions
  10. Day10Debugging, testing and API behaviour A reproduced bug and a documented fix
  11. Day11Resume project deep-dive Five follow-up answers per relevant project
  12. Day12System design or role-specific practical task One design sketch or a completed frontend/mobile task
  13. Day13Second timed rehearsal with follow-upsMock round Corrected code and two communication improvements
  14. Day14Review recurring gaps; check interview setup Short revision notes and a ready environment

Freshers can spend Day 12 on project architecture or a smaller design problem. Senior backend engineers may need more than one design session. Frontend developers should move some graph time into rendering, state management, browser behaviour and accessibility when the job description calls for them.

3 mistakes that fail you faster than a buggy loop

1. Coding before you understand the problem

If you start coding without confirming constraints, you may solve the wrong problem. If you never test the empty input, your elegant solution may fail immediately. If you explain only the final code, the interviewer cannot see how you reasoned or adapted.

2. Treating a solved problem as a finished lesson

Close the editor and explain why the algorithm works, what input would break a naive solution and why your chosen data structure helps. If you cannot do that, revisit the problem before adding ten more to your list.

3. Claiming the whole team project

A precise account of one component is more credible than vague ownership of the whole application. Follow the employer’s rules on AI assistance, notes, internet access and collaboration during assessments. Practice tools are for preparation unless the assessment explicitly permits them.

Use mock interviews to test your explanations

An AI interviewer can ask about your projects, technical concepts and design decisions, then follow up when your answer lacks detail. That is helpful for practising communication. It does not replace a real coding editor, unit tests or a knowledgeable review of technical correctness.

Walkin24 has a technical interview practice category. Use it for technical interview preparation after completing a real coding exercise. Explain your approach and ask yourself whether you could defend it if the follow-up changes a constraint. Cross-check any technical corrections rather than accepting a fluent answer automatically.

Practice question
“Explain your sliding-window solution. Why doesn’t the left pointer move backwards, and how would your answer change if the task asked for the substring itself instead of its length?”

Answer aloud without reading the code, then inspect the implementation. You should be able to point to the line that maintains the invariant.

Technical interview readiness checklist

Ready when you can tick all 14

  • I confirmed the likely interview format and allowed language.
  • I can write code without depending on autocomplete for every step.
  • I can state assumptions before implementing a solution.
  • I understand the time and space cost of my main algorithms.
  • I test empty inputs, duplicates and boundary conditions.
  • I have revised the data structures relevant to the vacancy.
  • I can explain the SQL, networking, OS or language concepts the role needs.
  • I can discuss a bug I investigated and how I verified the fix.
  • I know which project components were my responsibility.
  • I can explain trade-offs without claiming experience I do not have.
  • I have completed at least one timed mock coding round.
  • I have practised speaking while reasoning.
  • I know the employer’s assessment rules on tools and assistance.
  • My coding environment, internet connection and interview time are confirmed.

Make your next practice session specific

Select one coding pattern you struggle with, solve a problem from scratch and test it. Then close the editor and explain the approach aloud. If the explanation breaks down, you have found the next thing to practise.

Frequently asked questions

How do freshers prepare for a technical interview?

Start with one programming language, common data structures, fundamental algorithms, basic CS concepts and your own projects. Practise implementing and testing solutions, not only watching explanations. Use the actual role description to decide where to spend more time.

Is DSA enough for a software engineer interview?

Not always. Some hiring processes include project discussion, debugging, databases, practical tasks, system design or collaboration questions. Prepare for the stated rounds rather than assuming every employer uses the same format.

How many coding problems should I solve every day?

Choose a number that allows you to test each solution and explain it afterwards. One carefully reviewed problem can be more useful than several solutions copied without understanding. Keep a mistake log and look for patterns in what keeps going wrong.

Which language is best for coding interviews?

Use a language the assessment allows and that you can write accurately under time pressure. Know its collections, syntax, common edge cases and runtime behaviour. Do not switch languages days before an interview just because another language seems shorter.

Are system design rounds only for experienced engineers?

Advanced design is more common for roles with architecture responsibility, but entry-level candidates may still be asked to explain the design of a project or a small service. Prepare at the level stated in the vacancy and confirm with the recruiter when possible.

Can AI interview practice replace real coding exercises?

No. Use it to rehearse explanations and follow-up questions. You still need an editor, tests and a way to check whether the code is correct. Follow the employer’s rules if you are taking a real assessment.

About the author

Sumant Khattar, CEO & Founder, Walkin24

Sumant Khattar

CEO & Founder, Walkin24

Follow on LinkedIn

Sumant is a product and business leader with experience at Fiat, Toyota, and Asahi India. He founded Walkin24 with a simple mission: to use AI to help people practice smarter, build interview confidence, and unlock better career opportunities.

ExperienceFiatToyotaAsahi India
More about the Walkin24 team →

Practise the explanation, not just the code

Rehearse your technical round with an AI interviewer

Explain your approach out loud, handle follow-up questions and get feedback. 3 free interviews every month.

Start a free technical mock interview