# Regular Warmup

### Final Review

```
This section will have shorter videos that you can watch pretty quickly to review most of the important concepts.
It's nice if you want a refresher often.
```

* &#x20;Series of 2-3 minutes short subject videos (23 videos)
  * [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM\&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj\&index=22)
* &#x20;Series of 2-5 minutes short subject videos - Michael Sambol (18 videos):
  * [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ)
* &#x20;[Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1)
* &#x20;[Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2)

### Coding Question Practice

Now that you know all the computer science topics above, it's time to practice answering coding problems.

**Coding question practice is not about memorizing answers to programming problems.**

Why you need to practice doing programming problems:

* Problem recognition, and where the right data structures and algorithms fit in
* Gathering requirements for the problem
* Talking your way through the problem like you will in the interview
* Coding on a whiteboard or paper, not a computer
* Coming up with time and space complexity for your solutions
* Testing your solutions

{% hint style="info" %}
There is a great intro for methodical, communicative problem solving in an interview. You'll get this from the programming interview books too, but I found this outstanding: [Algorithm design canvas](http://www.hiredintech.com/algorithm-design/)
{% endhint %}

Supplemental:

* [Mathematics for Topcoders](https://www.topcoder.com/community/competitive-programming/tutorials/mathematics-for-topcoders/)
* [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/competitive-programming/tutorials/dynamic-programming-from-novice-to-advanced/)
* [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php)
* [Exercises for getting better at a given language](http://exercism.io/languages)

**Read and Do Programming Problems (in this order):**

* &#x20;[Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X)
  * answers in C, C++ and Java
* &#x20;[Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/)
  * answers in Java

### Coding exercises/challenges

Once you've learned your brains out, put those brains to work. Take coding challenges every day, as many as you can.

* [How to Find a Solution](https://www.topcoder.com/community/competitive-programming/tutorials/how-to-find-a-solution/)
* [How to Dissect a Topcoder Problem Statement](https://www.topcoder.com/community/competitive-programming/tutorials/how-to-dissect-a-topcoder-problem-statement/)

Coding Interview Question Videos:

* [IDeserve (88 videos)](https://www.youtube.com/watch?v=NBcqBddFbZw\&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI)
* [Tushar Roy (5 playlists)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2\&view=50\&sort=dd)
  * Super for walkthroughs of problem solutions
* [Nick White - LeetCode Solutions (187 Videos)](https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp-)
  * Good explanations of solution and the code
  * You can watch several in a short time
* [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder)

Challenge sites:

* [LeetCode](https://leetcode.com/)
  * My favorite coding problem site. It's worth the subscription money for the 1-2 months you'll likely be preparing
  * [LeetCode solutions from FisherCoder](https://github.com/fishercoder1534/Leetcode)
  * See Nick White Videos above for short code-throughs
* [HackerRank](https://www.hackerrank.com/)
* [TopCoder](https://www.topcoder.com/)
* [InterviewCake](https://www.interviewcake.com/)
* [Geeks for Geeks](http://www.geeksforgeeks.org/)
* [InterviewBit](https://www.interviewbit.com/)
* [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems)
* [Code Exercises](https://code-exercises.com/)

Language-learning sites, with challenges:

* [Codewars](http://www.codewars.com/)
* [Codility](https://codility.com/programmers/)
* [HackerEarth](https://www.hackerearth.com/)
* [Sphere Online Judge (spoj)](http://www.spoj.com/)
* [Codechef](https://www.codechef.com/)
* [Codeforces](https://codeforces.com/)

Challenge repos:

* [Interactive Coding Interview Challenges in Python](https://github.com/donnemartin/interactive-coding-challenges)

Mock Interviews:

* [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) - I used this and it helped me relax for the phone screen and on-site interview
* [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews
* [Refdash: Mock interviews and expedited interviews](https://refdash.com/) - also help candidates fast track by skipping multiple interviews with tech companies
* [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io/) - anonymous algorithmic/systems design interviews with senior engineers from FAANG anonymously.
