Over the past, we received a lot of emails asking us questions regarding software engineer interview preparation and tons of questions have been asked over and over again. So we decided to make our first blog post as an aggregator of all those common questions/pitfalls that our users have.
1. Which data structures I should focus on when I don’t have enough time?
I’d suggest people always focus on those very basic data structures for interview. Data structures like tree, linked list, queue, stack are the most popular topics in programming interview and you will definitely get in trouble if you are caught unfamiliar with any of them. Graph is also important, but just not as popular as the others (this is purely based on experience).
So do spend enough time and be clear and familiar with these fundamental stuffs, and then try to practice with real interview questions about these data structures.
2. Should I work on competitive coding questions like TopCoder?
The short answer is: you don’t need to. Competitive questions from TopCoder or similar sites are way harder than common interview questions. They usually require a lot of training and extra knowledge about algorithms, and even those active players at TopCoder may spend a lot of time on solving a single question. So if you are just preparing for a SWE position, competitive coding questions are overkilled unless you are working on something related to that.
However, if you have a lot of preparation time, it’s always rewarding to take this kind of contest. Once you can solve questions from TopCoder, I believe that you will have no problem in any programming interviews for sure.
3. Is it necessary to understand dynamic programming?
This is one of the most popular questions we’ve been asked. I’d say it’s necessary and important to understand DP. First of all, DP is a very important concept in computer science and not only is it a handy tool to solve a lot of problems, but also it helps you better understand how program works and be more aware of time/space complexity of an algorithm.
Second, it’s not that hard to prepare DP for a programming interview. Unlike DP questions in TopCoder, in a normally one hour SWE interview, DP questions are usually quite straightforward and don’t require lots of coding. For people who are familiar with this, it’s almost with 5min to realize it’s a DP question and another 10-15min to write down the code. So don’t be afraid of DP, it’s really not that hard for interview.
4. What should I do if I only have 1 week left?
To be honest with you, I hate to answer this question because it’s just like i’m gonna take an exam tomorrow but I know nothing at this moment, what should I do now? The reality is that you can still do a lot of things to better your chance. First of all, I assume you are already familiar data structure and basic algorithms, otherwise I can only suggest you get your finger crossed and wait for the miracle. Second, delving into real interview questions probably is the most effective way given the short timeline. Glassdoor has a lot resources there and Google search can also give you tons of similar stuffs. Just get some hands on experiences and maybe try our mock interview as well if you have enough time. But in general, I would suggest people at least have 2-3 weeks for preparation.
5. Why did I get rejected in interviews that I felt I did well?
This is a complicated question and can potentially have lots of possibilities. I just list few here:
a. Your solution wasn’t correct. It could be the cases where the interview ran out of time, and the interviewer had to stop it but gave you the feeling that you already reached to the correct solution.
b. Your solution wasn’t the most optimized. This is a really common case. A lot of people did come up with a correct solution, which however can be further optimized. Not all interviewers will tell you if you can improve the existing solution, and even if you already had the best solution, they may still ask you to see if it can be further optimized.
c. You were too slow to solve the problem. Even if you finished the 1st question perfectly, it might take the whole interview time and the 2nd question didn’t even get a chance to ask. The interviewer won’t tell you that he held back a question in order to keep you happy. However, not all interviews have more than one question, it’s really case by case since sometimes they may give you a relatively harder problem and expect you to solve it within an hour.
d. Your non-coding abilities are not qualified. You failed to show great analysis, communication skills, or you just don’t fit the company culture. In an extreme case, you won’t hire someone who’s rude, arrogant even though he solved all the interview questions.
6. Will I definitely fail if I don’t come up with a solution or the best solution?
Of course not. We always educate our users that what matters for an interview is the process rather than the solution. Within one hour, you and the interviewer works together to discuss and solve an interesting problem, what’s more important is the analysis and communication ability you showed during this process. An ideal case is that initially you come up with a very “stupid” solution, which could be extremely inefficient like brute force. But with discussion with the interviewer, you try to improve the solution step by step, and eventually you may or may not reach to the most optimized algorithm. In this process, how you discussed with others, how you reacted with the interviewer’s hint and the way you analyze problems are really more important than the answer itself.
7. I can’t focus on the problem when talking with someone, can I keep silent when thinking?
I’d suggest not to. Here’re reasons why talking while thinking is very important:
a. It shows your communication skills and analysis ability.
b. It gives the interviewer a chance to help you. When you are not on the right track, the interviewer may choose to give you some hint and discuss with you. In this way, you can avoid straying too far and this could potentially save you a lot of time.
c. In the worst case that you don’t solve it, the interviewer couldn’t know how far you get since there’s not so much discussions. You may get very close to the answer, however no one knows. In the end of the day, the interviewer can only write “the candidate had no idea at all” in his feedback.
I know it’s hard to think while talking with someone and everyone is uncomfortable with this. That’s why it needs practice. You can start with practicing this by yourself, then gradually ask your friend to discuss with you. It’s really worthwhile to get accustomed to this before your real interview.
We’d like to have a weekly blog that focuses on one topic at a time to help our users get better preparation. We may also dive into one of the above topics in details in the future. Meanwhile if you have any suggestions on our topics or any questions regarding interview preparation, please email email@example.com and we’ll really appreciate that.