How to Prepare for Technical Interviews, Part 1 - Coding

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
prepping for technical interviews at big tech companies is a daunting task whether you're a beginner or an experienced engineer it can get quite overwhelming because there is a tremendous amount of technical information to cover in a relatively short amount of time to make matters worse tech interview prep has become such a lucrative industry that not only are interview prep boot camps popping up everywhere like mushrooms they can cost as much if not more than engineering boot camps the free ones out there either make you eventually buy their full guide or if they're truly free simply aren't detailed or coherent enough these were the factors that motivated me to create my own system when i prepared for my technical interviews earlier this year this isn't rocket science i've basically taken a collection of cognitive training methods and combined them with interview knowledge i've acquired over the years interviewing engineering candidates to put together an integrated system to help you maximize your learning potential in a limited amount of time and i'm fairly confident it works because i went from being able to barely solve five easy problems a day to over a dozen medium and hard problems and as a result i ended up landing multiple offers from top tech companies i know this is the part where you may expect me to say it's only three installments of 99 but no it's completely free no strings attached no cost to you there is already so much confusion and misinformation around interview prep these days that this is the least i can do to help hi guys my name is 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 as usual all the reference material from this video will be in the description below and i have time stamps so please free to jump to the sections that interest you more so this is a series of three videos on how to effectively prepare for your technical interviews this is part one and covers coding part two will be on system design and part three will be on the behavioral or leadership aspect of technical interviews while this guide can be used for most technical interviews it is mainly geared towards big tech and top tech companies like microsoft facebook google amazon uber so on and so forth and finally each of these videos are long and very dense not only do they contain a lot of resource recommendations but also methods for creating scoring rubrics selecting the right set of practice problems and specific techniques for pattern recognition and spaced repetition you will likely have to either take notes as you watch them or use them as a reference and revisit sections as you need them all three videos in this series are divided into three main sections first i'll explain the purpose of that type of interview and how much time you should spend preparing for them second i'll recommend resources that you should get before starting your prep and third i'll explain the strategy to use when prepping for that specific type of interview all right so let's get started with the coding interview so what's the purpose of coding interviews and how much time should you spend preparing for them the purpose of coding interviews really depends on how much experience you have as a candidate if you are a beginner with zero to two years of experience coding interviews test for your basic competency and your potential basically your ability to take what you've learned in school and utilize that to solve problems effectively for beginners coding interviews are the bulk of the whole interview process so i'd suggest dedicating around seventy percent of your prep time to coding if you're a mid-level engineer with around three to five years of experience coding interviews test how accomplished you are as a software engineer this involves coding speed communication fluency on the language of your choice coding style and modularity test driven nature of your code and your ability to solve complex problems with optimal solutions coding interviews are probably the hardest for this group and the evaluation most likely the strictest think of it this way you don't have enough experience to be in engineering leadership but you have been an individual contributor in the industry for almost five years your coding aptitude should be at its peak at this stage right but that being said because you've already gained so much experience preparation will also likely be easier for you and you also have to prefer other areas like system design and leadership so for that reason i recommend dedicating around 50 of your prep time to coding and finally if you have more than five years of experience or you are in engineering leadership then coding interviews act as minimum requirement filters they are there to check if your problem solving competence is roughly on par with the other engineers in the company the focus will be more on your approach and thought process as opposed to your raw problem solving horsepower as senior engineers there are other interviews which i will discuss in part two and part three of this video series that are much more important therefore i suggest dedicating around 30 of your total prep time to coding as far as total prep time goes this really varies by the individual but you should plan for around three to six months in general some of you may take three months others may take up to a year it's really important to understand your own learning pace and not rush through the process all right so let's move on to some of the resources you need during your prep you'll be brushing up on a lot of material as well as practicing a ton of problem solving there are a few things that you'll need books courses and an online coding platform everything i recommend are resources i've personally used for my own prep and can fully endorse that being said if you're tight on budget you don't have to get all of them or any of them for that matter but at the very least i recommend that you get yourself a book to refresh data structures and algorithms a course for structured learning whether that is free or paid and a subscription to an online coding platform where you can practice coding questions i will quickly list out my recommendations here but if you are interested in detailed recommendations i have dedicated videos for that so check them out if you'd like okay so here are the two books i recommend these are my favorites when it comes to data structures and algorithms but i will also list out some more alternatives in the description below the first one is called grocking algorithms this one is illustrative and has a sense of humor it's an easy to read option if you're a visual learner the second book i recommend is introduction to algorithms this is much more dense and mathematical but has very thorough explanations if you are the kind who loves reading white papers you'll probably enjoy this one more if books aren't enough and you need some more structure consider taking some online courses here are some world-class computer science courses that are available for free on youtube i recommend watching them in order the first one is introduction to computer science by anna bell of mit the second one is programming abstractions by julie zielinski of stanford and the third one and the gold standard is introduction to algorithms by eric domain of mit if you are severely limited on time definitely watch the third one at the very least considering that these are free courses you'll get access to all the lectures but they don't really come with any interactive coding playgrounds or quizzes or in general there isn't any kind of feedback evaluating your progress and practicing appropriately will be entirely up to you so if you are the kind that needs more structure or you find these courses to advance you may consider paid courses for paid interview prep courses my recommendation is educative i do want to disclose that this video is sponsored by educators but they've neither had any influence in the making of this video nor have they asked me to say anything specific i would have recommended them regardless because i think they are the best value for money when it comes to courses not only for interview prep but also for software engineering in general but as far as coding interviews are concerned just visit educative.io and search for the term interview you will find a bunch of really good courses namely ace the coding interview series which is available in javascript java python and c plus plus and if you look at the python version you'll see that it has 447 lessons spanning almost 100 hours with 54 quizzes 1055 integrated coding playgrounds 291 challenges 779 code snippets and 1547 illustrations so if you like structure these are really good but you don't have to stop there they also have specific interview prep tracks for front end back-end machine learning and object-oriented programming to name a few i'm a very visual learner who loves examples so some of these courses were an integral part of my preparation strategy and that is the reason i can recommend educative without reservations you can either get their yearly subscription and go for the long term or get on the monthly plan and take advantage of all the awesome material as long as you need it either way if you use the link educated the io slash engineering with utsub you will get 10 off your subscription all right and the final resource you need is an online coding platform or a question bank my favorite here is lead code because they allow you to practice questions specific to companies and there is a good community for discussions as well but you could use something like algae expert that strictly focuses on quality over quantity via a set of hand-picked questions eventually it will depend on your preference if you aren't sure try each for a month and see which one you prefer if you're curious about differences between lead code and algae expert i have a video where i compare the two as well so these are the resources that i recommend i think it's just the right amount to get you fully prepped i will list out some more in the description below just so you have other options but like i said before you don't have to go through all of these just pick whatever fits your time and budget okay so now let's look at an effective strategy for tackling the coding interviews grinding out problem after problem without meaningfully tracking progress will not yield good results you will eventually get frustrated burn out and give up quantity does not guarantee results when it comes to coding interviews so how do we ensure that we can maximize our results by practicing with the limited set of questions here's the seven step process that i recommend so the first step is to assess where you are you can do this in a number of ways first you can try out a few typical interview questions and see if you can solve them optimally in under 30 to 45 minutes if you get close to this you are in a good spot and probably can wrap up your preparation fairly quickly if you get completely stuck then you may need longer second and even better set up an interview with a company that you don't mind getting rejected back you can assess your entire interview performance this way and based on that you can allocate prep time accordingly and the third option is to do a couple of mock interviews and see how you do on those make sure that the interviewer is conducting the mock interview knows how to evaluate candidates and can provide actionable feedback interviewing.io and pram.com are good resources for this one or more of these should give you a rough idea on where you're at and how much time you need to advocate step two is to refresh your data structures and algorithms knowledge it does not matter whether you're a beginner or a seasoned engineer you will need some form of brushing up when it comes to data structures and algorithms how long it takes you to brush up and what resources you use depends on how much data structures and algorithms you use on your day job how recently you graduated or if you have interviewed elsewhere how you prefer to learn and what is your budget to acquire the preparation resources just pick the ones that fit your needs from the recommendations i made earlier about this as you learn and brush up on your data structures and algorithms find a few easy questions related to those topics and try to solve them just do one to two questions per topic and don't worry about whether you can solve them or not the actual practicing part comes later this is just to get an understanding of how interview questions relate to the topics you're learning about all right step three is to create a consistent system for tracking your progress this is one of the most important steps without a consistent system to evaluate your progress you will end up grinding out problems after problems without any success the idea is to have three buckets or lists if you will let's call them the to-do list the repeat list and the done list the to-do list will contain a set of problems that you have not worked on yet the repeat list will contain a set of problems that you have already worked on but aren't confident about and finally the done list will contain a set of problems that you have already worked on one or more times and are fairly confident on so you start off by adding a carefully selected list of problems into the to-do list and as you practice those problems make their way through the repeat list and eventually to the done list you can manage these lists in any app you prefer excel trello notion or anything else that allows you to manage lists i personally use notion and i'll be showing you some clips from my notion setup okay so let's talk about how to go about selecting the problems to practice i've found that 100 to 200 questions provide the best value in terms of time doing more than 200 starts yielding diminishing returns so you can either go with something like algo experts where someone else has done the curating for you or for lead code i'd recommend selecting the top questions from common data structures to do that visit lead code and navigate to the problems section click on tags and you'll see all the common data structures listed there click on a data structure then sort the list by the ones that have solutions then pick the top four easy top four medium and top two hard questions from that sorted list add that to your to-do list repeat this process for the following data structures at the end you should have about 100 questions 40 easy 40 medium and 20 heart this is just a starting point where you have a good representation of all the common data structures you will be adding and removing questions to this list later all right now we have a set of problems to work on but to track your problems consistently you must also work on them consistently so let's talk about how you should practice each problem first always practice as if you are in the real interview which means no watching tv no lying on the couch no lounging around since interviews are remote right now practice on a computer the same one you'll be using in the real interview i'd even go as far as putting on headphones to mimic the real setting second always time yourself your goal is to be able to solve every problem in under 30 minutes so when you work on a problem if you're past the 30 to 45 minutes mark and still struggling you're done look at the solution learn the technique and move on to the next question that being said if you have no idea in the first five or 10 minutes and are completely stuck you can take a very quick peek at the solution just enough to get you going in the right direction try to treat this as a hint to get you moving and avoid looking at the full solution until you're past the 30 to 45 minute time threshold third in a real interview you also get to ask clarifying questions but when you're practicing you don't have anyone a good way to emulate that is with test cases for example a typical clarifying question that can come up when dealing with string manipulation could be will the string have white spaces or special characters emulate that question by trying out an example test case with white spaces on lead code the output should give you the answer on whether the answer is yes or no fourth try to do at least five questions back to back because in a real interview that is how it will be so you will need to build up that endurance avoid getting distracted in between questions however after you finish the entire session of five or more questions it is critical that you verify your solutions to see how well you did if you did not do well it is important to spend time and understand the approach and technique remember the goal is to understand the mindset and not to memorize the solution all right now that you have some ground rules on how to practice you need one more thing before you can start your first problem you will need a scoring system so that you can assign a score to each problem after you work on it there's really no rule of thumb when it comes to scoring yourself but i recommend giving yourself a score based on the ground rules that we just set up give yourself a score in the range of one to five one being poor and five being perfect for each of the following then average that out to get the final score for each problem the first thing did you need hints as in did you have to pick up the solution to get more help how many times did you do that second did you finish the problem in less than 15 minutes or less than 20 minutes or less than 30 minutes or less than 45 minutes or maybe you just couldn't finish it third was your solution optimal suboptimal almost worked off track got completely stuck fourth did you have any bugs how many one two three where they're minor where they major just give yourself a score from one to five based on all these questions average that out and that's the score for each problem that you do okay so now you have a good set of questions a method to progress through them a rule set for working on them and a consistent system for scoring them you are now ready to work on the problems step four is to practice the problems using spaced repetition and pattern recognition the idea is to use spaced repetition to build up your problem-solving intuition and muscle memory but at the same time you also want to keep a keen eye on all the repeated patterns that come across while you're practicing these problems here's an example of how you can go about it so let's say you have bandwidth to practice only five problems a day remember the three lists that we talked about earlier all hundred problems that you picked should be on your to-do list on your first day and the other two lists should be empty from there you will pick five random questions from the to-do list and work on them it is important to pick them at random to avoid working on the same category after you finish each problem you'll give it a score based on the scoring rubric we just discussed earlier if your score for a problem is close to five put that problem at the bottom of the repeat list if your score is close to one add that problem to the top of the repeat list and likewise if your score is closer to the middle like three insert that problem towards the middle of the repeat list obviously your repeat list will be empty on day one but as you progress through the problem you will have the problems you struggled with the most towards the top and the problems that you struggled with the least towards the bottom now from the second day onwards you will pick four random problems from the to-do list instead of five and pick one problem from the top of the repeat list and just as day one you work on the problems score them and put them at the top middle or bottom of the repeat list based on the scores do the same process every single day you'll obviously repeat some problems way more than others and those are generally the problematic ones the easy ones by virtue of being at the bottom of your repeat list will automatically be repeated less often at any point of this process if you feel that you're 100 confident on some problem or have repeated it enough times where you're now confident that you can easily solve it you move them to the third list that is our done list keep doing this until your to-do list is completely empty at this point all your problems should either be in the repeat list or the done list or most likely they'll be split between the two lists good job you've made it through round one round two will be much easier i promise but before you proceed though you need to take a look at some common coding patterns and see if you notice any this is probably the hardest step to master because patent recognition is the step that enables you to know when to use certain data structure algorithm to solve the problem this is also where you pick up little tips and tricks that will help you solve those problems i will list out some common techniques here the idea is to recognize repeated steps that will help you solve many different problems some of them may be simple algorithms others may actually be patterns that reoccur and some of them just may be variations and tweaks of other problems and since you have gone through 100 or so problems by now it's a great time to review some of these techniques and see if you recognize them this step will help you create a better association with them so that you'll not only be able to recognize them when you see them again but also readily pull them out from your tool chest of problem solving techniques feel free to study more about these techniques if you just search it on google you should get more information about those or if you want me to make dedicated videos on some of them let me know in the comments below and i can work on them alright now that you have quickly browsed through some of the common techniques let's go back to our list feel free to discard the problems on your done list or put them somewhere else because you are now confident on those now look at the problems on your repeat list and try to assign them to the techniques that we just discussed once you have done that take a look at the ones that repeatedly got low scores and see if you see any repeat offender you should notice that certain combinations are more problematic than others for example for me i noticed that binary search on two-dimensional arrays was always problematic it could be recursion with memoization for you graphs with connected components for others regardless of what those are make a note of the most problematic ones because in round two you'll be filtering on those categories on lead code and adding another 50 or so problems specific to those categories move all the problems from repeat back to your to-do list and reset the scores now repeat the entire process exactly as you did for round one you'll realize that this round will go much faster than the first time and you'll start recognizing patterns and techniques as you solve more questions your speed and endurance will also increase and as a result you'll start doing way more questions than just five in the same amount of time some of you may need a third round but generally at the end of two rounds of space repetition most of you will have done close to 200 questions and will be confident enough to start interviewing step six is to evaluate your readiness so when do you know when you're ready well when you've gone through at least two rounds of space repetition and most of your scores are closer to five which means most of your solutions are bug free completed within 30 minutes and are optimal don't worry about the oddball questions there will always be some that will get you you'll not be perfect at this and almost perfect is good enough and another good way to evaluate your readiness is to interview at a few companies where you don't care to work for or just do a few mock interviews and see how you perform and some of it is really just gut feeling something like really hard to quantify but because no one has unlimited time at some point you'll have to draw the line and start interviewing and trust me you will never be 100 ready and that's okay and you will also never get accepted by all the companies that you apply to and that's also normal speaking of not being accepted by all the companies it is critical that you reflect on what when right and what went wrong after each interview you want to continue doing things that went right and learn from mistakes you made try to investigate what got you stuck did they give you a hint that you didn't realize it maybe you forgot to ask clarifying questions or just jump to conclusions too quickly maybe you forgot certain edge cases was it just the complexity of problem that needs more work understanding this will help you iterate and improve fast do keep in mind that on some days you just have a bad day where luck is just not in your favor don't be too hard on yourself and let this go one final thing i wanted to add is that this whole process is generalized uh and should act as a template that you change according to your needs or even the company you're interviewing at if you have tighter deadlines but higher bandwidth each day do 10 problems and adjust accordingly if you want to target specific companies pick some problems from lead code that are specific to certain companies follow this process consistently every single day and you should see improvements very quickly even if you can aim for only three problems a day it is important to stay consistent and do them every single day i do recommend that you aim for at least five problems a day and that's all for this video part two of this video will be on system design and part three will be on behavioral and leadership if you're watching this after june 10th 2021 both part two and part three should already be available and linked in the description below so go check them out if you are watching before june 10th they will be uploaded in the following weeks if you like this video please like it comment on it share it with your friends who may find it useful as well helping others is the whole reason this video even exists and while you're here please subscribe for more content like this i'll see you in part two cheers [Music]
Info
Channel: Engineering with Utsav
Views: 47,077
Rating: 4.9815245 out of 5
Keywords: programming interview, coding interview, coding, programming interview tips, programming interview preparation, software engineer, cracking the coding interview, coding interview tips, google coding interview, coding interview preparation, how to prepare for technical interview, tech interview preparation, tech interview prep guide, system design interview, faang, leetcode, algoexpert, problem solving, technical interview software engineer, software engineering, microsoft interview
Id: 7UlslIXHNsw
Channel Id: undefined
Length: 22min 50sec (1370 seconds)
Published: Thu May 27 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.