Coder's Cat

5 Tips for Cracking the Technical Interview

2021-05-16

As a tech lead who has worked at several tech giants, I have conducted dozens of interviews. In this article, I want to share with you some tips to ace your next programming interview.

Be confident and Honest

Many candidates (especially recent graduates) tend to be unconfident because they don’t have much experience with interviewing. They cannot express their opinions fully and freely. And when the interviewer challenges them, they will immediately turn timid. This is a red flag for an interviewer because it gives the impression that you are not assertive enough or your foundation of computer science knowledge is not solid.

file:img/confidence

Another important point is to be honest. Most interviewers don’t want a dishonest colleague. I found a candidate who tried to pretend that she knew something about a topic that she was not familiar with. She told me a lot of stuff that was wrong and tried to change the subject since she didn’t know the right answer. This seems like a clever trick in daily communication, but it is not a good approach in an interview.

If you don’t know the answer to a question, just admit you don’t know it. It’s OK. Nobody knows all the technical details or the answer to every question.

Communication is important

Interviews are not all about answering questions or examinations. Instead, interviews are a mock scenario of your daily work. The interviewer is trying to find a human — not a machine. In our daily work, collaboration is a key part of software development. Although coding is important, effective communication is also necessary.

A smooth self-introduction is necessary. Practice it until you feel comfortable.

When faced with a challenge that you can’t find the solution to, don’t let the entire interview fall into silence. Instead, tell the interviewers what you know, what you think, and actively ask the interviewer for hints.

file:img/communication

If you don’t give out your ideas, we don’t know the way of your thinking and the style of your reasoning.

Good questions from you can also give you an advantage. I have hired some candidates who did not come up with the answers because their thought process was good.

Interviewers prefer candidates with a clear thought process. We don’t just want you to write down the answer. We value the process of how you get there. People who can explain something clearly tend to be better collaborators.

Write Clean and Readable Code

Write clean and readable code is not easy, this may need some deliberate training, try to learning from great source code.

After finishing your code, you should spend some time optimizing its structure to make it more readable.

file:img/coding

For instance, it can be better abstracted with appropriate helper functions for duplicated code.

Variable naming is a key point, even if the code is usually fewer than 100 lines in an interview.

Appropriate comments will also impress interviewers. Remember, though, that you need to avoid too much abstraction because that will make the code very difficult to read.

Add Testing to Your Code

In our daily work, testing is a necessary task for any changes — especially in a complicated system.

Take the initiative to propose edge cases that reflect your careful thinking. This is very important for software development positions!

After coding, you should analyze the time and space complexity and then run some basic examples to verify your solution. If you have time, please add more testing to your code.

Show Your Passion and Curiosity

Many candidates seem to treat interviews as an examination. We prefer candidates who have a passion for and curiosity about computer science because these two qualities will make everything easier in their career. Those who truly love programming will find more enjoyment and have a better performance at work. Those who don’t love the craft of programming will hate their job if they get it.

A perfect way to show your passion is a side project or contributions to the open source community.