Lessons
1 · Foundations (Think Like a Programmer)
2 · Data Structures and Recursion
- 05Arrays and Array-Based Problem Solving
- 06Strings: Characters, Immutability, and Efficient Manipulation
- 07Linked Lists: Nodes, Pointers, and Pointer Reasoning
- 08Stacks and Queues
- 09Hashing: HashMap, HashSet, and Frequency Patterns
- 10Recursion and Backtracking
- 11Trees and Binary Search Trees
- 12Heaps and Priority Queues
3 · Core Algorithms and Reusable Patterns
4 · Advanced Interview Topics
Lesson 28 · From Practice to Job-Ready
Indian Fresher Placement and Coding Interview Preparation
How to prepare for campus placements and fresher hiring in India: aptitude rounds, online coding assessments with fast input and output, technical interviews, CS fundamentals, explaining trade-offs, debugging under pressure and discussing projects honestly.
For
Final-year students, recent graduates and early-career developers in India preparing for campus placements, online assessments and fresher interviews.
Level
Before you start
Ideally the whole course, but you can read this earlier for context. Articles 25 and 26 (the interview workflow and the practice project) are the most relevant.
On this page
Key takeaways
- Processes differ by college, company and year. Learn the general shape of the rounds, then check current details from your placement cell and official announcements.
- Treat the stages as separate skills: aptitude needs speed and accuracy, online assessments need careful input and output and time management, interviews need clear explanation.
- Foundational coding means arrays, strings, hashing, sorting and basic structures done cleanly. Demanding interviews add graphs, dynamic programming and more depth, plus sharper explanation.
- Many online assessment failures are not algorithm failures: slow input, int overflow, missed edge cases and wrong output format. Practise the mechanics.
- Discuss projects honestly. Know every part you claim, say what you personally did, and be ready to explain the data structures and trade-offs.
If you are in your final year, or recently graduated, you have probably heard a mix of advice about placements: "just solve 500 problems", "aptitude is everything", "only projects matter", "the process is changing every year". Some of it contradicts the rest. Some of it is simply folklore.
This article tries to be useful and honest. It describes the general shape of fresher hiring in India, explains what each stage tends to test, and gives you concrete, practicable habits for each one. It does not promise a job, it does not claim to know the exact process of any particular company, and it avoids numbers it cannot support, because hiring processes change from year to year.
What you will learn
#- The usual stages of fresher hiring, and what each one tests.
- How foundational coding expectations differ from more demanding interviews.
- How to prepare for aptitude rounds and online coding assessments, including a fast-input template.
- How to handle technical interviews: trade-offs, debugging under pressure, and CS fundamentals.
- How to discuss your projects honestly and confidently.
- A checklist for the last week before an interview.
The usual stages
#Not every company uses every stage, and the order varies. Here is the general shape.
Stage | What it usually involves | What it tests |
|---|---|---|
Aptitude test | Timed questions on quantitative ability, logical reasoning and verbal ability | Speed, accuracy and basic reasoning |
Online coding assessment | One or more coding problems on a platform, with automatic checking against hidden tests | Correct code, edge cases, time management |
Technical interview(s) | Discussion of your resume and projects, coding problems, and questions on CS fundamentals | Problem solving, communication, fundamentals |
Project discussion | Questions about what you built and how | Depth of understanding, honesty |
HR or managerial round | Background, motivation, expectations, logistics | Communication, fit, attitude |
Group discussion or other formats | Used by some organisations | Communication and teamwork |
Treat each as a separate skill and prepare for it separately. A person strong at problem solving can still lose marks in an aptitude test because of time pressure, or in an assessment because of input handling.
Foundational versus more demanding expectations
#Different employers hire for different needs. Very broadly (and with many exceptions), you can think of two ends of a range.
Area | Foundational expectation | More demanding expectation |
|---|---|---|
Coding problems | Arrays, strings, basic maths, simple hashing and sorting, clean code | Also graphs, dynamic programming, harder patterns, trickier edge cases |
Complexity | Know Big O of your own solution, and avoid obviously slow approaches | Optimise further, reason about trade-offs, justify choices |
Explanation | Describe your approach clearly | Explain alternatives, prove correctness, handle follow-ups |
CS fundamentals | OOP, DBMS, OS and networks basics, SQL | Often deeper, and sometimes system design basics |
Projects | A project you understand and can explain | More depth on design decisions, testing and scale |
Number of coding rounds | Often fewer | Often more, with increasing difficulty |
This does not mean the first column is "easy". Writing correct, readable code for a plain problem under time pressure is hard. It means the range of topics and the depth of follow-up tend to differ. If you are unsure which end applies to your target roles, ask your seniors, check the job description, and prepare the core first (tier 1 in the study plan), then extend.
Aptitude rounds
#Aptitude sections are about speed and accuracy, on questions that are usually not hard individually. Typical areas:
- Quantitative: percentages, ratios and proportions, averages, profit and loss, time and work, speed and distance, simple and compound interest, number systems, permutations and combinations, probability, data interpretation.
- Logical reasoning: number and letter series, coding and decoding, seating arrangements, blood relations, syllogisms, puzzles.
- Verbal: reading comprehension, grammar, sentence correction, vocabulary.
How to prepare:
- Little and often. 30 to 45 minutes a day beats a weekend cram. Aptitude skill is built by repetition.
- Learn the basic formulas and shortcuts once, write them on one page, and review the page regularly.
- Practise with a timer. Speed is a skill, and it only improves if you practise at speed.
- Know the test format. Is there negative marking? Can you go back to a question? Is each section separately timed? The best strategy depends on these rules.
- Skip smartly. If a question is eating more than a minute or two, mark it and move on, unless the rules punish skipping.
- Review your mistakes. Keep an error log (as in the study plan) of the question types you get wrong.
These skills overlap a little with DSA (for example, probability and combinations connect to counting problems), but they are mostly separate. Do not neglect them: a strong coding round does not help if you are filtered out earlier.
Online coding assessments
#In an online assessment (OA), your code is run against test cases you cannot see. Your answer is judged on correctness and often on speed. The habits that matter most are different from those of a live interview, because no human is watching your reasoning. Only the output counts.
Read the problem like a lawyer
#- Constraints first.
nup to 10^5 meansO(n log n)or better. Look at the value ranges too (overflow). Use the table below. - Input and output format. Exactly how many test cases, in what layout? Must the output be one line or several? A tiny format slip can fail every test.
- Sample tests. Work them by hand before coding. If your understanding does not match them, you misread something.
- Edge cases the samples hide. Empty input (if allowed),
n = 1, all equal values, maximum values, negative numbers, repeated elements.
Complexity and constraints: what limits suggest
#You saw this table in Problem Solving Fundamentals. Here it is again as a quick lookup. It is a rough guide, since actual speed depends on the platform and language.
Input size | Complexity that usually works |
|---|---|
up to about 20 | Exponential, |
up to about 500 |
|
up to about 5,000 |
|
up to about 10^5 |
|
10^6 or more |
|
If your approach is too slow, you will see time limit exceeded (TLE). Common causes: an O(n^2) loop where O(n) was needed, slow input reading, String concatenation in a loop, or list.remove(0).
Fast input and output in Java
#Scanner is convenient but slow for large inputs. For big inputs, use BufferedReader with a tokenizer, and collect output in a StringBuilder, printing once. This is a template you can type from memory. The program below reads multiple test cases from a text so that it runs on its own. In a real submission, replace the StringReader with new InputStreamReader(System.in).
// File: Main.javaimport java.io.BufferedReader;import java.io.IOException;import java.io.StringReader;import java.util.StringTokenizer;public class Main { static BufferedReader reader; static StringTokenizer tokens; // Returns the next whitespace-separated token, or null at the end of the input. static String next() throws IOException { while (tokens == null || !tokens.hasMoreTokens()) { String line = reader.readLine(); if (line == null) { return null; } tokens = new StringTokenizer(line); } return tokens.nextToken(); } static int nextInt() throws IOException { return Integer.parseInt(next()); } static long maxSubarraySum(int[] a) { long bestEndingHere = a[0]; long best = a[0]; for (int i = 1; i < a.length; i++) { bestEndingHere = Math.max(a[i], bestEndingHere + a[i]); best = Math.max(best, bestEndingHere); } return best; } public static void main(String[] args) throws IOException { String input = "3\n5\n1 -2 3 4 -1\n1\n-5\n4\n2 2 2 2\n"; reader = new BufferedReader(new StringReader(input)); // in a real submission: new InputStreamReader(System.in) int testCases = nextInt(); StringBuilder out = new StringBuilder(); for (int t = 0; t < testCases; t++) { int n = nextInt(); int[] a = new int[n]; for (int i = 0; i < n; i++) { a[i] = nextInt(); } out.append(maxSubarraySum(a)).append('\n'); } System.out.print(out); // one print at the end }}7-58What this template gives you:
- The
next()method reads tokens across lines, so it does not matter whether the numbers are on one line or several. - It returns
nullat the end of the input, which is useful when the number of test cases is not given. - Output is built in a
StringBuilderand printed once, which is much faster than thousands ofprintlncalls. - The first test case
[1, -2, 3, 4, -1]has a best subarray3, 4with sum7. The second is a single negative number, so the answer is-5. The third sums to8. These come from Kadane's algorithm in Arrays.
Time management in an OA
#- Skim all the questions first. Start with the one you are most sure of, and bank the marks.
- Submit something that works before chasing the perfect solution. If the platform awards partial credit (check the rules), a correct brute force that passes small tests is worth having.
- Do not over-polish. Correct and fast enough is the target.
- Test with your own cases if the platform allows custom input: the smallest input, the largest, and the awkward ones.
- Watch the clock in blocks: if you are 15 minutes over your budget on one question, decide whether to continue or move on.
Reading the verdict
#Verdict | Likely cause |
|---|---|
Wrong answer | A logic error, a missed edge case, overflow, or output format |
Time limit exceeded | Too slow: complexity or I/O |
Runtime error | Index out of bounds, |
Memory limit exceeded | Too large an array or too many objects |
Compilation error | Syntax, a wrong class name (many platforms require |
An OA checklist
#- I read the constraints and chose a complexity to match.
- I handled every input and output format detail.
- I used
longwhere sums or products can be large. - I tested the smallest and the largest input.
- I removed all debug prints.
- My class and method names match the platform's requirements.
- I did not leave a slow
Scannerfor a big input.
Technical interviews
#A technical interview is usually a conversation with some coding. Typical parts:
- Introduction and resume. You will be asked to introduce yourself, and then asked about things on your resume. Anything on your resume is fair game.
- Coding problems. Use the workflow from article 25. Expect some follow-ups.
- CS fundamentals. Questions on OOP, databases, operating systems and networks.
- Projects. Covered below.
- Your questions. Prepare two or three real questions about the work or the team.
CS fundamentals: a checklist
#For campus interviews, many interviewers like to check basic fundamentals. A reasonable preparation list (check what applies to your target roles):
Subject | Be ready to explain |
|---|---|
OOP (Java) | Classes and objects, encapsulation, inheritance, polymorphism, abstraction, abstract class versus interface, overloading versus overriding, |
DBMS and SQL | Primary and foreign keys, normalisation basics, joins, indexes, transactions and ACID, writing common queries (see SQL for Beginners: Learn to Query a Database With Real Examples) |
Operating systems | Process versus thread, scheduling (such as the round-robin example from Stacks and Queues), deadlock and its conditions, memory management basics |
Computer networks | The layered models, TCP versus UDP, HTTP, DNS, what happens when you type a URL (see How a Website Works: From Typing a URL to Seeing the Page) |
Core Java |
|
Write a short summary for each subject, and practise explaining the main ideas in two minutes, aloud. If you cannot explain it simply, you do not yet understand it well enough.
Explaining trade-offs
#Interviewers often ask "why this and not that?" A good answer names the alternatives and the cost of each. Use this shape: what I chose, what the alternative was, what I gain, what I give up, and when I would choose the other one.
An example, for "check whether two strings are anagrams":
- Sort both and compare:
O(n log n)time, simple code, little extra memory. - Count the characters with an array:
O(n)time,O(1)extra space for a fixed alphabet, but assumes lowercase letters. - Count with a hash map:
O(n)time, works for any characters, uses more memory and is slower per step.
"I would use the counting array if the alphabet is small and fixed, because it is fastest and simplest. If the characters can be anything, I would use a map. If the strings are short and I want minimal code, sorting is fine."
Notice that no option is called "best". The right answer depends on constraints, and saying so shows judgement.
Debugging under pressure
#Bugs will appear in live coding. What interviewers watch is how you debug, not whether you ever make a mistake. A calm routine:
- Pause and say what you expected, and what happened. "I expected 7 but got 6."
- Shrink the input. Find the smallest example that fails.
- Trace by hand. Walk through the code with that example, writing variable values, as in this course's dry runs.
- Check your assumptions. Off-by-one?
intoverflow? An empty case? A variable not updated? - Narrow down. Add a print (or reason) to find the first line where reality departs from your expectation.
- Fix one thing at a time, and re-run your examples.
Talk through this aloud. Calm, systematic debugging is a positive signal. Thrashing (changing things randomly) is a negative one.
When you do not know something
#- Say what you do know, and where your knowledge ends. "I have not used that, but it sounds like X. Is that right?"
- Reason from first principles. A reasoned wrong answer is better than a confident guess.
- Never bluff about something on your resume. A short "I only used it in a small project, here is what I understood" is respectable.
Revising patterns
#In the last weeks before interviews, do not learn new topics. Revise patterns. Use your pattern notebook and error log (from the study plan):
- For each pattern, re-solve one problem from memory.
- Re-read the traps you wrote down.
- Practise the first two minutes of each pattern: how do I recognise it?
Discussing projects honestly
#Projects are where interviews often go deepest, because you are the expert in your own work. Do these things:
- Pick two or three projects and know them thoroughly. Better two you understand than six you cannot explain.
- Know your own contribution. In a team project, say exactly what you built.
- Use a simple structure: the problem, your role, the design (including data structures and why), a challenge you faced and how you solved it, the result, and what you would improve.
- Be ready for "why". Why this database? Why this data structure? Why not the alternative? What is the complexity of this operation? What would break if you had a hundred times more users or data?
- Describe only what you did. Do not claim a technology you only read about. If you copied a tutorial, say so, and say what you changed and learned.
- Show tests and limits. Mentioning what you tested, and honestly naming the limitations, builds trust.
- Make it runnable. A repository with a clear
READMEand a working demo is worth much more than a long resume bullet. The practice tracker from article 26 is an example of a project you can discuss in depth.
Resume bullets should be specific and truthful. For help, see Writing a Resume That Survives the First 10 Seconds.
The HR and general rounds
#Many of the hardest-sounding questions here are simple to answer if you have thought about them in advance: "Tell me about yourself", "Why this company?", "Where do you see yourself?", "Tell me about a challenge", and questions about relocation, shifts and expectations. Common HR Interview Questions and How to Answer Them (With Examples) and How to Get Your First Job as a Fresher in India: A Step-by-Step Guide cover them. Prepare short, honest answers and practise them aloud.
The last week before an interview
#- Day 7 to 5: revise your pattern notebook and error log. Re-solve a few problems from memory under a timer.
- Day 4 to 3: one mock interview, with a friend or alone. Revise your CS fundamentals summaries and your two projects.
- Day 2: read the company and role description. Prepare your questions. Check your documents and your setup (internet, laptop, charger, quiet space, the platform).
- Day 1: light revision only. Prepare clothes and travel. Sleep.
- On the day: eat something, arrive early, and breathe. Ask for clarification if you need it, and think aloud.
Common mistakes in placements
#- Believing one rumour about the "exact" process. It changes. Check current sources.
- Practising only topics you like, and skipping aptitude or fundamentals.
- Ignoring I/O mechanics, then losing marks to input handling or overflow in an OA.
- Copying solutions without being able to explain them. Follow-up questions expose this immediately.
- Overstating the resume. Anything listed can be asked about.
- Not practising speaking. Many capable candidates fail to explain clearly.
- Leaving mock interviews until the last week.
- Panicking after one bad round. Many rounds are independent. Learn from it and continue.
- Neglecting rest and health near the interview date.
- Ignoring other opportunities. Keep applying widely, and do not wait for a single company's result.
Exercises
#Exercise 1
Trace
#What does the fast-input program print for this input? Work it out by hand first.
23-1 -2 -345 -10 6 7Exercise 2: Read until the end
#Some problems do not tell you how many lines there are. Write code that reads lines until the end of the input, and prints, for each non-blank line, the sum of the integers on it. For blank lines, print (blank).
Exercise 3: Debug an assessment
#This submission passes the sample but fails hidden tests. List at least three reasons it might fail, and fix them.
Scanner in = new Scanner(System.in);int n = in.nextInt();int sum = 0;String result = "";for (int i = 0; i < n; i++) { int x = in.nextInt(); sum += x; result += x + " ";}System.out.println(result);System.out.println(sum);Exercise 4: Explain a trade-off
#An interviewer asks: "You used a HashMap here. Why not sort the array instead?" for a two-sum problem on an unsorted array. Write a balanced answer.
Exercise 5: Your project in 90 seconds
#Write a 90-second spoken answer for "Tell me about a project you built", using the practice tracker from article 26 (or your own project) as the example. Then list four follow-up questions to prepare for.
Show solutionHide solution
For each test case, the program prints the maximum subarray sum.
- Test 1:
[-1, -2, -3]: every number is negative, so the best non-empty subarray is the single largest element,-1. - Test 2:
[5, -10, 6, 7]: the best subarray is6, 7, with sum13. Check the alternative:5alone is5, and5, -10, 6, 7is8, which is less than 13.
So the output is -1 and then 13.
// File: Main.javaimport java.io.BufferedReader;import java.io.IOException;import java.io.StringReader;import java.util.StringTokenizer;public class Main { static BufferedReader reader; static StringTokenizer tokens; static String next() throws IOException { while (tokens == null || !tokens.hasMoreTokens()) { String line = reader.readLine(); if (line == null) { return null; } tokens = new StringTokenizer(line); } return tokens.nextToken(); } public static void main(String[] args) throws IOException { reader = new BufferedReader(new StringReader("2\n3\n-1 -2 -3\n4\n5 -10 6 7\n")); int cases = Integer.parseInt(next()); for (int t = 0; t < cases; t++) { int n = Integer.parseInt(next()); long best = Long.MIN_VALUE; long current = 0; for (int i = 0; i < n; i++) { int x = Integer.parseInt(next()); current = Math.max(x, current + x); best = Math.max(best, current); } System.out.println(best); } }}-113Exercise 2
Show solutionHide solution
Use BufferedReader.readLine(), which returns null at the end of the input. Trim each line. If it is empty, print (blank). Otherwise split on whitespace and add up the numbers using long.
// File: Main.javaimport java.io.BufferedReader;import java.io.IOException;import java.io.StringReader;public class Main { public static void main(String[] args) throws IOException { String input = "1 2 3\n\n10 -4\n7\n"; // in a real submission: System.in BufferedReader reader = new BufferedReader(new StringReader(input)); String line; int lineNumber = 0; while ((line = reader.readLine()) != null) { lineNumber++; line = line.trim(); if (line.isEmpty()) { System.out.println("line " + lineNumber + ": (blank)"); continue; } long sum = 0; for (String token : line.split("\\s+")) { sum += Long.parseLong(token); } System.out.println("line " + lineNumber + ": " + sum); } }}line 1: 6line 2: (blank)line 3: 6line 4: 7The loop condition (line = reader.readLine()) != null both reads and tests for the end. Splitting an empty line with split("\\s+") would produce one empty token and crash on parsing, which is why the blank line is handled first.
Exercise 3
Show solutionHide solution
Likely reasons for failure on hidden tests:
int sumoverflows. Ifnis large or the values are big, the total can exceed about 2.1 billion and wrap around to a wrong (even negative) number. Uselong.String +=in a loop isO(n^2). For largenit will time out (TLE). Use aStringBuilder.Scanneris slow for large inputs and can also cause TLE. UseBufferedReaderwith a tokenizer.- A trailing space after the last number in
resultmay fail a strict output checker. Build the line without a trailing space. - Edge cases:
n = 0would print an empty line first, which may or may not be what the problem expects. Check the statement.
The demonstration below shows the overflow and the formatting fix on a small input.
// File: Main.javaimport java.io.BufferedReader;import java.io.IOException;import java.io.StringReader;import java.util.StringTokenizer;public class Main { public static void main(String[] args) throws IOException { String input = "3\n2000000000 2000000000 2000000000\n"; int[] values = {2_000_000_000, 2_000_000_000, 2_000_000_000}; int buggySum = 0; for (int v : values) { buggySum += v; // overflows int } System.out.println("int sum: " + buggySum); BufferedReader reader = new BufferedReader(new StringReader(input)); int n = Integer.parseInt(reader.readLine().trim()); StringTokenizer tokens = new StringTokenizer(reader.readLine()); long sum = 0; StringBuilder line = new StringBuilder(); for (int i = 0; i < n; i++) { int x = Integer.parseInt(tokens.nextToken()); sum += x; if (i > 0) { line.append(' '); // a separator, so no trailing space } line.append(x); } System.out.println("[" + line + "]"); System.out.println("long sum: " + sum); }}int sum: 1705032704[2000000000 2000000000 2000000000]long sum: 6000000000The int sum printed a negative number, which is exactly the kind of wrong answer that passes small samples and fails large hidden tests.
Exercise 4
Show solutionHide solution
A balanced answer:
"The array is unsorted, so there are two reasonable approaches. With a HashMap, I walk through the array once, and for each number check whether its complement has been seen. That is O(n) time on average, but it needs O(n) extra memory, and it keeps the original indexes, which the problem asks for.
If I sorted the array first, I could use two pointers with O(1) extra space, but sorting costs O(n log n), and it loses the original positions unless I store them separately, which brings back O(n) memory. So I would choose the hash map here: it is faster, simpler, and preserves indexes.
I would choose sorting if memory were very tight and the problem only needed a yes or no answer, or if the array were already sorted. In that case two pointers is the cleaner solution."
This answer states both options, their costs, the decisive fact from the problem (original indexes), and the situation where the other option wins.
Exercise 5
Show solutionHide solution
A sample 90-second answer (about 220 words, spoken at a natural pace):
"I built a DSA practice tracker in Java, because I wanted a way to schedule revision of the problems I solve. You add problems with a topic and difficulty, mark them solved, and it tells me which ones are due for review, using gaps of 1, 3, 7, 14 and 30 days.
It uses several of the data structures I was studying, each for a reason. A hash map gives me lookup by id. A priority queue returns the due problems oldest first. A stack of undo actions lets me reverse mistakes, and each action stores the old state before changing anything. A trie suggests problem titles as I type, and a topological sort proposes a study order that respects prerequisites, such as arrays before strings.
My hardest bug was in undo: I first guessed the old values instead of capturing them, which broke undoing a review. I fixed it and added tests for it. The tests are small self-checks, and I would move them to JUnit next.
The limits are that titles cannot contain commas because I save to a plain text file, and the schedule is simple. I would add escaping for the file format and make the schedule depend on difficulty."
Follow-up questions to prepare for:
- Why a trie instead of a
TreeSet? (Prefix operations and per-prefix data, versus memory and simplicity. See the exercise in article 26.) - What is the time complexity of finding the due problems? (
O(n log n)fornproblems, because of the heap, or the scan plus sort.) - How does undo work, and what are its limits? (Closures that restore captured state. The history is not saved to disk, and it is unbounded.)
- What would break at a hundred times the data? (Scanning all problems for
byTopicanddueOn, keeping everything in memory, and the single-user plain-text file.)
A good test of your answer: it names the problem, the structures and why, one real difficulty, and honest limits, and it fits in 90 seconds.
Where to go next
#- You have reached the end of the course. Use Your 12-Week DSA Study and Revision Plan to organise your revision, and return to individual articles whenever a topic feels weak. The dry runs and exercises are meant to be repeated.
- Next steps beyond this course: more practice problems on your own, system design basics if your target roles ask for them, and strengthening one or two projects. Software Interview Preparation: A 6-Week Plan That Actually Works covers some of those next to DSA, and Writing a Resume That Survives the First 10 Seconds helps you present your work.
- Practice habit: every week, do one timed problem, one mock explanation of a project or fundamentals topic, and one review of your error log. That small routine, repeated, is what builds interview readiness.
Connected lessons
References
- Writing a Resume That Survives the First 10 Seconds
- Software Interview Preparation: A 6-Week Plan That Actually Works
- How to Get Your First Job as a Fresher in India: A Step-by-Step Guide
Show all 12 →
- Common HR Interview Questions and How to Answer Them (With Examples)
- SQL for Beginners: Learn to Query a Database With Real Examples
- How a Website Works: From Typing a URL to Seeing the Page
- The Interview Problem-Solving Workflow
- Build a DSA Practice Project
- Problem Solving Fundamentals: From a Question to an Algorithm
- Arrays and Array-Based Problem Solving
- Stacks and Queues
- Your 12-Week DSA Study and Revision Plan
Linked from 4 guides
Other pages in the library that point here.
Keep reading
More in Technology →Guide · Technology
How to Learn Data Structures and Algorithms Without Burning Out
Guide · Career
What Technical Rounds Look Like and How to Solve Out Loud
Guide · Career
A LinkedIn Profile That Gets Recruiter Messages

