Programming Interview Questions
Programming Interview Questions
This is a summary of the questions I got in 9 in-person interviews with 5 companies and about 10
phone screens 8/02-11/02. The interviews were pretty evenly split between very large, large, and
startup-sized tech companies.
The good news is that interview question repertoire is generally very limited. The Programming
Interviews Exposed book covered or helped on probably 60-70% of questions I got. Well worth
the $20.
Linked Lists
This is an extremely popular topic. I've had linked lists on every interview.
You must be able to produce simple clean linked list implementations quickly.
Strings
* Reverse words in a string (words are separated by one or more spaces). Now do it in-place.
By far the most popular string question!
* Reverse a string
* Strip whitespace from a string in-place
void StripWhitespace(char* szStr)
* Remove duplicate chars from a string ("AAA BBB" -> "A B")
int RemoveDups(char* szStr)
* Find the first non-repeating character in a string:("ABCA" -> B )
int FindFirstUnique(char* szStr)
Binary Trees
* You are given an array with integers between 1 and 1,000,000. One integer is in the array
twice. How can you determine which one? Can you think of a way to do it using little extra
memory.
* You are given an array with integers between 1 and 1,000,000. One integer is missing. How
can you determine which one? Can you think of a way to do it while iterating through the array
only once. Is overflow a problem in the solution? Why not?
* Returns the largest sum of contiguous integers in the array
Example: if the input is (-10, 2, 3, -2, 0, 5, -15), the largest sum is 8
int GetLargestContiguousSum(int* anData, int len)
* Implement Shuffle given an array containing a deck of cards and the number of cards. Now
make it O(n).
* Return the sum two largest integers in an array
int SumTwoLargest(int* anData, int size)
* Sum n largest integers in an array of integers where every integer is between 0 and 9
int SumNLargest(int* anData, int size, int n)
Queues
* Implement a Queue class in C++ (which data structure to use internally? why? how to notify
of errors?)
Other
Puzzles
* You have 2 supposedly unbreakable light bulbs and a 100-floor building. Using fewest
possible drops, determine how much of an impact this type of light bulb can withstand. (i.e. it can
withstand a drop from 17th floor, but breaks from the 18th).
Note that the ever-popular binary search will give you a worst case of 50 drops. You should
be able to do it with under 20.
* There are n gas stations positioned along a circular road. Each has a limited supply of gas.
You can only drive clockwise around the road. You start with zero gas. Knowing how much gas
you need to get from each gas station to the next and how much gas you can get at each station,
design an algorithm to find the gas station you need to start at to get all the way around the circle.
* Out of 10 coins, one weighs less then the others. You have a scale.
o How can you determine which one weighs less in 3 weighs?
o Now how would you do it if you didn't know if the odd coin weighs less or more?
* What is the next line in the following sequence:
1
11
21
Answer: it's 1211 and the next is 111221
Design Questions
* How would you design a server that has to process a fair number of good number of requests
a second. What if you didn't know how many requests you'd be getting? What if requests had
different priorities? (I always think of the Apache design for this question)
* Design malloc and free. (give up? see how G++ malloc works or this page for more
examples)
* Design an elevator control system. Don't forget buttons on every floor and supporting multiple
elevators. (What objects/methods/properties/how components communicate)
* Design a chess game (what objects? what methods? which data where? how will it work?)
* Design a deck of cards class (object/methods/data)
* How would you design the infrastructure front half of a very large web ecommerce site? what
if it was very personalized? (how sessions are handled? where and what you can cache? how to
load-balance?)
Concurrency
Windows-specific Questions
Networking
I got most of these because I have a lot of networking on my resume.
* Difference between TCP and UDP? When would you want to use one over the other?
* How would approach guaging performance of webpages/parts on a very large website?
* Questions you are unlikely to get unless you claim a lot of IP experience
o How does traceroute work?
o How does path MTU discovery work?
o How can one poison a BGP peer?
Non-Technical Questions
All of the following are very common. It's best to have canned answers.
Marketing Questions
Questions for Marketing candidates.
* How would you market a [specific product this company makes] to a [specific population you
are familiar with]? (Example: How would you market Word to college students?)
* How would you expand a [business you are familar with]?
Links:
* The best book for tech interviews, in my opinion - "Programming Interviews Exposed"
* Joel On Software article about resumes - must read
* Joel On Software techInterview section - more questions and answers
* Seven Questions Employees Should Ask Before Joining a Startup
Programming Books:
cover The original and best C reference by the creators of C:
C Programming Language (2nd Edition) by Brian W. Kernighan and Dennis M. Ritchie
cover The original and best C++ reference by the creator of C++:
The C++ Programming Language (Special 3rd Edition) by Bjarne Stroustrup (creator of C++)
Mail me.