Interviews
I knew that when I started the job search, I would ultimately end up doing a lot of algorithm development in my interviews, so I made an investment in a good dry-erase whiteboard to practice on. I explained to Susanna that, as a programmer, a whiteboard is just as important as the computer or code itself, as a consequence of Miller’s thoughts on human memory channel capacity. We as programmers simply can’t juggle all the necessary things that we need to know in active memory – we need to write it down, plan it out. If you are a programmer, you need a whiteboard.
So for my interviews, I’ve been studying data structures, time complexity, design patterns, etc.. I spent some time writing a list of things I ought to study up on. Here’s my list, and my progress for studying.
Algorithm to reverse a stringLinked List from scratchQuick Sort from scratchInsertion Sort from scratchSelection Sort from scratchBubble Sort from scratchSingleton patternFactory pattern- Composite pattern
Greedy algorithm- Backtracking algorithm
- Memoization
Hash table from scratch- Binary tree class + search from scratch
- Heap from scratch
- Preventing integer overflow
- Web services in: Java, C#
- Java command line compilation + flags
- GCC command line flags
- Ant, Make
- Eclipse project/build configurations
The ones I haven’t studied up on I still feel confident that I could write if asked in an interview, but I’d still like to study up on them ahead of time. I also took the time to take all of my study/learning java code and organize it into a package hierarchy for easy access, and discovered a pretty easy way in java to pull resources in.