Thumbnail for How to prepare for Google’s technical interview questions by Life at Google

How to prepare for Google’s technical interview questions

Life at Google

7m 46s1,516 words~8 min read
Auto-Generated

[0:00]Interested in learning how to prepare for a technical interview at Google? If so, you're in the right place. I'm, a technical recruiter here at Google. And I'm Jules, a program manager. Before we get started, note that while this video is focused on preparing for technical questions, we've also made videos explaining how to prepare for non-technical interviews and how our hiring process works. Both of these videos contain useful information that will help you prepare for your Google interviews, so be sure to check them out under the how we hire playlist, linked in the description below. Now let's get into it. Let's start by talking about interview logistics. These days, most of our interviews take place virtually on Google Meet video calls. Once your virtual interviews have been scheduled, you'll receive an email confirmation from someone on our recruiting team. In this email, they'll share your interview date, time, and a link to your Google Meet session. In order to have a more seamless interview, you want to make sure you have the following: One, a computer or laptop that's compatible with Google Meet, two, a webcam if your computer doesn't have one, three, a phone in case there are issues with audio or video, and four, your preferred methods for note taking and sharing coding or design work. A common question we hear is what to wear. You can check with your recruiter for specifics, but these are the clothes that we wear every day, and are probably similar to what your interviewer will be wearing. Also note that your interviewer will be taking notes either on paper or on a laptop. Before jumping into more specifics about preparing, we want to note that not all of our interviews for every role are the same. While this video will provide a basic overview of what you may be asked, exact interview types will vary by role. For example, interviews for site reliability engineering roles will differ from those for machine learning. Depending on the role and experience level, you may be expected to know more about coding, algorithms, systems design, or other domain areas. Interview expectations also change with your seniority and experience level. All applicants will likely have at least one interview focused on more generalist skills and one focused on more specialized skills. The more senior the role you're applying for, the more subject matter expertise you're expected to have, so be sure to ask your recruiter for more specific technical expectations for the role and level you're applying for. As always, if you need any interview accommodations, our recruiting team is here to help. From sign language interpreters to specialized equipment, and from interview breaks to extended time, we aim to provide the support you need so you can keep the focus on your interviews. All you need to do is inform your recruiter that you need accommodations, no need to share the details, and they'll connect you with our candidate accommodations team. During the interviews, you may be asked to build and develop algorithms and data structures, solve logic problems or design systems, all in the shared document with your interviewer. You'll also be tested on your core computer science principles. Think subjects such as data structures and algorithms, coding design, sorting and trees, big O notations and APIs. You won't be working out of an IDE or compiler, so we always recommend practicing your code in a whiteboard, Google Doc, or a piece of paper. In general, you want to show your interviewer your problem solving skills and coding fluency. For example, if it's a coding question, it's important to provide efficient prototype code in a short time frame when solving the problem. If it's a systems design or algorithms question, show that you understand all aspects of the problem by offering multiple solutions and discussing their relative merits. You should focus your preparation on the following areas. First, coding, unless the role requires something more specific, you should feel comfortable coding in a language of your choice. You'll be expected to know how to test your code and how to come up with corner and edge cases. You'll also be expected to be familiar with common data structures and how to assess and improve the space and time complexity of an algorithm. Applicants should also be comfortable with testing. Questions you may be asked include, how would you unit test the code you write, or what interesting inputs or test cases can you think of? For a system design interview, you may be asked, how would you design end-to-end integration, load and performance, or security tests for a real world system like Gmail? Similar to algorithms, you should also have a solid understanding on data structures, so be sure to study up on as many as possible. Be aware of the most known classes of NP complete problems, such as traveling salesman and the napsack problem. That way, you'll be able to recognize them if your interviewer asks. It's also good to know about arrays, hash tables, linked lists, graphs, trees, stacks and priority queues. What underlines all of this is the need to have strong quantitative skills, counting problems and probability problems surround us. Spend some time before the interview refreshing your memory or learning the essentials of elementary probability theory and combinatorics. You should also be familiar with N choose K problems and others like it. This also means you should know your graphs. Knowing graph algorithms for distance, search, connectivity, and cycle detection may help you find the solution to the problem. There are three basic ways to represent a graph in memory: objects and pointers, matrix, and adjacency list. Be sure to familiarize yourself with each representation and its pros and cons. You should also know the basic graph traversal algorithms: breadth-first search and depth-first search, as well as the computational complexity, trade-offs and how to implement them in real code. It's also important to brush up on recursion. Many coding problems involve thinking recursively and potentially even coding a recursive solution. Prepare for recursion and dynamic programming questions, both which can sometimes be tricky if not approached properly. And finally, familiarize yourself with system design, particularly if you have many years of industry experience. We'll expect you to have system design experience, though your recruiter will let you know if this is the case. As a result, we'll ask questions to test your ability to combine knowledge, theory, experience, and judgment. This will show us your approach to a real world engineering problem. The interviewer will test your ability to design a system under certain constraints, potentially touching upon topics like interfaces, distributed systems, limitations, robustness, and considering trade-offs. You should also have an understanding of the internet as a whole, actually working at a high level. If you'll be doing a systems design interview, study up on operating systems. You should understand processes, threads, concurrency issues, locks, mutexes, semaphores, monitors, and how they all work. You should also understand deadlock and livelock and how to avoid them. Know what resources a process needs and a thread needs. Understand how context switching works including how it's initiated by the operating system and underlying hardware. Now that you know the technical areas to brush up on, try not to forget these key approaches. First, be sure to explain and clarify your answers. Talk to us, show us your work and explain your thought process and decision making throughout the entire interview. We're not just evaluating your technical abilities, we're also interested in understanding how you approach and try and solve problems. You should also be able to verbalize and check your assumptions to ensure they are reasonable. This involves asking clarifying questions if you don't understand a problem or need more information. Many of the questions asked in our interviews are deliberately vague because our engineers are looking to see how you engage the problem. After providing a solution in the interview, think about ways to improve your proposed answer. In many cases, the first solution that springs to mind isn't the most elegant and may need some refining. Talk through your initial thoughts with the interviewer. Jumping immediately into presenting a brute force solution will be less well received than trying to take time to compose a more efficient solution. And finally, practice, practice, practice. Be sure to test your own code and ensure it's easily readable without bugs. Find problems, write the code, and solve them. Be mindful of your pace because we do factor that into our evaluation. Ultimately, there's no better way of practice than actually writing these algorithms. And if you can find a friend to help you with a mock interview, you'll be even more prepared. And that's it. Hopefully this video has helped you prepare for your technical interview at Google. Be sure to follow our life at Google and Google Students social media channels and visit our career site to learn more about our roles, culture, people, and products. Good luck with your preparation.

Need another transcript?

Paste any YouTube URL to get a clean transcript in seconds.

Get a Transcript