Acing a Technical Interview, Part I
The technical portion of any engineering interview is a very different skill set then normal day to day work. The technical screens and interviews involve writing code live, on a white board or on a laptop(without an IDE), and talking through the solution as your writing the code. With the proper preparation, you can excel and show your coding skills in the interview format. There will be a lot of rote memorization and doing practice problems, but once the trends are found you can ace interviews at any company, from Google to any start up. I found it to be very similar to the SAT or any other standardized test. Over the next two posts, I’ll be going into each topic in more detail sharing the basic concepts and their time complexities.
Topics
- Data Structures
- Algorithms
- Time and Space Complexity
- Practice Problems
Data Structures
- Hash Tables
- Linked Lists
- Stack
- Queue
- Trees
- Tries
- Graph
- Vector
- Heaps
Algorithms
- Breadth First Search
- Depth First Search
- Quick Sort
- Merge Sort
- Dynamic Programming
- Backtracking
- Binary Search
- K Way Merge
- Union Find (Disjoint Set)
- Bucket Sort
Time and Space Complexity
For the data structures and algorithms, an important piece of information is the Time and Space complexity. Both of these are expressed as Big O Notation. As I dive into each data structure and algorithm, I’ll share the important operations and their time/space complexities.
Practice Problems
The best platform for practicing problems is LeetCode. It has over 1,000 problems on a variety of topics ranked based on difficulty. You can choose the language you prefer, run test sets against your code and submit the results against the entire test suite. The discussions and solutions are really helpful in understanding solutions and concepts.
One important note, don’t optimize the solution for the fewest lines of code or using the most clever tricks. Try to focus on clear/concise code and be able to articulate the core concepts of the solution. If there are import mathematical premise, make sure to state it up front. With clear code and and good articulation of the concepts, you’ll be able to show your technical skills. The goal is to share as many signals as possible with the interviewer to show your technical skills, talking more is better!
Conclusion
With the proper prep, anybody can excel on the technical sections of the coding interviews. In the next part, I will share my notes on each of the data structures and their complexities. See you soon.