Questions from my Phone Interviews (The Jungle, Chapter 4)
2007.09.24 20:31Last time, I made contact and started scheduling phone interviews.
Scheduling
I was living on the west coast, but looking for jobs on the east coast. This was advantageous since I could do my phone interviews in the morning before heading in to work.
General technical questions
These are the most interesting technical questions that I was asked over the phone.
- In a unix directory tree containing 50,000 files, how would you find a list of the .html files containing phone numbers?
- Apparently, my interviewer and I had both read Five Essential Phone Screen Questions. For a second, I considered giving a canned answer, but I decided to be fair and confess that I had read the article.
- If you had to analyze a string and count the number of times each character appears, which data structure would you use?
- In a source control system, what is the difference between a branch and a tag?
- Can you tell me how a Hash works?
- My recent studying of algorithms and data structures helped here — although I wasn’t far along enough to understand the different methods of collision resolution. (chaining, open addressing, etc.)
- Give the technical details of a specific thing that you’ve worked on.
- Great question. I talked and he quizzed me about some of the decisions that I made.
Java questions
- What is the difference between an ArrayList and a LinkedList? Why would you use one over the other?
- What is the difference between a List and a Set?
- What is the difference between the final, finally, and finalize keywords?
- What is the difference between a HashMap and a TreeMap?
- Never seen this question before, but I’ve used TreeMap here and there, so I did OK.
- Why would you want to override the hashCode() method?
- When overriding the hashCode() method, what issues do you have to consider?
- I forgot that equals() and hashCode() are not symmetric. My interviewer proceeded to slap me with a clue-stick.
Non-technical questions
- You mentioned that you’ve been doing more architecture and design work for the past year, and that your vision of career growth involved doing architecture and design, as well as coding. Yet you say that you are leaving your position in part because of a lack of career advancement. Isn’t that inconsistent?
- This was a very perceptive question that stopped me in my tracks.
- Typical interviewers let you fluff your way through your reasons for leaving your current position. But this guy was not going to let me off that easy.
- I took a moment to think about my answer, and then attempted to explain the political complexity of working for a small defense contractor. I also expressed that by “architecture and design” I did not mean adventures in drawing SOA-labeled clouds and boxes in Powerpoint, but instead taking an interest in the higher level concepts of software, along with the coding. He seemed to understand where I was coming from.
- But I still felt like an idiot. Later that day, I spent some time rethinking my answer to “why are you leaving your current position?”.
Results
I was fortunate enough to be invited in for interviews at every company that I spoke with over the phone. Next time, I’ll talk about how I prepared for these face-to-face duels.