Well, it's taken many months to get to this point, because I had a lot to learn. With no formal computer science training and not knowing the difference between a heap (data structure) and a heap (dynamic memory allocation), it took much longer than I expected to get this far.
Now on to doing programming problems on the whiteboard!
When practicing, write code on a whiteboard or paper, not a computer. Test with some sample inputs. Then test it out on a computer to make sure it actually works.
No whiteboard at home? That makes sense. I'm a weirdo and have a big whiteboard. You can pick up a cheap whiteboard like mine.
Or, instead of a whiteboard, pick up a large drawing pad from an art store. The pen in the photo is for scale. This is my "sofa" whiteboard :) The only drawback is unless you're using pencil, you can't erase.
Handling Programming Interview Problems
When practicing coding problems from a coding interview book, I've found this process works well for me: My Process for Coding Interview (Book) Exercises
Here are some resources on how to do well in the interview. Each of the programming interview books listed down below also gives such advice. This is supplementary.
Then move on:
If you still need to get up to speed with your chosen language:
Exercises for getting better at a given language
Programming Interview Books
I have 5 books of programming interview questions. I know I can't get through all 5. I'll see how long it's going to take based on my progress. Update: I skipped Algorithms and Programming, and Programming Pearls was nice but wasn't a great help. Good read, though.
Read first: Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition It's a terrific warm-up, and you'll discover quickly where you are weak and need to focus more.
Read second: Cracking the Coding Interview, 6th Edition This book is recommended by many, and I agree. It even includes additional material on the interview process at various large tech companies. Just buy it. I found the Moderate and Hard sections at the end to be way too much for what a new software engineer should expect in an interview.
One Extra Interview Book
If you have more time, this is also a good one. It's also a good book on problem-solving in general. But don't expect to so them all. See this as a supplement for getting a little extra practice in problem areas.
Take coding challenges every day, as many as you can.
- LeetCode - my favorite
- HackerRank - second favorite
- TopCoder - widely recommended, but I honestly couldn't figure out where to go to do problems. It's more of a competition site, and I found no auto-grader. Didn't need it anyway. LeetCode and HackerRank are enough.
- Has a nice flow for review/learning of CS concepts and coding problems at each level. Problems are from interviews at multiple large companies.
- Project Euler (math-focused)
And perhaps one of these for mock interviews:
- Gainlo: Mock interview from employees of big companies
- I took a mock interview, and it helped me get past my fear of interviewing.
- Pramp: Mock interviews from other programmers
The more you prepare and walk through these methods on a whiteboard or paper, and talk through the process as if you're in an interview, the more confident you'll be when your interview comes.
Knowledge conquers fear.