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.
| Round | What you may need to do | How to prepare |
|---|---|---|
| Online coding assessment | Solve timed problems and submit working code. | Practise in a plain editor or assessment-like environment, with tests and a timer. |
| Live coding | Explain an approach while implementing it. | Ask clarifying questions, state trade-offs, write code and test aloud. |
| CS fundamentals | Explain databases, OS, networks, OOP or language behaviour. | Practise concise explanations and one concrete example per concept. |
| Project deep-dive | Defend decisions and work recorded on your resume. | Review architecture, ownership, tests, problems and results. |
| Debugging or practical exercise | Investigate unfamiliar code, a failing test or a slow endpoint. | State the problem, form a hypothesis and check the fix. |
| System design | Explain the structure and trade-offs of a service. | Define requirements, draw components, estimate constraints and discuss failures. |
| Behavioural or collaboration round | Discuss 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.
| Topic | Fresher or entry level | Experienced backend | Frontend-focused | Senior or lead |
|---|---|---|---|---|
| Arrays, strings, maps, recursion | High | High | High | Useful baseline |
| Trees, graphs, searching | High for coding rounds | High for coding rounds | Depends on assessment | Depends on assessment |
| Language fundamentals and tests | High | High | High | High |
| Database queries and transactions | Basic to moderate | High | API and data-flow understanding | High |
| Browser, UI state and accessibility | Role-dependent | Role-dependent | High | Depends on team |
| API design, concurrency and caching | Introductory | High | Integration focus | High |
| System design and trade-offs | Basic | Moderate to high | Role-dependent | High |
| Project ownership and debugging | High | High | High | High |
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.
| Topic | Question to practise | What to explain |
|---|---|---|
| Arrays and hash maps | Find two values that add to a target. | Why a map avoids repeated scanning and how duplicates work. |
| Two pointers | Check whether a sorted list has a pair with a target sum. | Which pointer moves and why sorting matters. |
| Sliding window | Find the longest substring with no repeated character. | How the window stays valid and when its left edge moves. |
| Binary search | Find a value in a sorted array. | The sorted-input requirement, boundaries and termination. |
| Stack or queue | Validate bracket pairs or process tasks in order. | Why the data structure matches the order of operations. |
| Trees and graphs | Traverse nodes and prevent repeated visits. | BFS vs DFS, visited sets and memory trade-offs. |
| Heap | Keep the largest k values seen so far. | Why heap operations help when k is small. |
| Dynamic programming | Count 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.
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.
| Input | Expected result | Reason to test it |
|---|---|---|
| "" | 0 | Empty input |
| "aaaa" | 1 | All characters repeat |
| "abba" | 2 | Old duplicates must not move the left edge backwards |
| "abcabcbb" | 3 | Multiple valid windows |
| "pwwkew" | 3 | Repeated 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.
| Pattern | Typical expected time | Important condition |
|---|---|---|
| One pass through n items | O(n) | Each item needs constant work. |
| Binary search | O(log n) | Input is sorted and indexed access is efficient. |
| Two nested full scans | O(n²) | Each loop may process all n items. |
| Comparison-based general sort | O(n log n) | Depends on the algorithm and its worst-case guarantees. |
| Hash-map lookup | Expected O(1) per lookup | Worst case and hashing details depend on the implementation. |
| BFS or DFS on adjacency lists | O(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.
| Area | Question | What a clear answer needs |
|---|---|---|
| OOP | When would you use composition rather than inheritance? | Reuse, coupling and an example of changing behaviour. |
| Operating systems | How are processes and threads different? | Address space, shared memory and a concurrency risk. |
| Databases | What does an index help with, and what does it cost? | Faster qualifying lookups in some cases; storage and write overhead. |
| SQL | What is the difference between INNER JOIN and LEFT JOIN? | Which unmatched rows are kept, with a small example. |
| Transactions | Why do transactions matter for transferring money? | Atomicity, failures and consistency requirements. |
| Networking | What changes when a connection uses HTTPS? | TLS protecting data in transit and certificate validation. |
| APIs | What is idempotency and why can it matter for retries? | Repeating an operation without an unintended additional effect. |
| Testing | How do unit and integration tests differ? | Scope, dependencies and what each test can reveal. |
| Git | How 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.
“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:
- 1What user or system problem were you solving?
- 2Which components did you personally build, test or maintain?
- 3What other options did you consider, and why did you choose this approach?
- 4What failed or surprised you during development?
- 5How did you check the result, and what would you change next?
“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.
“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:
| Stage | Question to answer |
|---|---|
| Scope | What must the system do, and what is outside the first version? |
| Workload | What traffic, data size, latency and reliability matter? |
| Interface | What are the main APIs and data contracts? |
| Data | What must be stored and how will it be accessed? |
| Components | Which services, queues, caches or stores are justified? |
| Failures | What breaks when a dependency fails or a request is retried? |
| Trade-offs | What 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.
- Clarify · 0–5 minConfirm inputs, outputs, constraints and edge cases.
- Baseline · 5–10 minDescribe a straightforward solution and identify its cost.
- Implement · 10–30 minWrite the best suitable approach in your chosen language.
- Test · 30–40 minRun normal, boundary and failure cases; fix mistakes.
- Wrap up · 40–45 minSummarise correctness, complexity and remaining trade-offs.
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.
- Day1Confirm interview format; review one recent project List of round requirements and top three gaps
- Day2Arrays, strings and hash maps Two solved problems with edge-case tests
- Day3Two pointers, sliding window, binary search Two problems and a spoken complexity explanation
- Day4Stacks, queues, linked lists One working solution and one dry run
- Day5Trees, traversal and recursion A traversal implementation and test cases
- Day6Graphs, BFS and DFS One graph problem with a visited-set explanation
- Day7Timed coding rehearsalMock round One complete 45-minute round and a mistake log
- Day8SQL, database indexes and transactions Example queries and concise concept answers
- Day9Operating systems, networking, language basics Answers to six fundamentals questions
- Day10Debugging, testing and API behaviour A reproduced bug and a documented fix
- Day11Resume project deep-dive Five follow-up answers per relevant project
- Day12System design or role-specific practical task One design sketch or a completed frontend/mobile task
- Day13Second timed rehearsal with follow-upsMock round Corrected code and two communication improvements
- 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.
“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 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.
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