Beyond the in-person interviews endemic to most coding jobs, there is also a nasty set of interviews tied to technical understanding.
Ironically, a technical interview does not test one’s capacity for software development. Instead, it’s a rigor of 30-60 minutes to solve a coding question that is supposed to demonstrate how well you understand data structures and algorithms.
Thus, since it’s standard practice in most companies to use a technical interview for software developers, practicing for a coding interview is vital for getting a job, even if it has little to do with the job itself.
It’s worth noting that technical interviews may feel like a competition against the system, but your real competition is the other candidates looking for the job.
There are way too many questions to practice in advance, so instead it’s better to visit questions from companies you’re planning to interview at instead.
- If the company hasn’t been clear on what questions they’ll likely use, try to find an analogous company (e.g., if it’s a large cloud storage service, try to use the interview questions from Dropbox).
Focus heavily on topics more than answers. You can usually find how a concept connects, then find an answer from existing knowledge you already have.
One of the downsides of the technical interview is that you usually get to choose your language.
- This sounds like a good thing, but the engineer interviewing you may not be familiar with a particular language, and won’t be able to help you if you get stuck somewhere.
- The easy solution to this is research beforehand online about what languages that engineer does know, and only use those.
During the interview, think out loud. It demonstrates that you actually are thinking of an answer, and the interviewer gets to see your flow of logic. Often, they may even help you along.
- They’re testing your competence at solving problems, not technically whether you can solve the problem they’re giving you.
System Design Interviews
System design interviews are another unique aspect of the tech industry, though they’re not as ubiquitous as coding challenges.
They’ll test your skills at understanding how programs and systems are designed, and there’s really no way to prepare directly for them. All you can do is understand the core mechanics of how a computer system works, and then answer the questions they give.
Even when you have tons of experience designing systems, the interview is testing your ability to articulate how those systems work in plain language. It helps to watch videos and read books on those subjects, even with tons of hands-on experience.
Ask questions about things you don’t understand. You do not fully understand their system, and it shows you have humility to accept that fact.
Try to stay on-topic with high-level concepts, then drill into the details as needed. It’s not uncommon for technically-savvy people to get very entrenched in the details and lose track of how much time they’re discussing a smaller portion of the greater whole.