I have completed my Master’s Thesis and all that’s left is paper work. As a result, it’s time to prepare for interviews. I’m going through ‘Programming Interviews Exposed’ as practice. You can follow my progress at my github repository. Wish me luck in the interview process! I will occasionally make posts if I find something interesting, or can provide deeper insight than the book.
So far I have learned the following things, unrelated to the book, by going through the book:
- How to properly use github
- For the longest time, I've been committing to the master branch instead of merging into master from a separate branch
- How difficult it is to handle Unicode characters in C++
- Take a look at my solution to finding the first non repeating character.
- How to use Gradle for your java builds of small projects
- I've found Gradle far more convenient that using ant/maven and ivy
- How to do unit testing in C++
- Previously I've done lots of unit testing in Java, but never in C++
- Check out my tests for my C binary search tree solution
Also, by implementing the solutions I’ve been able to practice many things which I would not get exposure to by working through the problems in my head.
Firstly, I reviewed my C/C++ knowledge which hasn’t been used intensely since undergrad. I’m now comfortable with things like manipulating pointers, differences between Java and C++, and the standard library. One interesting caveat is that when you want to used a HashTable data structure, do not used a map<>. That’s actually map backed by tree data structure and some interviews will notice this. You’ll want to use unordered_map<>, which was added in the C++11 standard.
Secondly, by implementing and testing the solution, you discover edge cases you might not have considered by working the problem through your head. I hit many more edge cases than I expected to with my heap implementation.
Finally, during interviews you will be asked to code up the solution. You do not want to waste your precious time recalling C++ or Java libraries. You want to be able to focus as much of your energy on tackling the problem, instead of tackling the language.
Wish me luck!