EX-Google Recruiter Reveals Secrets To Never Failing A Tech Interview
Summary
TLDRIn this video, Farrah, a seasoned technical recruiter and former software engineer, shares invaluable advice for software engineering interviews. She emphasizes the importance of mindset, effective communication, and the ability to handle ambiguity. Farrah provides guidance tailored to various experience levels, highlighting the distinction between programming and software engineering, and stresses the significance of practicality over theoretical efficiency. She also recommends resources like LeetCode, The Tech Interview Handbook, and 'Cracking the Coding Interview' for interview preparation.
Takeaways
- 😀 Farrah, the speaker, is a computer science graduate with experience in graphics programming and technical recruiting for companies like Google, Lyft, and Uber.
- 🧐 To manage interview nerves, shift your mindset to view the interviewer as a future colleague rather than a judge.
- 🤔 When faced with a complex problem in an interview, ask clarifying questions as you would with a colleague to demonstrate your problem-solving approach.
- 🔍 Use the five W's and H (who, what, where, when, why, how) to ask clarifying questions and understand the context behind interview questions.
- 📚 Preparation for software engineering interviews should consider your experience level, with different expectations for each level from entry to senior.
- 🏢 Research the company you're interviewing with to tailor your answers to their systems and expectations, whether it's a startup or a large legacy company.
- 🔄 Understand the difference between programming and software engineering, with the latter focusing on long-term planning, efficiency, and scalability.
- 📈 Practice with medium difficulty questions and focus on fundamentals, as interviewers evaluate candidates as if they were senior engineers regardless of their actual level.
- 💡 Demonstrate characteristics of a senior engineer, such as caring for monitoring, collaborating with non-developers, and understanding the deployment process.
- 🤝 Show your ability to handle ambiguity by asking clarifying questions and considering different trade-offs when given vague problems.
- ⏱ Prioritize practicality and simplicity over optimal time efficiency in your solutions, especially under the time constraints of an interview.
- 👥 Emphasize teamwork by asking collaborative questions and avoid seeking validation from the interviewer, treating them as a colleague.
Q & A
What is the main purpose of the video?
-The main purpose of the video is to prepare software engineers for their interviews by providing advice and guidance that goes beyond basic coding questions and applies to real-world scenarios.
Who is Farrah and why is she qualified to give advice on software engineering interviews?
-Farrah is a computer science graduate who specialized in graphics programming and has worked as a technical recruiter for companies like Google, Lyft, Uber, and the New York Times. She has prepped hundreds of candidates for interviews, making her well-qualified to give advice on the subject.
What mindset should a candidate adopt during an interview according to Farrah?
-Farrah suggests adopting a mindset where the interviewee sees themselves as speaking to a current colleague they've never met before, which can help calm nerves and lead to better answers.
Why is it important to ask clarifying questions during an interview?
-Asking clarifying questions is important because it shows that the candidate is actively engaged in understanding the problem fully before providing an answer, which is a valuable trait in a software engineer.
What are the five W's and the H that Farrah suggests using for asking clarification questions?
-The five W's and the H are who, what, where, when, why, and how. These questions help candidates to fully understand the context and details of the problem they are being asked to solve.
How does the level of a software engineer affect their interview preparation?
-The level of a software engineer affects the depth and complexity of the systems and issues they are expected to understand. Higher levels require a broader understanding of complex systems and common issues.
What is the difference between programming and software engineering as per the script?
-Programming involves writing code and algorithms, while software engineering is about integrating programming over time with considerations for time scale, trade-offs, and long-term maintenance and scalability.
What does Farrah suggest focusing on when practicing for technical interviews?
-Farrah suggests focusing on medium-level questions, fundamentals, and understanding the application of solutions rather than just memorizing answers to technical questions.
What are some characteristics of a senior engineer according to the video?
-A senior engineer should demonstrate the ability to tackle complexity and ambiguity, have strong teamwork and collaboration skills, effective communication, enthusiasm, and a passion for continuous learning.
What is the importance of defining terms like 'sharding', 'replication', 'latency', 'CAP theorem', and 'optimistic/pessimistic locking' during an interview?
-Defining these terms is important because it shows the candidate's understanding of concepts related to large-scale systems, which is crucial for roles that involve dealing with high levels of traffic and complex system architectures.
How should a candidate approach a question with ambiguous requirements during an interview?
-A candidate should approach ambiguous questions by asking clarifying questions to define the problem better, considering trade-offs, and verbalizing their thought process for reaching a solution.
What does Farrah suggest about the importance of practicality over optimal time efficiency in interview responses?
-Farrah suggests that practicality and simplicity are often more important than the most optimal time-efficient algorithm, especially under the time constraints of an interview, as interviewers prefer a quick and correct solution over a complex one that may not be completed in time.
How should a candidate demonstrate teamwork during an interview?
-A candidate should demonstrate teamwork by asking collaborative questions and treating the interviewer as a colleague working together to solve a problem, rather than seeking validation or approval.
What is the focus of behavioral questions in an interview?
-Behavioral questions focus on evaluating a candidate's future potential, learning ability, and execution on projects, with an emphasis on 'how' they approach tasks rather than 'what' they have done.
What resources does the video recommend for interview preparation?
-The video recommends resources such as LeetCode, The Tech Interview Handbook, Cracking the Coding Interview by Gail McDowell, and the GitHub page called the System Design Primer.
Outlines
😀 Preparing for Software Engineering Interviews
The speaker, Farrah, introduces the video's purpose: to prepare viewers for software engineering interviews. She emphasizes the need to move beyond basic coding questions and understand the real-world application of these skills. Farrah shares her background in computer science and her experience as a technical recruiter for major companies, positioning herself as a credible source of advice. She also discusses the importance of mindset in interviews, suggesting candidates view the interview as a conversation with a future colleague to reduce nerves and improve responses.
🔍 Understanding the Interviewer's Perspective
Farrah advises candidates to approach interview problems as they would with a colleague, asking clarifying questions to fully understand the issue at hand. She highlights the importance of this approach, as interviewers often omit information to assess a candidate's problem-solving process. Farrah also discusses the significance of behavioral questions and the use of the five W's and H (who, what, where, when, why, how) to seek clarification. She stresses the need to understand the interviewer's intent behind each question.
📚 Tailoring Interview Preparation Based on Experience Level
The video script outlines the different levels of software engineering roles and how interview preparation should vary accordingly. Farrah explains that as candidates progress in their careers, they are expected to demonstrate a deeper understanding of complex systems and common issues. She advises researching the company's systems and tailoring interview responses to align with those systems. Farrah also differentiates between programming and software engineering, emphasizing the long-term planning and efficiency required in the latter.
🛠 Practical Tips for Interview Success
Farrah provides practical advice for interview preparation, recommending a focus on medium difficulty questions and fundamentals. She advises against solely relying on whiteboard questions and instead suggests a balanced approach to practicing. Farrah also discusses the importance of demonstrating the ability to handle complexity and ambiguity, as well as the characteristics of a senior engineer, such as monitoring, alerting, and understanding the deployment process. She encourages candidates to verbalize their thought process during interviews, as this is often more valuable than the final answer.
🤝 Teamwork and Communication in Interviews
The speaker emphasizes the importance of teamwork and communication during interviews, suggesting that candidates should interact with interviewers as if they were colleagues working on a problem together. She advises against asking for validation and instead recommends asking collaborative questions. Farrah also touches on behavioral questions, focusing on how candidates executed on projects and explored new technologies, highlighting the importance of discussing past experiences in terms of the decisions and trade-offs made.
🏢 System Design and Additional Resources
Farrah discusses the importance of system design in interviews, which involves frameworks, APIs, and design patterns rather than coding. She mentions scalability and provides a resource, the System Design Primer, for further study. Additionally, she lists several resources for interview preparation, including LeetCode, the Tech Interview Handbook, and 'Cracking the Coding Interview' by Gail McDowell. Farrah concludes by encouraging viewers to like and subscribe for more content.
Mindmap
Keywords
💡Software Engineering Interviews
💡Mindset
💡Clarifying Questions
💡Behavioral Questions
💡Technical Recruiting
💡Complex Systems
💡Time Efficiency
💡Practicality
💡Teamwork
💡System Design
💡Ambiguity
Highlights
The video is aimed at preparing software engineers for interviews with advice not commonly found in other resources.
The speaker, Farrah, has a background in computer science and experience as a technical recruiter for major companies.
A shift in mindset is suggested to view interviewers as future colleagues rather than authority figures to reduce nerves.
Interviewers may intentionally omit information to test a candidate's ability to ask clarifying questions.
Understanding the five W's and H (who, what, where, when, why, how) is crucial for asking clarifying questions.
Preparation for software engineering interviews should consider the level of experience and the type of company.
Startups versus legacy companies have different expectations for software development and stability.
The difference between programming and software engineering is highlighted, emphasizing long-term planning and scalability.
Practicing medium difficulty questions is recommended over easy or hard questions for interview preparation.
Fundamentals are key, as interviewers evaluate candidates as if they were senior engineers regardless of their actual level.
Senior engineers should demonstrate an ability to handle complexity, ambiguity, and teamwork.
Junior developers are expected to learn from senior developers and understand the consequences of their actions.
Defining technical terms related to system design and handling high traffic is important for certain roles.
The interview process assesses the candidate's problem-solving process, not just the final answer.
Practicality in solutions is valued over optimal time efficiency due to the constraints of an interview setting.
Teamwork is demonstrated through collaborative questioning and treating the interviewer as a colleague.
Behavioral questions focus on future potential and learning ability rather than past experiences.
System design questions assess knowledge of frameworks, APIs, design patterns, and scalability.
Additional resources such as 'LeetCode', 'The Tech Interview Handbook', and 'Cracking the Coding Interview' are recommended for preparation.
Transcripts
if you're watching this video it's
probably because I sent it to you now if
I didn't send this to you hello it's
time to put down your coding questions
because we need to get you ready for
your software engineering interviews
I've been prepping Engineers for their
interviews for many years and I'm here
to give you advice that you won't find
in many other YouTube videos because
most of the prep videos on YouTube are
made for entry level to junior level
Engineers which is helpful but you
really need to have a broader
understanding of why you're grinding out
coding questions and how those questions
apply to the real world in today's video
I'm going to tell you a little bit about
myself so you know why I'm qualified to
help you and then I'll give you General
interview prep advice and lastly I'll
give guidance for all software engineers
at every experience level including some
mindset work so who am I hello I'm
Farrah I hold a bachelor's degree in
computer science from the University of
North Texas where I specialize in
graphics programming as a soft engineer
I wrote binarization algorithms that
were able to read text within images and
video then convert that text into
machine readable search strings and
documents I ended up leaving engineering
and pursued other fields of work which
led me to work in technical recruiting
I've worked as a technical recruiter for
Google Lyft Uber Tick Tock the New York
Times and I am currently an active
recruiter who works for a successful
dating app called dillmill I've
recruited and prepped hundreds if not
thousands of candidates and helped them
successfully pass their interviews so
let's start with prepping your mindset
when you go into an interview you're
probably nervous I know I used to get
super nervous and because I was nervous
I would say things or do things I
normally wouldn't say or do so to help
with nerves here's what I want you to do
shift your mindset from thinking that
you're in an interview and instead think
of yourself as speaking to a current
colleague that you've never met before
this will shift your mindset from
thinking that you need to impress the
inner interviewer and instead imagine
that this person may in fact be someone
you end up working with in the future
which will have a calming effect and
lead you to giving better answers now
this next piece of advice is intuitive
but most people forget to do this during
their interviews if your interviewer
gives you a complex problem then here's
what you should do remember you're
imagining that this interviewer is a
colleague now if a real colleague came
up to you to ask you a question about a
problem that they were having would you
immediately give them an answer probably
not what you'd probably do is ask
clarifying questions in order to
understand the problem that they're
asking you and then you give them an
answer I want you to do the same thing
in your interview sometimes during
interviews interviewers purposefully
leave out information that you need in
order to give the best answer because
they want to see if you are going to ask
clarifying questions this is especially
true when an interviewer asks you
behavioral questions behavioral
questions are questions where the
interviewer asks you questions based on
how you acted or would act in a specific
situation what kinds of questions should
you ask for clarification I like to use
the five W's and the H who what where
when why and how now really try to
understand the why behind why they would
ask you this question and then take it
from there so now let's pivot and talk
about specific ways to prepare for your
software interviews how you prepare for
your interview will depend on your
experience level which we call leveling
the various levels for an individual
contributor are entry level junior level
mid-level senior level and stock level
the higher your level the more you'll be
expected to understand complex systems
and common issues that would come up so
you're shifting from being a programmer
into a software developer now before we
start preparing you for the technical
piece it's time to do some research on
the companies that you're interviewing
with because this will have an impact on
the answers that you should give in your
interview are you in interviewing at a
startup a mid-level company large Legacy
company this is important to know
because your answers to questions may be
tailored to the type of systems the
company has because FYI most
interviewers are evaluating your answers
against the systems that they are
working on not necessarily the ones
you've worked on so for example startups
will be able to make quick pivots and
you'll be expected to write more lines
of code where one wrong move could make
an entire system come crashing down
whereas a legacy company will have an
older code base where many other
Engineers have gone in and manipulated
that code but an error is less likely to
happen so when it comes to the
nitty-gritty of prep remember there is a
difference between programming and
software engineering programming is
writing code and algorithms however
software engineering is programming
integrated over time and there are three
critical differences between programming
and software engineering time scale and
the trade-offs when software Engineers
work on projects they have to think
about how the software will change over
a period of time they need to plan ahead
and and make sure that the software
they're creating will last a long time
in a software engineering organization
it's important to focus on making the
software as efficient and scalable as
possible this is because software
Engineers often work on very complex
problems and it's important to make sure
that the software can handle all of the
demands that will be placed on it so yes
going through technical questions that
you find in leak code or the book
cracking the coding interview are
important but how you apply those
Solutions is even more important so now
let's pivot and talk about how you can
practice remember don't only focus on
whiteboard question they are helpful but
only working these will not get you
through the interview process lead code
is a great resource to help you prepare
easy questions are good for warm-ups
hard questions really aren't practical
for interviews and I've never seen one
asked in an interview not that it can't
happen but I've never seen it instead I
want you to focus on medium questions
solve at least 25 medium Quest questions
although I encourage you to practice as
many questions as possible focus on
fundamentals your interview will not be
focused just on leak code type questions
but it's still important to review
fundamentals interviewers will evaluate
you as though you are a senior engineer
no matter your leveling before I get
into this topic if you're enjoying this
video give it a like And subscribe
because it really does help my channel
to become a senior engineer you must be
able to demonstrate this ability by
showing that you can tackle complexity
and ambiguity teamwork collaboration
communication enthusiasm and a passion
for learning here are a few specific
characteristics I like to see in senior
Engineers someone who cares about
monitoring and alerting not just unit
testing can negotiate with
non-developers especially product
managers and operation staff knows how
the software will degrade if various
systems are not working and lastly
someone who understands the deployment
process really well now Junior
developers are are often supervised by
senior developers and it's the senior
developers who deal with the
consequences of the actions of the
junior developers if a company you're
interviewing for has a huge amount of
concurrent traffic then they would want
to know how you would deal with that
some terms you should be able to Define
are charting replication latency cat
theorem and optimistic pessimistic
locking some systems that accomplish
this are Amazon's Dynamo Google spanner
and bigtable when an interviewer asks
you a question don't just regurgitate
the answer verbalize your process for
reaching a solution because oftentimes
in software engineering there is no
predefined solution you have to work
towards a solution and the process to
get to the solution often requires a lot
of analysis balancing trade-offs And
discussing Alternatives and accepting
feedback the interviewer wants to know
how you reach the answer not just if you
reach the answer how do you trade off
time and space how do you present
alternative Solutions also key keep in
mind about any edge cases that could
come up interviewers that Fang or larger
companies are primarily looking to see
if you can make reasonable architectural
and design decisions for large-scale
complex systems and still know how to
write software despite presumably
spending more time in meetings design
reviews paperwork and management than
actually coding over the past few years
something else to keep in mind is that
the larger the company you work for the
less lines of code you actually get to
write if you are hired at any level
because there are different levels of
bureaucracy but the systems you work
with are much more likely to function in
a vaguely reasonable way because of the
bureaucratic Precision that went into
making them interviewers are definitely
evaluating ability to communicate on
complex technical topics specifically
they want to know that you can
communicate clearly efficiently and
without being egocentric when mentoring
Junior and engineer so now let's talk
about ambiguity answering a bunch of
questions about data structures and
algorithms is great but if you don't
know how to apply them to an ambiguous
question where you are not given the
method signature what the inputs and
outputs are and what the data format is
going to look like then you'll most
likely fail interviewers will
intentionally give a vague and ambiguous
question to see how you tackle that
scenario how to tackle ambiguity is one
of the parameters that you're going to
be graded on your interviewer may ask
you a question like can you come up with
an alternative solution to the problem
with a different set of trade-offs so
you had better be prepared to think of
what trade-offs would make sense and
this is where you need to ask clarifying
questions so now let's talk about time
efficiency let's replace time efficiency
with practicality so let's say
hypothetically you get a question about
quick select there are a number of
answers that you can choose from you can
use brute force you can create a heap or
you can implement the partitioning
algorithm partitioning is the most
optimal format but it's too difficult to
write because it takes too much time to
solve if you use this as an answer you
may not be able to solve it during your
interview interviewers would rather you
use a less optimal approach such as
using a heap and then quickly mention a
more optimal algorithm and why you're
not going to use it and it's because
it's too complicated due to the time
constraints of the interview so in this
case it would be better to use a Heap
Sort because it can be written much
quicker recognize practicality and
simplicity over always coming up with
the most optimal time efficient
algorithm now let's talk about teamwork
when asking questions ask questions as
though this is a colleague and you're
solving a problem together don't ask
questions of your interviewer that ask
for any type of validation like is this
the right solution demonstrate teamwork
by asking collaborative questions as
though this person is your colleague
sometimes interviewers just want you to
answer the question and if that's the
case then just move forward and answer
the question now I'd like to touch on
behavioral questions you are not being
evaluated as much about your past
experience as you are being evaluated
about your future potential especially
your ability to learn and execute on a
project it's about the how more than the
what some questions an interviewer may
ask you could include how did you
execute on projects how is this
accomplished how do you explore new
technologies so be prepared to discuss
prior projects with a mindset that it's
about the trade-offs you made and why
you made them now let's talk about
system design questions it's less about
coding and more about Frameworks apis
and design patterns this section is the
architectural portion of how to bring a
system together scalability could play a
factor as well there is a great GitHub
page called the system design primer
that I'll link in the description so
that you can use it to help you with
this section and lastly here are some
additional resources that you can use to
help you prepare for your interviews
note I am not sponsored by any of these
I'm just sharing them with you I've
mentioned it a few times leak code leak
code is the gold standard in online
preparation they have a huge database of
questions to choose from and pass for
preparing for your interviews for most
of the popular tech companies the tech
interview handbook is a guide that was
created by former Google Engineers that
gives you a step-by-step guide on how to
prepare and lots of great tools to help
you on your coding Journey cracking the
coding interview which is a book by Gail
McDowell is a classic prep book that you
should read cover to cover it's been
around four years and you may be able to
borrow a copy from a friend or your
local library now if you struggle with
answering the common interview question
Tell me about yourself take a look at
this video where I give you a
mind-blowing technique most people never
use
Browse More Related Video
![](https://i.ytimg.com/vi/JpWhBY6DjrQ/hq720.jpg)
1.5 cr Offer in Remote Jobs | How to get Remote Jobs
![](https://i.ytimg.com/vi/vFOw_m5zNCs/hq720.jpg)
Confessions from a Big Tech Hiring Manager: Tips for Software Engineering Interviews
![](https://i.ytimg.com/vi/BCYlUmzMmyc/hq720.jpg?sqp=-oaymwEmCIAKENAF8quKqQMa8AEB-AH-CYAC0AWKAgwIABABGGUgWihYMA8=&rs=AOn4CLAOc4jVwjrWUuB9CNuMjQcWXznCww)
7 Years of Software Engineering Advice in 18 Minutes
![](https://i.ytimg.com/vi/4zScthU4lkM/hq720.jpg)
How to Get Ahead of 99% of Computer Science Students
![](https://i.ytimg.com/vi/sFIbPS2pCzk/hq720.jpg)
Cyber Security Interview Tips | Interview Topics Cyber Security Interview Preparation 2021
![](https://i.ytimg.com/vi/Y2iJOPxw0JU/hq720.jpg)
Books every software engineer should read in 2024.
5.0 / 5 (0 votes)