What most people don’t realize is that interviewing is a skill in its own right, one that you can learn and get better at, by studying and practicing. Not only will your knowledge in algorithms and your stack be tested, but also your character, overall knowledge, and your ability to work under pressure.
I’ve been in my fair share of interviews, as the interviewer, and the interviewee, and in time I gathered enough experience to know how to land the job, or the contract, and negotiate for the highest salary that I can get. And this is the skill that I hope to pass on to you through this guide.
Most young grads, perceive coding interviews, as this huge monster, standing between them, and their dream job, but know that with enough preparation, you can make this monster your bitch.
Now let’s get down to business, I’ll break this guide down to 5 sections, Technical questions, Design questions, Behavioral questions, psychological tricks and finally some negotiation tips to make sure you have enough in your bank account to treat yourself every now and then, and maybe buy me a beer if I help you land a job.
This aspect depends on the size of the company you’re applying to join, the bigger the company, the more sophisticated the process is, but I’m here to prepare you for every possible scenario, and although the process might differ, there’s a lot in common too.
Mostly small companies will have you go through a number of coding interviews, usually, it’s two interviews and can go up to three, anything above that and you’re on your own pal, just kidding I got your back, don’t worry.
Now back to it. These interviews will almost always have you write code or solve a problem on a whiteboard, you’ll also be tasked sometimes to work on a small project on your own, or answer algorithm questions.
Now big companies have a slightly different approach for interviewing, it usually starts with a phone screening, then a few coding interviews from home, and finally if you pass everything, you’ll be invited to an onsite interview.
For the technical part, you might be a great developer, but the technical questions you’ll be getting, will focus on data structures and algorithms, you’ll, of course, be asked about the languages and frameworks used at the company you’re interviewing with, but those are easy compared to the in-depth algorithm questions you’ll be asked, since most developers only remember them from their years of college, and that knowledge has long since been forgotten. But you have nothing to fear because there are a few tools that you can use to brush up on them. Hackerrank, Learneroo, and Leetcode are great for learning data structures and algorithms. Make sure you practice daily.
When it comes to specific technologies, languages, and frameworks, you should practice the stack of your choosing, and maybe build a few projects using it, to get better at it, and add to your portfolio, not to mention that this way, you’ll discover your weaknesses while developing and have the chance to improve them, instead of having the interviewer discover them for you during the interview. It’s worth noting that there are a lot of websites and books that offer in-depth courses on most languages, and I advise that you take a look at one that covers your stack and get to know it better.
Design questions, are when interviewers give you a product, whether it be a search engine, a social network or even a job board, and ask you to design the system architecture of that product.
Most developers are familiar with some of the design elements, such as the DNS server, load balancer, databases, etc. However, even the most jaded of engineers, struggle with these type of questions, so don’t worry if you have no idea how to pass this part of the interview, the interviewer already knows that you’re a junior developer, who has never –probably- designed a scalable and production-level system before.
Although interviewers don’t expect you to answer this sort of questions perfectly, they will however judge you based on how you approach big problems, and keep in mind that you should ask a lot of questions to learn more about the system you’re designing, so you can validate your assumptions, and answer the question in a very iterative way with the help of the interviewer.
To prepare yourself for the design questions, you need to read about the different components of every software system, and although you don’t need to understand everything in details, you should be aware of the different components and concepts.
Some of the components you’ll find in most systems are Domain Name System (DNS), Content Delivery Network (CDN), Load Balancer, Reverse Proxy, Application layer, Database, Cache, Asynchronism…
A company will not hire you just for your technical skills, but also for your character, and whether you will be a good fit or not, to their already established company culture.
To determine that, an interviewer will ask you a number of questions, such as “Why do you want to work here?”, “What’s a difficulty you’ve faced working with a group and how did you help solve it”, Or “have you ever chocked the life out of someone, looked deep into their eyes and watched as the flames of their existence extinguished” Well maybe not the last one, but you get the idea.
You should answer these questions as honestly as possible unless your answer will incriminate you in a homicide, because if you lie and get the job, you might find yourself working at a place where you don’t really belong, so answer with confidence and conviction, and everything will be alright.
There are a lot of “tricks” that you can use to establish a connection with the person interviewing you, and boost your chances of getting the job:
· Always tailor your answers to the interviewer’s age.
· Find something in common with your interviewer, this could be anything from going to the same college to sharing common interests outside of work.
· Mirror the interviewer’s body language, but don’t be obvious or creepy about it.
· Compliment the company and demonstrate respect for what they’ve achieved.
· Speak expressively.
· Talk about your weaknesses as well, show them that you’re only human, and are working to better yourself.
· Make sure you show confidence and deference simultaneously.
· Showcase your potential.
· Hold eye contact, but not aggressively you creep.
· Wear something clean, simple, and inoffensive.
· Listen attentively when they talk and make sure to ask a lot of questions too.
· Take a shower before your interview, some of you will think that this is something obvious, but talking from my experience as an interviewer, I assure you it’s not.
Congratulations! You followed my tips and landed yourself a job. Now it’s time to learn how to negotiate and get yourself the best deal you can possibly have.
Here are a few negotiation tips that you should definitely follow if you want to pay off those lingering student loans before your 70th birthday:
· Always keep the door open, and never give up your negotiating power until you’re 100% ready to make a final decision. Go over as many points as possible without giving up the power to continue negotiating.
· Information is power my friend, so never reveal your cards. Most companies will try to know how much you’re currently making, or what other companies are offering you, so make sure you keep verbally jiu-jitsu-ing out of these questions and never reveal or comment on any details of the offer unless you’re asking for clarification.
· Stay positive, even if the deal is not good enough for you, keep a positive attitude and let them know that although the pay/timing/numbers are not working out, you’re still very much interested in the company and its mission and are willing to work together on a package you’re both happy with.
· Be winnable, and not just by giving the company the impression that you like them or are passionate about their mission, but by being open and frank with them, and not playing any stupid games. Be clear and unequivocal with your preferences and timeline.
· Have alternatives because if more than one company is after you, it’ll give you an edge when negotiating, and give them a sense of urgency, so take advantage of that.
· Don’t be an idiot and get everything in writing.
A few more tips:
There are a lot of other things you can do to make sure you give yourself an edge when applying for a position, and the more prepared you are, the better your chances will be of finally moving out of your parents basement, or getting a better job so you can finally afford to eat more than twice a week:
· Doing mock interviews before you jump into the real ones is a great way to build confidence. Download a spreadsheet of general interview questions, and have your friend take you through them.
· Ask questions during the interview, it’ll make you look smarter, and will give you the opportunity to get to know the company and its employees better.
· During the coding phase, focus on writing clean, styled and overall understandable code, and make sure you explain to the interviewer the code you are producing.
Go forth and conquer:
I’ve taught you everything I know my child, now go forth and put your new-found interviewing skills to the test. Apply to your favorite companies, and make sure to make me proud. Use your new found knowledge for the good and prosperity of mankind, or you can just make a lot of cash, either one is good I guess. Good luck!