1) Algorithms/Data structure
2) Programming language-specific / General CS knowledge
3) Brain teaser
I’ll go over with more details on each of them:
1) Algorithms/Data structure
You should understand these topics deeply from a typical data structure course: Array, Linked-list, Binary tree, Hash table… You should be able to tell when to use an array vs. linked-list, implementation details of linked list such as reversing a list…
Interviewer typically test your problem-solving ability by asking algorithmic questions. Some examples are:
- Reversing the words in a sentence.
- Reversing the letters in a word. (Try both iteration and recursion solutions)
- How to find duplicate data in a list.
- Generating permutations of n digits. (hint: recursion)
- Find the median of combination of two sorted arrays of numbers. (hint: divide and conquer)
- How to spell-check and correct a word (hint: edit distance)
2) Programming language-specific / General CS knowledge
If you’re applying a C++ programmer position, be prepared for lots of C++ questions. Same with other languages. If the position you applying does not have a language-specific role, you may be asked general CS knowledge, such as difference between allocating on a stack and heap, …
Some C++ related questions I encounter often:
- What are virtual functions? How is it implemented? What are the trade-offs using virtual functions?
- What is a virtual destructor? When do you need them? What if you don’t implement a destructor as virtual?
- What is copy constructor and when is it being called?
- What’s the difference between malloc and new?
3) Brain teaser
Some interviewers like to ask a brain teaser question to end the interview You’ll know it when they ask: Do you like puzzles? Prepare for some creative thinking
Some sample questions:
- Two eggs problem:
You have two identical eggs and you are given access to a 100 story building. You would like to know the highest floor for the egg not to break when dropped. The problem is the egg might break on the 1st floor, or even the 100th floor, you just don’t know. Find the maximum number of trials you need to conduct in order to find the answer.
- Reverse the bits in one byte data as fast as possible.
- You have 5 identical jars. 4 of the jars contain balls with identical size weighing 10g each, while 1 of the jar contains balls weighing 9g each. You are given a digital scale, find out the 1 jar that has the 9g balls with only 1 weighing.
Read full article from Interview tips for programmers | LeetCode
No comments:
Post a Comment