Skip to content
/ code Public

πŸ‘¨πŸ»β€πŸ’» A Hands-on Approach to Hacking Coding Interviews

Notifications You must be signed in to change notification settings

ofou/code

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Code

This guide has taken me...

This is my hands-on approach to hacking the Coding Interview:

  1. Tracking coding time with Wakatime or Git. (What you can't measure, you can't improve)
  2. Solve coding problems on a daily basis and commit every problem (min 30m/day)
  3. Read technical books, and reimplement key data structures and algorithms in a high-level language such as python and when needed in a low-level one like c
  4. Take notes, make videos, or in-depth tutorials, teaching is one of the best ways to learn
  5. Give back to the open source community, helping projects is a great way to test your knowledge in the wild. Start with Exercism's tracks, FreeCodeCamp's curriculum, CodeCrafters's projects, CodeAcademy's docs, or even this repo. πŸ™‚β€β†”οΈ
Optional: Enhance your learning abilities
  • Thinking, Fast and Slow by Daniel Kahneman

    • Explores two systems of thinking: fast (intuitive) and slow (deliberative), revealing how they shape our judgments and decisions. Kahneman offers insights into avoiding cognitive biases and making better choices by understanding these mental processes.
  • Deep Work by Cal Newport

    • Argues that the ability to focus without distraction on cognitively demanding tasks is increasingly valuable in our economy. Newport provides strategies for cultivating deep work habits to achieve focused success in a world full of shallow distractions.
  • Mindset: The New Psychology of Success by Carol S. Dweck

    • Introduces the concept of "fixed" versus "growth" mindsets, demonstrating how believing in the potential to develop abilities leads to greater achievement and fulfillment. Dweck offers practical strategies for fostering a growth mindset in various life domains.
  • Ultralearning by Scott Young

    • Presents a blueprint for aggressive self-directed learning, outlining nine principles of ultralearning illustrated through stories of remarkable achievements. Young shows how focused, intense, and strategic learning can lead to rapid skill acquisition.
  • The Art of Learning: An Inner Journey to Optimal Performance by Josh Waitzkin

    • Drawing from his experiences as a chess prodigy and martial arts champion, Waitzkin shares insights on achieving peak performance through embracing challenges, maintaining a growth mindset, and developing resilience in any field.
  • A Mind for Numbers: How to Excel at Math and Science (Even If You Flunked Algebra) by Barbara Oakley

    • Offers practical advice for succeeding in math and science, based on Oakley's personal journey of overcoming difficulties in these subjects. Covers effective study techniques, memory strategies, and the importance of practice in developing mathematical and scientific skills.
  • How We Learn: The Surprising Truth About When, Where, and Why It Happens by Benedict Carey

    • Gets into cognitive science research to reveal the mechanics of learning, debunking common study myths and providing evidence-based techniques to enhance memory, understanding, and problem-solving skills.
  • The Art of Doing Science and Engineering: Learning to Learn by Richard Hamming

    • A renowned mathematician and computer scientist shares insights into scientific and engineering discovery, emphasizing the crucial roles of curiosity, creativity, and persistence in tackling complex problems and making significant contributions to these fields.

Explore Top Interview Coding Problems

So the first step will be doing the following exercises from these platforms:

  • Khan Academy: Introductory exercises to get you started with the basics of algorithms. Great intro using Javascript & Python. The materials were developed by Dartmouth College professors Tom Cormen & Devin Balkcom, the first is the same author as the famous book Introduction to Algorithms.
  • Exercism: Great open source platform to master any programming language itself, from the basics to advanced topics. Mentorship is free.
  • HackerRank: They have Preparation Kits ranging from 1-week, 1-month to 3-months. Companies such as Amazon use the platform to interview candidates.
  • LeetCode: Popular coding platform, the place-to-go to prepare for technical interviews. They just released a systematic program for excelling at interviews called 75.
    • NeetCode: This is a new coding website based on a LeetCode problems selection. The cool thing is that they have code walkthroughs for each problem on Youtube and solutions in many languages. Great to match with LeetCode 75.
  • CodeSignal: Great selection of problems from companies past interviews. Nice UI and guided tracks. Some FAANGs use the platform to interview candidates.
  • Coding Interview Prep: The Coding Interview Prep by freeCodeCamp contains hundreds of coding challenges that test your knowledge of algorithms, data structures, and mathematics.

Also consult Visualgo for visualizing data structures and algorithms through animation. Other great resources to consider are: High Load, The Euler Project (free), and Rosetta Code (free).

Platform Track Time Problems
Khan Academy Intro to algorithms - 25
Exercism Python _ 131
HackerRank Interview Prep Kit _ 104
LeetCode 75 Study Plan _ 75
NeetCode NeetCode 1 150
CodeSignal Interview Practice _ 110
Deep ML Problems - 26

Data Structures

graph
    subgraph DS [Data Structures]

    %% Linear Data Structures
    subgraph LSD [Linear Data Structures]
        LINKED_LIST
        ARRAY
        HASH_TABLE
        HASH_TABLE -.- DICTIONARY
        ARRAY -.- STACK
        ARRAY -.- QUEUE
        ARRAY -.- TENSOR
        LINKED_LIST -.- STACK
        LINKED_LIST -.- QUEUE
    end
        
    %% Non-Linear Data Structures
    subgraph NLSD [Non-Linear Data Structures]
        TREE
        GRAPH
        SET
        GRAPH -.- TREE
        TREE -.- BINARY
        BINARY -.- HEAP
        HEAP -.- PRIORITY_QUEUE
        TREE -.- TRIE
    end

    end
  
Loading

Algorithms

Footnotes

  1. This is based on LeetCode problems for time tracking and might be overlapping with the LeetCode 75 track. ↩