Week 1 — Foundation · Apr 20–26
Lock in the fundamentals. Arrays → Strings → Hashing → Two Pointers → Linked Lists → Stacks/Queues → Recursion. MERN track starts with JavaScript mastery and ends with your first Express API. Interview block: you'll learn to answer like a candidate with experience, not theory.
01
Arrays & Time Complexity
Monday, Apr 20
DSA · 2 hrs
Arrays + Big-O Fundamentals
- Big-O hierarchy: O(1) → O(log n) → O(n) → O(n log n) → O(n²) → O(2ⁿ) → O(n!). Map each class to a code shape you can spot instantly.
- Constraint → complexity target: n≤10³ → O(n²) ok · n≤10⁵ → O(n log n) · n≤10⁸ → O(log n). Read constraints BEFORE picking algorithm.
- Prefix Sum:
pre[i]=pre[i-1]+arr[i]. Range sum (l,r)=pre[r]-pre[l-1]. Turns O(n) query → O(1). - Kadane's:
local=max(num, local+num), trackglobal. Max subarray sum in O(n) one pass. - Sliding Window (fixed): build first window, then slide — add right, remove left. O(n).
- Sliding Window (variable): expand right always; shrink left while constraint violated; record answer on valid windows.
- Two Pointers (sorted): l=0, r=n-1. sum<target→l++, sum>target→r--. O(n).
- Dutch National Flag: low/mid/high pointers — 3-way partition in one pass.
Space matters: in-place = O(1) extra. Creating a new array of size n = O(n) space. Interviewers ask about both.
Approach · Brute Force → Optimize
- Step 1: state brute force aloud — "nested loops, O(n²)".
- Step 2: trade space for time — HashMap for O(1) lookup, prefix array for O(1) query.
- Step 3: find loop redundancy — two loops on same data → two-pointer or sliding window.
- Step 4: verify on small example. Then state final complexity before coding.
Practice · solve in order
Aptitude · 1 hr · Numbers, HCF, LCM
- HCF (GCD): Euclidean — gcd(a,b)=gcd(b,a%b) till remainder 0.
- LCM = a·b / HCF. For 3 numbers: LCM(a,b,c) = LCM(LCM(a,b),c).
- Divisibility: 3 (digit sum÷3), 4 (last 2÷4), 8 (last 3÷8), 9 (digit sum÷9), 11 (alt-sum÷11).
- Unit digit cycles of 4: 2→{2,4,8,6}, 3→{3,9,7,1}, 7→{7,9,3,1}, 8→{8,4,2,6}. Use power mod 4.
- Remainder theorem: (a·b) mod n = ((a mod n)·(b mod n)) mod n.
- Practice: IndiaBix → Numbers (25 Qs). Log every wrong one + method.
MERN · 1 hr · JavaScript Foundations & ES6
- Closures: inner function retains access to outer scope even after outer returns. Powers hooks, module pattern.
- let vs const vs var: var is function-scoped, hoisted as undefined. let/const block-scoped, TDZ till declared.
- Arrow functions: no own
this, noarguments, cannot benew'd. Perfect for callbacks. - Destructuring + spread/rest:
const {a,b} = obj,[...arr],{...obj}. Used in every React file. - Promises & async/await: async always returns a Promise. await only inside async. try/catch for errors.
- Task: build a 30-line script with map/filter/reduce, one closure counter, one async fetch.
Interview Q&A · 1 hr · OOP Fundamentals
Tech HR + Senior Dev lens. Every answer below has: core answer · differentiator (what makes you sound senior) · example · common mistake to avoid.
What are the 4 pillars of OOP? Explain with an example.
Encapsulation (bundle data + methods, hide internals), Abstraction (expose what, hide how), Inheritance (child reuses parent), Polymorphism (same name, different behavior).
Difference between abstract class and interface?
Abstract class can have implemented methods, fields, constructors; single-inherited. Interface is a pure contract (Java 8+ allows default methods); multi-implemented.
Method overloading vs overriding?
Overloading = same class, same name, different parameters (compile-time). Overriding = subclass redefines parent's method with same signature (runtime).
What is the diamond problem? How does Java solve it?
Multiple inheritance ambiguity — B and C both inherit from A, D inherits from B and C; which A does D get? Java forbids multi-inheritance of classes; allows multi-interface with explicit resolution using
InterfaceName.super.method().What is SOLID? Give one example of each.
Single-responsibility · Open/closed · Liskov substitution · Interface segregation · Dependency inversion.
Composition over Inheritance — what does it mean?
Prefer "has-a" (object holds another) over "is-a" (class extends class). Inheritance creates tight coupling and a rigid hierarchy; composition lets you swap behaviors at runtime.
Static vs instance methods — when to use each?
Static = belongs to class, no
this, can't access instance state. Instance = needs an object, can access fields.What is the Singleton pattern? How do you make it thread-safe?
One instance per JVM. Thread-safe options: eager init (field initialized at class load), double-checked locking with
volatile, or enum singleton (Joshua Bloch's preferred way).Explain
this keyword in Java/JS — any difference?Java:
this = current instance, bound at compile time. JS: this = determined by call site (method call, fn call, new, arrow). Arrow fns inherit this from enclosing scope.02
Strings & Sliding Window
Tuesday, Apr 21
DSA · 2 hrs · Strings + Pattern Matching
- Frequency map: array[26] for lowercase letters — faster than HashMap. Anagram = same frequency.
- Sliding window on strings: expand right (add char), shrink left (remove char). Track count of satisfied constraints, not the whole map.
- Palindrome (two-pointer): l=0, r=n-1, move in. O(n) O(1).
- Palindrome (expand from center): for each i, expand odd (i,i) and even (i,i+1). O(n²) but finds longest.
- Reverse words: reverse whole string, then reverse each word. O(n) O(1).
- KMP (concept): build LPS/failure array — skip re-checking already-matched prefix. O(n+m).
- Char math:
c-'a'= 0..25 index. ASCII 'A'=65, 'a'=97, '0'=48. - Never concat in loop — use StringBuilder/array+join. Loop concat = O(n²).
Aptitude · 1 hr · Percentages + Profit & Loss
- % change = (new−old)/old × 100. Successive %: multiply (1+a/100)(1+b/100).
- x% of y = y% of x. Pick whichever is easier.
- Profit/Loss % on CP unless stated. SP = CP(1+P%/100).
- Two successive discounts d1, d2: effective = 1 − (1−d1/100)(1−d2/100).
- SP of x = CP of y: Profit% = ((y−x)/x)×100.
MERN · 1 hr · Node.js & NPM
- Node event loop: single-threaded JS + libuv thread pool. Phases: timers → pending → poll → check → close.
- CommonJS vs ES Modules:
require/module.exportsvsimport/export. Modern Node supports both — pick ESM for new projects. - package.json essentials: scripts, dependencies vs devDependencies, semver (^, ~).
- Async APIs: fs.readFile (callback), fs.promises.readFile (Promise). Avoid sync APIs in servers.
- Task: init a Node project, write a file reader that returns a Promise, run with
node --watch.
Interview Q&A · 1 hr · Operating Systems
Process vs Thread — core difference?
Process = independent program with own memory space. Thread = lightweight unit inside a process, shares memory with siblings.
What is a deadlock? Name its 4 conditions.
Two+ threads blocked forever, each waiting on a resource held by the other. Coffman conditions: mutual exclusion, hold-and-wait, no preemption, circular wait.
Paging vs Segmentation?
Paging: fixed-size blocks (pages), no external fragmentation. Segmentation: variable-size, logical (code, stack, heap). Modern OS uses paged segments.
What is virtual memory? Why do we need it?
Abstraction giving each process its own large contiguous address space, mapped to physical RAM + disk. Enables isolation, overcommit, and lazy loading.
CPU scheduling — compare FCFS, SJF, Round Robin.
FCFS: simple, convoy effect. SJF: optimal avg wait but needs burst prediction, can starve. Round Robin: time-quantum based, fair, context-switch overhead.
Mutex vs Semaphore?
Mutex = binary lock, one owner, releases by same owner. Semaphore = counter allowing N concurrent accesses; no ownership.
Page replacement algorithms — FIFO, LRU, Optimal?
FIFO: oldest page out (Belady's anomaly). LRU: least-recently-used — best practical. Optimal: future-looking, theoretical benchmark only.
What is a system call? Give one example.
User-mode program's way to request kernel services. Trap switches to kernel mode, OS executes, returns.
How does fork() work?
Creates a near-identical child process. Returns child PID in parent, 0 in child, -1 on error. Uses copy-on-write for memory efficiency.
03
Hashing & HashMaps
Wednesday, Apr 22
DSA · 2 hrs · HashMap / HashSet Mastery
- HashMap internals: array of buckets → linked list → (Java 8+) tree when bucket > 8. Load factor 0.75 triggers resize.
- Operations: put/get/remove all O(1) average, O(n) worst (bad hash → all collide).
- Frequency counting → one pass, then scan map. Anagram groups, top-k, majority.
- Prefix sum + HashMap → subarrays with sum = k in O(n). Store count of each prefix sum.
- HashSet for "seen before" → duplicate detection, cycle in O(n).
- Custom hash/equals: if you override equals, override hashCode. Violating this → keys lost in map.
- TreeMap = O(log n) sorted. Use when you need floor/ceiling/range queries.
Aptitude · 1 hr · Ratios, Proportions, Mixtures
- Ratio a:b → A's share = a/(a+b) of total. Always simplify first.
- Cross-multiply: a/b = c/d ⇒ ad = bc.
- Alligation: (costly−mean) : (mean−cheap) = cheap:costly ratio in mix. Cross-diagram.
- Mixture removal: after k removals of R from V with initial fraction X: final = X(1−R/V)^k.
- Compound ratio: (a:b) · (c:d) = ac:bd.
MERN · 1 hr · Express.js Fundamentals
- app.use / app.get / app.post — route handlers. Handler sig:
(req, res, next). - Middleware chain: next() passes control. Error middleware has 4 args
(err, req, res, next). - Body parsing:
app.use(express.json()). Without it, req.body is undefined. - Router modules:
const router = express.Router()— split routes into files. - Status codes: 200 OK, 201 Created, 400 Bad Req, 401 Unauth, 403 Forbidden, 404 Not Found, 500 Server Err.
- Task: build a mini Express server with /health, /users (GET + POST), and a logger middleware.
Interview Q&A · 1 hr · DBMS / SQL
ACID properties — explain each.
Atomicity (all-or-nothing), Consistency (DB moves from one valid state to another), Isolation (concurrent txns don't interfere), Durability (committed data survives crash).
Normalization — 1NF, 2NF, 3NF, BCNF?
1NF: atomic values. 2NF: 1NF + no partial dependency on composite key. 3NF: 2NF + no transitive dependency. BCNF: every determinant is a key.
SQL vs NoSQL — when do you pick which?
SQL (relational): strict schema, joins, ACID, vertical scale. NoSQL (document/KV/wide-col): flexible schema, horizontal scale, eventual consistency common.
Clustered vs Non-clustered index?
Clustered: table rows physically ordered by the index key; one per table (usually PK). Non-clustered: separate structure with pointers to rows; multiple allowed.
INNER vs LEFT vs RIGHT vs FULL OUTER JOIN?
INNER: only matches. LEFT: all from left + matches from right (null if none). RIGHT: mirror. FULL: everything, nulls where no match.
What is a transaction isolation level?
Controls what concurrent txns can see. Read Uncommitted < Read Committed < Repeatable Read < Serializable. Higher = less anomalies, more locking.
Difference between WHERE and HAVING?
WHERE filters rows before aggregation. HAVING filters groups after aggregation.
What is a deadlock in DB? How do you resolve it?
Two txns waiting on locks each holds. DB detects via wait-for graph and kills one (victim).
Index — why not index every column?
Indexes speed reads but slow writes (every insert/update must update index) and cost disk space. Also may be unused if selectivity is low.
04
Two Pointers & Sorting
Thursday, Apr 23
DSA · 2 hrs · Two Pointers + Sort Patterns
- Two pointers (same dir): slow/fast for in-place mutation (remove dupes, move zeros).
- Two pointers (opposite): sorted array + target sum → O(n).
- 3Sum pattern: sort → fix i → two-pointer on rest. Skip duplicates. O(n²).
- Merge intervals: sort by start → iterate, merge overlap (new.start ≤ prev.end).
- Sort + scan = classic upgrade from O(n²) to O(n log n).
- Quicksort: partition around pivot, recurse. Avg O(n log n), worst O(n²) with bad pivot.
- Mergesort: divide + merge. Stable, O(n log n) guaranteed, O(n) extra space.
- Counting / Radix sort: O(n+k) for small key range. Not comparison-based.
Aptitude · 1 hr · Time, Speed & Distance
- D = S·T. km/h ↔ m/s: multiply by 5/18 (to m/s) or 18/5 (to km/h).
- Avg speed over equal distances: 2·s1·s2/(s1+s2). Not (s1+s2)/2.
- Relative speed: same direction → subtract; opposite → add.
- Train + platform: total distance = train length + platform length.
- Boats + stream: downstream = b+s; upstream = b−s. b = (d+u)/2, s = (d−u)/2.
MERN · 1 hr · MongoDB Fundamentals
- Document model: BSON docs in collections; no enforced schema (but use validators/Mongoose in prod).
- CRUD: insertOne, find, updateOne, deleteOne. Filters use
{field: value}or operators{age:{$gt:18}}. - Indexes: default on _id. Add single/compound indexes for query fields. Check with
.explain(). - Aggregation pipeline:
$match → $group → $sort → $project. Like SQL GROUP BY + JOIN. - ObjectId: 12-byte ID — timestamp + machine + pid + counter. Roughly sortable by time.
- Task: install Mongo locally (or Atlas), insert 5 users, query by age range, add an index.
Interview Q&A · 1 hr · Computer Networks
OSI vs TCP/IP model — what's the difference?
OSI: 7 layers (Phys, Data, Net, Transport, Session, Presentation, App) — theoretical. TCP/IP: 4 practical layers (Link, Internet, Transport, App).
TCP vs UDP?
TCP: connection-oriented, reliable, ordered, flow+congestion control, slow-start, retries. UDP: connectionless, best-effort, low latency.
Walk me through what happens when I type google.com in the browser.
1) Browser cache/DNS resolve. 2) OS DNS cache → recursive resolver → root → TLD → authoritative. 3) TCP 3-way handshake. 4) TLS handshake. 5) HTTP GET. 6) Server responds, browser parses HTML → fetches JS/CSS → paints.
What is the 3-way handshake?
SYN (client → server, seq=x) → SYN-ACK (server → client, seq=y, ack=x+1) → ACK (client → server, ack=y+1). Connection established.
HTTP vs HTTPS?
HTTPS = HTTP over TLS. TLS provides encryption, integrity, and server authentication via certificates.
HTTP methods — what's idempotent?
GET, PUT, DELETE, HEAD, OPTIONS — idempotent (same effect if called N times). POST, PATCH — not idempotent.
DNS — how does recursive resolution work?
Client asks resolver → resolver queries root (.) for TLD server → queries TLD (.com) for authoritative → queries authoritative for the record. Resolver caches with TTL.
What is CORS and why does it exist?
Cross-Origin Resource Sharing — browser same-origin policy blocks JS from reading responses from other origins. Server opts-in with
Access-Control-Allow-Origin.REST vs WebSockets — when each?
REST: stateless request/response over HTTP. WebSockets: persistent, full-duplex after HTTP upgrade.
05
Linked Lists
Friday, Apr 24
DSA · 2 hrs · Linked List Operations
- Reverse (iterative): prev=null, curr=head; save next → flip → advance. O(n) O(1).
- Floyd's cycle: slow (1) + fast (2) — meet ⇒ cycle. Reset slow to head, move both by 1 → cycle start.
- Dummy node pattern — eliminates head-edge-cases. Always return
dummy.next. - Find middle: slow/fast. Fast at end → slow at middle.
- Merge two sorted lists: dummy + compare heads + advance smaller.
- Remove Nth from end: two pointers with N gap, one pass.
- LRU Cache: HashMap + Doubly Linked List → O(1) get/put. Know this cold.
- Never lose
next— save before reassign. #1 LL bug.
Aptitude · 1 hr · Time & Work
- Rate = 1/days. A does in 10d → rate 1/10 per day.
- A+B together: combined rate = 1/A + 1/B → total time = AB/(A+B).
- Work as LCM: if A=10d, B=15d → total work = LCM(10,15)=30 units. A does 3/day, B does 2/day → together 5/day → 6d.
- Pipes: inflow positive, outflow negative. Net rate solves fill/drain time.
- Efficiency ratio inverse of time. A is 2× faster than B ⇒ A takes half the time.
MERN · 1 hr · React Intro — JSX & Components
- JSX compiles to
React.createElement(). One parent element per return (Fragment or <>). - Functional components — plain functions returning JSX. Props are the single argument.
- Props are read-only. Never mutate. To change, lift state up or use a callback.
- Lists & keys: always provide a stable key (not array index if list reorders).
- Event handlers: camelCase (
onClick), pass function reference, not call result. - Task: build a
TodoListcomponent — accept items prop, render with keys, show empty state.
Interview Q&A · 1 hr · DSA Concept Questions
Array vs Linked List — when to pick each?
Array: O(1) random access, cache-friendly, fixed/dynamic size with amortized O(1) append. LL: O(1) insert/delete at known node, no contiguous memory needed.
Why is HashMap O(1) average but O(n) worst?
Avg: uniform hash distributes keys across buckets → O(1). Worst: all keys collide → single bucket → linear search. Java 8+ mitigates with red-black tree when bucket > 8 → O(log n) worst.
Stack vs Heap memory?
Stack: per-thread, LIFO, holds call frames + local primitives. Fast, limited size. Heap: shared, holds objects, GC-managed in Java, malloc/free in C.
Recursion vs Iteration — tradeoffs?
Recursion: cleaner for tree/divide-and-conquer, O(depth) call stack. Iteration: lower overhead, no stack overflow risk.
What is amortized complexity?
Average cost per op over a sequence, even if some ops are expensive. E.g., dynamic array append = amortized O(1) because resizing (O(n)) happens rarely.
BFS vs DFS — when to pick?
BFS (queue): shortest path unweighted, level-order, closer neighbors first. DFS (stack/recursion): path existence, cycle detect, topological, connected components.
When is sorting O(n) possible?
Comparison-based sort is Ω(n log n) — proven lower bound. Non-comparison sorts (counting, radix, bucket) achieve O(n+k) but require bounded key range / fixed digit size.
Explain greedy vs DP in one line each.
Greedy: make locally optimal choice, never reconsider. DP: try all sub-choices, memoize, pick best.
How do you debug when your algorithm "works on samples but fails"?
Generate small random inputs, compare against brute force. Look for edge cases: empty input, single element, duplicates, max/min boundary, integer overflow, negatives.
06
Stacks & Queues
Saturday, Apr 25
DSA · 2 hrs · Stack, Queue, Monotonic
- Stack triggers: "nearest/next greater", "balanced/matching", "undo/history".
- Queue triggers: "level-order", "shortest in unweighted graph".
- Monotonic stack: keep elements increasing/decreasing; pop violators. Amortized O(n).
- Monotonic deque: sliding window max/min in O(n).
- Expression eval: infix → postfix (Shunting Yard); evaluate postfix with stack.
- Two stacks → queue: push to s1; pop: drain s1 to s2, pop s2.
- Min stack: parallel stack tracks running min → O(1) getMin.
Aptitude · 1 hr · Simple & Compound Interest
- SI = PNR/100. Amount = P + SI.
- CI = P(1+R/100)ⁿ − P. Amount = P(1+R/100)ⁿ.
- CI − SI for 2 years = P(R/100)².
- Half-yearly CI: R → R/2, n → 2n. Quarterly: R → R/4, n → 4n.
- Rule of 72: money doubles at R% in ~72/R years.
MERN · 1 hr · React Hooks (useState, useEffect)
- useState: returns [value, setter]. Setter replaces (doesn't merge). Use functional update when new depends on old.
- useEffect: runs after render. Dependency array:
[]= once,[x]= when x changes, none = every render. - Cleanup fn: returned function runs before next effect + on unmount. Use it to cancel fetches, clear timers.
- Don't mutate state: always new object/array —
setUsers([...users, newUser]). React compares by reference. - Common bug: infinite loop when effect setState has no/wrong deps.
- Task: build a counter with useState + a fetch-on-mount with useEffect and cleanup.
Interview Q&A · 1 hr · Behavioral + HR Round
Tell me about yourself.
3-part structure: (1) where you are now (student at X, interests Y), (2) one or two proud projects/achievements with tech & impact, (3) why this role matters to you.
Why should we hire you?
Map two skills to the JD. "You need X — I've done X in project Y. You need Z — I've learned Z deeply and can ship from day 1."
What's your biggest weakness?
One real weakness + what you're actively doing about it. Avoid humble-brags ("I work too hard").
Describe a conflict with a teammate and how you handled it.
STAR: Situation (small scope), Task (your role), Action (listened, proposed compromise, escalated only if needed), Result (shipped + relationship intact).
Tell me about a time you failed.
Pick a real, ideally technical failure. Own it, extract the lesson, show you applied the lesson later.
Where do you see yourself in 5 years?
Show growth ambition that's compatible with the role. Technical depth + broader scope (mentoring, system design, product thinking).
Why do you want to leave your current role / why this company?
Forward-looking, never trash-talking. "Outgrew the scope, want bigger systems / deeper problems / specific technology."
Tell me about a time you took initiative.
Something no one asked you to do. Bug you fixed, tool you built, process you improved.
Do you have any questions for us?
YES — always. Ask 2-3: about team/role mechanics, growth/feedback, the first 90 days.
What's your salary expectation?
Do research (Glassdoor, AmbitionBox, Levels.fyi). Give a range, anchored on market + your strengths. Defer if too early ("I'd like to understand the role first").
07
Recursion + Week 1 Wrap
Sunday, Apr 26
DSA · 2 hrs · Recursion Fundamentals
- Recursion template: (1) base case, (2) recursive call(s) on smaller input, (3) combine results.
- Recursion tree: visualize calls and subcalls. Total work = sum across levels.
- Master theorem: T(n) = aT(n/b) + f(n). Merge sort: 2T(n/2)+O(n) → O(n log n).
- Tail recursion: recursive call is last op. JVM doesn't optimize, but concept matters.
- Subsets / permutations / combinations: the core backtracking patterns.
- Include/exclude recurrence: at each index decide take vs skip.
- Pitfall: missing base case or wrong decrement → stack overflow.
LC #78 Subsets
LC #46 Permutations
LC #77 Combinations
LC #22 Generate Parens
LC #17 Phone Letter
LC #39 Combination Sum
Week 1 revision: redo 3 problems you struggled with. Re-explain approach out loud. Score yourself on "could I teach this?"
Aptitude · 1 hr · Mixed Mock (30 Q, timed)
- Format: 30 questions, 30 min. Simulate real placement test.
- Topics covered: Numbers, %, P&L, Ratio, TSD, T&W, SI/CI — Week 1's full set.
- Strategy: first pass on easy, skip hard (mark and return), never spend > 90s on one Q.
- Review: for each wrong one, write the correct method in a notes file. This file is gold.
MERN · 1 hr · Build Your First Express CRUD
- Project:
notes-api— in-memory array store. Routes: GET /notes, POST /notes, PUT /notes/:id, DELETE /notes/:id. - Validation: reject missing title with 400. Return 404 on unknown id.
- Logger middleware: log method, path, status, elapsed ms.
- Error handler: central try/catch wrapper or 4-arg middleware. Never leak stack traces in prod.
- Test with Postman/Thunder Client. Commit to GitHub — this starts your portfolio.
Interview Q&A · 1 hr · Week 1 Review Mock
Simulate a 45-min interview: 2 DSA (arrays + linked list), 3 CS fundamentals (OOP, OS, DBMS — random), 2 HR. Record yourself on phone. Review brutally.
Walk me through your approach — find the first non-repeating character in a string.
Two-pass: (1) frequency array[26] counting occurrences. (2) iterate original string, first char with count=1 is the answer.
Can you detect a loop in a linked list without extra space?
Floyd's tortoise-hare. Slow +1, fast +2. If they meet → cycle. O(n) time, O(1) space.
Explain polymorphism with a code snippet.
Parent reference holds child object; calls dispatch to child's override at runtime.
What happens on SELECT with no index on a 10M-row table?
Full table scan — O(n). Plus disk I/O if not in buffer pool. Can crush the DB server on concurrent load.
Quick thread vs process fire-round.
Threads share memory; processes don't. Thread context-switch is cheap; process switch flushes TLB. Threads coordinate with mutexes; processes with IPC.
Walk me through a project you're proud of.
Problem → your role → tech choices (with rationale) → one hard bug/decision → result/impact.
What's your approach to learning a new tech quickly?
Official docs → smallest working example → build something non-trivial → read one good open-source codebase that uses it.
Week 2 — Intermediate · Apr 27 – May 3
Move into the meaty stuff. Binary Search → Recursion/Backtracking → Trees → BST/Heap → Graphs → DP. MERN builds to a full JWT-authenticated CRUD API with Mongoose. Interview block shifts to OS, DBMS, Networks, and system-design thinking.
08
Binary Search Mastery
Monday, Apr 27
DSA · 2 hrs · Binary Search Patterns
- Template (closed): l=0, r=n-1; while l≤r; mid=l+(r-l)/2; return/shrink. Use
l+(r-l)/2to avoid overflow. - Template (half-open): l=0, r=n; while l<r. Cleaner for "first true" / "last false" search.
- Rotated sorted search: identify sorted half via arr[l] ≤ arr[mid], then decide side.
- Binary search on answer: search space = possible answers. Check feasibility with O(n) function. Used for "min largest", "max min" problems.
- Peak element: BS using mid vs mid+1 comparison.
- Lower bound / upper bound: first index ≥ x / first index > x.
Aptitude · 1 hr · Permutation & Combination
- nPr = n!/(n−r)! — arrangement, order matters. nCr = n!/(r!(n−r)!) — selection.
- Arrange identical items: n! / (p!·q!·...) for repeats.
- Circular permutation: (n−1)! for distinct items around a table.
- At least 1: total − none. At most k: sum from 0..k.
- Gap method: arrange non-objects first, then fit restricted ones into gaps.
MERN · 1 hr · React State Management (Context API)
- Props drilling: passing props through many layers — smell.
- Context API:
createContext→ Provider wraps tree →useContextin any child. Good for theme, auth, current user. - When Context is wrong: high-frequency updates (re-renders all consumers) → Redux/Zustand/Jotai.
- useReducer: for complex state transitions. Works great paired with Context for local-global state.
- Task: build a
ThemeContextwith light/dark toggle, consume in 2 components.
Interview Q&A · 1 hr · OOP Advanced
Explain the Observer pattern.
One subject maintains a list of observers; notifies all on state change. Decouples publisher from subscribers.
Factory vs Builder pattern?
Factory: returns an object of a family, caller doesn't specify concrete class. Builder: step-by-step construction for objects with many optional params.
What is Dependency Injection?
Pattern where a class receives its dependencies from outside rather than creating them. Enables testing (inject mocks), swapping, loose coupling.
Shallow vs deep copy?
Shallow copies the top-level object; nested references are shared. Deep copies every level.
Final vs Abstract vs Static in Java?
final: class can't be extended / method can't be overridden / var can't be reassigned. abstract: class can't be instantiated / method has no body. static: belongs to class.
Garbage collection — what does it actually do?
Reclaims memory of unreachable objects. Generational GC: Young gen (minor GC, fast) + Old gen (major GC, stop-the-world).
Difference between Composition, Aggregation, Association?
Association: any relationship. Aggregation: "has-a", parts can exist alone. Composition: "owns-a", parts die with whole.
What's the Strategy pattern? Give a modern use case.
Define family of interchangeable algorithms; select at runtime. Avoids large switch/if-else chains.
09
Recursion & Backtracking
Tuesday, Apr 28
DSA · 2 hrs · Backtracking Template
- Template: choose → explore → un-choose. Track path, push answer at leaf.
- Pruning: cut branches early when constraint violated. Major perf win.
- Subsets: at each i, include or skip. Add current path to answer at each step.
- Permutations: used[] array or swap-in-place. Careful with duplicates → sort first, skip used[i-1]==false & arr[i]==arr[i-1].
- N-Queens: one queen per row; track cols, diag1 (r+c), diag2 (r-c) as sets.
- Word search: DFS + visited + backtrack. Return early on found.
Aptitude · 1 hr · Probability
- P = favourable/total. 0 ≤ P ≤ 1.
- P(A∪B) = P(A) + P(B) − P(A∩B). If mutually exclusive, last term is 0.
- P(A∩B) = P(A)·P(B) if independent.
- P(A') = 1 − P(A). Use complement for "at least 1" problems.
- Bayes: P(A|B) = P(B|A)·P(A) / P(B).
MERN · 1 hr · REST API Design
- Resource-oriented URLs:
/users,/users/:id,/users/:id/orders. Nouns, not verbs. - Verbs via HTTP methods: GET, POST, PUT (full replace), PATCH (partial), DELETE.
- Status codes: use the right one. 201 for create, 204 for delete, 409 for conflict, 422 for validation, 429 for rate limit.
- Pagination: cursor-based for stable pagination;
?limit=20&cursor=.... Offset-based fine for small datasets. - Versioning:
/api/v1/in URL orAccept: application/vnd.api.v1+jsonheader. - Idempotency keys: clients send a unique key on POST; server dedupes retries.
Interview Q&A · 1 hr · SQL Deep Dive
Write: second highest salary.
SELECT MAX(salary) FROM emp WHERE salary < (SELECT MAX(salary) FROM emp); or SELECT salary FROM emp ORDER BY salary DESC LIMIT 1 OFFSET 1;Find duplicate rows.
SELECT col, COUNT(*) FROM t GROUP BY col HAVING COUNT(*) > 1;What is a VIEW? When use it?
Named virtual table defined by a query. Simplifies complex joins, enforces access control (expose only needed columns).
Difference: DELETE vs TRUNCATE vs DROP?
DELETE: row-by-row, WHERE allowed, logged, triggers fire, rollback possible. TRUNCATE: fast reset, no WHERE, no triggers, resets identity. DROP: removes table definition entirely.
Explain GROUP BY + window functions.
GROUP BY collapses rows to one per group. Window functions (OVER) compute per-row results using a window of related rows — rows stay intact.
What is a correlated subquery?
Inner query references outer query's column; runs per outer row.
Stored Procedure vs Function?
Procedure: executes logic, can perform DML, may not return values, called with CALL. Function: returns a value, used in expressions, generally side-effect free.
What is a foreign key? What does ON DELETE CASCADE do?
FK enforces referential integrity — value must exist in parent. CASCADE: on parent delete, child rows auto-deleted.
10
Binary Trees & Traversals
Wednesday, Apr 29
DSA · 2 hrs · Trees
- Traversals: preorder (root-L-R), inorder (L-root-R), postorder (L-R-root). Level-order via queue (BFS).
- Recursive DFS template: base(null) → recurse left → recurse right → combine.
- Max depth / height:
1 + max(dfs(l), dfs(r)). - Diameter: track max (leftDepth + rightDepth) across all nodes during DFS.
- Lowest Common Ancestor: if node matches p or q → return node. If both subtrees return non-null → current is LCA.
- Serialize / deserialize: preorder with null markers. Classic interview question.
- Path sum: DFS + decrement target. For all paths, collect into list.
Aptitude · 1 hr · Averages & Ages
- Avg = Sum/Count. Adding/removing element: new_avg = (old_sum ± val) / new_count.
- Weighted avg: Σ(wᵢ·xᵢ) / Σwᵢ.
- Ages: let present age = x; past = x-k, future = x+k. Write equations, solve.
- Sum of 1..n = n(n+1)/2. Avg = (n+1)/2.
MERN · 1 hr · JWT Authentication
- JWT = header.payload.signature, base64-url encoded. Signature prevents tampering; payload is readable!
- Flow: login → server issues JWT (signed with secret). Client sends in
Authorization: Bearer <token>. Server verifies on each request. - Don't store secrets in JWT — base64 ≠ encryption.
- Access + Refresh: short-lived access (15m) + long-lived refresh (7d, HTTP-only cookie) — balances UX and security.
- Revocation: stateless JWT can't be invalidated easily — use short expiry or maintain a deny-list.
- Task: add
/loginissuing JWT,/meprotected byauthMiddleware.
Interview Q&A · 1 hr · OS Advanced + Concurrency
Explain thread synchronization primitives.
Mutex (1 owner), semaphore (N owners), read-write lock (N readers OR 1 writer), condition variable (wait/signal), barrier (wait for N threads).
volatile vs synchronized in Java?
volatile: visibility (always reads from main memory, no caching in register/cache). No atomicity. synchronized: both visibility AND atomicity via lock.
Producer-Consumer problem?
Shared bounded buffer; producers add, consumers remove. Coordinated via mutex + "not full" + "not empty" condition vars (or semaphores).
User-mode vs kernel-mode?
Kernel mode: full hardware access, runs OS code. User mode: restricted, must use syscalls to request kernel services.
Blocking vs non-blocking I/O?
Blocking: thread waits till data arrives. Non-blocking: returns immediately; you poll or use event notification (epoll/kqueue).
What is a race condition? How do you fix it?
Outcome depends on non-deterministic timing of threads. Fix: make the critical section atomic (lock, atomic ops, lock-free algorithms).
What's a memory leak in a GC language?
Live references that should be dead but aren't — GC can't collect them.
Explain the event loop in Node.js.
Single-threaded loop processing phases: timers → pending callbacks → idle → poll (I/O) → check (setImmediate) → close. libuv thread pool handles blocking fs/crypto in background.
11
BST + Heaps
Thursday, Apr 30
DSA · 2 hrs · BST + Heap
- BST invariant: left subtree < node < right subtree. Inorder → sorted sequence.
- Validate BST with min/max bounds, not just parent comparison.
- Kth smallest in BST → inorder traversal with counter.
- Self-balancing: AVL, Red-Black — ensure O(log n) worst. Concept level only.
- Heap = complete binary tree stored as array. Min-heap: parent ≤ children. insert/extract: O(log n).
- heapify: bubble-up (insert) or bubble-down (extract). Build-heap is O(n).
- Top K: min-heap of size K → O(n log k). Kth largest = size-K min-heap.
- Median from stream: two heaps — max-heap (lower half) + min-heap (upper half).
Aptitude · 1 hr · Calendar + Clocks
- Odd days: 100y = 5 odd, 200y = 3, 300y = 1, 400y = 0. Leap if ÷4 (÷400 for century).
- Day of week: count odd days from a known reference.
- Clock angle: H·30 − M·5.5 for hour vs minute angle. Between hands = absolute value.
- Clock coincidence: hands overlap 11 times in 12 hrs. Right angle 22 times.
MERN · 1 hr · Mongoose Schemas & Relationships
- Schema:
new mongoose.Schema({ name: String, age: {type:Number, required:true, min:0} }). Adds validation + types. - Model:
mongoose.model('User', userSchema). Use for CRUD. - Embed vs reference: embed for 1-to-few bounded (user addresses). Reference for 1-to-many or many-to-many (posts→comments).
- populate(): follow refs — like a JOIN. Use sparingly, one level deep.
- Hooks: pre('save') for password hashing, post('remove') for cleanup.
- Task: User + Post schemas with ref, create, populate, query by author.
Interview Q&A · 1 hr · Networks Advanced + Security
How does TLS handshake work?
Client hello (versions, ciphers, random) → server hello + cert → key exchange (ECDHE) → both derive session keys → encrypted communication begins.
SQL injection — how does it happen, how do you prevent it?
Attacker injects SQL via user input that gets concatenated into a query. Prevent with parameterized queries / prepared statements / ORMs.
XSS vs CSRF?
XSS: attacker injects JS into your page (stored, reflected, DOM). CSRF: attacker tricks user's browser into making a request using their cookies.
HTTP/1.1 vs HTTP/2 vs HTTP/3?
1.1: text, one req per connection (pipelining broken). 2: binary, multiplexed streams over one TCP connection, server push. 3: built on QUIC/UDP, eliminates TCP head-of-line blocking.
What's CDN and how does it speed things up?
Content Delivery Network: geo-distributed cache of static assets. User hits nearest edge, reducing latency + origin load.
Symmetric vs Asymmetric encryption?
Symmetric: one shared key (AES). Fast. Key distribution problem. Asymmetric: public + private key pair (RSA/ECC). Slower. Solves key distribution.
What is hashing? How is it different from encryption?
Hash = one-way, fixed-size digest. Encryption = two-way, with key. Hashing for integrity + passwords; encryption for confidentiality.
Explain rate limiting strategies.
Token bucket (refill rate + burst), leaky bucket (fixed outflow), fixed window, sliding window log, sliding window counter.
12
Graphs — BFS & DFS
Friday, May 1
DSA · 2 hrs · Graph Traversals
- Representations: adjacency list (sparse, O(V+E) space), adjacency matrix (dense, O(V²)).
- BFS: queue + visited set. Shortest path in unweighted graph. O(V+E).
- DFS: recursion or stack + visited. Connected components, cycle detection.
- Cycle detection (undirected): DFS with parent tracking — visited neighbor != parent ⇒ cycle.
- Cycle (directed): three-color DFS (white/gray/black) or back-edge detection.
- Topological sort: Kahn's (BFS + in-degree 0 queue) or DFS post-order reversed.
- Grid as graph: cells = nodes, 4-neighbors = edges. Island problems, word search.
Aptitude · 1 hr · Logical Reasoning — Series, Coding
- Number series: check arithmetic → geometric → diff of diffs → squares/cubes → interleaved → Fib-like.
- Letter series: A=1, Z=26. Look for shifts +1, +2, ×2.
- Coding-Decoding: map letter → shifted letter. Verify with a second word.
- Analogies: relationship between pair, apply to second pair.
- Odd one out: find the common property → the exception.
MERN · 1 hr · Real-time with Socket.io
- WebSocket: full-duplex over TCP after HTTP upgrade. Socket.io adds rooms, reconnection, fallback.
- Server:
io.on('connection', socket => ...). Emit to one:socket.emit. Broadcast to room:io.to(room).emit. - Client:
socket.on('event', cb). Auto-reconnects on network hiccup. - Scaling: multiple nodes need Redis adapter to broadcast across instances.
- Task: build a simple chat room — join by name, emit messages, show list in real-time.
Interview Q&A · 1 hr · System Design Basics
What's the difference between horizontal and vertical scaling?
Vertical: bigger machine (more CPU/RAM). Simple, limited by hardware. Horizontal: more machines behind a load balancer. Complex, theoretically unlimited.
What is a load balancer? Algorithms?
Distributes traffic across backend instances. Algos: round robin, least-connections, IP hash, weighted. Layer 4 (TCP) or Layer 7 (HTTP).
Caching strategies — where and how?
Cache layers: browser → CDN → API gateway → in-memory (Redis) → DB buffer pool. Patterns: cache-aside, read-through, write-through, write-behind.
What is the CAP theorem?
In a partitioned distributed system, you can have at most 2 of: Consistency, Availability, Partition tolerance. Real-world: P is mandatory → pick CP or AP per operation.
Design URL shortener (tiny url) in 5 bullets.
(1) Hash/counter + base62 encoding → 6-7 char short code. (2) Table: short_code → long_url + metadata. (3) Redis cache for hot codes. (4) 301/302 redirect. (5) Track analytics via async write.
Message queue vs pub/sub?
Queue: one consumer processes each message (work distribution). Pub/sub: every subscriber gets a copy (fanout).
Why use a reverse proxy?
TLS termination, caching, compression, load balancing, security (hide backend), rate limiting, request rewriting.
SQL read replica vs sharding?
Read replicas: async copies for read scaling; writes go to primary. Sharding: partition data across shards by key; each shard handles subset of writes+reads.
13
Graphs — Weighted & Shortest Path
Saturday, May 2
DSA · 2 hrs · Weighted Graphs
- Dijkstra: single-source shortest path, non-negative weights. Min-heap + relaxation. O((V+E) log V).
- Bellman-Ford: handles negative edges. Detects negative cycles. O(V·E).
- Floyd-Warshall: all-pairs, O(V³). Good for small dense graphs.
- Union-Find (DSU): find + union with path compression + rank. Nearly O(1) amortized.
- MST — Kruskal: sort edges + DSU. MST — Prim: min-heap from starting vertex.
- 0-1 BFS: deque — edges weight 0 push front, weight 1 push back. O(V+E) for 0/1 weights.
Aptitude · 1 hr · Data Interpretation
- Tables: read totals first; compute row/col %. Eliminate answer choices by magnitude.
- Bar/Pie charts: pie angles — 360° total. 10% = 36°. Segments add up.
- Line graph: trends, peaks, % change between points.
- Caselet: translate the words into a table or equation before answering.
- Speed trick: ballpark first — often only one option is in range.
MERN · 1 hr · Middleware, Validation & Error Handling
- Validation library:
zodorjoi. Parse req.body, throw on invalid. - Auth middleware: read Authorization header → verify JWT → attach user to
req.user→next(). - Error middleware: 4-arg signature. Centralize logging, mask internal errors in prod.
- Async errors: wrap handlers in
asyncHandleror use Express 5 (auto-forward). - Helmet, cors, rate-limit — always in a prod Express app.
Interview Q&A · 1 hr · Scalability & Distributed Systems
What is eventual consistency?
System will converge to consistent state, given no new writes. Readers might see stale data temporarily.
Idempotency — why critical in distributed systems?
Network retries happen. Same operation run twice must yield same result. Use idempotency keys on POST, PUT (inherently idempotent), dedupe logic.
Consistent hashing — why and where?
Place nodes + keys on a ring; key goes to next node clockwise. Adding/removing a node only reshuffles 1/N of keys.
What is a heartbeat / health check?
Periodic signal/request to detect liveness. LB removes unhealthy nodes; cluster managers restart them.
Circuit breaker pattern?
Wrap remote calls — after N failures, circuit opens → fail fast instead of cascading. After timeout, half-open → try one → close if OK.
What is Kafka at a high level?
Distributed log. Producers append to topics (split into partitions); consumers read at their own pace. Messages retained by time/size, not by ack.
What is a 2-phase commit?
Distributed transaction protocol. Phase 1: coordinator asks all participants to prepare. Phase 2: if all yes, commit; else abort.
How would you design a rate limiter for an API?
Choose algorithm (token bucket per user-IP key). Store counter in Redis with TTL. Atomic increment with Lua script. On exceed → 429 + Retry-After.
14
Dynamic Programming — 1D
Sunday, May 3
DSA · 2 hrs · DP Foundations
- When DP: overlapping subproblems + optimal substructure.
- Two approaches: top-down (recursion + memo) OR bottom-up (iteration + table). Start top-down for clarity.
- Define state: "dp[i] = answer for subproblem ending at/using i". If state has 2 params → 2D DP.
- Fibonacci → climbing stairs → house robber: all same recurrence shape.
- Coin change: min coins to make amount — dp[amt]=min(dp[amt-coin]+1).
- LIS (longest increasing subseq): O(n²) DP or O(n log n) patience sort.
- Space optimization: if dp[i] depends only on dp[i-1], dp[i-2] → two vars, O(1) space.
Aptitude · 1 hr · Mixed 30-Q Mock (Week 2 set)
- Cover: P&C, Probability, Averages, Ages, Calendar, Clock, Series, DI.
- Timebox 30 min. Then 30 min review — rewrite methods for all wrongs.
MERN · 1 hr · Deployment Intro
- Env vars: never commit .env. Use
dotenvlocally; platform env in prod. - Build step: React →
npm run build→ static files. Serve via CDN or Express static. - Platforms: Render/Railway/Fly for backend; Vercel/Netlify for frontend; MongoDB Atlas for DB.
- CORS in prod: whitelist only your frontend domain, not
*. - Logging: Winston/Pino for structured logs. Ship to a service (Logtail, Axiom).
- Task: deploy the Week 1 notes-api to Render + React frontend to Vercel.
Interview Q&A · 1 hr · Behavioral Round 2 + Situational
You're given a task with unclear requirements — what do you do?
(1) List assumptions, (2) confirm with stakeholder, (3) scope MVP, (4) check-in early with a working slice.
Your code is in review and the senior disagrees with your approach. What do you do?
Ask for the reasoning. Evaluate on merit, not ego. If I'm still convinced, present evidence (benchmarks, references). Escalate only if it's a blocker.
Tight deadline, you can't finish everything — how do you decide what to cut?
Talk to the stakeholder. Rank by business value. Cut nice-to-haves. Never cut testing/monitoring from MVP.
Give an example of when you had to learn something new under pressure.
Name the tech, why you needed it, timeline, how you ramped, outcome.
How do you stay updated on tech?
Mix of sources — HN, official blogs, engineering blogs (Uber, Stripe, Figma), 1-2 newsletters, a curated Twitter list.
How do you handle negative feedback?
Listen without defending. Ask for specifics. Acknowledge, form a plan, close the loop with the person.
Tell me about a time you disagreed with your manager.
Disagree with reasoning, not emotion. Present alternative. Commit to whatever is decided.
What kind of work environment do you thrive in?
Ownership, fast feedback loops, teammates who push back. Be honest — mismatch hurts everyone.
Week 3 — Advanced + Mock Sprint · May 4–10
Advanced patterns plus ruthless revision. 2D DP → Tries → Greedy → Bit Manipulation → Review → Mocks. Deploy the MERN app end-to-end. Interview block covers LLD/HLD, microservices, and the HR/behavioral round that every offer hinges on.
15
DP — 2D & Grid
Monday, May 4
DSA · 2 hrs · 2D DP
- Grid DP: dp[i][j] = unique paths / min cost / max value up to (i,j). Transition from top/left.
- LCS (longest common subseq): dp[i][j] = match ? dp[i-1][j-1]+1 : max(dp[i-1][j], dp[i][j-1]).
- Edit distance: three ops (insert/delete/replace) → dp[i][j] = min(three subproblems) + 1.
- 0/1 Knapsack: dp[i][w] = best value with first i items, capacity w. Take or skip.
- Unbounded knapsack (coin change): same but can reuse items.
- Partition DP: dp[i][j] = best split of range [i,j] — matrix chain, palindrome partitioning.
- Space optimize 2D → 1D when transitions use only prev row.
Aptitude · 1 hr · Boats, Trains, Races
- Boats: d = b+s, u = b−s. b = (d+u)/2, s = (d−u)/2.
- Trains crossing: stationary pole → just train length. Platform → train + platform. Another train → sum of lengths / relative speed.
- Races: A beats B by x m → in the time A finishes the track, B is x m behind.
- Circular track: meet-time formula — track length / relative speed.
MERN · 1 hr · React Performance
- React.memo: skip re-render if props unchanged (shallow compare).
- useMemo: cache expensive computation across renders. Only when it's actually expensive.
- useCallback: memoize function identity for child memoized components.
- Code splitting:
React.lazy(() => import('./Heavy'))+<Suspense>. - Virtualization:
react-windowfor long lists — render only visible rows. - Profile: React DevTools Profiler flame chart → find slow renders.
Interview Q&A · 1 hr · Tough DSA / Coding Round
Longest substring without repeating characters — approach?
Sliding window + HashMap of last seen index. On repeat, move left to max(left, lastSeen+1). Update answer.
Median of two sorted arrays in O(log(min(m,n)))?
Binary search on partition of smaller array. Pick i from A, j = (m+n+1)/2 - i from B. Check left_max ≤ right_min on both sides.
Trapping Rain Water — two pointer approach?
l, r pointers. Track leftMax, rightMax. Move the smaller side. Water at index = max − height.
Serialize/deserialize a binary tree.
Preorder with null markers:
1,2,#,#,3,4,#,#,5,#,#. Deserialize with index pointer + recursion.Word Break — given a string, can it be segmented using dict?
1D DP: dp[i] = true if some j<i has dp[j] true AND s[j..i] in dict. O(n²·L).
LRU Cache — implement get/put in O(1).
HashMap<Key, Node> + Doubly Linked List. On get: move node to front. On put (new): add to front, evict tail if over capacity.
Merge K sorted lists — best approach?
Min-heap of size K (one node per list). Pop min, push its next. O(N log K).
Number of islands — DFS or BFS?
Either. Iterate grid, when land found: DFS/BFS to sink entire island (mark visited), increment counter.
16
Tries & Advanced Strings
Tuesday, May 5
DSA · 2 hrs · Trie + String Algorithms
- Trie node: children map (or array[26]) + isEnd flag.
- Insert: walk/create nodes. Search: walk; return isEnd. StartsWith: walk; return true if reached.
- Use cases: autocomplete, prefix matching, word games (Boggle, Word Search II), spell check.
- Space: O(N·L·26). Use HashMap children for sparse alphabets.
- Rabin-Karp: rolling hash for substring search. Avg O(n+m).
- Z-algorithm / KMP: build prefix-function array for O(n+m) matching.
Aptitude · 1 hr · Syllogisms & Statements
- Syllogisms: draw Venn. "All A are B" → A inside B. "Some A are B" → overlap. "No A is B" → disjoint.
- Check every valid diagram before marking a conclusion true.
- Statement + conclusion: follows only if definitely true in every interpretation.
- Cause-and-effect, strong/weak args: stick to the statement, don't assume beyond.
MERN · 1 hr · Testing — Jest & React Testing Library
- Unit tests (Jest):
describe / it / expect. Mock deps withjest.fn(). - Backend: test pure logic + integration tests with supertest for Express.
- RTL philosophy: test user behavior, not implementation. Query by role/text.
- User events:
userEvent.click(button), then assert screen state. - Coverage is not correctness — 100% cov with weak asserts is worthless.
- Task: write 3 tests for your notes-api (happy, 400, 404).
Interview Q&A · 1 hr · Low-Level Design (LLD)
Design a Parking Lot.
Entities: ParkingLot, Floor, Spot (types), Vehicle (types), Ticket, Payment. Interfaces for pricing strategy. Enum for spot types.
Design an Elevator system.
Elevator state (current floor, direction, queue). Scheduler that picks best elevator per request. Strategy: SCAN/LOOK algorithms.
Design a Splitwise-like expense sharing.
User, Group, Expense (amount, paidBy, splits), Balance graph. Simplify debts via DFS/graph reduction.
Design a LRU cache (class level, not just code).
Class Cache<K,V>: capacity, Map<K,Node>, DLL. Operations: get, put, private addToHead/removeNode/moveToHead.
Design a Tic-Tac-Toe.
Board (n×n), Player, Move. Check win with 4 counters: rows[n], cols[n], diag, antiDiag; increment on X move, decrement on O. Win when |count|=n.
Design a Logger rate limiter (LC 359).
Map<message, lastPrintedTimestamp>. Allow print if now - last > 10. Update timestamp.
How do you approach any LLD problem in an interview?
(1) Clarify requirements, (2) enumerate entities & actors, (3) draft class diagram, (4) walk through core use case, (5) identify extension points & patterns, (6) tradeoffs.
When would you use composition over inheritance in design?
When behavior varies independently, when you need runtime swap, when the hierarchy would be deep/awkward.
17
Greedy Algorithms
Wednesday, May 6
DSA · 2 hrs · Greedy Patterns
- When greedy works: exchange argument proves local choice can replace optimal's choice. If it doesn't, use DP.
- Interval scheduling: sort by end time, pick earliest-ending non-overlapping.
- Minimum rooms / arrows / merge intervals: sort by start; heap of ends.
- Jump Game: track max reachable; if i > max → false.
- Jump Game II: greedy BFS — track current jump's end, expand farthest.
- Huffman coding: min-heap of frequencies → MST-like merge.
- Gas station: if total ≥ 0 answer exists; track running sum, reset start on negative.
Aptitude · 1 hr · Seating, Directions, Blood Relations
- Seating: draw template. Start with most constrained person. Mark fixed, fill rest.
- Directions: start facing North. Right = CW 90°. Track (x,y). Distance = Pythag.
- Blood relations: family tree — one relation per step. Genders noted.
- Coding pattern: for directions, draw arrows; for relations, draw parent→child.
MERN · 1 hr · Git + CI/CD + Docker Basics
- Branching: feature branch → PR → review → merge. Commit hygiene matters in interviews.
- GitHub Actions:
.github/workflows/ci.yml— run tests on PR. Template with node setup + install + test. - Docker: Dockerfile = build recipe.
FROM node:20-alpine → COPY → RUN npm ci → CMD. - docker-compose: orchestrate app + Mongo locally.
- 12-factor app: config via env, stateless processes, dep isolation.
Interview Q&A · 1 hr · High-Level Design (HLD)
Design WhatsApp / a chat service.
WebSocket/MQTT for realtime. Message DB (Cassandra — wide rows per chat). Push via APNS/FCM when offline. Presence service. E2E encryption (Signal protocol).
Design Instagram feed.
Two strategies: Fanout on write (pre-compute followers' feeds on post) vs Fanout on read (compute at read). Celebrities use hybrid — their posts pulled at read.
Design a URL shortener at scale (100M req/day).
Counter-based base62 codes (pre-allocated ranges per app server). Redis cache (hot 1%). DB: Cassandra/DynamoDB. CDN + edge for redirect. Async analytics.
Design a Notification system (email + push + SMS).
API → message queue (Kafka) → per-channel workers (email, push, SMS). Retry + DLQ. Template service. User preferences + rate limit per user.
Design Uber / ride matching.
Driver locations in geo-index (S2/QuadTree/Redis GEO). Rider request → find nearest drivers in radius → dispatch. ETA via map service. Persistent connection for driver app.
Design Rate-limiter service for a public API.
Token bucket per API key in Redis with Lua atomic ops. Limits by tier. 429 + Retry-After header. Separate limits per endpoint category.
How do you approach any HLD problem?
(1) Requirements (functional + non-functional + scale), (2) APIs + data model, (3) high-level diagram, (4) deep-dive bottlenecks, (5) tradeoffs & alternatives.
SQL or NoSQL for your system — how do you justify?
Answer: "Depends on access pattern." Relational → SQL. Flexible schema + horizontal write scale → NoSQL. Often both — Postgres + Redis + S3.
18
Bit Manipulation
Thursday, May 7
DSA · 2 hrs · Bit Tricks
- XOR properties: a^a=0, a^0=a, commutative. Find single in pairs → XOR all.
- Check bit i:
(n >> i) & 1. Set:n | (1<<i). Clear:n & ~(1<<i). Toggle:n ^ (1<<i). - Count set bits: Brian Kernighan —
n &= n-1clears lowest set bit. Loop until 0. - Power of 2:
n > 0 && (n & (n-1)) == 0. - Subsets via bitmask: 2^n masks, each bit = include/exclude. Used for n ≤ 20 DP.
- Swap without temp:
a^=b; b^=a; a^=b;(trick, avoid in real code). - Two's complement:
-nflips bits and adds 1. Lowest set bit:n & -n.
Aptitude · 1 hr · Verbal + RC
- Reading Comprehension: skim first, read question, then find the anchor paragraph. Never answer from memory.
- Synonyms/antonyms: if unsure, use sentence context, eliminate obviously wrong.
- Sentence correction: subject-verb agreement, tense consistency, parallelism, pronoun clarity.
- Para-jumbles: find the intro sentence + conclusion first. Then logical chain.
MERN · 1 hr · Microservices & Monorepo Intro
- Monolith vs Microservice: monolith = one deployable; micro = many small services, independently deployable.
- When to split: team size > 2 pizzas; clear bounded contexts; different scale profiles.
- Inter-service comms: sync (HTTP/gRPC) or async (Kafka/RabbitMQ). Favor async where possible.
- API gateway: single entry → auth, rate-limit, route to right service. Kong/Tyk/AWS API Gateway.
- Monorepo tools: Turborepo / Nx for MERN — share types/utils.
- Anti-pattern: shared DB across services — defeats the purpose.
Interview Q&A · 1 hr · MERN-Specific Deep Dive
What's the virtual DOM? Why does React use it?
In-memory tree of React elements. React diffs previous vs next tree (reconciliation) and batches minimal DOM ops. Trades JS work for fewer (slow) DOM ops.
useEffect dependencies — what if I leave the array empty / missing?
Empty: runs once on mount. Missing: every render. Missing a dep you use: stale closures.
Controlled vs uncontrolled components?
Controlled: form state lives in React (
value + onChange). Uncontrolled: state lives in DOM, read via ref.How does Node handle concurrency if it's single-threaded?
Event loop + libuv thread pool. JS runs on one thread; I/O is non-blocking via OS async APIs. CPU-bound work → worker_threads or a separate service.
Express middleware order — why does it matter?
Middleware runs in declaration order. Body parser before route using req.body. CORS before auth. Error middleware last.
Mongoose vs native MongoDB driver — which and why?
Mongoose: schemas, validation, hooks, populate. Native: faster, more control, no abstraction overhead.
Server-side rendering (SSR) vs CSR vs SSG?
CSR: render in browser (slow first paint, fast nav). SSR: render on server per request (fast first paint, server cost). SSG: pre-render at build (fastest, limited to static content). Modern: hybrid (Next.js).
How do you secure a MERN app in prod?
HTTPS everywhere, Helmet headers, CORS whitelist, sanitized inputs, parameterized DB queries, bcrypt for passwords, JWT with short TTL + refresh, rate limiting, dependency audits.
19
Revision Day 1 + Mock Interview 1
Friday, May 8
DSA Review · 2 hrs · Arrays, Strings, LL, Stack, Hash
- Re-solve 2 problems per topic from memory. No peeking. Time yourself 20 min each.
- Explain aloud the approach + complexity for each. Record yourself.
- Weakness log: for each miss, write a 3-line note in a file. Reread before the interview.
- Pattern triggers: rehearse the "signal → approach" mental map — sliding window, two pointer, HashMap, monotonic stack, DFS/BFS.
Aptitude · 1 hr · 40-Q Full Mock (Timed)
- Simulate TCS/Infosys/Wipro style. 40 questions, 45 min. Mixed quant + LR.
- Post-mock: rewrite every miss with the correct method. This document is your clutch asset.
MERN · 1 hr · Portfolio + Resume Review
- Resume: 1 page. Projects section FIRST if you're a fresher. Quantify everything ("handled 50 concurrent users").
- Tech keywords match the JD. ATS screens on them.
- GitHub: pin your top 3 repos. Each has a README with screenshot, stack, setup, deploy link.
- LinkedIn: headline + about, projects listed with links.
- Portfolio site: 1 hour to make with Vercel template. Link every project live + source.
Mock Interview 1 · 1 hr · Simulate End-to-End
45-min recorded session: 5 min intro → 2 DSA (medium) → 10 min CS fundamentals rapid fire → 2 behavioral → Q&A. Then 15 min self-review.
Round 1 — DSA (pick 2): Two Sum variant, Valid Parens, LC Medium of choice.
Say the approach aloud before coding. Call out complexity without being asked. Handle edge cases: empty, single, overflow, negatives.
Round 2 — CS Fundamentals quick fire.
Sample hits: TCP vs UDP · ACID · Virtual memory · Polymorphism · Mutex vs semaphore · Index tradeoff · REST idempotency · JWT flow.
Round 3 — Project deep dive.
Pick your strongest project. Explain: problem, your role, tech stack with justifications, hardest problem, impact.
Round 4 — HR.
Rehearse: tell me about yourself, strength, weakness, why this company, 5-year plan, questions for us.
Self-review checklist.
Watch your recording. Score: (1) clarity of speech, (2) filler words, (3) body language, (4) correctness, (5) communication of tradeoffs. Identify 2 things to fix tomorrow.
20
Revision Day 2 + Mock Interview 2
Saturday, May 9
DSA Review · 2 hrs · Trees, Graphs, DP, Greedy
- Re-solve: 1 tree problem, 1 graph (BFS + weighted), 2 DP (1D + 2D), 1 greedy. Timed.
- Explain amortized complexity for monotonic stack and union-find out loud.
- Data structure recall: "when would I reach for X?" — HashMap, Heap, Trie, DSU, TreeMap, Deque.
- Complexity drill: 10 random algos, state time/space in 3 seconds each.
Aptitude · 1 hr · Company-specific Mock (TCS/Infosys/Accenture)
- Pick the target company style from PrepInsta. 60 min, full paper.
- Identify pattern: e.g., Infosys loves logical pattern, TCS NQT weights quant higher.
MERN · 1 hr · Full-Stack Project Walk
- Walk your project end-to-end: landing → signup → main feature → admin. Log every rough edge.
- Fix top 3 polish items: loading states, error messages, empty states.
- README upgrade: screenshot, stack list, local setup, architecture diagram (Excalidraw).
- Demo video: 90-second Loom walkthrough. Attach to resume + LinkedIn.
Mock Interview 2 · 1 hr · Go Harder
Today — higher bar. 1 hard DSA, 1 system design (medium — URL shortener or rate limiter), 1 behavioral ("tell me about a time you failed").
DSA hard set — pick one: LRU Cache, Word Break, Word Ladder, Median of stream, Serialize tree.
Budget: 30 min max. Write full working code. Run through 2 test cases by hand.
System Design — design a URL shortener (15 min).
Requirements → API → data model → encoding scheme → scale → cache → redirect. Know numbers.
Behavioral — tell me about a time you failed.
Pick a real story. Own the failure. Extract the lesson. Show applied learning.
Curve ball: "You don't know X — can you learn it by Monday?"
"Yes, here's how I'd approach it in 48 hours: docs + minimal demo on day 1, integration day 2, ship with monitoring."
Feedback loop.
Ask interviewer (or reviewer) for feedback. Write down 3 action items. Apply tomorrow.
21
Final Polish · Ready to Interview
Sunday, May 10
Light DSA · 1 hr · One of Each Pattern
- Solve 5 easy problems — one per pattern. Confidence builder, not grind.
- Arrays (Two Sum), LL (reverse), Tree (max depth), Graph (number of islands), DP (climbing stairs).
- Do NOT attempt anything new today. Today is about feeling sharp.
Aptitude · 45 min · Warm-up Paper
- 15-Q mixed paper, 15 min. Then quick review.
- Review your personal "wrongs log" from the last 20 days. Skim everything.
MERN · 45 min · Deploy, Test Live, Screenshots
- Click through every live link. Make sure it loads + works.
- Fix one cosmetic issue. Commit, redeploy.
- Capture fresh screenshots for resume/portfolio.
Final Interview Readiness Checklist
Print this. Tick each box.
Technical sheet check.
Can you solve LC Medium in ≤ 25 min? Can you state time/space unprompted? Do you know 5 patterns cold (sliding window, two-pointer, HashMap, DFS/BFS, DP)?
CS fundamentals 2-sentence check.
Can you answer these in 2 sentences each? OOP pillars · ACID · Process vs thread · TCP vs UDP · HashMap internals · BFS vs DFS · JWT flow · React re-render triggers.
Project story bank ready?
Have 3 stories rehearsed: (1) hardest technical problem, (2) teamwork example, (3) failure + learning. 90 seconds each.
Resume + LinkedIn + GitHub — one-hour audit.
Resume: 1 page, projects first, quantified, ATS-friendly. LinkedIn: photo + headline + projects. GitHub: pinned repos with READMEs + deploy links.
Logistics check for interview day.
Stable wifi backup (hotspot). Notebook + 2 pens. Water. Camera + mic tested. Clothes ready. 10-min buffer before.
Mindset.
You don't need to be perfect — you need to be the best candidate who walks in that room. Breathe. Think aloud. Stay curious. If you don't know, say "I'd approach it like this..."
Last words, Harsha.
You did the work. 21 days of DSA + aptitude + MERN + interview prep. The hard part is behind you. Now go collect offers. Good luck. 🚀
Final Sprint — May 11–15
You're interview-ready. These 5 days push you to the top 10% of candidates. Advanced DSA (strings, segment trees, SCC), product-vs-service company differentiation, capstone polish, and launch. After this, you're not prepping — you're applying.
22
Advanced Strings & Hashing
Monday, May 11
DSA · 2 hrs · String Algorithms Deep Dive
- KMP (Knuth-Morris-Pratt): build LPS (Longest Prefix which is also Suffix) array. On mismatch, shift using LPS. O(n+m).
- Z-algorithm: Z[i] = longest substring from i matching prefix. Pattern matching: build Z(pattern + '$' + text). O(n+m).
- Rabin-Karp: rolling polynomial hash — hash(s[i..i+m]) computed from previous in O(1). Average O(n+m), worst O(nm). Watch for hash collisions — use double hashing.
- Manacher's algorithm: longest palindromic substring in O(n). Dense material — know when to reach for it.
- Suffix array (concept): all suffixes of a string sorted. Enables pattern search + LCP array. O(n log n) construction.
- Trie with XOR: max XOR pair in array — insert bits in trie, greedily pick opposite bit at each level.
- Aho-Corasick (concept): multiple-pattern matching. Trie + failure links. Used in grep, antivirus.
LC #28 strStr (KMP)
LC #214 Shortest Palindrome
LC #1392 Longest Happy Prefix
LC #187 Repeated DNA (Rabin-Karp)
LC #421 Max XOR (Trie)
LC #1044 Longest Dup Substring
Product-company bar: you won't get a KMP-from-scratch question, but rolling hash and trie-with-XOR come up at Amazon, Flipkart, PhonePe. Know the idea cold.
Aptitude · 1 hr · Verbal Ability Deep Dive
- Reading Comprehension: 2 long passages, 5 Qs each. Technique: read first and last paragraph, then skim middle.
- Para-jumbles: identify opening (pronouns refer to nothing prior) and closing (conclusion words).
- Sentence correction: scan for subject-verb, tense, parallelism, modifier placement.
- Synonyms/antonyms: eliminate 2 obviously wrong; pick from remaining 2 by context.
- Error spotting: one-of-four-parts contains an error. Check tenses + prepositions first.
- Fill in the blanks: look for connecting words (however, moreover, despite) — they signal relationship between clauses.
MERN · 1 hr · Redis & Caching in Express
- Redis data types: String, Hash, List, Set, Sorted Set, Stream. Each has its sweet spot.
- Cache-aside: read cache → miss → DB → set cache with TTL. Standard pattern.
- Session store: express-session + connect-redis. Stateless app servers.
- Rate limiter: Redis INCR with TTL — atomic + fast. Lua script for sliding-window exactness.
- Pub/Sub: Redis PUBLISH/SUBSCRIBE — good for Socket.io scaling across nodes.
- Cache invalidation: TTL (lazy) + key pattern delete on writes (proactive). "There are only two hard things in CS..."
- Task: add Redis to notes-api — cache GET /notes/:id with 5-min TTL, bust on PUT/DELETE.
Interview Q&A · 1 hr · Pseudocode + Service-Based Bar
Service companies (TCS/Infosys/Wipro/HCL/Accenture) test pseudocode + basic DSA. Product companies expect actual runnable code. Know both registers.
What is pseudocode? How does it differ from actual code?
Language-agnostic step-by-step algorithm. Uses English + math notation. No syntax errors possible — just logic. TCS NQT uses it specifically to test algorithm thinking.
Trace this:
x=5, y=0; while(x>0){y+=x; x-=2;} — final y?Iter 1: y=5, x=3. Iter 2: y=8, x=1. Iter 3: y=9, x=-1. Loop ends. y=9.
Write pseudocode for "second largest element in an array."
Track firstMax, secondMax. For each x: if x > firstMax → secondMax=firstMax, firstMax=x. Else if x > secondMax and x < firstMax → secondMax=x.
Service-based HR: "Are you open to relocation? Bench? Night shifts?"
"Yes, I understand the nature of the industry. I'm open to relocation and flexible on shifts initially. I'd love to get on a project quickly."
Service-based: "Why TCS/Infosys and not a startup?"
Scale + training + exposure to enterprise systems. Career structure. Client variety. Mention actual programs (TCS Digital, Infosys DSE track).
Product-based: "What's the difference in engineering culture vs a service company?"
Product: own the problem + system end to end, ship to users, impact = metrics. Service: delivery to client specs, tight timelines, multi-domain exposure.
Rolling hash — when do you actually use it?
Substring search (Rabin-Karp), longest duplicate substring (binary search + RK), detecting plagiarism/near-duplicates (shingling), avoiding O(nm) in naive string problems.
Trie — where would you build one in production?
Autocomplete, T9-style input, IP routing tables (radix trie), spell check, contact search prefix.
23
Segment Trees & Range Queries
Tuesday, May 12
DSA · 2 hrs · Range Query Data Structures
- Segment tree: complete binary tree over array ranges. Build O(n), range query + point update O(log n). Space 4n.
- Lazy propagation: for range updates — defer updates until a query reaches that node. Range update becomes O(log n).
- Fenwick tree (BIT): simpler + less memory than segment tree. Prefix sum + point update, both O(log n). Uses
i & -ibit trick. - Sparse table: idempotent range queries (min/max/gcd) in O(1) after O(n log n) preprocess. No updates.
- Square root decomposition: divide into √n blocks. Query/update O(√n). Simpler than segment tree for offline problems.
- Merge sort tree: segment tree where each node stores sorted subrange — for "count in range < k" queries.
- Order statistic tree (C++ PBDS): supports rank + find_by_order in O(log n).
LC #307 Range Sum Mutable
LC #315 Count Smaller After Self
LC #493 Reverse Pairs
LC #732 My Calendar III
LC #218 Skyline
LC #308 2D Range Sum Mutable
Reality check: segment trees rarely come up in standard placement interviews. They appear at Codeforces-grade competitive shops (Google, D.E. Shaw, Quadeye, Goldman) and in research-y coding rounds. Worth one read-through, not cramming.
Aptitude · 1 hr · Non-Verbal Reasoning + Data Sufficiency
- Non-verbal: figure series, mirror images, paper folding, cube counting. Pattern recognition, not formulas.
- Data sufficiency: "is statement(s) enough to answer?" — mark A (1 alone), B (2 alone), C (both together), D (either), E (neither).
- DS trick: NEVER compute the final answer. Just check if you could compute it.
- Figure series: track rotation (CW/CCW), reflection, element count, shading.
- Cube problems: formula for painted cubes — 3-face (corners=8), 2-face (edges=12(n-2)), 1-face (faces=6(n-2)²), 0-face (inside=(n-2)³).
MERN · 1 hr · GraphQL (REST Alternative)
- Why GraphQL: client specifies exactly what fields it needs. Eliminates over-fetching (REST) and under-fetching (multiple round-trips).
- Schema: typed — Query, Mutation, Subscription root types. Fields have resolvers.
- Resolvers: functions returning data for each field. Can call DB, other services, etc.
- N+1 problem: naive resolvers query DB per item → use DataLoader for batching.
- Apollo Server: most common Node.js impl.
apollo-server-expressfor Express integration. - Tradeoff: great for mobile/complex frontends. Overkill for simple CRUD apps. REST still wins on simplicity + caching.
Interview Q&A · 1 hr · Hard System Design + Product Company Bar
Design Twitter feed — deep dive on timeline generation.
Hybrid: fanout-on-write for regular users (push tweet into followers' inboxes in Redis). Fanout-on-read for celebrities (pulled at read time). Merge at feed request.
Design a distributed cache (like Memcached/Redis Cluster).
Consistent hashing ring → shard by key. Replication for HA (primary-replica). Eviction policy (LRU/LFU). Client library handles resharding on node join/leave.
Design an autocomplete system at scale.
Trie of top queries + frequencies. Build offline from query logs. Replicate to edge servers. Client sends prefix → gets top N.
Design a file storage service (Dropbox/Google Drive).
Client chunks file → uploads to blob store (S3). Metadata DB (file tree, ACL, versions). Delta sync for updates. CDN for read. End-to-end encryption optional.
Design a news feed ranking pipeline.
Event ingestion (Kafka) → feature store → ML model (logistic regression or deep net) → ranked candidates → cache per user. Online learning via feedback loop.
How do you handle DB migrations at scale without downtime?
Expand-then-contract: (1) add new column nullable, (2) dual-write from app, (3) backfill, (4) switch reads, (5) stop writes to old, (6) drop old column.
What's your approach to debugging a slow API in production?
(1) Quantify — p50/p95/p99 from APM. (2) Trace — distributed tracing to find slow segment. (3) Isolate — DB? External API? CPU? (4) Fix the hot spot, not guess.
Explain database replication lag — why it happens, how to handle.
Async replication means replicas apply writes after primary. Under load, lag grows. Reads on replica → stale data. Fix: route critical reads to primary, or use synchronous/semi-sync replication for important tables.
24
Advanced Graphs & DP
Wednesday, May 13
DSA · 2 hrs · Advanced Graph + DP
- Strongly Connected Components (SCC): Kosaraju — 2 DFS passes (original + transpose). Tarjan — single DFS with low-link.
- Articulation points & bridges: Tarjan's — disc[] + low[]. Bridge: low[v] > disc[u]. AP: child with low ≥ disc OR root with >1 child.
- Minimum Spanning Tree: Kruskal — sort edges + DSU (skip cycles). Prim — min-heap from start vertex. Both O(E log V).
- Bellman-Ford: V-1 passes relax all edges. Vth pass detects negative cycle. O(VE).
- 0-1 BFS: deque — edge weight 0 push front, 1 push back. O(V+E).
- DP on trees: compute answer per subtree bottom-up. Re-rooting for all-node queries.
- Bitmask DP (TSP): dp[mask][u] = min cost visiting set mask, ending at u. O(n²·2ⁿ).
- Digit DP: count numbers in [L,R] satisfying a property. State: position + tight flag + extra constraints.
- Matrix exponentiation: compute Fibonacci / linear recurrences in O(log n) via matrix^n.
Aptitude · 1 hr · Hard Mixed Mock (60-Q)
- Simulate: 60 questions, 60 min, full quant + logical + verbal. TCS Ninja + Digital level.
- Review discipline: on every miss, write the method you'll use next time, not just the answer.
- Pattern tracking: which topics eat your time? Re-drill those.
MERN · 1 hr · SQL Mastery Sprint
- LeetCode SQL 50: 30 min — solve 8-10 straight. JOINs, aggregates, window fns, CTEs.
- Subquery vs CTE: CTE is readable; optimizer often treats them the same.
- Indexes mental model: B+ tree. Composite index follows left-prefix. Covering index = query served from index alone.
- Explain plans: read
EXPLAINoutput in Postgres/MySQL. Look for seq scans on large tables, mis-joins, filesort. - Common tasks: Nth highest, running total, rank within group, find gaps, pivot rows.
- NoSQL parallel: MongoDB aggregation pipeline = SQL GROUP BY + JOIN.
Interview Q&A · 1 hr · Advanced LLD + Concurrency
Design a thread-safe Singleton in Java.
Best: enum singleton. Alternative: double-checked locking with
volatile: if(instance==null){ synchronized(Class){ if(instance==null) instance=new X(); }}.Design a bounded blocking queue.
ReentrantLock + two Conditions (notFull, notEmpty). put: wait on notFull, add, signal notEmpty. take: wait on notEmpty, remove, signal notFull.
Design a Rate Limiter class (token bucket).
Fields: capacity, tokens, refillRate, lastRefillTime. allow(): refill based on elapsed time, if tokens ≥ 1 consume + return true, else false.
Design an in-memory Key-Value store with TTL.
HashMap<K, Entry<V, expireAt>> + background cleanup thread OR lazy expiry on access. For at-scale: delay queue + eviction policy (LRU).
Design a Chess game (object model).
Board (8x8 Square[][]), Piece (abstract; King/Queen/Rook/Bishop/Knight/Pawn extend). Each piece has its own valid-move logic. Game class with turn, history, check detection.
Design an Event Emitter (pub/sub).
Map<String, List<Callback>>. on(event, cb) adds. emit(event, data) iterates and calls. off(event, cb) removes. once(event, cb) wraps.
Design Card Deck + Shuffle.
Enum Suit + Rank. Card = {suit, rank}. Deck: List<Card>. Shuffle: Fisher-Yates (uniform random in O(n)).
Design a Bank Account class — concurrency edge cases?
Synchronize deposit/withdraw. Transfer between accounts needs lock on BOTH → risk deadlock. Fix: always acquire locks in deterministic order (by account id).
25
Full Mock Sprint + Capstone Polish
Thursday, May 14
DSA · 2 hrs · Timed Contest Simulation
- LeetCode Weekly-style: 4 problems, 90 minutes, no hints. Difficulty: easy-medium-medium-hard.
- Alternatively: participate in an actual LC Weekly Contest if schedule aligns.
- Post-contest: upsolve problems you couldn't finish. Time each.
- Discipline: no Googling mid-contest. Treat it like the real thing.
- Then: 30 min of typing speed drill — retype 5 solved problems. Muscle memory matters in 60-min OAs.
Aptitude · 45 min · Company-targeted Warm-up
- Pick your actual interview target. Do that company's specific paper (PrepInsta has them all).
- Don't study new topics. Only review your wrongs log.
MERN · 1 hr · Capstone Polish — "Wow Layer"
- Pick ONE upgrade that takes you from "student project" to "hireable":
- Option A — Search & filters: add full-text search (MongoDB text index or Meilisearch) with UI filters.
- Option B — Real-time: add Socket.io for live updates (notes shared live, collab cursor).
- Option C — AI feature: integrate Claude API — "summarize this note", "suggest tags". Demonstrates modern stack fluency.
- Option D — Performance: add Redis cache + show before/after latency numbers. Interview-ready talking point.
- Document it: before → after metric. Commit message with reasoning. Update README.
Full Interview Simulation · 90 min
Record. Watch it back. This is the closest thing to the real call.
Section 1 · DSA Round (45 min)
One medium + one hard. Write in your committed language. Narrate. State complexity. Test with edge cases. Finish with "what would change if input were 10× larger?"
Section 2 · System Design (25 min)
Pick: Instagram / Uber / WhatsApp / Tiny URL / Rate Limiter. Requirements → APIs → data model → high-level diagram → 1-2 deep dives → tradeoffs.
Section 3 · Project + Behavioral (20 min)
Walk capstone end-to-end. Explain tech choices. Describe hardest bug + how you fixed it. One STAR behavioral story (failure or conflict).
Self-review checklist (hard).
Watch recording. For each section: did you clarify? State complexity unprompted? Pause when stuck? Stay calm? Close with a good question?
26
Launch — Offer Strategy & Career Toolkit
Friday, May 15
Morning · 1 hr · Wrongs Log Re-read + Warmup
- Solve 3 easy problems from any topic. Confidence, not grind.
- Re-read your full wrongs log top to bottom. This is where your real edge lives.
- Print the Framework cheat sheet + Interview Day Routine. Have physical copies.
Mid-day · 1 hr · Portfolio Final Audit
- Click every link on resume + portfolio + LinkedIn. Each must load + work.
- Record 90-sec Loom demoing capstone. Attach to resume & LinkedIn.
- README upgrade: screenshots, architecture diagram, setup + deploy link, live demo button.
- Resume ATS check: run through Jobscan or a free ATS scorer against a target JD.
Afternoon · 3 hrs · Career Launch Sprint
Referral outreach — send 10 today.
LinkedIn search for alumni at target companies. DM template: (1) mutual context, (2) what you want, (3) attached resume, (4) ask lightly. Short.
Apply to 20 positions — structured.
Split: 10 product companies (Flipkart, Razorpay, Zoho, Freshworks, PhonePe, Swiggy, etc.) + 10 service companies (TCS, Infosys, Wipro, CTS, Accenture, HCL, Capgemini).
Negotiation rehearsal.
Practice: "Thanks for the offer. Based on market data and my skill set, I was targeting X. Is there flexibility on the base or the joining bonus?" — 2 minute rehearsal, 5 times out loud.
Set up tracking system.
Notion/Airtable/sheet — one row per application. Columns: company, role, applied date, source, status, interview dates, outcome, notes.
The final reframe.
You've done in 26 days what most people do in 3 months. Your job now is volume + follow-through, not more prep. Every rejection teaches one thing — note it and move.
Last word, Harsha. 🚀
You built a capstone, solved 200+ problems, rehearsed 220+ Q&A, did multiple mocks. Most candidates wing it. You prepared. The rest is noise + luck + numbers. Go collect the offer.
The Interview Answering Framework
Frameworks > Memorization. These cheat sheets are for before-interview review and during-interview thinking.
The Universal Answering Framework
For Any Interview Question
- 1 · Clarify: restate the question. Ask 1-2 clarifying questions. Shows you listen.
- 2 · Answer in 1 sentence. Lead with the punch line. Then justify.
- 3 · Give an example. Concrete beats abstract. A code snippet, a real system, a past project.
- 4 · State a tradeoff. "This is better for X, worse for Y." Shows judgement.
- 5 · Acknowledge what you don't know. "I haven't used Z, but I'd expect it to behave like Y."
Senior dev signal: junior answers list facts. Senior answers present tradeoffs + name the context. Always say "it depends" — then justify the choice.
For Coding Questions (DSA)
- 1 · Clarify: input size, constraints, edge cases (empty, single, duplicates, negatives).
- 2 · Brute force: state it aloud with complexity. "Naive is O(n²)..."
- 3 · Optimize: spot the redundancy. Name the pattern. State new complexity.
- 4 · Dry-run: walk through the sample input step by step. Interviewer sees your logic.
- 5 · Code: clean names, guard clauses up top, return types consistent.
- 6 · Test: 1 normal + 1 edge case. Trace by hand.
Pattern Recognition — Problem Signals
Array / String Signals
- "Max/min subarray of size k" → Fixed sliding window
- "Longest substring with condition" → Variable sliding window
- "Find pair summing to X" → HashMap (unsorted) or Two Pointer (sorted)
- "Range sum queries" → Prefix sum
- "Max contiguous subarray sum" → Kadane's
- "Next greater element" → Monotonic stack
- "Is anagram/permutation" → Frequency map compare
- "Palindromic substring" → Expand from center
- "Search in sorted/rotated" → Modified binary search
Tree, Graph & DP Signals
- "Level-by-level" / "shortest unweighted" → BFS (queue)
- "Max depth / diameter / path sum" → DFS bottom-up
- "Valid BST" → DFS with min/max range constraints
- "Shortest path weighted" → Dijkstra (non-negative) / Bellman-Ford
- "Connected components / cycle" → DFS with visited, or Union-Find
- "Topological order / course schedule" → Kahn's BFS or DFS post-order
- "Min/max ways to reach X" → 1D DP
- "Take or skip each element" → DP take/skip recurrence
- "LCS / edit distance" → 2D DP on two strings
- "Interval scheduling" → Greedy sort by end time
Aptitude Formula Arsenal
Quantitative
- HCF/LCM: gcd(a,b)=gcd(b,a%b). LCM = a·b/HCF.
- %: x% of y = xy/100. % change = (new−old)/old·100. Successive: multiply factors.
- P&L: P% on CP. SP = CP(1+P/100). Two discounts: 1−(1−d₁)(1−d₂).
- SI & CI: SI = PNR/100. CI = P(1+R/100)ⁿ − P. CI−SI(2y) = P(R/100)².
- Speed: D=ST. km/h↔m/s: ×5/18 / ×18/5. Avg = 2s₁s₂/(s₁+s₂).
- Work: combined = 1/A + 1/B. Time = AB/(A+B).
- P&C: nPr = n!/(n−r)!. nCr = n!/r!(n−r)!.
- Probability: P(A∪B)=P(A)+P(B)−P(A∩B). Complement for "at least 1".
Logical Reasoning
- Syllogism: Venn diagrams always. Check every valid diagram.
- Seating: template first. Most constrained first.
- Series: arithmetic → geometric → diff-of-diff → squares/cubes → interleaved.
- Directions: start North. Right = CW 90°. Distance = Pythag.
- Blood relations: draw tree. One relationship per step.
- Coding-decoding: find shift. Verify with 2 words.
Big-O & Data Structure Cheat Sheet
Complexity Classes
- O(1): array[i], map get/put, push/pop.
- O(log n): binary search, heap op, balanced BST.
- O(n): single loop, prefix sum, HashMap scan.
- O(n log n): sorting (merge/quick), sort + scan.
- O(n²): nested loops, brute-force pairs.
- O(2ⁿ): all subsets, naive recursion.
- O(n!): all permutations.
Data Structure Ops
- Array: access O(1); search/insert/del middle O(n); append amortized O(1).
- HashMap: get/put/del O(1) avg, O(n) worst. Space O(n).
- Stack/Queue: push/pop/enqueue/dequeue O(1).
- Heap: insert/extract O(log n), peek O(1), build-heap O(n).
- BST (balanced): search/insert/delete O(log n).
- Trie: insert/search O(L). Space O(N·L·alphabet).
- DSU (union-find): nearly O(1) amortized per op.
- Graph BFS/DFS: O(V+E).
MERN Interview Cheat Sheet
Rapid Recall
- Event loop phases: timers → pending → poll → check → close. Microtasks between.
- React re-render triggers: state change, prop change, parent re-render, context change.
- useEffect deps:
[]once;[x]when x changes; none = every render. - JWT structure: header.payload.signature, base64-url. Signature prevents tampering.
- CORS preflight: OPTIONS request for non-simple cross-origin.
- Mongo indexes: default _id. Compound follows left-prefix rule.
- Express middleware order: body parser → cors → auth → routes → error handler (4-arg).
- HTTP status quick: 200/201/204/301/400/401/403/404/409/422/429/500/503.
Behavioral — STAR Templates
STAR in 90 seconds
- S (Situation) · 15s: scope the context. Who, when, what project.
- T (Task) · 15s: your specific role + goal.
- A (Action) · 40s: what YOU did. Decisions, tradeoffs, tools. The meat.
- R (Result) · 20s: outcome with numbers. Lesson learned if failure.
Prep 5 stories: (1) technical challenge, (2) team conflict, (3) leadership/initiative, (4) failure, (5) learning something new. Rehearse out loud until under 2 min.
The Career Toolkit — Templates, Rules, Scripts
Everything the daily plan references. Print these. Bookmark them. Use them before every interview round.
Day 0 — Setup Before You Start
Pick ONE Language. Stick With It.
- Java: verbose but interview-common. Rich stdlib (ArrayList, HashMap, PriorityQueue). Best for service-company OAs.
- Python: concise, fastest to write. Best for speed on contests. Missing some features (no native ordered map).
- C++: competitive-programming king. STL is powerful. Hard-mode unless you already know it.
- JavaScript: fine if you're MERN-deep. Some interviewers push back — have a reason ready ("I'm strongest in JS and I can solve faster").
- Decision rule: pick the language you're already fastest in. Don't learn one for interviews. Commit and build fluency.
Create These Files on Day 1
wrongs.md— every DSA miss, aptitude miss, interview Q miss. Entry format: topic · what tripped me · correct method · link.stories.md— 5 STAR stories. Hardest bug, team conflict, failure + lesson, initiative, learning under pressure.tradeoffs.md— running list of "we chose X because Y" for every project. Interview gold.applications.csv— company, role, applied date, source, contact, status, notes.mocks.md— every mock interview: date, score, 2 things to fix next time.
Daily Warmup Rule (5 min)
- Before every day's DSA block: re-solve one random problem from 3+ days ago.
- From memory. No peeking. If you can't finish in 10 min → that topic goes back in rotation.
- Why it works: spaced repetition beats re-reading. The thing you relearn sticks for months.
- Tool: Anki deck of problem names with approach notes.
Service-Based vs Product-Based — The Split
Service-Based (TCS, Infosys, Wipro, CTS, Accenture, HCL, Capgemini)
- Selection process: Aptitude (quant + LR + verbal) → Pseudocode / basic coding → Technical interview → HR.
- Bar: easy-to-medium DSA. Focus on basics done well (strings, arrays, loops, recursion).
- Critical topics: OOP, DBMS basics, basic SQL, OS fundamentals, pseudocode tracing, English grammar.
- HR expectations: flexibility (relocation, shifts, any tech stack), loyalty signals, genuine interest in the company.
- Offers: TCS Digital ~₹7L, Infosys DSE ~₹6.5L, Wipro WILP ~₹3.5L, Accenture ASE ~₹4.5L. Negotiation minimal.
- Win strategy: clear the paper. Don't overthink. Speak clearly. Don't over-engineer answers.
Product-Based (Flipkart, Razorpay, Zoho, Freshworks, PhonePe, Swiggy, Cred, Zeta)
- Selection: Online coding assessment (2-3 medium-hard) → 2-4 tech rounds (DSA + DS-design + system design for senior) → HM round → HR.
- Bar: LC-medium fluency. One LC-hard attempt. Clean code + complexity + testing.
- Critical topics: everything + LLD + HLD + one deep project. Concurrency & distributed basics for better offers.
- HR expectations: technical curiosity, ownership mindset, can defend choices, won't break under ambiguity.
- Offers: ₹12–25L for freshers depending on tier. Negotiable. Joining bonus + ESOPs common.
- Win strategy: depth over breadth. Have 1 project you can defend for 30 minutes. Know your language cold.
Startups + Mid-Stage (Uber India, Atlan, Postman, Chargebee, Hasura)
- Bar is product-like but process varies. Often one take-home project + 2 interviews.
- Extra signal: open-source contribution, side projects, blog posts.
- Culture fit matters disproportionately: research the team, read engineering blog, reference it in HR.
- Compensation: wide range. Cash lower, equity higher. Evaluate total comp.
Interview Day — Morning Routine
30-Min Pre-Interview Routine
- T-120 min — Warmup: solve one LC easy. Just to feel sharp, not to learn.
- T-60 min — Company research: refresh 2 facts about the company, check LinkedIn of interviewer, look at recent engineering blog post.
- T-30 min — Environment: test wifi, mic, camera. Backup hotspot ready. Water on desk. Notebook + 2 pens. Phone silenced.
- T-20 min — Mental prep: read your stories.md. Read top 5 entries from wrongs.md. Breathe.
- T-10 min — Environment: lighting on your face, neutral background, camera at eye level. Good audio beats everything.
- T-2 min — Join early. Show up 2 min before, not on the dot, not 5 min early.
Eat. Seriously — low blood sugar wrecks mid-interview thinking. Protein + carb ~60 min before. No caffeine overload.
During the Call — Physical
- Camera on, always. Smile on first sight.
- Mute when not speaking. Background noise = distraction.
- Think aloud. Silence > 10 seconds → say "let me think about that" then narrate.
- Ask clarifying questions. Shows engagement, buys thinking time.
- Write on paper for DSA — saves screen real estate for code.
After the Call
- Within 1 hour: write everything you remember in mocks.md. Questions, your answers, feedback, timing.
- Within 24 hours: send thank-you email (template below).
- Within 48 hours: if no update in a week, polite follow-up.
Email & LinkedIn Templates
Referral DM (LinkedIn) — Cold Ask
Hi [Name], I'm Harsha, final-year CSE at [College]. Saw you're on the [Team] team at [Company] — congrats on the [recent launch / blog post / promo], that was a great read.
I'm targeting SDE roles and would love to apply to your team. If you think my profile is a fit ([1-line pitch of your top skill + project]), would you be open to a referral?
Happy to share resume + GitHub if helpful. Totally fine if not — appreciate you reading this.
— Harsha
[portfolio link]
Rules: under 100 words. 1 specific compliment. 1 concrete ask. Don't attach resume in first message. Don't send the same copy-paste to 50 people.
Thank-You Email (Post-Interview)
Subject: Thanks — [Your Name], [Role] Interview
Hi [Interviewer],
Thanks for your time today. I really enjoyed digging into [specific topic you discussed — e.g., the rate-limiter question / their observability stack]. [One sentence showing you learned something or thought more about it afterward.]
Excited about the possibility of joining [Team/Company]. Please let me know if you need anything else from my side.
Best,
Harsha
Follow-Up After Silence (1 week)
Subject: Re: [Role] interview — quick check-in
Hi [Recruiter],
Just checking in on the [Role] position. I remain very interested and wanted to see if there's an update or anything else you need from me.
Thanks,
Harsha
Cadence: one follow-up per week. Max 2. After that, move on — but leave the door open.
Cold Application Email
Subject: SDE Application — [Your Name], [Uni]
Hi [Hiring Manager / Recruiter],
I'm Harsha, final-year CSE student at [Uni]. I'm applying for [Role at Company].
In short: [1 line about top strength]. I recently built [capstone] — [1-line description + 1 concrete metric]. Code: [GitHub link]. Live: [deploy link].
I'd love 15 minutes to learn more about the role. Resume attached.
Thanks for your time.
Harsha
Offer Negotiation — Scripts & Rules
Golden Rules
- 1 · Never accept on the call. "Thanks so much — this is exciting. Can I take until [date] to review and get back?"
- 2 · Get it in writing. Total comp: base, bonus, joining bonus, ESOPs (with vesting + strike), relocation, variable pay.
- 3 · Research before negotiating. Levels.fyi, AmbitionBox, Glassdoor. Know the ±20% band for the role and company.
- 4 · Negotiate once, cleanly. Don't go back twice. Give a number or range and explain why.
- 5 · Competing offers are leverage. Mention them truthfully. Don't fabricate.
- 6 · Be polite but firm. "I'm really keen to join — is there flexibility on X?"
Script — Asking For More
"Thank you for the offer — I'm really excited about the team and the product.
Based on the market data I've gathered for this role and the skills I bring ([briefly: your capstone / competing offer / LC profile / GitHub]), I was hoping for a total comp closer to [X].
Is there flexibility on the base, the joining bonus, or the ESOP grant?"
Shut up after asking. Silence is uncomfortable but they're working the phones. Let them come back with a number.
Script — Competing Offer
"Quick update — I have another offer from [Company] at [range]. I strongly prefer [your company] because [genuine reason]. If you can come closer to [target number], I'd commit today."
What to Negotiate (Ranked)
- 1 · Base salary (affects everything else + future raises).
- 2 · Joining bonus (easiest for them to flex).
- 3 · ESOP/RSU grant size or vesting acceleration.
- 4 · Start date (if you need time).
- 5 · Role / team placement if pre-allocation is possible.
- Avoid negotiating benefits. They're fixed and it signals you missed the point.
Open Source & GitHub Green Squares
Why It Matters
- Green GitHub graph signals consistency — recruiters skim. A dense graph beats a flat one.
- One merged OSS PR on your resume beats three more toy projects. Means you navigated real code + review.
- Good first PRs are often docs fixes — that's fine. Don't overthink the first one.
Starter Projects
- First-timers-only: firsttimersonly.com — curated beginner issues.
- MERN-friendly: Strapi, Excalidraw, TanStack Query, Chakra UI, Next.js docs.
- Indian OSS: Appsmith, Hasura, Postman learning center. Good vibes, lots of mentors.
- Small & approachable: typeshed (Python types), DefinitelyTyped (TS types), MDN docs.
Realistic Cadence
- 15 min/day on GitHub: commit to your own repo, comment on OSS issue, or review a PR.
- 1 OSS contribution/month is plenty. Don't force it to fit a narrative.
- Pin your top 3 repos on profile. Each has a README with screenshot, stack, deploy link.
LC Contests + Weekly Speed Drill
Why Contests
- Timed + unseen problems — the exact interview skill that most prep misses.
- LC Weekly Contest: Sundays 8am IST (90 min, 4 problems).
- LC Biweekly: alternate Saturdays 8pm IST.
- Codeforces Div 3/4 for easy-medium problems at speed.
How to Use Contests
- Participate live even if you only finish 1-2. The rating isn't the point — the timer is.
- Upsolve within 48 hours. Every problem you couldn't solve = learning.
- Target: LeetCode rating 1700+ = solid for Indian product companies. 1900+ = strong signal for Flipkart/Swiggy/PhonePe.
Typing + IDE Speed
- MonkeyType for general speed. Target: 60+ WPM comfortable.
- LeetCode playground for language-specific practice — retype 5 solutions/day, muscle memory.
- Keyboard shortcuts: learn your IDE's duplicate-line, multi-cursor, search, go-to-line. Saves minutes in a timed OA.
Sustainability — Health, Sleep, Routine
Rules
- Sleep 7+ hrs. Non-negotiable. Tired debugging is slow debugging.
- 20-min exercise daily. Walk, stretch, anything. Moves blood, clears head.
- Social break: 1 meal/day eaten with family, not at the screen.
- One full day off per week. Sunday afternoon = decompression, not study.
- No screens 30 min before bed. Reading wrongs.md on phone is still screen.
The 5-Hour Day — Sample Split
- 7:00 – 7:30: wake, 10-min warmup problem, coffee, breakfast.
- 8:00 – 10:00: DSA (2 hrs — core focus block).
- 10:00 – 10:30: break. Step outside.
- 10:30 – 11:30: Aptitude (1 hr).
- 12:30 – 1:30: MERN build time (1 hr).
- 3:00 – 4:00: Interview Q&A (1 hr).
- Evening: free. Recharge. Socialize. Walk.
Bank the wins. At day's end, write 1 line in a journal: "What did I learn today?" Small practice, big compounding.
Wrongs Log — Template
Format — one entry per miss
## [Date] · [Topic] · [Problem/Q name]
**What I tried:** [your attempt — 1 line]
**Where it broke:** [the specific step that was wrong / missing insight]
**Correct approach:** [bullet points — the method that works]
**Lesson:** [one-liner so future you doesn't repeat this]
**Link:** [LC link or notes ref]
---
Read it once a week. Re-read the FULL log the night before any interview. The errors you've already made are the ones you're most likely to repeat.
Full 26-Day Overview
| # | Date | DSA | Aptitude | MERN | Interview Focus |
|---|---|---|---|---|---|
| Week 1 · Foundations | |||||
| 01 | Apr 20 Mon | Arrays + Big-O | Numbers, HCF/LCM | JS & ES6 | OOP Pillars |
| 02 | Apr 21 Tue | Strings + Sliding Window | % + P&L | Node.js & NPM | Operating Systems |
| 03 | Apr 22 Wed | Hashing & HashMap | Ratio + Mixture | Express.js | DBMS / SQL |
| 04 | Apr 23 Thu | Two Pointers + Sort | Time/Speed/Dist | MongoDB | Networks |
| 05 | Apr 24 Fri | Linked Lists | Time & Work | React — JSX | DSA Concepts |
| 06 | Apr 25 Sat | Stacks & Queues | SI/CI | React Hooks | Behavioral / HR |
| 07 | Apr 26 Sun | Recursion + Review | Mixed Mock | Express CRUD | Week 1 Mock |
| Week 2 · Intermediate | |||||
| 08 | Apr 27 Mon | Binary Search | P&C | React Context | OOP Advanced |
| 09 | Apr 28 Tue | Backtracking | Probability | REST API Design | SQL Deep Dive |
| 10 | Apr 29 Wed | Binary Trees | Average + Ages | JWT Auth | OS + Concurrency |
| 11 | Apr 30 Thu | BST + Heap | Calendar + Clock | Mongoose | Networks + Security |
| 12 | May 1 Fri | Graphs — BFS/DFS | LR Series | Socket.io | System Design Basics |
| 13 | May 2 Sat | Graphs — Weighted | Data Interpretation | Middleware + Validation | Distributed Systems |
| 14 | May 3 Sun | DP 1D | Week 2 Mock | Deployment | Behavioral Round 2 |
| Week 3 · Advanced + Mock Sprint | |||||
| 15 | May 4 Mon | DP 2D / Grid | Boats/Trains/Races | React Performance | Tough DSA |
| 16 | May 5 Tue | Tries + Strings | Syllogisms | Testing — Jest | Low-Level Design |
| 17 | May 6 Wed | Greedy | Seating + Direction | Git + Docker + CI | High-Level Design |
| 18 | May 7 Thu | Bit Manipulation | Verbal + RC | Microservices | MERN Deep Dive |
| 19 | May 8 Fri | Review — Arrays→Hash | 40-Q Mock | Portfolio + Resume | Mock Interview 1 |
| 20 | May 9 Sat | Review — Tree/Graph/DP | Company Mock | Full-Stack Walk | Mock Interview 2 |
| 21 | May 10 Sun | Light Revision | Warm-up 15-Q | Deploy + Screenshots | Final Checklist |
| Final Sprint · May 11–15 | |||||
| 22 | May 11 Mon | KMP · Z · Rolling Hash · Tries | Verbal / RC | Redis + Caching | Pseudocode + Service Bar |
| 23 | May 12 Tue | Segment Tree · BIT · Sparse Table | Non-Verbal + DS | GraphQL | Hard System Design |
| 24 | May 13 Wed | SCC · MST · Bitmask DP · Digit DP | 60-Q Hard Mock | SQL 50 Sprint | Advanced LLD + Concurrency |
| 25 | May 14 Thu | Timed Contest (4 Qs, 90 min) | Company-Target Paper | Capstone "Wow" Layer | Full 90-min Mock |
| 26 | May 15 Fri | Warmup · Wrongs Log | Rest | Portfolio Audit + Loom | Launch: 10 Referrals + 20 Apps |