Google Coding Interview With A High School Student

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
what's up everybody how's it goin in this video we're doing the most exciting google coding interview that i've conducted ever that's right this is not a Google coding interview with an adult competitive programmer it's not a Google coding interview with the college student it's a Google coding interview with a high school student it's not just any high school student though this is the one and only William Lin he happens to be a competitive programmer also you may have seen him in his recent YouTube video that went viral where he won Google kickstart round a he also represented the u.s. at the International Olympiad of informatics where he won a silver medal he's also an international Grandmaster on code forces he is a veritable algo expert speaking of a go expert for this Google coding interview I asked him the hardest question that we have on algo expert it's called airport connections this is the kind of question that I would never expect a candidate to be able to fully solve and fully code out in just 45 minutes I would expect them to struggle through it maybe get a potential solution cut out some of it I would certainly expect to give them a lot of hints I won't spoil anything so you'll have to watch the entire video if you want to know how William did but that's the question that I gave him by the way on the topic of algo expert if you're prepared for your own Google coding interviews check out my company algo expert oh use the promo code Cleanse helium fer discount on the platform and finally before we jump into the interview just a few points number one this is exactly how I would conduct a real google coding interview you'll see that we used Google Docs which is what you would use in a technical phone interview with Google we also had Williams screen share his screen so that we could see what he was drawing this kind of mimicked an on-site coding interview where you would have a whiteboard and he'd be able to exhaust some stuff number two I would highly encourage you to really try to solve this problem as you watch the video think of how you would approach to the problem comment down below what you're thinking what your approach says number three at the end of the video we have a debrief session where I give him feedback that's always good to watch because you can see how the interviewer interpreted the interview and last but not least number four we actually filmed a second google coding interview on Williams channel we're giving you all kinds of Google coding interviews go check that one out after you watch this video I'll put the links in the description and in the comments below be sure to show Williams some love he seems like an awesome guy I had a really good chat with him before and after the end use go give him some love and with that let's jump into the hardest google coding interview that i've ever conducted hey William how's it going are you ready for the interview everything's going fine how about you I'm doing great I'm excited to get started yes I'm excited as well can't wait for this okay so we're gonna have roughly 45 minutes we have a Google Doc you have your own drawing app that you are sharing with me so I can see your screen so I can see what you're drawing wonder and uh let's one note yeah let's begin I'm gonna put 45 minutes on the clock starting now okay okay all right so I want you to imagine that you are an airline so you you support you know flying from airport to airport and you've got a list of airports where your airline is available and so I'm actually going to be giving you as an input to this function that you're gonna have to write a list of airports I'll copy it in the dock here these airports are gonna be these three-letter codes you might be familiar with them like this is how this is done in real life so you know bu D is like Budapest Airport LJ's LaGuardia Airport and so on and so forth so these are all the airports that you've got at your disposal for your airline and then I'm also gonna give you a list of Airport routes or Airport connections so for the purpose of this question I'm gonna use the words routes and connections kind of entered interchangeably okay they're gonna look like this so they're gonna be pairs is gonna be like one list of lists of lengths to where you've got two airports in in the lists okay and what this represents is it means that your airline has a one-way flight from the first Airport to the second Airport one way so for instance here yeah one way so you can fly it with your airline from DSM to ord you can fly from sin2 CDG etc okay yeah now you're the kind of airline that really wants to support its travel you want to make sure that your travelers can travel the world experience all of the airports that you have you know connections to or flights to and you have one Airport in particular that's really popular we're gonna call this the starting Airport maybe it's like your headquarters or something like that so I'll put it here this is gonna be the third input to your function and here this starting Airport is going to be LGA LaGuardia which is in our list of airports you want to make sure that any traveler who wants to travel to one of these airports starting at LaGuardia can do that you want them to be able to reach any Airport in your list of airports starting at LaGuardia now the thing is as you might notice in the routes LaGuardia isn't necessarily connected to every airport in fact I don't think LaGuardia has any outbound flights yeah it doesn't so wait it doesn't yeah so what you're gonna have to do is you're gonna have to write a function that is an or devise an algorithm that is gonna determine the minimum number of routes or connections so one-way flights that you have to basically allow as your airline to enable any passenger to go from LaGuardia to any other Airport now the one caveat is that others it doesn't have to be that the passenger can hurt you can you still hear me can you still hear me Oh your voice got cut off okay can you hear me now yeah okay okay perfect so a light like I was saying you want to make sure you want you want to allow all of your all of your passengers to be able to go from LaGuardia to any other Airport now the only caveat is that they don't have to be able to go directly from LaGuardia to another Airport it's okay if they fly through other airports does that make sense any number of airports yeah so for example like imagine well you could go from LaGuardia to sa n down here in the routes that would mean that you could also go from LaGuardia to eyw because you could first go through sa n does that make sense yes so also these passengers don't care about having like five transfer flights they don't care about having five transfer flights all they care about is being able to reach the destination airports but you have to you're you're working on behalf of the airline so you want to minimize the number of connections or routes that your airline is gonna have to support so that every passenger can go from the starting Airport to all of the air other airports and it turns out just to give you the answer for this particular example here the answer would be three so I'll write it down we'll put answer three the reason it's three is because if you connect basically like you can you can add three connections that are gonna allow you know your your users or your passengers to go from LaGuardia to any other Airport okay do you know which um which three here so that you need to add yes so for example you would add one connection from LaGuardia to Tel Aviv TLV and the reason is because like that opens up a lot of flights right then you would add one to either SFO or maybe San here and then finally you would add one to e WR okay okay so that's the entire problem right that is the entire problem you know okay so first off we have you have lists of like airports and such lists of like one-way connection so this is can basically formulate this entire problem as a basically formulate this entire structure as a directed graph okay okay so now you know about strongly connected components remind me or educate me okay so I so imagine if we have like a directed graph so okay maybe it looks like this and then in this grass we have you might notice that oh wait actually I'll just do this my notice that they are these components that can there are these group of nodes okay such that yeah not from any any node in it group you can travel to any other node in the group so for example yeah you started at this node over here then by like following the edges in here you can also travel to all other three other nodes and yeah the same the same is true if you start at the others do you know you can always reach the four nodes so yep after you find these office of all these strongly connected components will be disjoint from each other so the because if you imagine that like if we have like to strongly connected components we're like one node is part of both we know by the definition that like we can travel we can travel from us number years one two and three you know about yes the option that we can travel from 1 to 22 because they're in the same component and then you can travel from 2 to 3 because they're in the same component so in fact we can also travel from 1 to 3 and 3 to 1 as well so in fact like if you if these two groups of nodes can all go can all travel to each other then like this entire group of five nodes is just one strongly connected component so yep so why just showed that is that these components are disjoint so is that is that part clear yep that makes sense okay so after we find of the oiseau notice that like each node will be part of exactly one component so if if like because single nose will just speed your own components so each node will have its own component and then okay after we do this will compress all the components all the components into notes so I mean by this is at this original directed graph here will become a new graph like this which is basically taking the components and we're just basically taking the big circles and then like making them into the new nodes sure okay so and then in this new graph over here the compressed grass Oh will what is it choose this out we'll get an a cyclic graph and that's true because for example if we had we had a cycle like this so if these the formed a cycle then what happened is that these three would actually be part of the same component so it's impossible for the new graph to have any cycles right that makes sense okay oh so now we get to okay so now we get to like our oh by the way like we can just work with the new graph and completely ignore the original graph because as long as we can reach some node in a component in a component we can reach all nodes inside the component so oh sure yeah okay so and then let's say that I'll just created a new like compressed gas so if I new compressed graph looks like this and maybe just draw a few more and then maybe then we have our starting node which can be basically let's say to start notice over here yes yeah that's fine Oh when you do well basically you add a new directed edges from s to other nodes so for example we could do this but then adding this edge doesn't help because like this node is was already reachable from s already in the beginning sure and so now okay so now let's so now the the notes which aren't reachable from s are these nodes over here with with an N degree of 0 so they'd they don't have any nose pointing towards them so it's impossible for us to reach these nodes to reach these components ok ok so that means that we need to like cover these nodes when you do like a die just so that as can so that any person starting from s can travel to these nodes right yep all right so the only way we can do that is if the only way you can do that is if we add an edge from somewhere can thing too like this no over here and we need to do the same thing for this as well and then notice that if these two nose with in degree zero are reachable from s and that means that all other nodes will also be reachable from s as well as long as we deliver the notes within degree zero then we'll be fine and just to clarify William when you say when you say in degree 0 or n degree zero you're talking about like like inbound edges right yeah ten degree is inbound edges and an out degree is outbound edges yeah okay so so then on so we know that we must at least add an incoming edge to each of these two nodes in order to like satisfy the problem and one way you can do so is just to connect it to us so we'll just connect them like this and then after week after if we connect a new edge from s to each node within degree zero we will be able to like on all nose we'll be able to be reached from s yeah okay so the answer for the problem will just be we'll just feed the number of nodes with an N degree of zero which are not us so this case is just 2 and so the entire algorithm here is so first oh I'm on the Google Talk right now by the way so yep yep the first thing we do is we'll process the input so I'll make the strings and do some more some more usable form I guess so okay then then we all yeah we'll find the strongly connected components okay and then next step is to compress the graph based on components and then last step is find number of nodes within degree equals zero which are not s in the new graph and then that will be our answer and just a William for for the number of that last step the number of in degree equals zero which are not as in the new graph is it not possible to have two nodes with in degree zero that then connects the same node it is possible but those two nodes would still have in degree zero so you would still need to reach them so actually disregard what I just said yeah so so we know that like we must connect the these type of nodes and then it happens that once we connect these type of nodes all nodes will be reachable so yeah so yeah the establish establish the lower bound and the upper bound for the answer to be this number the number of nodes with an indegree of zero which are not s yeah all right so today if you want why don't you but before you jump into the code why don't you just very briefly walk me through like how you are gonna conceptually do these four steps okay so processing I guess so first I'll just go through the list of airports and then assign each string a and like an ID number for therefore starting from zero so okay zero one and then and then what I'll do is I'll Kate and okay then Jason C list to represent to graph so for each of these also I'll have a map it stores the string and an integer and then this will be the map which comforts from the name of the airport into the ID of the airport and then sure sounds good I'll go through the list of routes and then for each route I'll convert the name into the ID and then alright so first what out what else used to store the graph is I'll use an adjacency list so I see a factor is just a list and I'll have so for each of that end nodes I'll have a list of a story a list of which notes it can't reach yep sample let's say yes and if DSM is if DSM is 0 and Ord is 1 then what I'll do is I'll just I'll just add I'll add the value 1 into a jacent 0 its that yeah ok totally up ok so now I created the adjacency matrix no the adjacency list of the entire grass and yeah that's really uh that's basically why I wanted to do input yep sounds good they found the Jason c-list I will find the strongly connected components so this is this is the more I guess this is a more interesting part of the solution so they're actually they're actually algorithms which do this for you I think it's called corsages algorithm and well basically you find it'll find the it will give you the kind of strongly connected components of the of a graph in all of em plus em time where n is the number of nodes or the number of airports in our case and M is the number of edges or the number of routes in our case sure so oh should I explain this algorithm like I don't exactly know how do you don't really exactly know I'll explain it I just kind of know it if you want for now let's skip it and we'll what once you get into the implementation details we'll maybe we'll talk about it there but the idea is here you're you're applying this algorithm to get all those strongly connected components and I'm assuming is the idea that your your output there will be another adjacency list but for just these new connected component nodes or what I guess the output will be so for each so yes for each like component they'll will choose a representative node of the component arbitrarily so maybe like okay maybe like these are the represent representative nodes of each component and then what we'll do is we so you have this array called who of you basically who of you will you can the node which is the representative node of its components so for example sure okay I call it if I want the who value of this node then it will return this node because it's the representative node of its component and then gotcha okay so this algorithm should return this district to create this who already yeah there sup is to compress the graph based on the components so all right so what I'm going to do is but in order to represent the new graph I'm also going going to use a new adjacency matrix I'll call it a DJ to event and then even though that there might not be an components I'll still use I'll still use a also have an array of size N and then what I'll do is I'll only considered the representative notes so basically all notes you such that are who are you is equal to you these are the notes that like I'm going to work with okay okay so in order to get this new adjacency list from the old one well what I'll do is like this leave for each waste original edge you to be if ah if these two are from different component components then I'll basically add a new way I'll add a new edge for their representative nodes does this part make sense can you repeat that so for every you'll you'll go through every alright now I want to yeah no go ahead you go ahead alright so basically for each of the original edges in this graph I want to like comfort I want to like add these edges convert these edges into the new graph over here okay yeah okay so so the first thing is if an edge connects two nodes in the same component then we can't base then since the component just becomes one node then we'll just remove this edge so that's why I do here so for each for each edge from u to V if these if u and V are not in the same component and we can check that they are not in the same component if they have different representative nodes right oh yeah okay okay so then some if we find that U and V are from different components so like these two nodes then we'll add an edge in a new graph between the cut the components so document so that's why we have we add an edge from the representative node of U to the representative node of V and just if you go back to your drawing for a second here in the in the up most connected component the one that you were looking at a second ago you have that one with the four nodes imagine imagine two those nodes pointed out to like that other green node in the in the one with the triangle how would you handle like not do a counting twice you know that the representative node of the four person thing points to the representative note of the three person one does that make sense as a question do you mean like another edge like this yeah exactly how would you and imagine that that other edge that you pointed imagine it pointed to yeah I guess yes because that like that means that you would you would add the representative node potentially twice how would you handle that so if we have if we have if you have two of the same edges in this in this new adjacency list then it actually won't affect our answer because our answer is just the number of nodes within in degree of zero which I not s but then if if we add oh you know if we duplicate edges then that won't change if a node has an in degree of zero or not I see so you are you are purposely okay with duplicating edges yeah and so purposely it's just convenient to not check couldn't or duplicates fair enough yep no totally make sense okay so now we have this now okay did this new adjacency list and all we do is now the only part left is to find the number of nodes with and they in degree of zero which I not us so the first step I'll just count I'll just go through calc number of you such that so I only want to work with the representative so first thing is you make sure that you is the representative of the component of its component and then I also need to make sure that it hasn't Oh actually after we create the new adjacent least z-list um let me think so since you have a problem take your time okay so since we want the in degree of all the nose Oh we'll make more senses instead of having instead of doing stuff like working with a new adjacency list we actually just need to count the in degree for all the components so I'll just have an array they're called a degree so then our code doesn't change much but we'll just do is we'll do is we'll just change this part so we add an edge in a graph from u to V and when that when this happens the in degree of V increases by one so I'll just replace this part with I'll add one to the degree of the president representative node of feet like this gotcha okay so now so for instance in your in your I in your OneNote here you had in the the one with the Surrey nodes in it you would suddenly have an N degree of - yeah okay okay so now you want to find the number of in degree its acquitted zero so just check that it's zero and then after we find that count we oh yeah actually we just and and and when you just need to make sure that it's not the component of this so as long as as long as this component does not contain s then we'll count it and then the count will be our answer yeah okay okay I think this is this is a good like overview of everything I think we can jump into the coding we've got like roughly 15 minutes left so yeah let's jump into it okay so oh so I guess I'll just write a function for this so I say yeah well I'll just not care about capitalization yeah don't worry about that just call it just call it salt because I don't know what to call it in and I have a list of airports so be a list of string and then I also have a list of lists of strings social media routes now lastly I have the studying airport which is a string yep okay and then the first step I go through the list of airports and sign each string and ID number so solve it I'll just find an which is just sighs our list of a Poisson and I also have this mapped to comfort from the each string to each string of the airport to its ID and I just go from time just go through each of the airports and then I'll set the string I'll set this string in them I'll put in and Shina map with the string as a key and I as the value and I will be the idea of the airport okay and then then I create this actually um I'll just I'll just do this kind of like in competitive forum so I'll have a maximum value of and I'll just make it something like this and then I will and then I'll I need to clear this adjacency array on the outside with the McGregor you of n so this part is still okay and then I go through the routes I'll just do this so for each edge I'll just add it into the Chasen c-list so okay oh the starting node is will basically be a basically use of my map to find the ID of the starting node which is the first node of this list and then I'll find the ID of the second node and this will basically you add to edge yep and then the second part is running the strongly kinetic hones algorithm so for this I'll need the it gives me a cool array so I'll declare this as well and then and then Ford algorithm for this artisan I also need a reversed adjacency list I'll call it R okay and then I also need was it I need its back for this okay and then in the start of the exam I'll create the reverse adjacency so basically for each or judge and the Jason Lucy list I'll just add it to the reverse adjacency list I'll just swap I and J to make it reversed right okay okay and then and then the algorithm consists of two parts the first part is oh yeah and I also need a boolean array to store if I visited a node or not yeah for the DFS that I'm going to run okay okay so if this node is not visited like this notice not visited then I'll run DFS on it so let me write the code for DFS one so why visit this node I should set it to visited and then and then I'll do is I'll try to visit other nodes from this node so for each other node in the adjacency list it's not visited already then I'll visit it now lastly I need to add this node into the stack okay so that's the first DFS function for you're adding the node you're adding the node that you are currently doing DFS on in the stack yeah after it's after I visit all your notes okay yeah and then the second part I um I basically go through the stack starting from the top of the stack so well well like just fact is not empty look at the top of the stack and then I'll remove it okay and then if it's so what I'm going to do here is I actually I'll just created a new array called fizz - so this will this will act the same it what this will have the same function as the first of is array but I know before DFS - okay and then if it's not visited then we all visit it like this no now remember that we need to find the who array like this note you hear will be the representative node of the entire component so what DFS 2 will do is the FS 2 will go through all nodes in use component and it'll set those nodes to a little set that representative knows of all those nodes in the components so to you yeah um did you say something no no I see I said I just confirmed what you said yeah - you are ninja and to be the representative so we've first since we visited we started to visited and then now we set the cordon so we decided to their representative and then we just and at this time in DFS - we work with the reversed adjacency list so we do pretty much the same thing and if V is not positive then we'll visit it and this time we go to node V but on the other side it is still same so we call DFS - V Ranch is the reason that you are going through the reversed adjacency list here I guess I like what is that reason uh the reason is with how this algorithm for finding the components works so wait I haven't really thought about oh I haven't really thought much about why this algorithm does this but if you want me to then I didn't try to like find a few examples let's assume for now that I'm like I trust that it works some just interesting um I'm sure that there's like a piece of logic that makes everything click together but okay let's let's assume that it works okay so now after this after this entire like loop of to DFS basically yeah I basically found the who array for each for each node so now for this problem we can just ignore the new adjacency list we only need to work with the the only you want the in degree of all the nodes so yep I'll create this array called others greatest degree array and then let's see so now we go through the edges and then all we do is we check that these two are and different check that these two are in different components and if they are then we add an edge from who have I - who LJ so the in degree of curves journey increases that one so this will give us the in degree of all of the the in degrees of often those in the new gas yeah because if the if they are not if they don't have the same representative node then the one that we are pointing to has an N degree okay yeah and that's where last stuff we found a degree right now we just count the number of nodes number of components with a zero in degree and don't contain us okay so this will be our answer so we go through each of the nodes and make first checked eyes by representative node so who have I should be itself and then you also check that as a degree of zero so now we make sure that it doesn't contain the it's think it doesn't contain us so as long as I is not equal to the who of the ID of this and the who of idea of us I'll just use the map to find a ID so it's starting airport so if all these the conditions are true and that means we need to add an edge from the starting airport into this node so we had wanted answer and can you can you repeat why you're doing the first condition the who of I equals I okay so I'm basically iterating through all notes in the original graph like five zero two and minus one but then what I wanted what I want to do it actually is to iterate through all nodes in the new graph oh the condemn strength yeah the condense graph so those new so in order to iterate through only the the nose in a condensed graph I only I need I make sure that the node is it's representatives in its own components since each component has exactly one representative so each component will be checked through exactly once gotcha I see so this condition sort of like cleverly kind of ensures that you're only going through those representative notes yes gotcha okay okay cool say it looks like you're you're done here right yeah I think yeah I'm pretty sure it is okay so before we've got like a couple minutes left on the clock which is like kind of perfect timing let's see if we can just if you can walk me through all the various like code blocks and their complexity analysis oh okay so oh yeah I forgot to do that um okay so the first part and up by a way format again yeah see false us map it's basically a binary search tree its operations are like a vlog and like if I want to improve the operations to constant time I can use a hash map using an order I just I didn't like really care about this since this is like this just it doesn't really matter in this to making this solution correct anyway so in order to improve the complexity I'll just use an unordered last year okay so okay the first part this loop oh by the way I'll just use n as the number of airports and M as the number of routes or edges so this okay sure is open this part is of and because we loop through m times each like each iteration is constant time and then for creating the reverse adjacency list this part is o of n plus M because yep we loop through we have n iterations so that's so that's creates the end here and also for each this we iterate through each of the edges so each yep in a graph like gives us constant time and then for this DFS this DFS is over n plus n time this is pretty similar to like a normal DFS so what I do is since once we visit a node we never visit again we visit each node exactly once so that gives us like the end in our time complexity and the M comes from so every time we eat o in this loop over here where we go through the jason see list of U we do this exactly once for each edge so each yep is checked exactly once so that gives us all of em yep gotcha and then this part where the second DFS here is its yes it's pretty much the same thing as the first DFS do I need to explain it this is where and this is where we get into the whatever you call the core la whose algorithm or something on actually like I'm just saying about the second DFS is like structurally its structural eats the same as the first one yeah so yep time complexity is the same yeah then for is for loop here for you calculate the degree array we loop through we live for high from 0 to N and then we also loop through all of the edges so this part is and each edge we move to gives us constant time so this part is all of n plus M and then lastly for Kelly dancer we we loop through all end nodes and then each node is we do a constant time check so this part is just all them so in total like if we add everything together we get a time complexity of all of and plus M yep cool and let's let's skip the space complexity for now just in the in the t minus like three minutes that that were that we are in now just one quick thing that I'm curious about here in your while loop yeah you're popping you're popping off the stack once but then you reap op the stack why are you doing that second popping off the stack oh actually the top this function top doesn't pop off the stack the only oh oh it's top yeah top okay yeah I I thought it was pop I misread okay okay cool perfect um okay so then this makes this makes more sense and I think this this looks great yeah we're out of time okay so taken as long as I didn't like mess up my implementation for corsages algorithm then this should be fine yeah I mean I'm gonna look that up and at this point I this one we're done with the interview so I think you know for the people who are still watching here um I would encourage you to look that algorithm up I'll probably put it on the screen somewhere I'm gonna go look it up I'm curious especially why you're doing the reverse adjacency list if so okay with let's get into debrief if you want like William just leases for the rest of the of the video so first of all this went a little bit over time went to like 40 48 minutes but like this was like totally fine um I will I will do my best to give like feedback for whatever feedback I can give but first of all like this one splendidly series I think this is this is awesome like I said at the beginning of the video like this is the type of question that I would either not ask in an interview because I think it's too difficult in an interview or too time-consuming or both or if I were to ask it I would not be expecting and he I would not be expecting like perfectly written code or working code and I would probably be expecting quite a few hints so fantastic jobs from the point of view oh sorry go ahead oh yeah I wasn't expecting like I wasn't expecting strongly connected come on it's in this problem because it's actually a fairly it's it's pretty common in competitive programming but then it's not common enough to actually be encoding interviews so I was well I'm surprised it's a fairly complicated yeah it's a fairly I'd say it's like a probably a slightly more advanced graph topic there so you can solve this with a worse complexity without doing the the connected components and so that I was actually like I didn't think of the connected components solution where I've like I've thought about it I've never really like written it down so this was like super cool to see because you can basically do you can do like further form or DFS's to find like unreachable nodes or things like that which give you the same answer but are not nearly as elegant as condensing the graph if that makes sense right yeah but so yeah going back to this the feedback like from the algorithmic point of view fantastic job like there's probably no point of criticism that I can give you you not only were able to solve the problem clearly optimally but you you went through it seamlessly from a communication point of view really great job like you're under pressure you're writing a really complicated algorithm you have to write the code you communicate I was not lost at any point in time except for my own lack of knowledge about like the crew lodges algorithms I was able to follow through what you were doing which is like I think it is a big I'm commending your ability to communicate here and then finally as far as the the code I mean if I want to be like really nitpicky but really keeping everybody watching and you to William like this is I'm trying to find constructive criticism I would just say that you know encoding interviews typically we prefer seeing a little bit more descriptive in this and like the variable naming because it helps you know follow through I think this is something that like in competitive programming you tend to use like very small variable names right I guess yeah that's true for competitive rhyming but I guess like I I thought since I was already like talking through what my code was doing so I thought it was fine if I didn't use be able names which were that descriptive I would say it was because like I said I didn't typically like the reason you look for descriptive variable names is because it helps make it easier to follow but I had no problem following here because you were communicating so well and you went through the examples so well so yeah I think yeah they were all good and also things like adjacency or degree or eggs UV these are like these are totally fine maybe like maybe who maybe who would have been like hey there there was a point of improvement like again I'm really being trying to find constructive criticism but otherwise fantastic job without a doubt strong hire from my point of view if I were if I were like a coding interviewer at Google still for both a full-time for both an internship internship like not even a question in full-time not even a question - so for what it's worth William you have a Clement molesky's blessing for whatever that represents really I guess it means a lot if it's from an X Google engineering like this one you're really you're better than me at algorithms sir so are you suddenly have like a lot more experience or early you will you clearly live and breathe this stuff so but cool any last words that you want to tell the viewers or anything so be sure to check out my channel because I have a lot of interesting stuff about competitive so uh if you do competitive or Emmy that's how you get really good at these type of problems so yeah check it out definitely check it out it's like awesome content and like super super cool super cool guy thanks so much William thank you so that's gonna be it for this video I really hope that you enjoyed the interview and that you found Williams performance as impressive as I did I mean it was absolutely insane really incredible performance the fact that William is so young just adds even more impressive nough stew all of this and like I mentioned at the beginning of the video we filmed a second the Google coding interview on his channel go check it out it's a very different type of question lots of learning potential and show him some love he seems like a really nice guy with a very promising future with that don't forget to smash the like button if you haven't already subscribe to the channel if you haven't already and I will see you in the next video
Info
Channel: Clément Mihailescu
Views: 1,760,354
Rating: 4.8492303 out of 5
Keywords: google coding interview, google coding interview questions, google coding interview preparation, coding interview google, coding interview, coding interview questions and answers, mock coding interview, technical interview with a google engineer, algorithm interview questions, real coding interview, google software engineer interview, google coding interview with a high school student, competitive programming, google coding interview with a competitive programmer, William Lin
Id: qz9tKlF431k
Channel Id: undefined
Length: 57min 23sec (3443 seconds)
Published: Sun May 03 2020
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.