# Technical Interview Study Guide

## Technical Interview Study Guide

- [Welcome!](https://interviews.woojiahao.com/welcome.md): A collection of notes for preparing for coding interviews, created by Jia Hao, a computer science undergraduate from the National University of Singapore.
- [Study Plan](https://interviews.woojiahao.com/getting-started/study-plan.md): These are the questions I used for revising each topic, try to solve each topic completely and understand the core components before moving on to the next topic
- [Optimizing Revision](https://interviews.woojiahao.com/getting-started/optimizing-revision.md): Sharing some tips & tricks to optimize your revision process
- [Summer 2024 Timeline](https://interviews.woojiahao.com/getting-started/summer-2024-timeline.md): I have included my timeline for summer 2024 so that you can better understand when's the best times to start preparing for each stage
- [FAQs](https://interviews.woojiahao.com/getting-started/faqs.md)
- [Binary Search](https://interviews.woojiahao.com/algorithms/binary-search.md): Binary search typically appears when the array is sorted or its left and right halves both possess the same properties
- [Sorting](https://interviews.woojiahao.com/algorithms/sorting.md): Sorting algorithms aren't usually tested alone. They are often paired with another problem type and the goal is to really see if you're able to think about the algorithms in a wider context
- [Recursion](https://interviews.woojiahao.com/algorithms/recursion.md): Recursion is quite a typical problem and can be rather tricky to get right on the first go. Try visualizing recursive algorithms by tracing them out on paper with simpler recursions
- [Graph](https://interviews.woojiahao.com/algorithms/graph.md): Graph algorithms are quite common and usually fall under the following algorithms. You will usually be required to modify these algorithms to fit the problem but it's good to know the fundamentals
- [Quick Select](https://interviews.woojiahao.com/algorithms/quick-select.md): Quick select often comes up when the question asks for the first/last K elements or the Kth largest/smallest element
- [Intervals](https://interviews.woojiahao.com/algorithms/intervals.md): Interval problems aren't easy to spot and require some practice, try looking for ways to model the problem as a set of ranges/intervals
- [Binary](https://interviews.woojiahao.com/algorithms/binary.md): Binary problems are quite rare in interviews and even online assessments but it's always good to know
- [Geometry](https://interviews.woojiahao.com/algorithms/geometry.md): Geometry problems are quite niche and I have really only ever encountered a small handful of them myself. Advent of Code 2023 was where I developed these pointers
- [Dynamic Programming](https://interviews.woojiahao.com/algorithms/dynamic-programming.md): Dynamic Programming is an incredibly confusing topic when you first start, it is good to try recognizing commonly occurring patterns to reduce the amount of head scratching you do
- [Arrays](https://interviews.woojiahao.com/data-structures/arrays.md): Array problems are by far the most common type of algorithm problems I have encountered. There are a few techniques that are used very commonly so it is best to familiarize yourself with all of them
- [Matrices](https://interviews.woojiahao.com/data-structures/arrays/matrices.md): Matrix problems are quite common and are relatively straightforward, just focus on understanding the techniques required
- [Strings](https://interviews.woojiahao.com/data-structures/strings.md): String problems are very similar to array problems as they both use very similar techniques but there are some slight differences
- [Linked Lists](https://interviews.woojiahao.com/data-structures/linked-lists.md): Linked lists are useful when paired with hash tables as it allows search/insertion in O(1) time and they can also be used alone to solve problems
- [Doubly Linked Lists](https://interviews.woojiahao.com/data-structures/linked-lists/doubly-linked-lists.md): Doubly linked lists hold references to both the previous and next elements
- [Hash Tables](https://interviews.woojiahao.com/data-structures/hash-tables.md): Hash tables are a corner stone of data structures for most problems, they are useful when there are unique keys with given values
- [Graphs](https://interviews.woojiahao.com/data-structures/graphs.md): Graph problems are plentiful but the core data structure does have some unique techniques that can be applied to it
- [Trees](https://interviews.woojiahao.com/data-structures/graphs/trees.md): Trees are special types of graphs that have exactly N - 1 edges with exactly one path between nodes. They are one of the most common category of problems so it is a must to master them
- [Binary Search Trees](https://interviews.woojiahao.com/data-structures/graphs/trees/binary-search-trees.md): Binary Search Trees are the first of many specialized trees
- [Heaps](https://interviews.woojiahao.com/data-structures/graphs/trees/heaps.md): Heaps or priority queues are a very powerful data structure that can be used to easily store information that has some intrinsic order
- [Tries](https://interviews.woojiahao.com/data-structures/graphs/trees/tries.md): Tries are special types of trees that make searching and storing strings more efficient
- [Segment Trees](https://interviews.woojiahao.com/data-structures/graphs/trees/segment-trees.md): Segment trees are a unique application of trees that help to solve problems that involve many range queries over an array
- [Stacks](https://interviews.woojiahao.com/data-structures/stacks.md): Stack problems usually come in the form of monotonic stack problems
- [Queues](https://interviews.woojiahao.com/data-structures/queues.md): Queue problems are less common but it is still a data structure that is worth understanding well
- [Double Ended Queues](https://interviews.woojiahao.com/data-structures/queues/double-ended-queues.md)
- [Union-Find Disjoint Set (UFDS)](https://interviews.woojiahao.com/data-structures/union-find-disjoint-set-ufds.md): UFDS is a straightforward but powerful data structure often used to determine when data is in the same set as one another
- [Dynamic Programming Roadmap](https://interviews.woojiahao.com/problems-guide/dynamic-programming-roadmap.md): Going through the problems found in the dynamic programming roadmap
- [Warmup](https://interviews.woojiahao.com/problems-guide/dynamic-programming-roadmap/warmup.md)
- [Climbing Stairs](https://interviews.woojiahao.com/problems-guide/dynamic-programming-roadmap/warmup/climbing-stairs.md)
- [Nth Tribonacci Number](https://interviews.woojiahao.com/problems-guide/dynamic-programming-roadmap/warmup/nth-tribonacci-number.md)
- [Perfect Squares](https://interviews.woojiahao.com/problems-guide/dynamic-programming-roadmap/warmup/perfect-squares.md)
- [Linear Sequence](https://interviews.woojiahao.com/problems-guide/dynamic-programming-roadmap/linear-sequence.md)
- [Min Cost to Climb Stairs](https://interviews.woojiahao.com/problems-guide/dynamic-programming-roadmap/linear-sequence/min-cost-to-climb-stairs.md)
- [Minimum Time to Make Rope Colorful](https://interviews.woojiahao.com/problems-guide/dynamic-programming-roadmap/linear-sequence/minimum-time-to-make-rope-colorful.md)
- [House Robber](https://interviews.woojiahao.com/problems-guide/dynamic-programming-roadmap/linear-sequence/house-robber.md)
- [Decode Ways](https://interviews.woojiahao.com/problems-guide/dynamic-programming-roadmap/linear-sequence/decode-ways.md)
- [Minimum Cost for Tickets](https://interviews.woojiahao.com/problems-guide/dynamic-programming-roadmap/linear-sequence/minimum-cost-for-tickets.md)
- [Solving Questions with Brainpower](https://interviews.woojiahao.com/problems-guide/dynamic-programming-roadmap/linear-sequence/solving-questions-with-brainpower.md)
- [General Problem Solving](https://interviews.woojiahao.com/other-technical-topics/general-problem-solving.md): Consolidating some of the common patterns and problem solving methods you can try when working on problems
- [Runtime Predictions](https://interviews.woojiahao.com/other-technical-topics/runtime-predictions.md): These are some of the more commonly seen runtimes based on the input constraints
- [System Design](https://interviews.woojiahao.com/other-technical-topics/system-design.md): While rare, system design problems are quite challenging to tackle if it's the first time you are dealing with them. The best practice is building real-world projects
- [SQL](https://interviews.woojiahao.com/other-technical-topics/system-design/sql.md): I have not really seen that many SQL questions in OAs/technical interviews but it is a good to know
- [Accessing APIs](https://interviews.woojiahao.com/other-technical-topics/system-design/accessing-apis.md): I have noticed an increase in questions where you are required to access an API. The following is a quick primer on how API access works in Python
- [Operating Systems](https://interviews.woojiahao.com/other-technical-topics/operating-systems.md): You don't need to know everything about operating systems, but there are some commonly asked questions that you should know how to answer
- [Behavioral Interviews](https://interviews.woojiahao.com/non-technical-topics/behavioral-interviews.md): Most companies expect you to have the technical skills for the job, so the behavioral component of the interview is what can help set you apart
- [Resumes](https://interviews.woojiahao.com/non-technical-topics/resumes.md): Resume writing is an art and it can be hard to get right


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information, you can query the documentation dynamically by asking a question.
Perform an HTTP GET request on a page URL with the `ask` query parameter:
```
GET https://interviews.woojiahao.com/welcome.md?ask=<question>
```
The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.
Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
