Ace technical coding interview for Interns/New Grads — Interviewer perspective
This week, I am lucky that I had a chance to go back to visit my University and did a 3 days on-campus events including on-site interviews. Though it’s super exhaustive since it was 8 interviews everyday(back-to-back style), I do feel proud of myself being able to help out so many students as an alumni. At the same time, I had met a lot of candidates and gained a lot of experience doing technical interviews. While I do enjoy meeting all these excited candidates with all the energy and passion on their faces, I have distilled some key insight for preparing Technical interviews for Software Engineer positions.
Software engineer interviews, often combines with algorithm questions and knowledge based questions. Preparing them are very important, but these just are one part of the story. There are merits that interviewer would look for beyond technical excellence.
Here are some thoughts I have after the interview marathon:
- Practice, and practice hard. Most of the candidate came in without much preparation. Even though they are still in school, that doesn’t really mean they have enough practice or exercise. From my personal experience, technical coding interview is a kind of deterministic problem. It’s totally a trackable and predefined problem. Most of the coding questions target at basic data structure and algorithm problems, the things like linked list, array, BST, Hash table, BFS/DFS and recursion are the most popular ones. Some advanced concept like Dynamic Programming or Greedy Algorithm are rare but definitely can be prepared. The good thing is, all these problems are well defined and we have a lot of resources to study of. There are lots of books which are super great to brush up the basics: CTCI, programming interview exposed and elements of coding interviews etc. The most popular tools I would recommend are those interactive online judger: Leetcode, or meetcoder etc. It’s way better to prepare well ahead than giving a random shot and hoping for luck. This is probably the most important yet easy to be ignored tip for those who are new to the job hunting.
- Don’t act like you are doing a final exam. This applies to most of the intern candidates or new grads. There was quite a few candidates who would just sit down and worked on the coding question I asked. It felt like they are doing a final exam for a Data structure or Algorithm class. In fact, the whole point of having an in-person interview is to help us understand how you think and how you solve any technical problem that might come up in real work environment. The how, not the what. Understanding how you think of each step and how you derive your algorithm is way more important than seeing the end result. This mindset here is very important and if you put on interviewer’s shoes, you would realize that having the other person silent during the interview is never a polite thing as well IMO. Even though you are asked to solve a hard problem, the purpose of asking hard problem was never to challenge you. You are supposed to ask the right questions and the interviewer would give hint/help at the right time, I actually prefer this style since it’s a collaboration work and we would get great signal for the strong communication skills from the candidate.
- Be honest and realistic. The first time I heard the term ‘honest’ when I was in college, I did not really understand what that means during coding interview. The truth is, it’s a part of personality. If you are a honest person, you really don’t need a tip to remind you. During the technical interviews, some candidates pretended to know a lot of thing that they actually have limited knowledge about. One candidate told me that they know Java pretty well and have worked iOS projects a lot, that immediately contradicts their story itself since Java wasn’t used in iOS. Another candidate pretended to know XX technology, but in fact when I asked the details, they failed to come up with the right description yet still tried to give me a hand-wavy answer. The fact is, no one expects you to know everything. Even the interviewer themselves, they don’t know everything or every aspects about computer technologies. It’s actually way better to be honest and realistic to tell us that you do not know the answer, than to provide a fake answer. At the same time, if a question have been seen by you and you mention that fact, it’s actually a great bonus point to you as well.
In all, these tips above are not new but I want to bring them up again to emphasize them. These tips were written the same day after I finished all the interviews. So I really hope this first-hand experience can help more people to ace at coding interviews.
(P.S. The motivation for writing down all this are to share more, during the tech talk introduction, I told the audience that I am connecting the world because I believe by sharing more, people would care more; the more care we show to each other, the better world it would be.)