Work at Google: How to Communicate in Technical Interviews & What to do When You're Stumped

Google Students
11 Feb 201731:10

Summary

TLDRIn this YouTube session, Google software engineers discuss the interview process for full-time candidates, covering steps like coding samples, phone interviews, and on-site interviews. They emphasize the importance of clear communication, understanding the problem, and demonstrating thought processes. Tips for phone interviews and handling being stuck are also provided, aiming to make the process less intimidating.

Takeaways

  • 😀 The interview process at Google involves an initial coding sample and survey, followed by phone interviews and an on-site interview day with multiple 45-minute interviews.
  • 🔍 The purpose of the coding sample is to demonstrate the ability to write good code without using outside resources within a time constraint.
  • 📝 Phone interviews are conducted using a Google Doc to write code, which tests the candidate's coding skills in a basic text environment.
  • 🤝 On-site interviews are a mix of technical and behavioral assessments, aiming to understand the candidate's capabilities and fit within the team.
  • 💡 It's important to communicate effectively during the interview, starting with a naive solution to a problem and then discussing optimizations.
  • 🔑 Discussing edge cases early in the interview shows maturity and understanding of robust code writing.
  • 📚 The interviewers are looking for fundamental programming concepts, appropriate data structures, and language proficiency.
  • 👀 Reading and writing clear and concise code is crucial; the code should be easy for the interviewer to understand at a glance.
  • ✅ The interview's main goal is to have working code by the end, with the interviewer guiding the candidate to a solution.
  • 🗣️ Practice and preparation are key, with resources like 'Cracking the Coding Interview' and online platforms like TopCoder for mock problems.
  • 🧠 It's okay to not know everything; interviewers are interested in how candidates handle unknowns and work through problems.

Q & A

  • What is the first step in the Google interview process for full-time candidates?

    -The first step is to complete a coding sample and survey. This is an online task where candidates need to write good code within about an hour without using outside resources.

  • How many phone interviews can a candidate expect during the Google interview process?

    -Candidates can expect to have a couple of phone interviews, usually two, maybe three. These interviews are conducted over a Google Doc where candidates write code.

  • What is the purpose of the on-site interviews at Google?

    -The on-site interviews are conducted over the course of a day with about three to four interviews, each about 45 minutes in length. The purpose is to get a well-rounded understanding of the candidate as an individual and a professional.

  • How should candidates approach problem-solving during the interview?

    -Candidates should start by giving the naive solution first to demonstrate their understanding of the problem. They should also discuss edge cases and then methodically talk about different ways to solve the problem.

  • Why is it important for candidates to communicate effectively during the interview?

    -Effective communication is crucial as it helps the interviewer understand the candidate's thought process, approach to problem-solving, and ability to present themselves clearly, which are all important skills in a team environment.

  • What are some tips for candidates during phone interviews?

    -Candidates should use a readable font like Courier New, reduce the font size, turn off spell-check and autocorrect, ensure they are in a quiet room with a reliable Wi-Fi connection, and use a headset if possible.

  • How can candidates prepare for the on-site interviews at Google?

    -Candidates can prepare by practicing coding on a whiteboard, ensuring their code is modular and easy to read, and understanding the fundamental programming concepts and appropriate algorithms for different problems.

  • What is the role of the interview committee in the hiring process at Google?

    -The interview committee reviews all the information from the interviews and decides whether or not to hire a candidate and at which level, based on a comprehensive assessment of their skills and performance.

  • How should candidates handle situations where they are unsure or stuck during the interview?

    -Candidates should be honest about their uncertainty, ask for clarification, and walk through their thought process. Interviewers are there to help and may provide hints or explanations to guide the candidate.

  • What resources are recommended for candidates preparing for a technical interview at Google?

    -Candidates are recommended to use resources like 'Cracking the Coding Interview' book, TopCoder, and Google's own resources such as videos on the Google Students YouTube channel.

Outlines

00:00

👋 Introduction to the YouTube Session

The session begins with Pierre St Juste, Jonathan Drake, and Lauren Long introducing themselves as software engineers at Google with varying tenures and roles. They explain the purpose of the session is to share insights on the Google recruiting process, including their experiences with interviews and recruiting events. The audience is encouraged to engage in the chat and ask questions, emphasizing the interactive nature of the session.

05:01

📝 Overview of the Google Interview Process

Jonathan Drake outlines the Google interview process for full-time candidates, starting with a coding sample and survey, followed by phone interviews using Google Docs, and culminating in on-site interviews at a Google office. He emphasizes the independence of each interview and the committee review process that follows. Lauren Long adds that communication during the interview is crucial, and Pierre St Juste discusses the importance of problem analysis and addressing edge cases.

10:03

🤔 Navigating Technical Problem-Solving in Interviews

Pierre St Juste provides strategies for approaching technical problems in interviews, such as starting with a naive solution and discussing edge cases. He stresses the importance of understanding fundamental programming concepts, appropriate data structures, and algorithmic complexity. The interviewer's role is to guide the candidate to a working solution, and code readability is highlighted as a key factor. Additionally, reiterating the problem-solving approach after 10 minutes is recommended to ensure clarity.

15:07

📞 Tips for Successful Phone Interviews

Lauren Long offers advice for phone interviews, such as using a readable font in Google Docs, turning off spell-check and autocorrect, and preparing a calm environment with tea or water to maintain a smooth voice. She also suggests using a headset to free up hands and emphasizes the importance of thinking out loud and communicating clearly with the interviewer due to the lack of visual cues.

20:08

🚫 Avoiding Common Pitfalls During Interviews

Jonathan Drake advises against jumping straight into coding and instead taking time to ask clarifying questions, consider edge cases, and articulate a plan to the interviewer. He encourages candidates to write real code that could nearly compile, rather than pseudo code, and to avoid forcing solutions or prematurely optimizing. Pierre St Juste adds that it's better to draw from past experiences than to memorize and reuse specific solutions.

25:09

🧠 Handling Challenges and Uncertainty in Interviews

The speakers discuss how to handle being stumped during an interview, emphasizing that it's normal and providing examples of how they've overcome similar situations. They suggest walking through one's thought process, being open to learning new data structures during the interview, and maintaining a calm demeanor. The interviewers' goal is to help candidates succeed, so asking for hints is acceptable.

30:11

📚 Recommended Resources for Interview Preparation

Pierre St Juste recommends 'Cracking the Coding Interview' as a comprehensive resource to alleviate anxiety and build a foundation for the interview. He also mentions online platforms like TopCoder and Decode for practice. The importance of daily practice is highlighted, along with the goal of increasing familiarity with problem-solving.

🤝 Addressing Questions on Coding Versus Other Abilities

The panel discusses the balance between coding abilities and other skills valued by Google, such as communication. They emphasize that while coding is a significant part of the job, the ability to convey thoughts clearly and work within a team is equally important. The interview process aims to assess these skills alongside technical proficiency.

🔍 Dealing with the Pressure of On-Site Interviews

Lauren Long acknowledges the intensity of having five interviews in one day and provides tips to manage the experience. She suggests taking advantage of the lunch break to relax, staying hydrated, and ensuring a good night's sleep before the interview day. The lunch interview is a non-evaluative opportunity to learn more about the company or to rest.

📖 Examples of Code Activities in Google Interviews

Jonathan Drake confirms that there are many examples of Google interview questions available, both on the YouTube channel and through a simple web search. He mentions that while some questions may no longer be used in interviews, they still provide insight into the types of problems and the scope that candidates might encounter.

😅 The Challenge of the First Five Minutes in an Interview

Pierre St Juste identifies the initial five minutes of an interview as the most challenging due to anxiety and the pressure to perform immediately. He advises candidates to push past this mental hurdle by establishing a naive solution as a starting point for further optimization and discussion with the interviewer.

🖋 Tips for Coding on a Whiteboard

Lauren Long points out the difficulty of transitioning from coding on a computer to coding on a whiteboard and offers tips for effective whiteboarding. She recommends practicing on paper to ensure legibility, proper indentation, and syntax without the aid of a text editor, which is crucial for clear communication during interviews.

🛠 Acceptability of Non-Optimized Solutions

The panel agrees that while having an optimized solution is ideal, it is acceptable to present a working solution that may not be the most efficient, as long as it is somewhat efficient. The focus is on the thought process and the foundational computer science concepts applied to arrive at the solution.

🌟 Adapting to Unknown Data Structures During Interviews

Pierre St Juste shares his experience of being unfamiliar with a data structure during an interview and how he was able to adapt by asking the interviewer for clarification. He suggests that candidates should not be discouraged by unknown data structures and should instead focus on understanding their properties and incorporating them into their solutions.

📝 Evaluating Coding Quality in Interviews

Lauren Long discusses the importance of coding quality during interviews, emphasizing that while minor syntax errors are overlooked, the structure, modularity, variable naming, and appropriate use of algorithms are evaluated. She advises practicing writing code on a whiteboard to ensure it is readable and well-organized.

🤔 Number of Questions in Each Interview

Jonathan Drake explains that the number of questions in each interview varies and depends on how the interview is structured. He describes scenarios where one complex question might evolve into multiple parts or where several short, independent questions might be asked, highlighting the flexibility of the interview process.

📌 Final Tips for Interview Success

The panelists offer final advice for interviewees, focusing on communication, establishing a naive solution early, and leveraging the interviewer's help. They stress the importance of staying calm, moving on from any missteps in previous interviews, and understanding that interviewers are there to assist in finding a solution.

Mindmap

Keywords

💡Software Engineer

A software engineer is a professional who applies the principles of software engineering to the design, development, maintenance, testing, and evaluation of computer software. In the video, Pierre St Juste, Jonathan Drake, and Lauren Long all identify themselves as software engineers at Google, emphasizing the role's importance in creating and improving Google's various technologies, such as Google Assistant and search ranking.

💡Google Assistant

Google Assistant is a virtual assistant developed by Google that is capable of interacting with users through voice commands and providing information, managing tasks, and controlling smart home devices. Pierre St Juste mentions working on Google Assistant for Android, highlighting its function in responding to voice queries like 'OK, Google, what time is it'.

💡Recruiting Process

The recruiting process refers to the steps an organization takes to attract, screen, and hire suitable candidates for job positions. Jonathan Drake discusses his involvement in university recruiting and conducting interviews, indicating the structured approach Google takes to identify and select potential employees.

💡Coding Sample

A coding sample is a piece of code written by a candidate to demonstrate their programming skills as part of a job application, often used in technical roles. Jonathan Drake explains that the first step in Google's interview process is for candidates to complete a coding sample to showcase their ability to write good code within a given time frame without external resources.

💡Phone Interviews

Phone interviews are preliminary interviews conducted over the phone to screen candidates before they proceed to in-person interviews. The script mentions that after a successful coding sample, candidates go through phone interviews where they write code in a Google Doc, illustrating the early stages of Google's remote interviewing process.

💡On-site Interviews

On-site interviews are conducted at the company's premises and often involve multiple interviews with different team members. Jonathan Drake describes the on-site interview experience at Google, which includes a series of 3 to 4 interviews throughout the day, each lasting about 45 minutes, to assess a candidate's skills and fit for the company.

💡Interview Committee

An interview committee is a group of individuals who review and evaluate candidates' interview performances to make hiring decisions. The script mentions that after the on-site interviews, the candidate's information is reviewed by a separate group of people, the interview committee, who decide whether to extend an offer and at what level.

💡Edge Cases

Edge cases are the extreme or unusual scenarios in software testing that determine the robustness of the program. Pierre St Juste emphasizes the importance of discussing edge cases during an interview, as it demonstrates a candidate's maturity and thoroughness in writing code that can handle various input scenarios.

💡Algorithmic Complexity

Algorithmic complexity refers to the amount of time and space resources an algorithm needs to complete, often expressed in terms of input size. Pierre St Juste mentions the importance of understanding algorithmic complexity during interviews, as it reflects a candidate's grasp of fundamental programming concepts and their ability to write efficient code.

💡Technical Interview

A technical interview is a type of interview that assesses a candidate's technical knowledge and problem-solving skills, often required for positions in software development or engineering. The video script provides various insights and tips on how to prepare for and excel in a technical interview, particularly for a software engineering role at Google.

💡Communication Skills

Communication skills are the ability to effectively convey information and ideas to others. Pierre St Juste highlights that, in addition to coding skills, Google values a candidate's communication skills during the interview process, as it is crucial for team collaboration and task execution.

💡Whiteboard Coding

Whiteboard coding is the practice of writing code on a whiteboard during an interview to demonstrate problem-solving skills without the aid of a computer. Lauren Long suggests practicing whiteboard coding to get comfortable with writing legibly and following syntax without the assistance of a text editor.

💡Optimized Solution

An optimized solution in programming refers to a solution that is efficient in terms of time and space complexity. Pierre St Juste clarifies that while interviewers are interested in a candidate's thought process towards an optimized solution, they are not necessarily looking for the most optimized solution but rather a demonstration of foundational computer science concepts.

💡Data Structures

Data structures are specialized formats for organizing, processing, retrieving, and storing data. The script discusses the importance of understanding various data structures like hash maps, sets, and prefix trees in coding interviews, as they are fundamental to creating efficient algorithms.

💡Interviewer's Role

The role of an interviewer in the context of the video is not only to assess the candidate's skills but also to guide and help them arrive at a solution. Pierre St Juste and Jonathan Drake both mention that interviewers at Google are there to assist candidates and encourage them to ask for hints if needed.

Highlights

Pierre St Juste introduces himself as a software engineer at Google and his role in Google Assistant for Android.

Jonathan Drake shares his experience as a software engineer on the search ranking team and his involvement in university recruiting.

Lauren Long discusses her role as a software engineer on Firebase and her recent experience with the recruiting process.

The interview process at Google involves an initial coding sample and survey, followed by phone interviews and an on-site interview day.

Phone interviews are conducted over Google Docs, emphasizing the importance of clear communication and coding within the platform's limitations.

On-site interviews consist of multiple 45-minute sessions with breaks in between for questions and interaction.

Interviews are designed to be independent, allowing for a well-rounded understanding of the candidate's abilities.

Candidates are encouraged to demonstrate problem-solving by first providing a naive solution and discussing edge cases.

Interviewers assess fundamental programming concepts, data structures, algorithmic complexity, and language proficiency.

Code readability is crucial, with a preference for concise and maintainable solutions.

Interviewers provide guidance to help candidates develop working solutions during the interview.

Candidates should reiterate their approach and progress regularly to ensure the interviewer follows their thought process.

Google Students YouTube channel offers resources like 'How to Ace the Technical Interview' to prepare for interviews.

Tips for phone interviews include using a readable font, disabling autocorrect, and ensuring a quiet environment.

Candidates should think out loud, use comments effectively, and communicate their thought process clearly during interviews.

Interviewers prefer real code that could nearly compile over pseudo code, except for initial algorithm explanations.

Candidates should avoid trying to force-fit memorized solutions to interview questions.

Interviewers value a candidate's ability to learn and apply new concepts during the interview.

Candidates are encouraged to ask for hints and leverage the interviewer's help to reach a solution.

The interview committee reviews all interview feedback to make hiring decisions, emphasizing the importance of diverse opinions.

Final tips include communicating effectively, starting with a naive solution, and staying calm throughout the process.

Transcripts

play00:01

PIERRE ST JUSTE: All right.

play00:03

Welcome, everyone to our YouTube session.

play00:06

First thing, please go to the RSVP link

play00:08

and fill out the form.

play00:10

If you are watching a recording, you

play00:11

don't need to worry about that, just sit

play00:13

back and enjoy the show.

play00:15

And we have a chat.

play00:17

Make sure you go and engage in the chat.

play00:19

We have chat moderators which will answer your questions,

play00:22

and want this to be as interactive as possible.

play00:24

So feel free to use the chat as we go.

play00:29

So I am Pierre St Juste.

play00:33

I am a software engineer at Google.

play00:35

I've been at Google for about a year and a half.

play00:37

I work on the Google Assistant for Android.

play00:40

So if you have a pixel phone and you say,

play00:42

OK, Google, what time is it, I help make that happen.

play00:45

And I am here because I do a lot of recruiting events.

play00:48

I've been to different schools, I do a lot of interviews,

play00:53

and I'm really excited about sharing

play00:55

of my wisdom about the process.

play00:58

JONATHAN DRAKE: Yeah.

play00:59

Hi, my name is Jonathan Drake.

play01:01

I'm also a software engineer, and I work

play01:03

on the search ranking team.

play01:05

I'm also involved in university recruiting

play01:07

and been at Google for a little over two and a half years.

play01:10

And for a lot of that, I've been doing about one interview

play01:13

a week, interviewing new candidates,

play01:15

and I think this will be my week of my 50th interview.

play01:20

LAUREN LONG: What?

play01:22

So hey, everyone.

play01:23

My name is Lauren Long, and I'm also a software engineer.

play01:27

I work on Firebase as the developer product.

play01:30

I've been in the San Francisco office for eight months now,

play01:33

so I've recently gone through the recruiting process

play01:36

and looking forward to talking to you more about that today.

play01:41

JONATHAN DRAKE: All right.

play01:43

So I'm going to tell you a little bit about your interview

play01:46

experience here as a full-time candidate.

play01:49

So let me just explain the way we have this process set up.

play01:53

The first step is to complete a coding sample and survey.

play01:58

Your job is to send us a sample of your writing good, nice

play02:04

code.

play02:05

This is an online thing that you'll complete.

play02:08

I think you have about an hour to do it.

play02:09

You're not allowed to use outside resources.

play02:12

The point is just to show us that you can write good code.

play02:16

And then assuming that goes well,

play02:18

then you have a couple of phone interviews,

play02:19

usually two, maybe three.

play02:21

And these are done over a Google Doc,

play02:24

and you'll write code in this Google Doc,

play02:27

fighting a little formatting.

play02:28

The point is to show us that you know what you mean well enough

play02:31

to even do it in a Google Doc.

play02:33

And this will be followed up by coming to a Google office

play02:39

to do on-site interviews.

play02:41

So over the course of a day, starting in the morning,

play02:43

having lunch, going through the afternoon,

play02:45

you'll have about three to four interviews.

play02:47

These are each about 45 minutes in length,

play02:49

and you have a little bit of time

play02:50

between to ask questions to your interviewers.

play02:52

It's as much a time for you to get

play02:54

to know us as it is a time for us to get to know you.

play02:57

And in that process, I'd say try to have fun.

play03:02

Each interview is independent, not only from each other,

play03:05

but from your phone interviews and your coding assessment.

play03:08

It's all separate.

play03:10

The idea is to get a bunch of different opinions

play03:12

to allow no one bad or especially good

play03:15

experience, either just mess up anything overall.

play03:18

You want to have a nice, well-rounded understanding

play03:21

of you as a candidate.

play03:23

And that's how the on-site process goes.

play03:26

After that, your interview packet, all this information,

play03:30

now goes to a separate group of people who review it.

play03:33

And this committee decides whether or not

play03:34

to hire you at which level, and hopefully, then

play03:37

you get your offer after that.

play03:40

I think that's all for that.

play03:46

LAUREN LONG: So one thing that we want to address

play03:49

is how you communicate during this interview.

play03:53

And you might be doing some practice questions,

play03:56

you might be learning a lot of technical things,

play03:58

but you'd also want to focus on ensuring that you communicate

play04:02

and present yourself effectively during this process.

play04:07

So Pierre is going to cover that a bit.

play04:09

PIERRE ST JUSTE: So how do you do this?

play04:12

The way you do this is we want to see how the candidate

play04:15

analyzes the problem.

play04:17

And what this means is one very easy trick

play04:21

is when you get the question, you

play04:23

give the naive solution first.

play04:25

So you said, OK, this is the problem.

play04:28

One very basic way to do it is to solve it this way.

play04:31

So that way right out of the gate,

play04:33

you give the interviewer an understanding

play04:35

that you see how to approach the problem

play04:38

and you know how to solve it.

play04:40

It is also very important to talk about edge cases.

play04:43

When you talk about edge cases, you're

play04:44

demonstrating that you have some maturity with writing code.

play04:48

So are you going to get null inputs, empty strings,

play04:52

or whatever the different quantifications are,

play04:55

and that's something you want to handle first.

play04:57

When you start writing your code, at the very beginning,

play05:00

you handle your edge cases.

play05:01

That's very important.

play05:02

And once again, as you go through the process of first

play05:06

having the naive approach, then you can start more

play05:09

methodically, talking about the different ways

play05:12

you think about the problem to solve the issue.

play05:14

So we spend a lot of time looking

play05:16

at making sure you understand the fundamental programming

play05:18

concepts.

play05:19

Do you know the right data structures to use,

play05:21

do you understand algorithmic complexity.

play05:24

and do you have proficiency in that particular language

play05:28

that you're using?

play05:29

The main goal of the interview is

play05:31

to get you to have working code at the end.

play05:34

So at the interview, what the interviewer tries

play05:36

to do is help you along the way, make

play05:38

sure you have proper comprehension,

play05:40

and gives you the right guidance to make sure

play05:44

you have a working solution.

play05:46

Another piece that's extremely important

play05:48

is, is the code easy to read?

play05:50

A lot of the solutions that we're looking for,

play05:52

in many cases, you can write in about [INAUDIBLE] lines

play05:55

of code.

play05:55

And is it something that the interviewer can just

play05:58

look at and understand.

play05:59

If the code is getting too complex

play06:01

and it's hard to either read or maintain,

play06:03

you have a lot of unnecessary variables and things

play06:05

like that going on just cluttering the solution,

play06:09

then that's a sign that maybe you

play06:10

don't have a clear idea of what the solution could be.

play06:13

And finally, as you're writing code,

play06:16

I would say after 10 minutes or so,

play06:18

make sure you reiterate what you're trying to do.

play06:20

Make sure you say, OK, this is the overall idea I'm

play06:22

trying to make, and this is the step that I am

play06:25

and to make sure that the interviewer is always following

play06:29

and understand how you're presenting.

play06:30

So that is very important.

play06:33

JONATHAN DRAKE: And on the Google Students YouTube channel

play06:36

here, there's resources out there to help you.

play06:39

For example, there's a video called Applying to Google,

play06:41

How to Ace the Technical Interview.

play06:43

And that's another resource for you

play06:45

to see how to go about this process

play06:48

and not be intimidated by it and learn lots of good skills

play06:51

for doing well.

play06:53

LAUREN LONG: I want to talk a little bit about the phone

play06:56

interviews, in particular.

play06:57

So you might be especially nervous about these being

play06:59

you're on the phone.

play07:00

You're not able to see your interviewer.

play07:03

Here are some tips to ensure that you

play07:05

make the most of this interview as well.

play07:07

First is we do use Google Doc for you

play07:11

to show your code to your interviewer.

play07:13

So some things you can do before you even hop on the phone

play07:16

is changing your font to something readable,

play07:19

Courier New is one that we would recommend.

play07:21

Reduce the size so that you can fit more code into one screen.

play07:25

You also want to be turning off spell-check and autocorrect,

play07:28

so that while you're coding, you're

play07:30

not getting your variable names corrected

play07:32

to a different spelling.

play07:33

So that's very important.

play07:35

And some things I always like to do before a phone interview is

play07:38

I like to have a cup of tea and a cup of water nearby.

play07:42

And that ensures that my voice stays smooth

play07:47

because I notice when I'm nervous,

play07:49

I tend to crack at my voice.

play07:51

So if that happens to you too, you

play07:53

don't want to be sounding like Darth Vader on the phone.

play07:55

That won't be making for a very pleasant interview.

play08:00

experience.

play08:01

So ensure that you've got what you

play08:02

need for you to feel relaxed.

play08:04

You want to ensure that you're in a quiet room.

play08:06

If you live with roommates, tell them

play08:07

that you're going on a phone interview.

play08:10

Make sure you have a reliable Wi-Fi.

play08:12

Charger your phone.

play08:13

Charge your computer.

play08:14

Use a headset, if possible.

play08:15

I found that was better than holding up the phone

play08:18

because my hands were free.

play08:20

So those are just some tips to get you more

play08:23

comfortable with the setting.

play08:24

Other things you want to ensure is because you're on the phone,

play08:27

you're not able to communicate as much by drawing

play08:31

on the board, for example.

play08:33

So you want make use of things like commenting within the code

play08:37

to tell your interviewer exactly what you're doing.

play08:40

You also want to, just for your own sake,

play08:43

have some paper and pen nearby, so you can jot down ideas

play08:47

as you're going forward.

play08:48

Maybe write down things you want to come back

play08:50

to remind yourself.

play08:52

And we have one tip here using copy and paste.

play08:55

What we mean by that is sometimes

play08:58

you'll be asked do a solution and then improve on it

play09:02

for another iteration.

play09:04

Don't delete the previous solution,

play09:07

first fall, and don't rewrite it because that takes up time.

play09:10

You are very welcome to just copy your previous solution

play09:13

into a new page and improve upon that.

play09:17

And finally, the most important thing

play09:20

is to ensure that you are really thinking out

play09:22

loud and communicating.

play09:23

If you need a moment to think, make

play09:25

sure you tell your interviewer because they can't see you

play09:27

in person and you suddenly go silent on phone,

play09:30

they might think the connection is cut off.

play09:32

So make sure you just communicate a lot more than you

play09:35

would be if you were in person.

play09:38

JONATHAN DRAKE: Yeah.

play09:38

And a few more tips, I think, that

play09:41

are based on situations that you can easily avoid

play09:44

are when you first walk into the interview

play09:49

or when you first pick up the phone,

play09:50

you're going to have a little bit of time

play09:52

to do an introduction, and then you're probably going

play09:54

to jump right into a question.

play09:56

And your instinct might be to jump straight

play09:58

into just spitting out code.

play10:00

Try to, instead, take a little bit of time

play10:02

to ask clarifying questions.

play10:05

Gather requirements about whatever the problem is.

play10:08

Think of edge cases.

play10:10

Think of test cases.

play10:12

Try to articulate your plan, and get your interviewer's opinion

play10:16

on it because that way we can prevent you

play10:18

from going down a path that will lead you nowhere.

play10:21

We can save you some time.

play10:22

We can even offer you hints if you give us the opportunity

play10:25

to do that.

play10:27

So try to resist that urge to jump straight

play10:30

into just a quick solution.

play10:32

That said, it's OK to start with here's a brute-force approach.

play10:35

I can say that to you in five seconds.

play10:37

That's great.

play10:38

But when you get to the part of having a real big algorithm you

play10:41

want to try and explain, don't start writing it

play10:44

because we can help you.

play10:45

We can simplify it, and that will save you a lot of time

play10:47

and hopefully, make it easier online.

play10:51

Definitely go through examples at the beginning.

play10:54

If your interviewer doesn't give you an example,

play10:56

you should generate one yourself.

play10:58

Ask them, hey, is this what you mean?

play11:01

Is this one example representative of all of them,

play11:03

or could it be much more general?

play11:05

Is this a reasonable example?

play11:07

What do you think?

play11:08

Ask them specific questions about what the problem is

play11:11

talking about more than you would

play11:14

asking for just general help.

play11:16

Ask them something about what they've said.

play11:17

Repeat what they've said to you in your own words

play11:19

so that you can make sure you've understood

play11:22

and they can know that too.

play11:24

Another thing we like to see is real code in the sense

play11:28

that it could nearly compile.

play11:31

I'm not actually going to be mad at you

play11:33

for missing a semicolon or something, especially

play11:35

on a Google Doc, but that said, don't write

play11:38

purely pseudo code, except maybe as an initial explanation

play11:42

of an algorithm.

play11:43

There's lots of reasons for this.

play11:45

One is that at some point, you do actually

play11:47

have to be able to talk to the computers,

play11:49

and they need real code.

play11:50

And so we look for that in our interviews.

play11:52

That's how we see where your skills are

play11:54

reflected in an interview.

play11:57

But beyond that, another reason to write real code

play11:59

is that you can get away with stuff in real code

play12:03

that you can't with in pseudo code.

play12:05

For example, you can say, hey, is it all right

play12:07

if I have a subroutine that does this functionality?

play12:10

The interviewer might say, yeah, sure

play12:11

you can assume you have a method that does that.

play12:13

And then you can come back to it later,

play12:15

or if you've run out of time, your interviewer

play12:16

might say, yeah, I feel like you can finish that.

play12:18

Let's not even bother flushing out that tiny subroutine.

play12:21

Real Quick has real advantages, so use it.

play12:24

PIERRE ST JUSTE: So another thing

play12:26

that I think people tend to do is

play12:28

they go and do a bunch of practice questions,

play12:31

and they try to set the interview

play12:33

question to a practice question that they've seen before.

play12:36

So they go and they memorize this particular way

play12:39

of solving this problem, and they just hope

play12:41

and pray that they can just reuse what they've done

play12:46

to that particular solution.

play12:47

So in many cases, that doesn't work,

play12:49

that doesn't translate one to one that way.

play12:52

You definitely need to draw from your previous experiences

play12:57

of writing code and solving different problems

play12:59

to understand when to use a hash map,

play13:02

when to use a set, things like that.

play13:04

But don't think, OK, this is this exact problem,

play13:07

therefore, I need to remember this dynamic programming

play13:09

approach that I coded last night.

play13:11

So do not try to force fit a solution

play13:13

that you know very well to that particular problem.

play13:17

So some people, for example, they study recursion a lot

play13:20

before the interview.

play13:20

They study dynamic programming a lot,

play13:23

or they the study prefix tree a lot or red-black tree.

play13:26

And they think, OK, whatever question they ask me,

play13:28

I'm going to throw in the red-black tree.

play13:30

It's balanced.

play13:30

[INAUDIBLE]

play13:31

Let's do it.

play13:32

I'm in there.

play13:33

Try not to do that.

play13:35

Definitely, practice a lot, but whenever you see the problem,

play13:39

try to have a fresh look at it, and try

play13:41

to think of different components.

play13:44

The other thing that people do a lot is they

play13:46

tend to right at the beginning, they

play13:50

want to have the most efficient solution.

play13:52

And a lot of times they try doing this

play13:53

before they even fully understand

play13:55

the parameters of the question.

play13:58

So that's why it's always good to first give the naive

play14:02

approach to make sure you understand the problem,

play14:04

and then from that try to think of the different components

play14:07

of that naive approach and how you can solve it.

play14:09

So a lot of times, I have to tell interviewees,

play14:15

can you tell me what the naive approach

play14:17

would be because they may try to use a prefix tree or one

play14:20

of these advance data structures or dynamic programming.

play14:23

And then they would tell me what the naive approach is,

play14:26

and then I would ask them what was the complexity

play14:28

of this naive approach.

play14:29

They would give me the complexity.

play14:31

Then I ask them, what is the complexity

play14:33

of this other solution you're trying to propose

play14:35

that uses dynamic programming.

play14:36

In many cases, they would say, oh, wow.

play14:39

Actually, the dynamic programming approach

play14:41

is less efficient than the brute-force solution.

play14:44

At that point, then they realize that maybe they're

play14:47

trying to do the wrong thing.

play14:49

So definitely, being able to show us

play14:53

that you can do dynamic programming or recursion

play14:56

or use prefix trees are important,

play14:58

but make sure that you don't prematurely try to apply them.

play15:02

Because in many cases, in many problems they're not necessary.

play15:06

So just a traditional data structure

play15:08

is a traditional binary search, maybe heaps,

play15:15

and other data structures, hash maps,

play15:17

that can get you a long way.

play15:18

So definitely, do not feel like you have

play15:20

to pre-optimize that early.

play15:27

So now what if you're stumped?

play15:29

LAUREN LONG: What if you are stuck?

play15:30

First of all, it happens.

play15:31

It's happened to me many times as I was interviewing

play15:34

for companies eight months ago.

play15:36

It happened while on my Google interviews,

play15:38

actually, where I was asked to code up a solution as a warm-up

play15:44

to print a Fibonacci sequence.

play15:48

And I was so excited to code, I jumped right in.

play15:51

After I wrote it, the interviewer was very confused.

play15:54

And then I realized I just coded a factorial.

play15:57

So that was definitely something I was not supposed to do.

play16:00

But I took a deep breath, explained that I had wrongly

play16:04

assumed what I was supposed to do,

play16:06

clarified my understanding of what a Fibonacci

play16:08

sequence actually is, proceeded to code it,

play16:12

and I was, obviously, successful in that interview process.

play16:15

So that is to say, do you not worry

play16:17

if you end up going down a wrong path in the beginning

play16:20

of the interview.

play16:21

Do not worry if you completely mess up on your interviews.

play16:24

As we mentioned earlier, your interviews are independent.

play16:27

So especially when you come on site,

play16:28

you're going to have five in a day.

play16:30

Those interviewers do not talk to each other

play16:32

before they write feedback on you.

play16:34

So if you really felt like you messed up on one,

play16:37

just take a deep breath, go into the next one

play16:40

with a blank slate, and hope to do well on that one.

play16:43

So that's the most important thing is to keep cool.

play16:46

Other things that you can do to help you get unstuck

play16:48

is to walk through what you've do.

play16:51

So sometimes I find it helpful to just reiterate exactly how I

play16:54

get there, how I got there.

play16:56

And part of that talking process sometimes

play16:59

helps me to see a new direction, or that gives my interviewer

play17:03

a chance to then jump in and suggest I try something else.

play17:06

PIERRE ST JUSTE: Yeah, I can add to that too.

play17:08

I think, for my own personal example of me getting stuck,

play17:12

when my first interview, when I came on site,

play17:16

someone gave me a question and the solution required

play17:20

using a prefix tree.

play17:21

The person said, have you thought

play17:24

about using a prefix tree?

play17:25

And I did not know what a prefix tree was.

play17:27

I was stuck.

play17:29

And I said, I am not familiar with this data structure.

play17:33

I know a bunch of different data structures.

play17:35

It just so happened I never really used a prefix tree

play17:37

before.

play17:38

And the interviewer explained what a prefix tree was.

play17:41

Because I was comfortable enough with graphs and different graph

play17:45

and tree-based data structures, once he

play17:47

explained what the prefix tree was, I was able to get unstuck.

play17:51

So it's OK if you're exposed to a data structure

play17:55

that you've never heard of before, because for the most

play17:57

part, data structures, most of them can be modeled as graphs.

play18:00

So one thing I do recommend, make

play18:02

sure you're comfortable with not just doing this linear linked

play18:05

list or array list type of algorithms, Make Sure?

play18:08

You're comfortable with graphs.

play18:09

Depth first search, breadth first search,

play18:11

if you can understand graphs, many data structures,

play18:13

once explained to you and you realize is a graph,

play18:17

you can apply that.

play18:18

And that's what I was able to do.

play18:19

And I think I was able to impress the interviewer

play18:21

because even though I didn't know what a prefix tree was

play18:24

at the beginning, once he explained it,

play18:26

I was able to write a solution that used a prefix tree.

play18:30

So the other thing that's very important

play18:32

is the fact that by the time your package goes

play18:37

to the interview committee, you probably

play18:39

want as many different opinions as possible.

play18:42

So many six or seven.

play18:43

By the time you do the final interviews,

play18:45

it might be six or seven different inputs

play18:48

and you want them to be as independent as possible

play18:50

because that gives more breath, a better

play18:54

scope of your capabilities.

play18:56

So therefore, if you mess up--

play18:58

it's when you're taking an exam, there's

play19:00

only five questions in the exam and then

play19:02

you don't know one question, that's automatically

play19:04

you're getting 80%.

play19:06

If you have 20 questions, damn right,

play19:09

so I like exams with more questions.

play19:12

So that's the basic way I would approach.

play19:14

The more interviews, is actually a good thing.

play19:17

JONATHAN DRAKE: I would add to that

play19:18

and say that a difference between quizzes and tests

play19:22

and interviews is that you're not actually supposed

play19:26

to know already how to do it.

play19:29

We're not going to say something like, what

play19:31

is an array list necessarily.

play19:33

Hopefully, we're going to give you a problem that you actually

play19:36

haven't seen before, something you don't quite

play19:38

know how to do it.

play19:39

So the prefix tree example is great

play19:40

because I didn't know what a prefix

play19:42

tree was until last year.

play19:43

If I had that interview, I would've been freaking out.

play19:47

So this is a perfect example of how

play19:49

you're supposed to be able to--

play19:51

we'd love to see you able to take something

play19:54

that you don't know and wrangle that unknown into something

play19:59

that you do know.

play20:00

And that's totally what we do every day,

play20:02

and so that's a wonderful thing to see in an interview.

play20:07

PIERRE ST JUSTE: So now, in terms of resources,

play20:12

I highly recommend "Cracking the Cutting Interview."

play20:16

That textbook, just makes you feel less anxious.

play20:20

Because you felt like you've gone through this somewhat

play20:23

comprehensive, was not a very big book,

play20:25

but it covers all the highlights.

play20:27

It makes you feel like you have a good foundation

play20:29

for the interview.

play20:30

So definitely, just to relieve some anxiety,

play20:33

just go through the book and skim through it.

play20:35

If you have time to do all the different questions,

play20:37

definitely do that.

play20:39

There are also other guides.

play20:41

One of them is TopCoder and other different web site,

play20:44

Decode, where you can create an account

play20:46

and solve different types of problems.

play20:48

And once again, the more practice you do, the better.

play20:50

Before my interview, I practiced almost every day

play20:53

for about a month just to get in the mode

play20:55

of solving little things.

play21:01

LAUREN LONG: All right.

play21:02

And we're going to jump into answering some questions.

play21:04

So as a reminder, you have that chat box in front of you.

play21:08

Feel free to type a question in there.

play21:10

PIERRE ST JUSTE: OK.

play21:11

Now, it's question time.

play21:12

The first question is from Eden Freiner.

play21:16

The question is, "How does Google value coding abilities

play21:19

versus other abilities?

play21:20

Obviously, one needs to know how to code,

play21:23

does Google care about the one--"

play21:27

LAUREN LONG: "--the way that one thinks?"

play21:28

PIERRE ST JUSTE: "--the way that one thinks?"

play21:30

I thank you for that because everyone thinks differently.

play21:32

LAUREN LONG: You're stuck.

play21:33

PIERRE ST JUSTE: I got stuck.

play21:34

"--and if they do, how do you test different abilities?"

play21:37

That is a great question.

play21:40

We do value coding a lot because as a software engineer,

play21:44

the vast majority of the job is coding.

play21:48

However, we do value communication skills.

play21:52

We do value ability to clearly--

play21:54

so as you communicate with the interviewer

play21:56

and explain your approach and your ability to understand,

play22:00

that's something that as an interviewer

play22:02

we assess your ability to communicate clearly.

play22:04

Because what we try to do is envision you

play22:06

in our team and you being given a task

play22:09

and how you go about addressing that.

play22:10

So I would say through the interview,

play22:13

we try to assess, not just your coding skills,

play22:17

but also communication and things like that.

play22:23

LAUREN LONG: So we got another question from David.

play22:26

He says, "I'm nervous about the on-site interviews.

play22:29

It's five interviews in a day.

play22:30

Seems kind of overwhelming."

play22:32

So I agree.

play22:33

I also thought it was a bit crazy when I first

play22:35

heard about five interviews in a day,

play22:37

and there are some tips that I would suggest

play22:40

for getting through the day.

play22:42

So first of all, I won't lie.

play22:43

It is a very long day, but we do put a break in between,

play22:47

so you will have lunch with what's

play22:50

called lunch interviewer.

play22:51

So you'll have a current Google employee pick you up, take you

play22:55

to one of our cafes.

play22:56

And this is not evaluated at all.

play22:58

So that person that has lunch with you

play23:01

does not write anything up about you.

play23:04

So take that as an opportunity to get

play23:06

to know the company, to relax a little bit,

play23:09

or you can simply say, I don't want to actually say too much

play23:13

right now.

play23:13

I want to have a moment of silence,

play23:15

or I want to take a nap.

play23:16

My lunch interviewer said, do you want to take a nap?

play23:19

I can take you to a nap pod.

play23:20

So that is an option as well if you feel like you need that.

play23:25

Secondly, hydrate a lot during the day.

play23:27

So we've got a ton of micro kitchens

play23:29

all around with coffee, tea, water, all kinds of juices.

play23:32

So make sure you have those in the room with you at all times

play23:36

and just sleep a lot the day before.

play23:39

JONATHAN DRAKE: Yeah.

play23:40

And I also have a question.

play23:42

Dana Hickson asks, "Are there some examples

play23:44

of the types of code activities we will be writing?"

play23:47

So yes.

play23:49

There's plenty of examples of interview processes

play23:52

that show the type of questions we ask even

play23:54

on this YouTube channel.

play23:55

You can also basically just Google Google Interviews

play23:58

and see a bunch of questions that, because they're now

play24:00

public, we've actually banned from the real interview

play24:03

process.

play24:03

With that said, it's still a wonderful way for you

play24:05

to see the types of questions we ask

play24:08

and the scope of a question.

play24:12

There's also books out there.

play24:13

There's one called "Cracking the Code Interview" or something

play24:16

like that.

play24:16

"Cracking the Technical Interview."

play24:16

LAUREN LONG: Yeah.

play24:17

It's on the previous slide.

play24:18

If you re-watch it, it's in your [INAUDIBLE].

play24:19

JONATHAN DRAKE: Check out those links,

play24:21

and definitely, there are lots of resources out there.

play24:24

PIERRE ST JUSTE: So this next question is from Anzel Chris.

play24:28

"What was the hardest part of the technical interview

play24:31

to you?"

play24:32

I would say the hardest part of the technical interview

play24:34

was probably the first five minutes.

play24:36

Because you're going to be given a question and you're

play24:38

just anxious and worried that you may completely blank.

play24:42

And the other thing that happens is, during that first five

play24:47

minutes, mentally, you have to get over

play24:50

that hurdle of thinking, oh, my gosh, I'm completely

play24:52

going to fail this interview.

play24:54

So if mentally you're able to get over that hurdle and say,

play24:57

OK, I've seen the question.

play25:00

I can think of the naive solution that

play25:01

gives me a starting point and then I can build upon that.

play25:04

Once you get a naive solution that you and your interviewer

play25:08

see eye to eye on, make sure you understand the question,

play25:11

then you can iterate over that naive solution

play25:14

and try to find different parts that you can optimize.

play25:17

So just getting to that step is the most important piece.

play25:20

LAUREN LONG: Yeah.

play25:21

And to add on to that, I wouldn't

play25:22

say this is the hardest part, per see,

play25:25

but definitely one that takes some practice

play25:27

is coding on the whiteboard.

play25:29

Because you're often used to coding on your computer

play25:31

where there is nice text editors that help

play25:34

you do a lot of things magically.

play25:36

So you want to make sure you get comfortable

play25:37

when you're practicing.

play25:38

I recommend writing it out on a piece of paper

play25:41

as if you were writing on a white board and just practice

play25:45

how you're going to make sure your writing is legible,

play25:48

how you're going to indent, follow the syntax

play25:52

without having a text editor in front of you.

play25:54

JONATHAN DRAKE: And if you do get into a situation where

play25:56

you're like, oh, my gosh, I can't remember the word

play25:59

for putting something onto hash set .

play26:01

Is it add, put, or offer or what is it?

play26:04

Just say, I can't remember what it is.

play26:06

I know I would look it up in the Java Doc or in the C++

play26:09

reference.

play26:10

I just can't remember what it is.

play26:11

Explain to your interviewer what you mean,

play26:13

and that will be 99.9% of the whole thing.

play26:15

PIERRE ST JUSTE: Yes.

play26:17

So the next question is from Aiushi.

play26:20

The question is, "Is it OK to not

play26:26

have the most optimized solution, but the code works?"

play26:30

That is perfectly OK.

play26:33

It doesn't have to be the most optimized,

play26:36

but it has to be somewhat efficient.

play26:38

So I think as long as it's not the naive solution, the most

play26:43

inefficient solution, what the interviewer

play26:46

looks for is your thought process

play26:48

to the more optimized solution.

play26:49

So don't think the interviewer is

play26:51

looking for one solution, the most highly optimized solution

play26:54

in order for you to do well on the interview.

play26:56

It's more about what are the different foundational concepts

play27:02

of computer science you're using to get

play27:03

to an optimized solution.

play27:05

JONATHAN DRAKE: We're not out to trick you.

play27:07

So also don't assume that because we've asked something

play27:10

that you feel like you know the answer to that

play27:12

you need to overthink it.

play27:13

It could be the answer is fairly straightforward

play27:15

and that problem will grow into something else.

play27:18

Maybe we'll change the requirements

play27:20

to make it a little bit more interesting after you

play27:22

say the first solution.

play27:23

It's [INAUDIBLE].

play27:24

PIERRE ST JUSTE: So the next question

play27:26

said, "If you haven't used a specific data structure

play27:29

and you know you have to use it to solve

play27:30

the problem because you've heard of it before,

play27:33

how do you proceed to solve the problem?"

play27:35

This was the typical case that I ran into.

play27:37

I did not really understand how that data structure was used

play27:42

and how to--

play27:43

and I asked the interviewer.

play27:44

And then they said, well, this is what

play27:45

the data structure looks like.

play27:47

It's actually more impressive, to me,

play27:50

if the person is told what the data structure does

play27:53

and what it looks like, it has logarithmic inserts

play27:55

or whatever the case is, and they were able to,

play27:58

based on me giving them maybe three bullet

play28:00

points about the data structure, they're

play28:02

able to incorporate that into their solution.

play28:05

So you don't have to memorize every single data

play28:07

structure, like AVL tree.

play28:09

You don't have to do that.

play28:11

It's OK.

play28:12

LAUREN LONG: So we have a question from Ling Siong.

play28:15

"During the interview, does the interviewer

play28:17

evaluate an interviewee's coding quality?

play28:21

For example, it's not too long or too hard to read?"

play28:24

So you do make a good point.

play28:26

We do care about how well you code.

play28:29

That being said, we do not go all knit picky on you.

play28:32

So we will not care if you forgot a closed a bracket,

play28:36

you're missing a semicolon.

play28:38

That doesn't matter, but it does matter

play28:40

that you structure in a way that is modular, so you break up

play28:44

long functions, you name your variables well,

play28:46

not just A, B, C, and that you use

play28:50

the appropriate algorithms for the problem that is at hand.

play28:54

Again, I would practice doing this,

play28:57

writing on the white board, make sure that interviewer

play28:59

can actually read what you're writing.

play29:01

That is also going to help to evaluate you.

play29:05

JONATHAN DRAKE: Yeah.

play29:06

Martha Corneko asks, "How many questions are

play29:09

asked during each interview?"

play29:12

This varies.

play29:12

How do you measure what's a question?

play29:14

So sometimes I might ask a question that starts out

play29:17

as a straight forward thing, and then

play29:19

I complicate it by saying, well, what

play29:20

if instead of having only one value per key,

play29:24

you could have many values per key?

play29:25

What if you could have duplicates

play29:27

or what if they weren't sorted?

play29:28

That could be considered one question that has many parts,

play29:31

or you could think of it as two or three little questions.

play29:33

Different interviewers might have different things

play29:35

they want to do.

play29:36

You could have three questions that

play29:37

are each short and self-contained,

play29:39

or you could have one long one.

play29:41

PIERRE ST JUSTE: All right.

play29:42

So I guess some final tips would be one, definitely communicate.

play29:48

Definitely try to come up with a naive solution as early

play29:51

as possible just to demonstrate that you

play29:53

understand the problem.

play29:55

And [INAUDIBLE].

play29:59

That's what I think.

play30:00

JONATHAN DRAKE: I'd say my biggest

play30:02

tip is show your interviewer how you start with what you know

play30:06

and transform that into something that you don't know

play30:08

and then figure out on the course of the interview.

play30:10

LAUREN LONG: My tidbit is keep your calm.

play30:13

So like I said, if you screw up one interview,

play30:16

move on to the next one.

play30:17

It's OK, and you haven't lost your chances.

play30:20

PIERRE ST JUSTE: And finally, the interviewers

play30:22

are trying to help you get to a solution.

play30:24

We want to see you succeed, and it's OK to ask for small hints.

play30:30

That's totally versus just trying to figure it

play30:33

all out by yourself.

play30:36

So definitely understand how to leverage the interviewer,

play30:39

and we want to see you have a working solution in the end.

play30:43

And with that said--

play30:43

LAUREN LONG: Thanks for tuning in.

play30:45

PIERRE ST JUSTE: Thanks for tuning in.

play30:46

Please go to the link and fill out the form.

play30:49

And yeah, enjoy.

play30:51

JONATHAN DRAKE: Bye.

play30:51

PIERRE ST JUSTE: Bye.

Rate This

5.0 / 5 (0 votes)

相关标签
Google InterviewSoftware EngineerTechnical InterviewRecruiting TipsCoding SkillsInterview PreparationCommunication SkillsInterview AnxietyProblem SolvingCareer Development
您是否需要英文摘要?