I recently came across an article about 5 front-end interview coding challenges by Vinicius De Antoni. The article introduces interesting interview problems, then breaks down how he approached them. Being able to communicate your solutions this way is a definite plus in any interview.
To bring in more perspectives into this newsletter, I asked Vinicius a few questions about his interviewing experience, which he graciously answered. Here are his answers (emphasis mine, but I ran them by Vinicius).
The challenges you wrote about look really interesting. Do you feel these challenges let you effectively demonstrate your software engineering skills?
Absolutely. Interviewing is an art form, more often than not you will be misunderstood. It takes time and practice to master it and still you might be rejected for no apparent reason. We have to make peace with it as that is part of the process.
That being said, I cannot think of a better way to demonstrate my skills than on a live coding session with the interviewer, as it gives both parties the opportunity to evaluate each other. After all, I also want to make sure I’ll be happy, and thus succeed if I join the company. I was also able to use the tools and libraries that I felt most comfortable with, which makes the whole experience more enjoyable compared to using the whiteboard for coding. I still like to use the whiteboard for exploring ideas before I jump into coding.
As a frontend engineer, I find these challenges very close to what I do on a daily basis and they were very relevant to the positions I applied for, which is not something you see in every interview. Sometimes you get asked to solve problems that you will probably never have to again if you get the job, like implementing a sorting algorithm or reversing a linked list. I get why those questions are asked and I do think they evaluate your computer science and data structure skills, but I’d rather solve problems that are more relevant to the position and the actual job I will be doing.
You mentioned, “The key to succeeding at interviews is, without a doubt, to be prepared.” What preparation do you think comes from just working in the industry vs. what do you think you need to study for when interviewing?
Just by being in the industry as a software engineer, you automatically get exposed to a lot of different technologies (not always the latest and greatest), participate in code reviews (hopefully) and learn how to work on a team.
All of those will help you during the interviews, but if you want to succeed, you will need to invest some of your free time to prepare. That includes:
Brushing up on computer science concepts, data structures and algorithms;
Studying and learning new tools, libraries and frameworks, especially those used by the companies you’re applying for;
And practicing coding problems and system design questions.
You never know what you will be asked, so you need to be ready for whatever they throw at you.
On a related note, how much did you prepare outside of your regular work while you interviewed? Any resources you want to share with the readers?
Every time I decide to interview, I take at least one month to prepare. I start with revisiting the basics by reading a few chapters of Introduction to Algorithms and watching CS courses like Algorithms, Part I and Part II. I then start solving coding questions on LeetCode and InterviewBit. Lastly, I practice system design problems by trying to design the products of the companies I plan to interview.
I also recommend learning about the companies’ culture, their mission and their values. Be ready to answer questions like “What attracted you to this company?”, “Why do you think you are a good fit?”, etc.
Any other thoughts on tech interviews?
I am not a fan of take home tests. I’d much rather have a live coding session with the interviewer. I don’t think it’s fair to ask people to spend hours on a project that might not even be looked at.
As a candidate, coding with your interviewer is a great sneak peek of how things work in the company, and you can get a better feeling for what the job would be like. After all, you are coding with someone who very likely will be a teammate.
Thanks again to Vinicius for his fantastic answers. I agree with him that interviewing is its own skill, dedicated preparation is necessary, and live coding interviews have huge benefits. I plan to publish an article soon about that last point, so keep an eye out for that.
If you have a perspective to share on tech hiring, please let me know. I would love to feature more stories and viewpoints on this newsletter!