π Technical Interviews
Technical Interviewsβ
A technical interview, or technical portion of an interview, will focus on your coding knowledge and problem solving skills. The purpose is to get an idea of how you think, and what strengths you can bring to their company.
A technical interview is, for many, the most stressful part of the job-hunting process. Coding is hard enough on your own or with a pair, but now you're going to be asked to solve coding and pseudo-coding problems in front of potential employers. The key is to practice before the real thing, so you're not too nervous when you're in the real thing.
Job interviews can take many formats. Some employers will conduct a pairing interview, where you'll pair program with your interviewer. Sometimes this will be on a standard problem the employer uses to evaluate candidates; sometimes it will be on real work that the employer has; and occasionally they may ask you to pair on one of your own projects. This is an excellent interview format, as it tests what you'll actually be doing on the job, and doesn't really require any special prep. Unfortunately, only a minority of employers use this format.
Another common format is to send you requirements for a simple program, ask you to solve it on your own time without outside help, and send them back a solution. This could be a full-blown web app or just a simple server-side or JavaScript program. A variation on this format is to ask you to come into their office and build the app on your own, within a couple hours. Again, this format is fairly nice because it tests the way you work, and doesn't really require a whole lot of special preparation.
Whiteboard Questionsβ
The more difficult interviews will involve answering technical questions out loud, or "whiteboarding" a solution to a coding problem β sketching out a visual and/or pseudo-code solution to a problem, and talking out loud about your thought process as you go. This is one of the most common interview formats, and where you should spend a good amount of extra time preparing.
There are three things you should make sure to do when you get an in-person technical question:
- Ask clarifying questions. Often, your interviewer will intentionally be vague about something or leave out information. Don't be shy about asking for clarification or more information!
- Think out loud. Even when you have no idea where to go, don't just stand there silently. The interviewer wants to hear your thought process, even if it's just you coming up with ideas and then saying why they won't work or are wrong. You should strive to talk constantly.
- Admit when you don't know something. When you don't know something, it will be obvious to the interviewer. If you try to "BS" your way through a question, you will most likely not get the answer, or the job. Just say "I don't know," or if applicable, "I don't know, but here's how I might figure it out."
An excellent practice method for this type of question is to find a resource for code challenge questions, and practice talking out loud while you solve the problem. You can do this while writing the answer on a sheet of paper, or even with a dry-erase marker on the bathroom mirror. The main practice point is to write the code by hand, and explain what you're doing while you're doing it. Here are some sample challenges to work on from CoderByte. You can find many additional sample code challenges online.
- Using the JavaScript language, have the function
Flip(str)
take thestr
parameter being passed and return the string in reversed order. - Using the JavaScript language, have the function
Factorial(num)
take thenum
parameter being passed and return the factorial of it (ie. if num = 4, return(4 3 2 * 1)). For the test cases, the range will be between 1 and 18. - Using the JavaScript language, have the function
Cipher(str)
take thestr
parameter being passed and modify it using the following algorithm. Replace every letter in the string with the letter following it in the alphabet (ie. c becomes d, z becomes a). Then capitalize every vowel in this new string (a, e, i, o, u) and finally return this modified string.
Open Questionsβ
Another type of question you get in a technical interview may not require you to code at all. These questions may come in addition to a code question, and are open ended discussion questions designed to give you a chance to showcase your knowledge. It's important to take advantage of these opportunities, as you have the freedom to highlight your strongest area of knowledge.
Here are some sample interview questions. (adapted from hiringthing) Practice answering these questions, and consider how the answers could form excellent talking points as you work through a technical coding question.
Here are the React Specific Interview Prep Questions
- What is a framework, and why use it?
- Name every database association relationship.
- What is an ORM?
- What is a migration?
- What is a route?
- What is the difference between POST request and a GET request?
- What is Git and why would you use it?
- Which JavaScript frameworks do you have experience with? What are the strengths of those frameworks?
- What happens when a user logs into a website?
- What is a class?
- What is an object?
- What is a module? How's it differ from a class?
- Why use a module? Give an example.
- Give an example of recursion.
- What is unit testing?
- What is integration testing?
- What happens when a user types in a URL?
- What is string interpolation?
- How do local and instance variables differ?
- What is a foreign key?
- What is REST?
- What is a partial?
- Pretend I'm another programmer who has never used Drupal/.NET/Railsβ explain to me how an app is structured, and why it's a good framework for web apps.
- How do you decide what logic should reside in the models vs. controllers?
- Describe your workflow when writing tests and features.
- What do you think the best practices are for branch management in a multi-developer project?
- Show me some code you wrote that you're especially proud of.
- Talk about a time that you solved a difficult coding problem.
- Explain polymorphism.
- How would you parse a JSON string?
- Describe a class and an object.
- What happens in a GET, POST, and PATCH request?
- I want to update something. What type of request would that be?
- What is HTTP and why do we use it?
- What is the difference between a private and public method?
- How would you grab an element from the DOM with jQuery?
- Describe a callback function.
- What is an array?
- Explain MVC.
- What is a join table in SQL?
- Explain why you should escape user input into SQL statements.
- Describe object inheritance.
- What is floating in CSS?
- What are media queries and how do you use them?
- How do you make images usable for blind people who are using a screen reader?
- What's the difference between =, ==, and === in JavaScript?
- What's the difference between an undefined and undeclared variable in JavaScript?
- What's your favorite language and why?
- You've been working on a site for a couple months here at our company. You come in one day and the site is down. What do you do?