{"version":1,"pages":[{"id":"OYSW6AFg7J7pMuXN4hZr","title":"Welcome!","pathname":"/","siteSpaceId":"sitesp_NCKuo","emoji":"1f355","description":"A collection of notes for preparing for coding interviews, created by Jia Hao, a computer science undergraduate from the National University of Singapore."},{"id":"CfNN4tKnBG5kLBEgMwSz","title":"Study Plan","pathname":"/getting-started/study-plan","siteSpaceId":"sitesp_NCKuo","description":"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","breadcrumbs":[{"label":"Getting Started","emoji":"1f365"}]},{"id":"SjVPg8iJ1tuWtbApvHRZ","title":"Optimizing Revision","pathname":"/getting-started/optimizing-revision","siteSpaceId":"sitesp_NCKuo","description":"Sharing some tips & tricks to optimize your revision process","breadcrumbs":[{"label":"Getting Started","emoji":"1f365"}]},{"id":"Y8Qa6bxVi2lPdemDnudc","title":"Summer 2024 Timeline","pathname":"/getting-started/summer-2024-timeline","siteSpaceId":"sitesp_NCKuo","description":"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","breadcrumbs":[{"label":"Getting Started","emoji":"1f365"}]},{"id":"mLoP8CiAPtZcvP1TV5V8","title":"FAQs","pathname":"/getting-started/faqs","siteSpaceId":"sitesp_NCKuo","description":"","breadcrumbs":[{"label":"Getting Started","emoji":"1f365"}]},{"id":"AjixZvlprbA5PvHiqY0x","title":"Binary Search","pathname":"/algorithms/binary-search","siteSpaceId":"sitesp_NCKuo","description":"Binary search typically appears when the array is sorted or its left and right halves both possess the same properties","breadcrumbs":[{"label":"Algorithms","emoji":"1f968"}]},{"id":"8WTafxmy4RyZOzwPn50R","title":"Sorting","pathname":"/algorithms/sorting","siteSpaceId":"sitesp_NCKuo","description":"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","breadcrumbs":[{"label":"Algorithms","emoji":"1f968"}]},{"id":"O0HyA9NkLctPsTud8aHF","title":"Recursion","pathname":"/algorithms/recursion","siteSpaceId":"sitesp_NCKuo","description":"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","breadcrumbs":[{"label":"Algorithms","emoji":"1f968"}]},{"id":"CCa03Rs8zuKwnCw7Ikx7","title":"Graph","pathname":"/algorithms/graph","siteSpaceId":"sitesp_NCKuo","description":"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","breadcrumbs":[{"label":"Algorithms","emoji":"1f968"}]},{"id":"UsJx4cFqD0GLlyJkQ7Gt","title":"Quick Select","pathname":"/algorithms/quick-select","siteSpaceId":"sitesp_NCKuo","description":"Quick select often comes up when the question asks for the first/last K elements or the Kth largest/smallest element","breadcrumbs":[{"label":"Algorithms","emoji":"1f968"}]},{"id":"WadVOPSzfRnKlFdGgwaF","title":"Intervals","pathname":"/algorithms/intervals","siteSpaceId":"sitesp_NCKuo","description":"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","breadcrumbs":[{"label":"Algorithms","emoji":"1f968"}]},{"id":"ZrEDrrTkJe2RJaCGOJt7","title":"Binary","pathname":"/algorithms/binary","siteSpaceId":"sitesp_NCKuo","description":"Binary problems are quite rare in interviews and even online assessments but it's always good to know","breadcrumbs":[{"label":"Algorithms","emoji":"1f968"}]},{"id":"1p1DzKcnAyY5G9rrIrcJ","title":"Geometry","pathname":"/algorithms/geometry","siteSpaceId":"sitesp_NCKuo","description":"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","breadcrumbs":[{"label":"Algorithms","emoji":"1f968"}]},{"id":"RZnLas3VhhmYOSJhsb87","title":"Dynamic Programming","pathname":"/algorithms/dynamic-programming","siteSpaceId":"sitesp_NCKuo","description":"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","breadcrumbs":[{"label":"Algorithms","emoji":"1f968"}]},{"id":"ljcUxkbdbvlCaMZ5qul0","title":"Arrays","pathname":"/data-structures/arrays","siteSpaceId":"sitesp_NCKuo","description":"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","breadcrumbs":[{"label":"Data Structures","emoji":"1f95e"}]},{"id":"hUOqZdAA01vXlXT1K77Y","title":"Matrices","pathname":"/data-structures/arrays/matrices","siteSpaceId":"sitesp_NCKuo","description":"Matrix problems are quite common and are relatively straightforward, just focus on understanding the techniques required","breadcrumbs":[{"label":"Data Structures","emoji":"1f95e"},{"label":"Arrays"}]},{"id":"hS2W5P8NrkBt77Q8fFyZ","title":"Strings","pathname":"/data-structures/strings","siteSpaceId":"sitesp_NCKuo","description":"String problems are very similar to array problems as they both use very similar techniques but there are some slight differences","breadcrumbs":[{"label":"Data Structures","emoji":"1f95e"}]},{"id":"u0EyZaNAzvojSRrjMIRt","title":"Linked Lists","pathname":"/data-structures/linked-lists","siteSpaceId":"sitesp_NCKuo","description":"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","breadcrumbs":[{"label":"Data Structures","emoji":"1f95e"}]},{"id":"NzajflPF2q7yt6GEJt0y","title":"Doubly Linked Lists","pathname":"/data-structures/linked-lists/doubly-linked-lists","siteSpaceId":"sitesp_NCKuo","description":"Doubly linked lists hold references to both the previous and next elements","breadcrumbs":[{"label":"Data Structures","emoji":"1f95e"},{"label":"Linked Lists"}]},{"id":"lKC6cufOYGYq0YrIIK9A","title":"Hash Tables","pathname":"/data-structures/hash-tables","siteSpaceId":"sitesp_NCKuo","description":"Hash tables are a corner stone of data structures for most problems, they are useful when there are unique keys with given values","breadcrumbs":[{"label":"Data Structures","emoji":"1f95e"}]},{"id":"h2KKShzK8u1DNxrid2kA","title":"Graphs","pathname":"/data-structures/graphs","siteSpaceId":"sitesp_NCKuo","description":"Graph problems are plentiful but the core data structure does have some unique techniques that can be applied to it","breadcrumbs":[{"label":"Data Structures","emoji":"1f95e"}]},{"id":"LlAyLG7cX0NGyLVMlREC","title":"Trees","pathname":"/data-structures/graphs/trees","siteSpaceId":"sitesp_NCKuo","description":"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","breadcrumbs":[{"label":"Data Structures","emoji":"1f95e"},{"label":"Graphs"}]},{"id":"rGXLHAWr19AQR1uKDgmY","title":"Binary Search Trees","pathname":"/data-structures/graphs/trees/binary-search-trees","siteSpaceId":"sitesp_NCKuo","description":"Binary Search Trees are the first of many specialized trees","breadcrumbs":[{"label":"Data Structures","emoji":"1f95e"},{"label":"Graphs"},{"label":"Trees"}]},{"id":"Y9t8EVdVDnt7eQtio3e4","title":"Heaps","pathname":"/data-structures/graphs/trees/heaps","siteSpaceId":"sitesp_NCKuo","description":"Heaps or priority queues are a very powerful data structure that can be used to easily store information that has some intrinsic order","breadcrumbs":[{"label":"Data Structures","emoji":"1f95e"},{"label":"Graphs"},{"label":"Trees"}]},{"id":"Gzu78E3OcXyhyW8u44ux","title":"Tries","pathname":"/data-structures/graphs/trees/tries","siteSpaceId":"sitesp_NCKuo","description":"Tries are special types of trees that make searching and storing strings more efficient","breadcrumbs":[{"label":"Data Structures","emoji":"1f95e"},{"label":"Graphs"},{"label":"Trees"}]},{"id":"HVGbwb65BjOWZDIfxzL1","title":"Segment Trees","pathname":"/data-structures/graphs/trees/segment-trees","siteSpaceId":"sitesp_NCKuo","description":"Segment trees are a unique application of trees that help to solve problems that involve many range queries over an array","breadcrumbs":[{"label":"Data Structures","emoji":"1f95e"},{"label":"Graphs"},{"label":"Trees"}]},{"id":"ant6Eano6emM2x375VeZ","title":"Stacks","pathname":"/data-structures/stacks","siteSpaceId":"sitesp_NCKuo","description":"Stack problems usually come in the form of monotonic stack problems","breadcrumbs":[{"label":"Data Structures","emoji":"1f95e"}]},{"id":"370iys6h5VB2MGUyNrlh","title":"Queues","pathname":"/data-structures/queues","siteSpaceId":"sitesp_NCKuo","description":"Queue problems are less common but it is still a data structure that is worth understanding well","breadcrumbs":[{"label":"Data Structures","emoji":"1f95e"}]},{"id":"PBBads2K62QER925erZX","title":"Double Ended Queues","pathname":"/data-structures/queues/double-ended-queues","siteSpaceId":"sitesp_NCKuo","breadcrumbs":[{"label":"Data Structures","emoji":"1f95e"},{"label":"Queues"}]},{"id":"xjG0Kx8i8sB2hp4VqMOC","title":"Union-Find Disjoint Set (UFDS)","pathname":"/data-structures/union-find-disjoint-set-ufds","siteSpaceId":"sitesp_NCKuo","description":"UFDS is a straightforward but powerful data structure often used to determine when data is in the same set as one another","breadcrumbs":[{"label":"Data Structures","emoji":"1f95e"}]},{"id":"puDwLlWyg9kF6MO5g7RE","title":"Dynamic Programming Roadmap","pathname":"/problems-guide/dynamic-programming-roadmap","siteSpaceId":"sitesp_NCKuo","description":"Going through the problems found in the dynamic programming roadmap","breadcrumbs":[{"label":"Problems Guide","emoji":"1f361"}]},{"id":"IFXm1HMzgE9av16jgEyk","title":"Warmup","pathname":"/problems-guide/dynamic-programming-roadmap/warmup","siteSpaceId":"sitesp_NCKuo","description":"","breadcrumbs":[{"label":"Problems Guide","emoji":"1f361"},{"label":"Dynamic Programming Roadmap"}]},{"id":"JhcWolODhCwzjtXXwnro","title":"Climbing Stairs","pathname":"/problems-guide/dynamic-programming-roadmap/warmup/climbing-stairs","siteSpaceId":"sitesp_NCKuo","breadcrumbs":[{"label":"Problems Guide","emoji":"1f361"},{"label":"Dynamic Programming Roadmap"},{"label":"Warmup"}]},{"id":"82UtD9q6859AOcVlG335","title":"Nth Tribonacci Number","pathname":"/problems-guide/dynamic-programming-roadmap/warmup/nth-tribonacci-number","siteSpaceId":"sitesp_NCKuo","breadcrumbs":[{"label":"Problems Guide","emoji":"1f361"},{"label":"Dynamic Programming Roadmap"},{"label":"Warmup"}]},{"id":"HAvMisfYc2tRqNVSNf9y","title":"Perfect Squares","pathname":"/problems-guide/dynamic-programming-roadmap/warmup/perfect-squares","siteSpaceId":"sitesp_NCKuo","breadcrumbs":[{"label":"Problems Guide","emoji":"1f361"},{"label":"Dynamic Programming Roadmap"},{"label":"Warmup"}]},{"id":"9dfUgDcFZDpoGBsXOihh","title":"Linear Sequence","pathname":"/problems-guide/dynamic-programming-roadmap/linear-sequence","siteSpaceId":"sitesp_NCKuo","description":"","breadcrumbs":[{"label":"Problems Guide","emoji":"1f361"},{"label":"Dynamic Programming Roadmap"}]},{"id":"eNgbY5QpCeg3qaWMZn9V","title":"Min Cost to Climb Stairs","pathname":"/problems-guide/dynamic-programming-roadmap/linear-sequence/min-cost-to-climb-stairs","siteSpaceId":"sitesp_NCKuo","breadcrumbs":[{"label":"Problems Guide","emoji":"1f361"},{"label":"Dynamic Programming Roadmap"},{"label":"Linear Sequence"}]},{"id":"dQABTgg5s5HeSZzITuIW","title":"Minimum Time to Make Rope Colorful","pathname":"/problems-guide/dynamic-programming-roadmap/linear-sequence/minimum-time-to-make-rope-colorful","siteSpaceId":"sitesp_NCKuo","breadcrumbs":[{"label":"Problems Guide","emoji":"1f361"},{"label":"Dynamic Programming Roadmap"},{"label":"Linear Sequence"}]},{"id":"hPsxOR8agCYjzXYZHcse","title":"House Robber","pathname":"/problems-guide/dynamic-programming-roadmap/linear-sequence/house-robber","siteSpaceId":"sitesp_NCKuo","breadcrumbs":[{"label":"Problems Guide","emoji":"1f361"},{"label":"Dynamic Programming Roadmap"},{"label":"Linear Sequence"}]},{"id":"kOOJ3Ue2ICQxRGZgQDyH","title":"Decode Ways","pathname":"/problems-guide/dynamic-programming-roadmap/linear-sequence/decode-ways","siteSpaceId":"sitesp_NCKuo","breadcrumbs":[{"label":"Problems Guide","emoji":"1f361"},{"label":"Dynamic Programming Roadmap"},{"label":"Linear Sequence"}]},{"id":"wYw5I0J4V0PqHVDoTvNy","title":"Minimum Cost for Tickets","pathname":"/problems-guide/dynamic-programming-roadmap/linear-sequence/minimum-cost-for-tickets","siteSpaceId":"sitesp_NCKuo","breadcrumbs":[{"label":"Problems Guide","emoji":"1f361"},{"label":"Dynamic Programming Roadmap"},{"label":"Linear Sequence"}]},{"id":"EK5gRHfIL2DFtQ9omI57","title":"Solving Questions with Brainpower","pathname":"/problems-guide/dynamic-programming-roadmap/linear-sequence/solving-questions-with-brainpower","siteSpaceId":"sitesp_NCKuo","breadcrumbs":[{"label":"Problems Guide","emoji":"1f361"},{"label":"Dynamic Programming Roadmap"},{"label":"Linear Sequence"}]},{"id":"GRZygeEjrEmzDr22f1ok","title":"General Problem Solving","pathname":"/other-technical-topics/general-problem-solving","siteSpaceId":"sitesp_NCKuo","description":"Consolidating some of the common patterns and problem solving methods you can try when working on problems","breadcrumbs":[{"label":"Other Technical Topics","emoji":"1f363"}]},{"id":"saPJdQGsA4phIIkAaXcp","title":"Runtime Predictions","pathname":"/other-technical-topics/runtime-predictions","siteSpaceId":"sitesp_NCKuo","description":"These are some of the more commonly seen runtimes based on the input constraints","breadcrumbs":[{"label":"Other Technical Topics","emoji":"1f363"}]},{"id":"VZiP3gPneQhLhA0rfPkf","title":"System Design","pathname":"/other-technical-topics/system-design","siteSpaceId":"sitesp_NCKuo","description":"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","breadcrumbs":[{"label":"Other Technical Topics","emoji":"1f363"}]},{"id":"e53fZESAoqDKP2Mi4APX","title":"SQL","pathname":"/other-technical-topics/system-design/sql","siteSpaceId":"sitesp_NCKuo","description":"I have not really seen that many SQL questions in OAs/technical interviews but it is a good to know","breadcrumbs":[{"label":"Other Technical Topics","emoji":"1f363"},{"label":"System Design"}]},{"id":"cl0zhDOLvv6WlNdb5VFH","title":"Accessing APIs","pathname":"/other-technical-topics/system-design/accessing-apis","siteSpaceId":"sitesp_NCKuo","description":"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","breadcrumbs":[{"label":"Other Technical Topics","emoji":"1f363"},{"label":"System Design"}]},{"id":"letI5lGvIam1fhxa5Ik5","title":"Operating Systems","pathname":"/other-technical-topics/operating-systems","siteSpaceId":"sitesp_NCKuo","description":"You don't need to know everything about operating systems, but there are some commonly asked questions that you should know how to answer","breadcrumbs":[{"label":"Other Technical Topics","emoji":"1f363"}]},{"id":"bNnATlMQkyegO3uVGt8A","title":"Behavioral Interviews","pathname":"/non-technical-topics/behavioral-interviews","siteSpaceId":"sitesp_NCKuo","description":"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","breadcrumbs":[{"label":"Non-technical Topics","emoji":"1f37f"}]},{"id":"n9s4ZrgfxRQtgtcCCZTn","title":"Resumes","pathname":"/non-technical-topics/resumes","siteSpaceId":"sitesp_NCKuo","description":"Resume writing is an art and it can be hard to get right","breadcrumbs":[{"label":"Non-technical Topics","emoji":"1f37f"}]}]}