8 tech interview types and how to prep

Mariana Bocoi
6 min readMay 5, 2022

The best thing you can do is ask a friend or a stranger for help. But there are also some great resources out there that could help.

3 friends talking and coding, photo by Brooke Cagle on Unsplash

I stumbled on this post from Ceora, and it got me thinking of the many ways the tech interview could look like for candidates.

Ceora Ford— just curious: what do you do to prep for technical interviews?

My first thought was that I would likely ask what the tech interview would be. Companies usually share what the process will be like; it is no problem to ask. And if it is not clear, do ask for clarifications.

I will cover the types of technical interviews I experienced and the resources I would use to practice if I choose to continue the process.

Note, in-person could mean meeting in the office or an online discussion like google meet or zoom, etc. I will cover some practical tips for online interviews at the end.

Structure

Usually, it starts with people introducing themselves and asking for a quick intro. Then there is the tech part, and sometimes there is time left at the end for your question.

Have a quick 2-minute intro of yourself. You should add something about hobbies in Sweden, but that might be different in other cultures. Keep it broad and straightforward; there will be time to go deeper into the conversations afterward.

Then there is the technical part which is covered below. Remember to:

  • Think out loud — people want to see how you think
  • Write things down or draw on a whiteboard or any digital means
  • Ask many questions! Clarify things, check-in if you are going in the right direction, and ask how they would have done it.

And it often ends with 5–10 min of allocated time for you to ask questions. It does not mean you should keep all questions to the end; instead, this is for other concerns, such as asking about the teams’ culture and how they work together.

Interviews are a 2-way street, you interview them as well!

Here are some tech interview types I experienced and how to prep technically.

1. Timed algorithm test

A timed algorithm test on specialized websites. Usually, interviewers can see almost every letter you type in a timeline, like a video. They will know when you copy-paste big chunks of code. You will still do it because it is more comfortable to write code in an IDE. If that is a problem, run! Dodged bullet.

For these, I use one of these to practice:

To get more familiar with algorithms, you can check out one of these guides:

Or this video course: https://youtu.be/8hly31xKli0

2. In-person algorithm test

I still use the above websites and maybe dry-run with friends, so I get used to explaining things aloud. Or https://pramp.com is pretty nice.

Use the whiteboard to write things down. Ask many questions!

3. Refactoring/Adding to existing code

You get this horrible code and need to restructure and fix the issues. Often it is in person or online. Start simple and unravel the thread. Ask many questions, and if something is not relevant, move on. The Pragmatic Programmer or Refactoring are great books that could help prepare. They are great books even if you do not have an interview!

Also read up on best practices like SOLID, DRY, KISS, YANGI, etc.

  • S — Single-responsibility Principle
    O — Open-closed Principle
    L — Liskov Substitution Principle
    I — Interface Segregation Principle
    D — Dependency Inversion Principle
  • DRY — Don’t Repeat Yourself
  • KISS — Keep It Simple, Stupid
  • YANGI — You aren’t gonna need it

4. Qwizz websites

like https://testdome.com/questions, I would check the website and sample questions first to understand if I need to review specific terms that I do not know by heart or review theory/books. It is not my fav because I do not memorize things.

5. In-person discussions

There are also the in-person questions; you can check sample questions websites:

6. In-person system design interviews

You need to draw boxes on a whiteboard and talk about how they are connected. I usually check out the company tech stack and see if they have blogs etc.

You can practice with a friend or watch videos like the Introduction to System Design series.

Key tip, make sure you understand the requirements and users! There could be different types of users, e.g., end-users, finance department, or administrators. The questions you ask are usually more important than the specific technologies you mention.

Sometimes when you are very attached to technology, it could be a bad thing because people want a person that uses the right tool for their needs. Try to use concepts rather than tech: Async messaging rather than Kafka/RabbitMq/PubSub, or DB rather than Postgres/Dynamo.

Be ready to talk +/- about potential technology choices, like why is a relational DB more suited than a NoSQL/document database or the other way around?

Pro-tip, you can also ask back, “What do you think would work best?” or “What do you use at <company-name> ?"

Here are some more helpful prep resources

7. Home assignment

It is similar to the system design usually. Do ask clarifying questions if you have any. Here are some things to include.

README.md with: — system diagram (helps explain during the interview). I use http://miro.com or http://mermaid-js.github.io

  • clear instructions on how to run the system and tests locally
  • a short overview of the system and design choices
  • a wishlist of things you would have liked to add but down prioritized XD

Do add tests! For your own sake, use git or some versioning system. Make sure it requires the least amount of things installed. Ideally, it is all containerized. I usually go a step further and add a simple test runner on my private repo. It keeps track of it for me when I break stuff.

These are my favorite because it does not make me practice things that I do not use daily, but there are the most time-intensive, and sometimes I do not have the energy.

It is also problematic since sometimes people do not have the time, e.g., new parents who already juggle kids and a full-time job.

You can always ask the company if you can instead walk through a past project or tweak the process in some other way. I have seen it work.

Find example tests here: https://devskills.co/coding-tests

8. Debugging a system

Something went wrong, and you need to find out where the bug is. People want to hear about how you think and where you look first. Ask about metrics/logs, etc. Take it as a conversation. Talk about the customer impact and how to notify the customers.

Think about:

  • Potential changes to the system that might have caused the failure
  • Deadlocks, bottlenecks, and other performance issues and how to detect them
  • Asynchronous architecture patterns and degraded performance vs. being down
  • Resilient systems, eventual consistency
  • Rate limiting, circuit breakers, and similar mechanisms
  • WAF (web application firewall), Load balancers
  • Malicious intent, potential attacks, and countermeasures

Online interview checks

When you have an interview through video conferences, you should prep some extra things. Have a way to whiteboard, e.g., I used http://miro.com in the past. — do dry runs with friends. It feels different than in-person.

Ask about the structure, and check before the interview that you can share the screen and have video and sound.

  • Google Meet, if you have not used it in your browser before, requires you to allow access.
  • Zoom, you usually need to install a client, so that it might take some time.

Other great resources

Cracking the coding interview

Do check out “Cracking the coding interview” book by Gayle L. McDowell https://crackingthecodinginterview.com. It is a good read, regardless if you are interviewing currently or not! It covers system design, algorithms, and practical tips on how to present yourself.

There are also some free resources on the page.

Free code camp

Free Code Camp is a free resource where there are many tips and guides. It also covers much more than just interviews, e.g., structured learning.

In conclusion

Regardless of what happens in the interview, keep in mind that one might be a fantastic developer and still fail interviews without practice. So learn what you can from this experience and let it go after.

Disclaimer, this is more for backend type of interviews. Always ask the people what the interview process would be in detail so that you can prepare. Good luck!

--

--

Mariana Bocoi

I have been around tech for many years now; we have a complicated relationship. I like to explore have fun. My latest focus is cloud and system design.