Passing the Google interview as a software engineer

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
hi folks in this video I want to talk to you about the interview process of getting into a large software company I will talk specifically about Google because I went through the Google interview process and I got hired by Google I worked there for about a year and while I was there I also interviewed others too to get into Google and I noticed that while interviewing for other companies like Twitter or Facebook or Amazon the interview process is quite similar to Google so what I say here applies to to most of these companies so I'm going to go through what kind of questions they ask and then what you need to study in order to be able to do well there and what you should pay attention to basically to to perform well in to your Google HP ok so let's get started um first I want to talk about the various positions that you can apply for at Google and they're basically basically free kind of positions in terms of level and these are the first one is going to be an internship so an internship but not any kind of internship but the step internship so that's the lowest level um inside Google we call this level one and this kind of level I recommend it if you can get that internship I recommend it because the interview is going to be much easier for you if you if you get accepted as a step intern this is going to be a three months position during the summer and you will have great prospects of doing another internship with a company so if you if you make it into your first step internship then you can get a proper internship in the in the next season the bad thing about step is it's a its salaries slightly lower than the full internship and you can only apply to this if you are a first year computer science student sometimes they also accept second year so if you are just starting a computer science degree and you just finished your first year or maybe a second year and this is what you should apply for this is what I highly recommend doing because once you get into Google you will see me culture inside of it and you will be able to see if you like it and if you want to apply again so again first or second year is the summer and it's also uh three months okay and then the the second kind of position you can apply for is a full internship and the full internship is available to all students Stein studying computer science you can be a an undergrad first or second year or higher year you can be a match for shooting you can be a PhD student um and this is level two inside of Google and this is also easier to get into than a full-time position but ha but this interview is going to be slightly harder than the internship so I highly recommend if you plan to work full-time for Google to go through the internship because you will be able to work for a short short amount of time you will be able to see the interview process you will be able to meet people there and see the company culture and that will give you a huge advantage if you want to get a full-time position and so this is a hire years you can also get a full internship if you are first or second year but I don't I don't recommend that because the step internship is is easier to get into so why don't take advantage of that the internship is usually three months maybe up to a year sometimes you can do up to year for example our twitter does uh up to your internships and then this is uh this can be the summer or can be during the winter and then the third kind of position you can apply for is a a full-time position so level three and then this is usually long-term so another reason why you can do an internship is that you can stay there for 3 months and then you can go back to school and no questions are asked about why'd you leave after just three months right so the bad thing about the full interview is of course it's more challenging so these are the types of interviews that that you should expect alright so I'm going to talk about all of them they are not very different the basic ideas are are the same so what what is what is the interview what is the interview about so first of all the Google interview is not like a laid-back interview it's a very technical interview so you will be at technical questions and these are going to be about coding these are going to be about systems they're going to be about science and engineering they're not going to talk about things like your CV so much you may spend like five minutes at the beginning talking about your CV and what you did they're not going to ask open-ended silly questions like what you want to be in five years or what's your biggest weekends we can weakness they don't care about such things they care about your technical ability so while you're there your interviewer wants to know if you know your stuff if you know what you're talking about so they're going to ask you a technical question the interview is going to last for 45 minutes and it will be it will be a problem so it will be a technical problem you will be asked a problem you will be given a problem and then you will be asked to solve that problem and that's the whole interview and there they will expect you to write code during your interview not just to talk through the solution or at a high level but you will be expected to write code at a whiteboard so cone at whiteboard now this is the first point that we'll make if you have not used a whiteboard code ever this is going to be challenging even if you are a good programmer the whiteboard coding session is hard so if you have thoughts programming lessons to others and have written on the whiteboard that's going to be a big advantage for you but if you haven't then you should Crane should put aside two weeks before you interview and do coding on the whiteboard every day and make sure that the code that you write on the whiteboard is properly written it's actual code it compiles and runs without mistakes so this is important it must compile ms1 so you're not expected to write pseudocode you're expected to write actual code as you will write on a computer and you don't get the chance to compile it you don't get the chance to test it using the proper compiler now the Google positions are - two different positions two different types of positions the first position is called an SWE sweet which means a software engineer and the second type of position is a necessary and that's a site reliability engineer or a system administration or DevOps so if you if you want to apply as a software engineer this is what I'm going to talk about today the software engineering position interview and I want to say that these are generalist interviews so Google will not interview you for one particular position if they want you to work on Google Maps they will not interview you for a Google Maps position they will interview you in general for getting into Google and then afterwards they will ask you to join a particular team or you may also be given the choice of joining one team or the other so let's make sure that this is clear as well this is a sysadmin position or reliability engineer in the SRA position that I'm not going to talk about today you are a sysadmin who also writes code so this is like a DevOps position where you get to own systems you deploy them you automate things but my mind's view was sweet so I interviewed as a sweet and I interviewed people as sweet so I'm going to talk about that today and the important thing is here is that keyword is generalist so you may be asked very general questions for a wide area of different problems you may be asked to solve whatever problem the interviewer has in mind they can be varies and your specialization does not matter so much so if you're very good at security for example or if you're very good cryptographer this doesn't matter if you're not very good and like a viable write by a variety of variants so you should know your stuff you should know generally about computer science and have a general idea about how a system works how systems work not just specific knowledge okay so that's like the preliminaries and then it's geeky let's get into the actual interviews there's um there's two types of interviews the types of interviews that happen at Google are screenings and then there's also the actual on-site interviews so there's the phone screen and the on-site interview so these two types of interviews are all on the same subjects they will not be very different but I want to just briefly touch on what they are so that you feel comfortable chewing chewing there there are its views so the the phone interview is something that they do first they call you up either on hangouts or on your phone and they ask you a few questions it's about an hour or maybe 45 minutes to an hour and it's a technical interview like I said before all all of Google's interviews are technical and this one's going to be easier so this is just to to see if it's worth it taking you on side basically and you may you may do one or two one or two of these if on the first one they're unsure they'll we'll give you a second call and if you're an intern or step intern maybe all of you interviews are going to be phone screens so they if if you're far away if you're in different country they may not bring you on site for the interview they may conduct the other interviews on site so for your internship you may get like two screenings for example if you're interviewing for four full-time or if you live in a country where Google is located and they could bring you on-site easily they will also do an on-site interview if you're interviewing full-time usually if you do well on the phone screening they will fly you to a Google office and you can do the on-site interviews there so fall on the rest of this video I will focus on the on-site interview which is on the same subjects basically that they're going to do on the phone screen but this one is just a little bit harder so there's not much difference between the two in terms of subject it's just a difficulty that is uh that is different so um yeah the loan signs the on-site interview is going to be a local interview you walk into the Google office you get your flight paid for by Google and a hotel and then in the morning you go to work basically you go to the Google office it's 9:00 to 5:00 interview or maybe 10:00 to 5:00 it's um it's a full day and it's going to be maybe five interviews back-to-back so each of these is going to be 45 minutes and you're going to also get a lunch interview which is basically a bonus interview where you get to eat lunch with a Googler and they don't ask you technical questions so maybe it's going to be to two or maybe three interviews before lunch then it's going to be launched and then two interviews after lunch something like that and the the lunch interview you shouldn't worry about because it's not counted towards your score of course I mean don't say something very stupid don't don't make your host feel feel very uncomfortable or don't say something racist or sexist but other than that if you're a you know a normal person it shouldn't matter to you you're not being judged on it right um so yeah that's it and then let's move on to what these other technical interviews are what these on-site entities are what are what are the subjects of these interviews what do they ask and how can you do well there so um let's see let's uh fill in the white board um okay so you will be judged on three different things they will ask you maybe different types of questions to to judge you on three different areas three different areas the first one is going to be coding what we call coding and I will explain in detail what what this means the second one is going to be algorithms and the third one is going to be design so algorithms and the third one is going to be design okay so I will go more deeply into these things one by one so let's start by coding well encoding you the interview wants to know if you can code if you couldn't write code because this is what you're going to be doing at Google day to day as this we this is this is your job to to write code so they will expect you to be able to code proficiently proficiently and that means you should write good code um they want you to code quickly so don't take the whole like 45 minutes to write a for loop and then without mistakes what is without mistakes mean well that means the code you write on the whiteboard should uh compile it should not have missing semicolons that should not have off-by-one errors I mean you will not be you will not be rejected for that but it makes a good impression if you can if you can write it well and then in general they want to see if you use use good practices um so what are these good practices well it could be for example defensive programming to to use asserts in your code to check your inputs for correctness maybe maybe you can ask the interviewer if they want you to write unit tests or other tests and they can tell you yes or no but it shows that you know you you are testing your software and then of course quickly is a bit of a misnomer because if you code too quickly then that's a red flag the problem is if if they ask you a coding question it will sometimes be vague it will be something like um I don't know um to implement something like a let's say you are given some points on a map and you want to find whichever points are closest right this problem statement is not clear it doesn't tell you closest to what it doesn't tell you how many points there are on the map it doesn't tell you if the map is 2d or 1d or 3d it doesn't tell you if the coordinates of the map are given and longitude or latitude or if they're given an x and y doesn't tell you if the coordinates of the map fit in memory all these things so um the first thing to do when you see a coding problem is before you go in too quickly to write the code you should think about the question and think if it is clear and if it is not clear you should ask as many questions as as to clarify the problem statement so try to figure out what the statement is asking before you go to the whiteboard to write code you should ask questions about the data does the data fit in memory does it fit on the hard drive sometimes Googlers enjoy making the asking you scalability questions so maybe the data will not fit in a single server and you will have to use multiple servers and you should definitely understand the problem from an algorithmic point of view so what is the input and what is the output you should expect right so ask questions this is very important and you're judged on that because junior job you will need to ask questions and you will need to talk with your colleagues about various problems and you will need to discuss them and so this is a good quality to have as a software engineer you want to be able to to explain your thought process you want to be able to explain your questions and if something isn't clear you should not be afraid to ask so just ask away and once the problem is very clear in your mind and once you know how to solve it you should then go to the whiteboard and code but if you're not sure how the problem is solved I think you should talk about the algorithm with your interviewer as you would with a colleague so tell them about your idea on on how to solve the problem say okay I will write this for loop and I will do such-and-such in the same way you would talk to one of your co-workers or one of your fellow students at school and if it seems to be going well then you can try and write out a coding solution your interviewer will very rarely ask you to go to the whiteboard and code when you have figured out your solution it will become clear to both of you that it's time to write the code so you can ask them you know should I write the code now and they will say yes and so um yeah now that's that's it about coding and they will also check your your style so I'll use a good coding style that's important um so that's details like coding style details like indentation details like horrible and function naming spacing um prepare to to code on a whiteboard if you have trained on writing code on the whiteboard as I said previously you should leave some space to define your variables you will get used to that so that your whole code is not crammed in a single line so this makes a good impression right the code is readable now here I wrote mistakes of course it's impossible to write perfectly good code in a Google interview because the problems are usually difficult so you will definitely make mistakes but if you minimize your mistakes that's good however at some point you may have a bug and you interviewer may say to you something like oh I think you'll have a bug and then um you will probably you probably do have a bug if they say that so you should step back and look at your code maybe run an example right run a test case um and you should run it out wildly like say the input is such-and-such and go through your code and explain what you're thinking and see if you can find a mistake like debug it in the way that you would debug a real program except this time you don't have a compiler and you don't have a debugger and if you're stuck you can freely ask your tutor for him you can say I can't find my mistake maybe you can give me a hint um I think it would be arrogant to say no I don't have any mistakes my code is right something like that is kind of a red flag and I would not recommend it um in general it's very important to talk through your solutions speak up speak through your your thought process and describe what you're thinking to your to your interviewer say say the first thing that comes to mind and then try to improve it and see what they say to you and so on and so forth if you just sit there in silence and wait for your interviewer to speak or or just think about the problem solution while your interviewer doesn't know what you're doing this is not really illustrating anything to your interviewer and then um I think you should know these languages so I think you should know C C++ you should know some Java you should know some Python and then you should also know some web languages you should definitely know your HTML CSS and JavaScript and if you can if you can know maybe if you have some bonus languages there like maybe go or some functional language Haskell these are bonus points so these are quite popular languages all of these and you are expected to know them you will be allowed to code in any language of your choice but different problems call for different solutions so if you're asked a very clear algorithmic question then C++ is very good for this because you can use STL the standard library and all of the data structures that it offers if your ask them were like practical problem you can use Java or Python where you can write more concisely if you're asked a problem about the web you can call it in JavaScript and sometimes a problem calls for a functional solution and if you're at a low-level question like a security security securing question or how to implement a data structure you can use C so it's very good to know all these languages so that you can use the one that is more appropriate for the problem I recommend that you know all these languages and you've written code in all of them and one way to do this one way to practice this is you can go to to this website project Euler don't net which has various very very simple problems and you can go ahead and look at these problems for example problem one says it's like a like a very simple problem where it tells you look at the numbers are below 1,000 that are multiples of three and five and you should sum them all right and then once you log in here and the project on your website you can submit your solution see which way so if you want to train in these languages C C++ Java Python Jes you can go ahead on project order and maybe solve the first 20 or 50 problems in a language of your choice and this will be a good way to improve your basic skill in in this particular language that's it about the decoding skill it and then look to see if you have good up good coding abilities and well of course learning these languages at a basic level is good but you should also know good general software engineering practices and the way to improve that as I will talk about in the design section as well is to write actual production code and I will get back to this now let's go let's move on to the move on to the second kind of skill that is and that that skill is uh algorithms and so number two is algorithms and see what kind of questions they asked um I will talk about a wide variety of areas that you cannot train in you can improve it and if you know all these areas then you will do well in your Google interview and then you will do even better and introduce at other companies like Amazon um so algorithms in algorithms this is standard server stuff that you will do in a computer science undergraduate course of a lot of algorithm so it will include graph algorithms and then in graph algorithms you're expected to know things like searching so the simplest thing you can do in graphs it is like BFS and DFS you will be expected to know some shortest path algorithms like Dexter and like welcome forward and so on they may not ask you about like specific algorithms but if you if you know these things you will have requisites to solve any problem that comes comes along the way so it's good to know they may not ask you to comment on for itself but but if you know it you know it has good techniques it but you cannot you can rely on for solving any problem um floyd-warshall is not a classical algorithm and and then some maybe some some flow algorithm some maximum flow algorithms like for a new person these are good because there's many problems that you can reduce to these so if you've if you work with these ideas you can say oh this problem is just a max flow problem where this problem is just a shortest a problem on the graph and so you will be able to solve it easier just using standard tools if you if you see a problem that is a standard algorithmic problem and you just try to solve it on your own without mentioning that you know it oh it has been sold by a coin previously is kind of bad right because we should know the literature and what has been done before um now you should also know some dynamic programming and in dynamic programming you are expected to know how to solve problems with with dynamic programming and multiple dimensions so say 1d 2d etcetera and you're also expected to be able to make like correct and correctness arguments for this maybe not full formality proofs but just to to understand why is your algorithm correct and of course to be able to write your the recurrence relation so your your recommenders relation is a mathematical tool to explain the correctness of your algorithm and of course you should also be able to approach problems really so that's one thing and then of course you should know your data structures these are useful tools and if you know the right data structure the problem becomes much much easier some data structures that are useful are of course things like you know arrays maps queues stags these are like the basics but um if you if you know some more advanced data structures it will definitely help so things like binary search trees or self-balancing binary search trees like AVL trees and B trees they may ask you like a database kind of question with B trees or B star trees and then some more advanced data structures like segments or binary index trees are much very useful segments trees or interval trees that say these are super useful but you may not necessarily the and then sometimes they asked like specialized questions so if you know some specialized state structures like KD trees you can solve things like meet my problem I told you about before so this is super news for all kinds of new twins and then the other kind of a structure that is quite useful is to know some extreme data structures so things like tries because if you are faced with a string problem its what good this will be very valuable and then um some classical algorithms like some classical algorithm techniques I should say like string matching or the idea of a sliding window these ideas are quite important to know as as tools so you should know these things and then of course once you write your algorithm we need to be able to analyze it from a complexity point of view so from a complexity point of view you need to know your computability and complexity classes so just basic stuff not not something very advanced so like they go or like Omega and frita and you should know like what is it be complete right if you're given an np-complete problem you should be able to argue oh you know this isn't be complete maybe I can reduce an np-complete problem that is standard and be complete to this they don't usually ask these questions because they're a little bit more theoretical but you should not attempt to solve an np-complete problem that is obvious right this is kind of a red flag as well so this is the kind of algorithms that you're expected to know and I know there's a lot of a lot of stuff to take if you haven't seen these before so I want to recommend a couple books one is CLRS and cigarettes is this book here it's by MIT press and it's written by cormen leiserson rivest and stein and this is a big book but if you know what it says you know it covers all the things that I said by sorting data structures um trees you know graphs and then virus things like NP completeness when you're programming and so on and it's a very useful book so I don't know if you can read all of it because it's very but at least you should know what what it says inside so this is a like a rule of thumb I look at the topics that it covers and then try to learn them maybe you can learn them without looking at everything in the book maybe you can read some things in the book it's a it's a very well-written book another book that covers almost the same things as the that's Ronnie book called algorithms and this is the this is the book it's by just Gupta master on Ian about the new video and this book is uh it's a good book it's kind of shorter than CLRS and it goes through the same topics is a little bit more concise it's also very well written and highly recommend it so it goes through like number theory algorithms on graphs and dynamic programming and you completeness and so forth so again you know if you know if you know your algorithms if you've gone through these book these books you won't have a problem and it's not not to read these books you have to also solve some problems and the particular website that I mentioned previously has has quite harder problems so if you go up to this problem like 161 there's a harder DP problem for example and it's very good playing so if you solve a hundred or more problems of your choice from project Euler this is great two other good sites are sparge which has a lot of problems that our algorithm related you can choose the ones that you like and you can also filter them by topic there's many indexing sites but there's also tags here so you can try to solve them and the solutions that you submit to sparge they are they need to be written in code so it's not just a theoretical solution that you need to figure out but you also need to write it out which is very similar to interview so this is great for training for interviews another place is the code sources side so courses is also site that has competitions and problems um you should check it out it's it's good there's there's other sites there's also there's also you psycho thing and yeah so just go ahead and figure out which side is your favorite which one you like and you should be able to find some good problems and trained in it so this will are will improve your algorithm skills tremendously and that's the second subject that you will be asked so that's number two algorithm okay uh sounds good so we've got algorithms out of the way let's see what else remains fully into you the third thing that you will be assessed on and that is design so design in design I think this is the most difficult one and if you're interviewing if you're doing a phone interview or screens view you shouldn't worry about that yet probably they will not ask you that so much and if you're an intern or especially a step intern then they will not ask you any design questions because you're not expected to know any design especially like right out of college if you're applying for a graduate position or or an internship then these these are going to be easier but if you're a veteran a software engineer and you've worked in other companies before then these are going to be quite more difficult and of course you're going to be asked more difficult design questions for a graduate position rather than an internship position so yeah that's uh that's designed so what is this about well sign a is about building large software so building building production software building large production software and you have to to be able to design a software from the bottom up and from the top down so you want to be able to say um well I guess you can give an example like your interviewer may ask you uh something like design Google Hangouts right let me ask you something like that what is Google hangout all the de chat part of Google Hangouts let's say this is one of my favorite question and let's say chat right so this is a very open-ended question of course you can't code up Google Hangouts in 45 minutes huge project and there's tens of thousands of people working on that or maybe thousands of people working on Gmail and hangouts and so um obviously you're not expect to do their job in 45 minutes but you're expected to be able to to build the system like in your mind top-down right so you should say okay if I want to make Google Hangouts then that will require my a client sitting here you don't have to write like your village this is just a sketch so this is like the browser and then this is the Google server and they communicate with like HTTP right and then how do you do that well this is the client I write a client and a wide a server and they talk to each other so you need to be able to describe its protocol and go through the design of the software with your it's viewer so you will start talking about how you would approach this problem on and then your interviewer will guide you to correct direction so you'd say okay I have a client server and they may ask you okay how do you build up the server and you can say okay I can use the MVC pattern that's another thing in the design interview you may be asked to use different software patterns II this is a good book the Gang of Four book write is a good book on design patterns um but if you come from from a software engineering background of large languages like Java then you'll be familiar with these but this is a good read but most of these you can't get from a book you get them from building actual software and so you can say ok I will have MVC and then they will ask you what is MVC you know and you can say oh I'll have models and views and controllers and then um they may ask you okay what kind of malls will you you can say oh I will have a chat message and that will be one model and then I will have also I will have like a user maybe and then I will have also maybe like a conversation so that we can have like good chance and that will be exciting right and the interviewer may ask you okay what what fields will the user have and you can say okay we'll have a user name and they they may guide you to this location to do this like it is part of the design process where you design the DBMS right it needs to be not to be a mess but the DB schema right and you're in your design your your ontology of the application you're building tables and you're building fields and that's um that's it right and they may ask you what kind of what kind of normal forms may there be or what kind of foreign keys will you have or what kind of primary keys or indices will you have and how how will you be able to like do this quickly and search through the messages or or they may ask you like a question to see if you have a good view of what software is doing from a high-level point of view so they may ask you okay the client now goes gmail.com they enter this in their browser and they open up a chat window what happens and then you can describe that can you describe that can you describe what happens in every step what happens in in the client here what code runs here what code runs on the network what code runs on the server what code runs on the database you should be able to do that right you should be able to say oh the server communicates with a database and they speak protocol and that protocol is a sequel protocol but for example it could be my sequel right and you should be able to say okay how does my sequel index things maybe not a specific implementation details but you should know that all it uses some sort of trees right or some hash map and and then they may add more difficult questions to this problem they may say okay you have you have too many users for this to be one web server you need to add more you need to have or web servers how do you do that and then you can describe some scalability solutions you can say I'm putting a load balancer here in front of that and it's talking to all these web servers and then all these are talking to various DB slaves of my sequel which are talking to one Iggy master and they're using some for some sort of propagation so this is software design right how do we speak to each other um they may ask you always this protocol secure is this encrypted right how do we make it secure that kind of question is what you should expect in a software design um in the software design question and the thing that they want to see here is if you have if you can design good software if you can lead a team of software engineers if you have good design principles but not encoding individual lines but in designing large software systems so can you do multi tire design can you do orthogonality can you do separation of concerns can you separate your components in a way that they can be assigned to different teams so in this case we have a server component and the client component and we can split it up into two teams of different engineers these can code in like react or angular and these guys can coding like Python and Django so this is good good to know and if you are going in for an advanced interview they may ask you even some estimation questions about how many people will it take to do that and how much money do you need and how how long will it take to build such a system and you should be able to provide up like a back-of-the-envelope estimation of how long the system will take and of course in these you should also ask questions like how many users do you plan to have in this system is one load balancer enough here or will the load balancer also be overloaded you need multiple load balancers that are managed by some other technique like round-robin DMS or some some different idea right so you should always keep asking questions but scalability about the user base about what kind of speed requirements do you have is this a real-time chat or is this like a forum because if it's a real-time chat then maybe this kind of connection here needs to be a like a WebSocket right this is different design the other things you will be asked to talk about is network protocols and how they work how does DNS work here how does HTTP work here how does SSL TLS work and how does WebSockets work um yeah and then maybe you will be asked to optimize some things so if you design a normalized DB schema you may be asked to do normalize so these are all kinds of things that you can be asked to do and I can't really put my finger on what kind of thing they ask because each interviewer is different and they like different things and they may ask you any part of the software let me ask you about for example like do you wanna use UDP here if this climb is like a desktop client you would use UDP like that's a network question and then you can explain what it is or they can ask you about compression would would you use a compression method right that's all there's all sorts of questions that they can ask you at this stage okay so so these are the this this really sums up the interview and I want to say let's just go back to like the yeah the three core um three core areas again and just do an overview we said you need coding you need algos and you need you need software design and what you will see is usually um the first two questions are grouped together right so um they may ask you an algorithm question and expect you to code it so they may say something like the points on the map problem that I said before you're given a map with x and y-coordinates like that and you seeing some some points here and they're given and like in their coordinates and then it's a big big list of points but they're static and then you're given a point somewhere and you need to find like a closest neighbors right this is a classical algorithm problem and you will be expected to solve the problem in a fast fashion use the proper data structures and you know coat it up I mean not coated up but rather design it from an algorithmic point of view so that it's fast and analyzes complexity and then you will be asked to code it in your language of choice like C++ and you will be asked to write real code so this could be like a 45-minute question and if you do well they may they may change the problem and they may say oh actually you know this is given a lot latitudes longitudes whatever or now if it's a it's like a 3d 3d space of points in them you have sold same problem and they may change a problem like that it's quite common um it means you're doing well because they keep asking more questions so you solve the previous one and you're asked more and a lot of this algo stuff also ignores some discrete mathematics and probabilities so it's good to have a some basic background in math um I would say just discrete and probabilities it's very good to know in addition to your algorithms and complexities they may even ask you to do like as simple probabilities proof and then this is going to be one 45 minute question and then the design question is going to be a different question so a different interviewer will ask you your design question and that's going to be another 45 minute so as I said you will get five interviews meaning you'll get maybe like three coding and algorithms questions and to design questions something like that or maybe you get to into like two coding and algorithms questions and to design questions and then what question is more specialized so it could be a probability proof or maybe it could be like a security interview where they show you some code and they tell you oh do you see a security mistake in this code um depending on on what the interviewer wants to ask you yeah so that sums up the different questions that could be asked well I hope you liked this video and that you learn something about how big companies conduct software interviews as you saw through the video it's not possible to fake your performance in the interview because they ask you all sorts and you should really know how to develop software so the best strategy for getting through one of these interviews is to just know how to write code how to solve algorithmic problems and how to design software and in addition to reading the books that I mentioned I think one of the best ways to to get up to speed is to spend several months or maybe a couple of years writing software for open source projects and contributing to open source projects if you spend it one year working on an open-source project you will have the chance to work with more experienced people that will show you how to properly design software and how to write good quality code and of course you should choose a project that has good practices and good leaders and there's many out there that you can choose from you can just go and get hub click on explore find a project that is in the programming language of your choice or that you personally use and you can go ahead and write a small patch to go from there now another way that I would recommend you train is ask a friend who is more experienced than you or even someone who has worked for a larger company to do a mock interview for you so sit together and tell them to ask you questions about about your skills right explain to your friend that you would like to its be for a big company and tell her to mock the interview for you tell her to ask you specific questions as they would if they were conducting interview for their company so tell them to give you a I think problem or a software design problem without spoiling the solution and try to assess you and to give you some feedback that would be great for seeing what you're missing in terms of knowledge but also it will help reduce your stress before the actual interview well I hope these are some good tips and good luck with your interview if you found these tips helpful please thumbs up and if you haven't already done so don't forget to subscribe and if you have questions about the interview process or anything else don't forget to leave a comment in the section below now until next time so long
Info
Channel: dionyziz
Views: 217,744
Rating: 4.8507771 out of 5
Keywords: google, interview, SWE, algorithms, coding, design, questions
Id: 7Lz6z9k_HvE
Channel Id: undefined
Length: 48min 43sec (2923 seconds)
Published: Thu Sep 01 2016
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.