Oh technical interviews, don't you love them? It's always a complete wild card in what you get. Sometimes you have to program snake on a whiteboard and other times you're asked to create a two way path finding algorithm in Google Docs. But there's always one constant - question time.
The worst thing you can do in a technical interview is not ask questions at the end. Yes, you could bomb every question and say gibberish to try and BS your way through it (I've done both 😅), but the last impression your interviewer will have of you are the questions you ask. Not only that, but how often do you get to fire technical questions at a stranger and they answer them? Use this moment to learn! Also, not asking questions will likely make the interviewer think you're not interested in the job.
Without further ado, here they are!
I love this question for so many reasons. First, it levels the playing field for you as a candidate in the interview. The entire time you've been grilled and told how to do XYZ, but now you can strike back. I've never seen, worked, or heard of a dev team that's 100% happy with their testing strategy. The reason is because there's so many outside factors that play into delivering software that deadlines and budgets normally cut testing. You'll normally hear something like this, "Good question, right now we're doing doing unit tests on the backend and have some integration tests. We'd like to do a lot more testing on the client, but things are more fluid. We also have a couple end to end tests, but we still have a QA team that does a lot of the work."
It is also extremely interesting to hear how companies handle testing, and you may be surprised by how fast and loose large and reputable companies play it. This is rare information you won't find on the internet.
Most importantly, it shows that you thought about it. If you're a junior dev or bootcamp grad you've probably never written a test, but now you just jumped up relative to your peers because you asked the question.
Oh boy, this gets an interesting response every time. CI = Continuous Integration. CD = Continuous Delivery. If you're not familiar with the concepts, they are a set of practices for delivering code more frequently and reliably. For instance, when you work on a team and deploy your code you don't want everyone shooting off deployments from their local machine. CI/CD allows you automate deployments, run tests, and deploy to different infrastructure easily.
Every company handles this differently, and the big players you'll hear about a lot are Jenkins, CircleCI, Travis, and Bamboo. If this is your first job you've probably never heard of this stuff or had to set it up. Make sure to listen and follow along with how they answer. You normally get a tour of their infrastructure, what their security requirements are, and a couple fun stories if they're using Jenkins (he's fiddly).
As a bootcamp grad, the largest gaps I had in my first job were software engineering practices. I could "make it go" yet had no idea what I was doing. These questions show you're thinking about more than just the role you're interviewing for.
What if the company doesn't write tests and has no CI/CD you may ask? Run. Run fast and far. 🏃♂️