How did I “crack” the coding interview
Learn how to crack the coding interview with few tips from our experts.
Note: this article was originaly posted in Medium.
It’s not a secret that nobody likes interviews, probably even less when we talk about coding interviews. Maybe you are looking for your first job or the next step in your career, perhaps you are willing to move to a different country, or you are working in a toxic environment (get out of there!).
No matter the reason or your experience you have to go through them, and to avoid doing tons of interview, you have to prepare yourself!
As I mentioned before, there are different reasons to apply for a new job; in my case, I moved to a new country.
I had to start new and find new opportunities. After 18 interviews in three different companies, I managed to get a job as a Developer Advocate for the Android Partnerships Team at Google.
In this article, I want to share my experience, thoughts, and tips that helped me get the job.
The searching
This step sometimes is skipped when you get approached, but in my case, I wanted to find a new job.
First things first, prepare your CV. A good CV won’t give you the job but will help you get into the first door. Here are my tips:
- KISS principle, Keep It Stupid Simple. I am not saying that the HR or the recruiter is stupid, but they get tons of CVs and their time is limited.
Don’t try to add fancy designs and a lot of information. Make sure to highlight the relevant information and make it visual enough that with a quick look the reader gets a good feeling of your skills. - Make sure to add links to your profile in GitHub, StackOverflow, a blog site or your personal apps. If you don’t have any, don’t worry that does not make you a bad developer, but it helps your CV.
- Add relevant projects you worked on, with a small description.
i.e: “Created an e-commerce app with a team of 3 devs and a designer.” - Ask a friend to review it, fix typos and ask if she/he understands it.
Remember, HR or the recruiter might not be technical at all.
After the CV is ready, it’s time to look for potential companies. Don’t apply randomly; make sure the position and the company fit with your interests; the interview process is costly for you and the company.
Some of the sources I used:
- LinkedIn, easy to filter and a significant source of offers
- Glassdoor, not only to review the companies reputation, in some countries, there are a lot of offers posted.
- Local startup pages, it’s quite common to find pages with local startups descriptions, if you find any interesting for you, go to their page and check the careers section.
- Developers Meetup groups, every country has its developer community, go to their group and check for posted offers or ask for it.
Finally, don’t be afraid to push the SEND button. It does not matter if you don’t fulfill all the skills. If you think the position and the company is a fit, apply.
The waiting
Photo by Ben White on Unsplash
This step is the worst of all, and it’s not only after you send the CV, but also between interviews and waiting for an offer.
I send around eight applications. Only three of them replied at the end. The full process in the case of Google took nearly three months.
A long waiting period does not mean you are out, things happen, even more in big organizations, change of budgets, hiring freezes, vacations, etc.
As a tip, if you are waiting for a long time or you have any doubt, don’t be afraid to reach your recruiter or point of contact, they are here to help.
One of the companies I applied, took nearly two weeks to answer me after the coding interviews, after reaching to them, they were honest and explained to me that the company was going through a re-organization and the hiring was paused. Yet, after a while, they resumed the process and made an offer.
Conclusion, be patient but push for transparency.
The interview
Photo by Dice Insights
HR or a recruiter reached you back; probably you will have a phone call, usually not technical (except for the case of Facebook, the recruiter asked me basic Android questions).
Depending on the company there are different steps. In this article, I will only focus on the coding interview. If you are interested in the Google case, you can have a good overview here.
Unfortunately, our industry has some standard practices for coding interviews that are outdated and does not reflect the skills of the interviewee.
There are many articles and critics out there. A clear example, from the creator of Homebrew:
Yet, many companies are not willing to change this practice.
With Google, I had seven interviews containing algorithm problems, Android-related, and behavioral questions. While with Facebook were four coding interviews, one architectural and one behavioral. And the last mid-size company I applied, had “only” two pure algorithm interviews.
That being said, don’t be afraid, as much as these interviews are hard and probably not reflecting your skills. The process is intended to be fair, and it’s not black or white. I am not good at resolving this kind of problems, yet I managed to convince (somehow) I have the skills for the position.
The following tips and “process” worked for me, but it might work differently for someone else.
The practice
- Take 3 or 4 days (more if you can) to practice.
- Practice via web apps:
https://www.interviewbit.com/?ref=codelab
https://www.careercup.com/
https://www.topcoder.com/
https://www.interviewcake.com/ - Read the book “Cracking the coding interview” and practice some of its examples.
- Get familiar with the different collections, performance, usage, etc.…
- Review the simple searching and ordering algorithms.
- Understand more complex structures like trees, stacks, and graphs.
(You don’t need to memorize all of the variants and know how to implement all of them, just understand the concept)
Before the coding interview
- Prepare your equipment, make sure your internet connection is reliable and you have the power charger connected (I recommend to restart your laptop a bit before and open only the needed programs)
- Get a glass of water; these interviews usually are 45–60 min, and you have to talk a lot.
- Take 3 or 4 white papers and a pen; it’s useful to write your thoughts.
- Avoid distractions. Make your phone silent and try to be in a calm environment.
- Avoid temptations. Clean your desk from your practice papers, close any other browser tabs. If you try to read or search for solutions, you will lose focus and time, and probably the interviewer will realize that.
- Breath slow and close your eyes for a second and be optimistic, you can do it!
During the coding interview
- Be friendly, talk, but more important: listen.
- Don’t be afraid; the interviewer knows your situation, she/he has gone through it for sure.
- Usually the interviewer will show you the description of the problem and explain it, listen carefully and don’t try to think on a solution right away. Take a couple of seconds to reread it.
- Ask for some examples, try to think on some by yourself.
Once I understood the problem and the examples, I followed a simple process that helped me during the interview.
The crucial points from above are:
- Don’t be afraid to ask. Is there something that can be simplified? Ask.
- Start with brute force, try the most straightforward way first, then take your time to improve it with greedy, caching or pre-processing concepts.
- If you get stuck, admit it, get a tip that might help unblock you.
I mentioned before, it’s not black or white, even if you don’t solve one problem, it does not mean you are out. Keep calm, and prepare for the next round.
The offer
Photo by Cytonn Photography on Unsplash
Hopefully, the interview was good, so the company decides to make you an offer. I can’t give you many tips here, but there are many resources online that might help you with that.
My only tip is to research the salary conditions for your experience in the country where you applied for, then set the minimum you would take and the desired offer, but never say it before they make the first step.
I hope this article helps those dealing with interviews or planning to start. If you need some more advise, please don’t hesitate to contact me, you can reach me via Twitter
Tweets by marxallski