8 things I learned from a dozen technical interviews
Summary
TLDRIn this video, software engineer Utsav shares valuable insights from his tech company interview experiences. He emphasizes the importance of preparation, the necessity of conducting numerous interviews, the critical role of mastering data structures and algorithms, the challenge of advanced topics, and the significance of mock interviews. He also discusses the intricacies of system design interviews and the importance of understanding one's worth in salary negotiations.
Takeaways
- π Preparation is critical for tech interviews and requires deliberate practice and a consistent schedule.
- π Interviewing frequently and organizing interviews deliberately helps to improve performance and manage expectations.
- πΌ Prioritize mastering data structures and algorithms as they are fundamental to succeeding in technical interviews.
- π Advanced data structures and algorithms are rarely required in interviews, but a solid understanding of basic ones is essential.
- π₯ Engaging in numerous mock interviews can significantly improve interview skills and provide valuable feedback.
- π System design interviews are challenging and require in-depth preparation beyond just having experience.
- π― Quality system design resources are difficult to find, and self-study is crucial for mastering the subject.
- π€ Feeling good about an interview doesn't guarantee success; focus on technical details and practice.
- π° Prioritize understanding your worth and practicing negotiation skills before entering the job market.
- π’ Consider company culture, team dynamics, and project alignment as important factors beyond compensation.
- π Be prepared to switch focus from negotiation to evaluating the overall job opportunity once a fair compensation is established.
Q & A
What was the primary purpose of the video?
-The primary purpose of the video was to share insights and lessons learned from the experience of interviewing at various tech companies.
Why did the speaker take a year off from full-time work?
-The speaker took a year off to focus on side projects and personal hobbies.
What was the speaker's initial experience with the first interview after taking a break from full-time work?
-The speaker found the first interview to be more challenging than expected, realizing the underestimation of the pressure and the need for better preparation.
What is the importance of preparation in the interview process according to the speaker?
-Preparation is critical as it involves deliberate practice, a structured schedule, and consistency to be ready for the interview as a candidate.
Why is it suggested to have a lot of interviews lined up?
-Having multiple interviews lined up helps with accountability, learning from each experience, and not having time to dwell on the outcome of each interview.
What strategy is recommended for organizing interviews?
-It's recommended to start with the least exciting interviews and save the most coveted companies for last to leverage the improvement gained through practice.
Why is it crucial not to attempt interviews without a strong foundation in data structures and algorithms?
-Without a strong foundation, candidates are setting themselves up for failure as these fundamentals are critical to solving interview problems effectively.
What was the speaker's experience with advanced data structures and algorithms during the interviews?
-The speaker did not encounter advanced data structures and algorithms questions that were beyond their knowledge, indicating that a solid understanding of the basics is usually sufficient.
Why are mock interviews considered valuable in the interview preparation process?
-Mock interviews provide realistic practice, help to overcome nerves, and offer feedback from seasoned interviewers, which is essential for improvement.
What is the speaker's advice regarding system design interviews?
-The speaker advises that system design interviews require quality preparation, as they can be the deciding factor for hiring, level of hire, and compensation.
How should candidates approach compensation negotiation?
-Candidates should know their worth, negotiate for it, and then shift focus to evaluating the company, team, projects, and culture for long-term job satisfaction.
Outlines
π The Importance of Preparation in Tech Interviews
In this paragraph, the speaker, Utsav, a software engineer, reflects on his experience interviewing with tech companies after taking a year off. He emphasizes the critical nature of preparation, recounting his initial underestimation of the interview process. Despite being an experienced professional and interviewer himself, he found the actual interview experience to be more challenging than expected. The pressure of being a candidate, managing expectations, problem-solving, and showcasing behavioral traits all contributed to the complexity of the interview process. Utsav concludes that deliberate practice, a structured schedule, and consistency are essential for interview readiness.
π Organizing and Learning from Multiple Interviews
The speaker discusses the importance of conducting numerous interviews and organizing them strategically. After an initial failed interview, he resolved to schedule interviews in advance, which helped him stay accountable and learn from each experience without dwelling on the outcome. He suggests starting with less desirable companies and saving the most coveted ones for last, as interview skills improve over time. The paragraph also touches on the prevalence of multiple questions in a single interview, a trend he observed, especially at larger companies like Facebook.
π‘ Fundamentals Over Advanced Concepts in Technical Interviews
Utsav stresses the importance of mastering data structures and algorithms as the foundation for succeeding in technical interviews. He warns against the misconception of needing advanced knowledge, as his interviews did not involve advanced topics beyond his expertise. He recounts specific questions that tested his understanding of fundamental concepts, such as priority queues and monotonically increasing structures. The key takeaway is that a strong grasp of the basics is more valuable than superficial knowledge of advanced topics.
π― The Value of Mock Interviews and System Design Insights
The speaker highlights mock interviews as an invaluable resource for interview preparation, recommending numerous mock interviews to simulate the real experience effectively. He also discusses the challenge of system design interviews, noting the difficulty in finding quality resources, especially for senior engineers. Despite his experience, Utsav found that he needed to prepare specifically for system design to succeed, as the expectation is to provide detailed and deep solutions within a limited time frame.
π€ The Illusion of Success in System Design Interviews
Utsav shares his observations on the deceptive nature of system design interviews, where candidates often feel they performed well despite not necessarily meeting the interviewer's expectations. He points out that the conversational format can be misleading, as it may not reflect the technical depth required. The paragraph underscores the importance of practice, focus, and attention to detail in system design interviews, as they significantly impact hiring decisions, including position level and compensation.
πΌ Prioritizing Beyond Compensation in Job Selection
In the final paragraph, the speaker advises job candidates to focus not solely on compensation but also on the company culture, team dynamics, and project alignment when making a job decision. He warns against the trap of letting compensation become the primary focus and suggests that candidates understand their worth before interviews. Utsav recommends practicing negotiation skills and leveraging interview performance and competing offers to establish one's value. Ultimately, he encourages shifting the focus to non-monetary factors for long-term job satisfaction.
Mindmap
Keywords
π‘Preparation
π‘Interview
π‘Data Structures and Algorithms
π‘Mock Interviews
π‘System Design
π‘Behavioral Aspects
π‘Deliberate Practice
π‘Negotiation
π‘Compensation
π‘Educative
Highlights
Preparation is critical for interview success.
Underestimating interview pressure can lead to failure.
Interviewers look for specific signals, unlike candidates.
Deliberate practice and a structured schedule are necessary for interview readiness.
Organize interviews deliberately to manage preparation and expectations.
Schedule least exciting interviews first, save coveted companies for last.
Fundamental knowledge of data structures and algorithms is essential.
Advanced data structures are rarely asked in interviews.
Understanding basic principles can help solve unfamiliar problems.
Expect to answer multiple questions in a single interview.
Mock interviews are invaluable for interview preparation.
Quality system design resources are hard to find.
System design interviews require deep dives into solutions.
Educative offers highly rated courses for technical interview preparation.
Feeling good about a system design interview can be misleading.
System design interviews determine hiring level and compensation.
Negotiate compensation based on self-assessment and interview performance.
Focus on company culture, team, and projects after securing fair compensation.
Transcripts
this year i interviewed at a bunch of
tech companies and in this video i
wanted to share with you guys things
that i learned from my experience
[Music]
hey guys my name is utsav and i'm a
software engineer based in seattle
washington
and this channel is all about helping
you excel in your software engineering
careers
so if you're into that please consider
subscribing to this channel as usual
anything i reference or talk about in
this video will be linked in the
description below
so please feel to check those out and
this video will also have
time stamps so you can jump around or
skip to the sections that
interests you the most without further
ado let's get started
so a little bit of a background for why
this video exists
for those that you don't know is around
june last year i decided to take a year
off from working full-time to focus on
my side projects and personal hobbies
and things like that
so about summer this year is when i
wanted to start working full time again
so with that in mind around february
2021
is when i started interviewing with a
lot of companies and
this video is about that experience so
the first thing i learned
about the whole process is that
preparation
is critical and i know this sounds like
common sense
and a no-brainer but here's what
happened to me
even before early 2021 right after i
started my break maybe
around last summer or fall i got an
opportunity
to interview with the company that i
kind of was excited to work for
so i thought to myself you know what i'm
not ready to work right away but what do
i lose by interviewing with them right
um so i accepted the opportunity to
interview and
in my mind i thought i was fairly
prepared because i've been in the
industry for a long time i've worked on
good projects and i
actively used to interview candidates as
well so i was kind of
in the know how about what interviews
expect what kind of questions to prep
for and things like that so i took about
one or two weeks to kind of brush up on
my data structures and algorithms tried
a few questions on lead code and
felt fairly confident going in my
surprise
the real interview was completely
different it was way more challenging
let's just say that i completely bummed
it i think the first thing i
underestimated was the pressure that
comes to you
immediately after you're a candidate
instead of an interviewer
not only that but as an interviewer your
job is to pick up signal so you're
looking for very specific things so your
job i think is a lot easier than a
candidate where
in a very limited amount of time you're
managing a lot of different things not
only do you have to manage your
interviewers expectations
and understand what they're looking from
you but you have to
actually make sure that you're making
progress to have the problem and then
you have to manage your code editor
you have to give examples test cases
optimal solutions
and doing all this most companies are
also kind of quizzing you on some
behavioral aspects
of your personality so i think my
conclusion from this that i'm trying to
explain to you
is it really requires deliberate
practice and a structured schedule and a
consistent schedule
for you to be ready to actually
interview as a candidate the second
thing i learned
was that you have to interview a lot
and you have to organize your interviews
very deliberately
what i mean by this is so the first
interview when i bombed it
even though part of me wanted to go back
to interviewing again because i wanted
to prove to myself that i can do better
there was a lot of resistance in my mind
thinking that oh my god i have to do
this whole
prep again so i i just stopped i didn't
practice i was like you know what i
decided to take a break i'm just going
to take a break so
early this year though when i started i
wanted to fix that by making sure that
i had actually scheduled all my
interviews so every recruiter that had
reached out to me earlier that year i
just told him hey let's
circle back again early next year and
then schedule something that was my
standard response and that's why
early january either they contacted me
again or i reached out to them i was
like hey let's schedule this on this
date this
this that so so even before i started my
prep i had a bunch of interviews already
lined up so that not only helped me
accountable to start prepping
properly but also whenever i finished
one interview regardless of whether it
went
good or bad there wasn't really time to
mourn about it or feel sad
or think about what to do next i just
have to learn from the experience
make some changes if i have to and
immediately go on to the next because
they came in thick and fast right one
more thing about this is when you want
to structure your interviews you do want
to keep
the least exciting interviews up front
and your most
coveted companies towards the end
obviously because as you interview more
you get better and you get more practice
so you want to keep the best ones
towards the end so think of it as a list
of companies that you can interview with
and sorting them by your favorite
by the length of the interview process
and
the similarity between their interview
styles
so third thing kind of builds up on the
first two points is
don't even bother trying to interview
or trying to solve interview problems if
you're rusty on your data structures and
algorithms
honestly without the fundamental
knowledge of data structures and
algorithms you're just setting yourself
for failure and you may end up solving a
few or you may get lucky with others or
you may end up
memorizing which is even worse some
solutions and feel good about yourself
but i will promise you that the only way
to succeed in technical interviews
is to nail your fundamentals of
data structures and algorithms the
fourth thing that i learned or
experienced
was that advanced data structures and
algorithms even for a senior software
engineer
wasn't there at all nobody asked me
anything advanced that i didn't know
about or that i felt that oh i should
have
looked at this the only odd ones that i
can remember
was there was one question where i was
asked a variation of
breakfast search it was almost like
dijkstra's but
not really the exact algorithm where the
question
i was asked how to use a variation of
the priority queue i don't think that
was out of the ordinary and the other
one that i got stumped because i don't
come from a python
background is there was a question that
needed
a monotonically increasing double-ended
queue
uh to be solved and i ended up solving
it but i
really had never used a data structure
that was like that so i just had to come
up with it or
sort of implement it myself if you
understand how linked lists work and if
you understand the principles behind the
queue
and if you know what a monotonically
increasing array or a data structure is
you should be able to come up with it so
i don't think it's an advanced data
structure again so
outside of that there was really no
advanced data structure
while i didn't get any advanced data
structures um
i did find that two questions
in one interview seems like a norm these
days and some even i had three questions
in one interview especially at company
like facebook
so be prepared to go in to answer more
than one questions at least that was
very common for my interview experience
the single biggest resource
i think that you can find or
you can do for yourself during prepping
for interviews
that has the biggest roi is mock
interviews
do not ignore mock interviews and i'm
not talking about
one mock interview or two mock
interviews i'm talking about like 10
15 20 if you can do it right if you want
to interview for
10 companies or 20 companies do 20 mock
interviews if you can
find engineers from those companies and
ask them if they can
mock interview some will do it for free
some you can find from your network
mentors friends and if you really have
to pay for it pay it it will be worth it
but that being said i also see a lot of
candidates just go to things like pram
or interviewing dot io or things like
that that will just match you up with
someone else that will interview you and
you interview them
that's cool it will get rid of your
interview nerves and give you some
experience in
a time pressure scenarios but make sure
that if you're really spending money and
time
into mock interviews that the
interviewer is actually
a seasoned interviewer who can give you
proper feedback because they're
trained to look for the right signals
they're trained to evaluate candidates
and they will be
able to give you the right kind of
feedback that will help you all right
let's move to system design
because i know you guys are probably
thinking why i'm not talking about
system design
one thing i learned about system design
is that
quality system design resources are
really hard to find like even for
experienced
engineers like me who have worked on
distributed systems for many years
system design is still a hard topic
because you have such a limited time
and you're expected to solve a random
design problem
even though i have a lot of experience i
can draw from and i can kind of roughly
put together something
i can't really come up with like a
really good solution about
something that i've never worked with
right and the idea generally with a
system design interview is supposed to
be that you come up with a reasonable
solution i have a good discussion that's
how it's placed but in my experience
that's not how it is it starts off like
that but they
really expect you to deep dive into
something especially as a senior
so if i get design google docs and i've
never prepped for it i just went on
based on my experience that hey i've
worked in distributed system i
understand how
things work you know i go in and i may
be able to give a reasonable solution
out this may work but there's no way i'm
going to deep dive into
the basics of how like operational
transform i think they have a new
algorithm now that works um
klepman talks about it um there's no way
i can come
up with that on the fly right like
people have done 20 years of research
and phds on that topic how do you expect
me to
come up with that solution without
deliberately prepping for it right
so i do think that you do need to prep
if you want to succeed in system design
but the problem is that all of the
resources
especially youtube channels that i find
are not in depth enough
to help you with that and most of them
seems like if they say design google
docs they'll just go to engineering
blogs from google
that they talk about here's how we
design google docs and they'll basically
read that
and make a video on youtube which is
cool but it will never have enough
detail
especially for a senior software
engineer to kind of gain enough
knowledge to deep dive on it
so that that was at least my experience
for beginners that may work for
seniors i think you really have to
invest on
uh dedicating time into getting better
at designing systems really
work with a lot of cloud services try to
buy different books read for months
not just when you're interviewing just
be curious about how things are built
and over time you'll develop the
knowledge that's why it's become so
tricky
and i was lucky that i already had some
backgrounds it was easier for me to pick
up but i definitely felt that
why a lot of people panic or a lot of
people find it really difficult to pick
up things on system design because it's
not like
coding where you can practice for three
weeks or one month and you get better at
it it takes a long time
but there are a lot of resources to
learn system design
and there are videos and youtube
channels that are aimed at beginners so
if you're a beginner
that's pretty good one of the other
resources that is really useful for
beginners for learning system design
is educative who are also the sponsor of
this video educative was founded with
the mission to make every developer more
productive and successful
which coincidentally also happens to be
the mission of this channel
they offer a lot of amazing
well-designed and structured courses on
software engineering for a wide range of
areas like
front-end back-end full-stack machine
learning and artificial intelligence to
name a few but it's not just limited to
that
you can learn skills there that you will
use daily regardless of the area of your
work like how to use git version control
properly or even
all the non-coding aspects of your
engineering career but best of all
and quite relevant to this video is that
they have some of the most
highly rated technical interview
preparation courses namely grocking the
system design interview
that was recommended to me by multiple
companies during my interview process so
if you are interested in leveling up
your engineering game or acing your
technical interviews
visit educative dot io slash engineering
with utsav to get 10
off your subscription so the next point
i want to talk about is
also about system design and it's about
how you
feel about the interview um so with
system design
i noticed that almost every interview
that i gave
i kind of felt good about it um as in i
thought i did well
uh and some went really well some
actually didn't but the feeling that i
had after the interview
was that i always did well right and
because it's
ambiguous and it's more conversational
and
it's kind of hand-wavy and you talk
about a lot of things and you know maybe
you'll deep dive on something maybe you
want but
in the end you've designed this
elaborate diagram about
all these data flows and you know like
things and machines and cachings and
redundancy and replications and
different data centers and things like
that and you feel good about it because
you feel like
yeah this system is really good right
but that i promise you
is a very misleading feeling because
half of my system design interview where
i
thought i did amazingly well and turned
out to be that
i actually didn't do well and that was
one of the reasons i got rejected you
know because it's conversational and
wavy it feels like a conversation
between two
engineers and that's why it is kind of
talked about as well but
it's actually a very technical interview
so make sure you're on point you're
focused and you're
you you practice the timings and the
details and technical sides in the
system design interview
because that is the interview that will
decide not only whether you get hired
but at which level you get hired and
most likely
what compensation you get system design
is the interview that decides that
and in most companies because there are
multiple coding interviews and even in
each coding interview there are multiple
questions you can do
not so well in one or two and probably
could still get an offer but
you do badly in a system design
interview it's game over
so please prioritize system design
especially if you're anyone that has
more than a couple of years of
experience
learn about how to negotiate
compensation and practice
that negotiation beforehand i know there
are a lot of companies that kind of help
you do that as well
if you think that's fair you can do it
but if you're up for it there's a lot of
information available online how to
negotiate and how to kind of place
yourself or sell yourself
and you can learn from that and kind of
at least practice before you get into
the situation of having to do that
because
if you've structured your practice well
and if you've done well you'll end up in
a multiple
offer situation and you'll have to
negotiate um it's a great place to be
but it's also a lot of headache and
it's really stressful to kind of talk to
different
recruiters and kind of negotiate
compensation especially if
you are yourself not sure about which of
the three companies you want to join or
you want
you like all of them equally right and
then
one thing i wanted to warn you about is
it can easily
get into a situation where all you are
focusing on
is the compensation because someone else
offered you more than you were
anticipating and then your
game plan completely changed and now you
want the other companies to give you
more and
it can quickly spiral down into a
conversation about purely money and
that's not how you want to go about it
so what i recommend is before you even
start interviewing
know what you're worth and be honest
with yourself don't just
blindly go to uh sites like
blind no pun in intended and see people
post
ex like unreal salaries maybe they're
lying maybe they're not been honest
um or levels levels.fyi that's a good
side but there's a big range and
there's many reasons why people get paid
more or less
and that's a complicated equation not
everyone gets the same so be honest
and understand what you are worth based
on
what you've done what you can do or
based on your experience based on what
companies you've worked
and be reasonable about that when you
know that the first thing you want to do
when you negotiate is to fight for that
worth you need to get
what you think you're worth and that's
when you leverage not only your past
work but
your interview um results
and your competing offers to kind of put
confidence into that idea that hey i'm
worth this much right
but once you get that the topic should
change to
evaluating the company the team the
projects
the culture and you should
you should change focus to do those
things because
in the long run once you get what you're
worth the things that will truly make
you happy working for a company are
those other things not just your total
compensation so
do practice negotiation because you
should deserve or get
what you think you deserve and if you're
honest about where what you're worth
and you get that do switch focus to um
the culture team
projects and things like that so yeah
that's it that's all i had
these are the things i i found
interesting uh looking at them from the
perspective of
a candidate and not as a interviewer and
i hope you found them useful
and interesting in some form if you did
please
hit the like button let me know what you
thought about it and do subscribe or
share the video
and i'll see you next week cheers
Browse More Related Video
How to prepare for Machine Coding Rounds? | Tips from Ex-@Google SWE
How did she crack Meta Software Engineer Role | Londonπ¦πΊ | Garima Rajput
Confessions from a Big Tech Hiring Manager: Tips for Software Engineering Interviews
How to standout in a DSA Interview ? | Important tips to crack DSA Assessment Rounds | @SCALER
1.5 cr Offer in Remote Jobs | How to get Remote Jobs
The Indian Product Manager Salary Report with Aakash Gupta (Ex-VP Apollo.io) | HelloPM Podcast
5.0 / 5 (0 votes)