Whiteboard coding interviews suck.

I've been there many times, on both sides of the table

I've struggled and I've seen others struggle

I will help you increase your chances of getting a great offer

This is not just another 'How to pass the Google interview' guide.

Thread👇
This is what I did

My own ideas based on my experiences as an interviewee and an interviewer

I did this while I had a 9-5 job, studying for months.

I don't have a degree in CS.

I probably studied too much, but if you know what you want

you do whatever it takes
This thread is focused on whiteboard coding interviews.

I'll create another one for systems design, but the same ideas and methods can be used to prepare them.

I'll cover:

✅Mindset
✅How to practice
✅Tech knowledge
✅More resources

Let's get started with mindset
A. Mindset

1. Interviewers are human

✅Don't put them on a pedestal
✅Focus on what you can control:
✅Some interviewers enjoying torturing candidates. They’re a minority, but this may happen
✅Some interviewers would not hire some of their colleagues

That's why...
2. Focus on the process

The results will come

After every problem/interview:

✅What did I learn?
✅What went well
✅Went needs to be improved (from CS topics, your preparation, your communication, etc)

Self-reflection is a great teacher
3. Apply to multiples companies in reverse order of preference

✅Better position to negotiate
✅Reduce the pressure you put on yourself
✅Give you more opportunities to practice
B. How to practice

1. Emulate the interview setup

✅Time yourself
✅No distractions - phone, internet
✅Don't look at the solution
✅Think out loud

Mock interviews are good too. Find a friend (virtually too) and practice!
2. Keep a log of common mistakes you make

This is an extremely underrated tip

You need to know where you usually underperform so that you can fix it

Go through the list often.

Review them and practice mindfully to make sure you do no make them during your interview
3. Iterations

1st focus on quantity

To detect patterns, go through many problems:

✅What algorithm/DS is good for this type of problem?
✅Why?
✅Learn Big O analysis

Then on quality (no need to solve 5784 problems)

✅Code on Notepad
✅For on-site -> On Paper or whiteboard
You need to be in good coding shape

You can't afford to spend 5 minutes to write a while loop

Be very comfortable in your preferred programming language (you can usually choose it)
C. What you should know

Do not base your preparation on memorizing solutions.

This will likely lead to you giving the perfect solution to the wrong problem.

I'll enumerate the main topics you should be familiar with

You must know them cold if you target at FAANG companies
1. Data structures

Theoretically and how to use them in code

✅Arrays
✅Strings
✅Lists
✅Stacks and queues
✅Trees (and tries)
✅Binary search trees (balanced)
✅Hash tables
✅Sets (disjoint sets too if you can)
✅Graphs
2. Algorithms

✅Binary search
✅Sorting
✅Recursion
✅Divide and conquer
✅Dynamic programming
✅Greedy
✅Alg on strings

On graphs (very important)

✅DFS
✅BFS
✅Minimum spanning trees: Kruskal and Prim
✅Shortest path: Dijkstra and Floyd-Warshall

Discrete math can help.
3. Programming languages

I've always used C++, but the following good for interviews too:

✅Python
✅JavaScript
✅Java

Since most interviewers know them

Most candidates tend to go for Python

Whichever you choose, make sure you know it well
D. Resources I used

Introduction to algorithms

You don't need to go through the whole book, but it's a good complement to the course in the next tweet
MIT courses on algorithms https://twitter.com/CodingLanguages/status/1274635167919943680?s=20
The canonical Cracking the coding interview.

I did not start here though.

I only completed the problems in the last 2 sections,

after I finished the book coming in the next tweet.
Elements of programming interviews

This is an excellent book

I keep coming back to it before every interview

The questions are hard, so you will be very well prepared

There are C++, Python and Java versions
For more problems, I only used @LeetCode https://www.leetcode.com/ 

You'll have more than enough with the free problems
I recommend checking out my thread on top mistakes you want to avoid in a coding interview

All this comes from my experience. I would love to get more suggestions from you.

Don't forget to contact me when you land your next job!!

Good luck https://twitter.com/CodingLanguages/status/1282288332203003905?s=20
You can follow @CodingLanguages.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled: