2025 EES Google: The Intangibles of Interview Prep
Ready to build your tech career?
AI-native engineering courses taught by senior engineers from the companies you want to work at. CS students and CodePath alumni enroll at no cost.
Google engineers focus on the intangibles of interview preparation: how you communicate while solving, how you handle a question you have never seen, and the mindset that carries you through a loop. Recorded as a breakout session on day two of the 2025 Emerging Engineers Summit.
Hello everyone. I am Emanuela Stanislaus and welcome to day two of EES. Well, this is your second or third breakout session, but I want to welcome you out to this session.
And like I said, I’m Emanuela Stanislaus, I’m a staff member at CodePath and before I introduce this session, I want to provide you with a few reminders. Please make sure that you’re utilizing the chat. I’m already seeing some of the comments come through, so keep those coming.
And be sure to leave some comments. If you’re hearing some gems that stand out to you, be sure to share that to just show that you are like resonating with that message. And make sure that the comments that you share really do tie in with the session.
Please also make sure that you take a minute to fill out the survey at the end of the session to provide us with feedback so that we can improve our sessions moving forward. With the reminders out of the way, I’m excited to introduce this session, which is entitled the intangibles of interview prep with Marissa and Jean Carlo. And so I just wanted to share a little bit about them before I bring them up on the stage with me.
Marissa grew up in Long Beach, California and graduated from California State Polytechnic University in San Luis Obispo. I never know how to pronounce that. So, hopefully I pronounced that correctly.
She has been with Google for eight years and is an active member of both Ola, which is Google’s Hispanic and Latinx Googlers Network, and Women at Google. And then we have Jean Carlos, who goes by JC, who is from Puerto Rico and graduated with his computer engineering degree from the University of Puerto Rico, Mayaguez. Hopefully I pronounced that correctly.
And yeah, prior to coming to Google, JC worked as a software engineer at Goldman Sachs and IBM. And so, I’m super excited to bring them up to the stage and chat with you all today. Awesome.
Thank you all so much for the warm welcome and all for the excitement in the chat. I will admit, I’m scrolling through, feel the energy through the screen. But as mentioned, we’re super excited to be here to talk a little bit more about the intangibles of interview prep, but also I’m a I’m going to give a little teaser, JC is going to go into a technical interview question.
We’re going to give you all the nitty-gritty stuff about the Google interview process. I will call out I was one and I still am one of those people who kind of, you know, blank out a little bit. Maybe, you know, there’s overwhelmed with information, especially throughout the entire summit.
So, I threw in a quick little QR code and we’ll drop it in the chat, too. If you all are interested in receiving additional resources or again, like me, I can’t I get too excited, I get too into the questions, I get too into the talk that I might forget things. So, feel free to fill out that quick little form.
We’ll circle back to it, too, but hopefully to share out some of those additional resources. With that, let’s get into it. So, this is a packed day.
We’re trying to get in all the fun details, hopefully answer as many questions as we can, too, but we’re going to bring you a quick little overview, things to think about beyond the code and beyond the coding aspect of interviews, really understanding frequent challenges, hurdles that a lot of students and I’ll call out plenty of industry folk feel as we’re starting to prep for any interview process. And then really thinking through and planning what your interview prep might look like. Again, JC going to dive deep into the actual parts where the interview into play.
Again, chance to practice, go through a whole practice question, and then get to that Q&A part. As mentioned, you get a little bit of both. So, I’ll introduce myself.
My name is Marissa. I just got married and realized my name is D is here then Bestie there, but JC will get into the coding aspect. We’re both on two different coasts, which is also the fun part of us is we’re a little dynamic duo hopefully conquering both ends, but with that, we’ll get into it.
So, I mentioned a lot of interview prep is something that comes beyond just the coding aspect, right? So, we’ll go to that next slide. I would love to see in the chat, so drop your answers, how much of your interview prep currently focuses on non-coding skills?
Would love to see some answers. A, B, C, D, almost none, a whole lot, maybe a a twinge, a little sprinkle. Okay, we got some B’s.
D’s, C’s, okay. Got an A, no shame. Again, a Again, this is where we’re talking about like a holistic approach.
So, it looks like we got a huge mix, which is awesome. So, my goal personally in my little section is to really talk about why these skills are critical and how you can start thinking about how to effectively build them into your prep, maybe look out for some opportunities throughout this entire summit, but then also too, again, this this next upcoming year or as you prep for your next interview, because mastering these can truly set you apart. So, I like calling out because a frequent question I get asked because I work in the campus space, I work with a lot of different universities and organizations, is really understanding, "Hey, where are those common struggles?
And why does it matter? And what and how can we do to practice to be better?" All right? So, with that we’re going to talk about why those matter.
So, why I talk about focusing just beyond the code and what those little intangibles can be isn’t only because we know, again, y’all are crushing it with the coding, y’all are crushing in your technical aspects. We want to make sure that we’re also highlighting the overall potential that you have as an engineer, right? We’re thinking about the next maybe many decades we’re all working, right, in this workforce.
So, thinking about what other aspects and what other skill sets can play into being a really strong employee, a really strong teammate, maybe a really strong leader. So, solid communication communication skills in a structured framework is just as important is your ability to code. People often call them soft skills.
I’ve heard them used as like in different terms of like some active muscle skills, some other things like that, right? Thinking about how we’re using that kind of aspect of our life to then again complement our technical skill set. So, it’s really great to again have solid communication and structured framework to then again express how you code and how you think, right?
Your problem-solving skill sets. So, a few examples of soft skills include again communication, problem-solving, but also collaboration and adaptability. These skills will help you if you’re ever stuck or you’re navigating a brand new problem.
Again, technology, especially coding and the tech industry, change so fast. So, thinking about how they can kind of play into again that technical skill set that you might have is really important, right? So, I threw a couple of those things up there on on the screen, but again, how this plays into your potential is really how you’re engaging with your interview.
I don’t want you to think of your interview as an interrogation, although, again, we would love to know tons of information about you, but it’s also figuring out how you can work together, probe for additional questions, and let really seek to understand a little bit more about those interview questions. So, with that, I know, again, pitfalls and again common struggles. So, I know we all talked about our different ways of how what you’ve engaged in maybe non-coding prep for your interview, but I do like to talk about some again frequent places where a lot of people get stuck.
And I like calling out I work specifically in the student space, but I have my eight years at Google, I’ve also worked in an industry, and I like to call out something just don’t change. Interviews are always nerve-racking, interviews are always challenging, and they do cause a lot of stress while you prep. So, unfortunately, that’s something that sometimes doesn’t go away, but I like calling out some places where we can actually really focus in to at least give you some extra self-confidence walking into the interview place, right?
So, before we dive into more of the common solutions to this, I like talking about maybe some common frustrations while we talk about studying. There can be multiple reasons why maybe you feel stuck when doing a technical interview practice, maybe a mock interview. And sometimes it might be that you just need to revisit some fundamentals.
It might seem silly, it may seem like something like, "Oh, I took that class forever ago." But, sometimes thinking about those again pillars to coding as I like to call, might just need a little bit more TLC. And the coding part ideally will then feel easier once you start kind of again going back to some of those basics. There’s no consistent strategy for tackling every single one of these issues, but you might find a solution but or you might find a solution, however, you need to consistently explore different alternatives to try and, again, practice effectively.
And again, thinking about how you’re then finding that source of feedback, how maybe a friend or a class might be able to then, again, engage with you to understand, "Hey, maybe we can work a little bit more on big O." Or however that can work, right? So again, they are common sticking points and there are a lot of things, but it’s kind of sometimes going back to the basics, jumping too eagerly into something, and again, maybe not having like a strategic approach if you get that those last-minute nerves as you enter a room. So, I like talking about with those common pitfalls, what are the things that interviewers are actually looking for, right?
So, I mentioned a good part of it again is your lovely brain, your technical ability, all of those wonderful skill sets, but also sometimes those non-coding artifacts as we call, right? A big part of at least a Google interview process is really having your interviewer understand how you think and how you work through problems to get through a solution. And the part that doesn’t naturally come sometimes when working in class projects or working on your own personal project, is that communication talking out loud approach.
And might be also your analysis or how you test and overall engineering how overall you’re approaching your problem-solving and overall engineer thinking is really important. It’s frequently okay if your final solution isn’t the absolute most optimal thing. Again, think about the interview being in a 45-minute session.
However, as long as you’re able to work through your thought process and get to a place where it sounds clear, understood, understand maybe some of the tradeoffs. Again, a well-explained working solution often beats a slightly flawed optimal attempt. So, I like calling that out because again, those soft skills really come into play when talking through again that answer that you might come to.
With that, a plan. So, the plan is sometimes how we can then again calm our nerves in a very stressful time, but coming with an approach and a prep plan ahead of time will hopefully again help you navigate through those places where you might have those sticky parts. Again, the places where we tend to try and practice a little bit more, but it tends to happen regardless.
When it’s finally time for your interview or for your internship, for a new grad role, whatever that might look like, hopefully then again it won’t seem as daunting. A solid interview prep plan turns an an overwhelming task into hopefully small manageable steps, things that you can remember in pillars of four or whatever your buying tricks are to hopefully remember and calm those nerves. So again, just think through creating a strong approach.
With that think about how to again break down those small tasks or those big tasks into smaller, less overwhelming ones. Think about how you focus on those daily. Maybe roll it into different practices that you have achieving a goal personally that you might have.
Then of course to the other big thing as you’re starting to create a plan is to also make sure you’re keeping time. For us our interviews, we’ll get into that a little bit later, are around 45 minutes. So thinking about practicing and dedicating time so as you enter hopefully an interview process, you’re also hopefully able to manage that time and again calm those nerves and move through the problem to again create the most optimal and well communicated solution.
The other couple things to think about as you’re structuring your prep for interviews is again understanding and building your confidence. So maybe again as you start your interview prep, you start off on some of those easier questions, but again managing those large tasks into smaller ones, managing your time a little bit better, and then building up that momentum to slightly more challenging questions. This is also a place where I encourage a little bit more mock interviews so then hopefully you can talk and have some more feedback.
Again, the more prep that you do with other folks to give you that more real world setting, hopefully again that reduces some stress. The last couple things I’ll talk about before passing it over to JC is more around your foundations. I talk a lot about foundations and if I had a dollar for every time I said data structures and algorithms in any interview prep, I would probably be very wealthy and could retire.
But, this is why those foundations really count, right? A lot of our questions will be around some of those core concepts in the interview process. And really building your foundation with some basics can then help with, again, a lot of the unforeseen new tech innovations that will come in hopefully many decades, right?
So, think about and prioritize, again, data structures and algorithm concepts, arrays, strings, graphs, again, sorting, all sorts of fun stuff that I know you totally love. And then again, flexing those muscles so that I hopefully you come into an interview feeling really strong. The other things, too, is to really think through, again, learning the theories behind data structures, implementing them, and then solving foundational problems.
We talk a lot about this because, and then J.C. Can speak from those own experiences, is you never know what kinds of different teams or projects or problems you’re going to run into. So, having, again, a strong foundation of computer science in your back pocket is really helpful.
The last thing I’ll say is, again, focus on practice. I know I’m probably not the first person, nor the last person to tell you about how important practice can be, and how mock interviews truly changed the game for me and me getting into Google, I think. But, again, once foundations are stronger, shift focus.
First, target problem-solving and using structured lists for broad coverage. Maybe then, secondly, you work on coding fluency. Coding should feel relatively straightforward, and the hard part will actually then be the problem-solving, maybe before the coding.
But, if you’re slow or maybe struggle with some syntax, and you need maybe more raw coding practice, take your time and really then, again, parcel out those bigger challenges into small little tidbits. Again, just practice. Practice, practice, practice.
It’s again like going to the gym, working a certain muscle so that hopefully you can build up to the next weight. Maybe it’s a little bit more around like spelling bees, where you start off with smaller words and start off with larger challenges, but get get definitely getting comfortable with coding on a whiteboard or a paper just in case anything goes awry or again so you can have more of that live feedback with somebody in your mock interview can be really, really, really great for your own practice and hopefully own confidence going into the interview process. With that, I’ll turn it over to JC.
JC, go for it with the interview. All right. Thanks a lot, Marissa.
Can everyone hear me fine? Yes? Okay.
Marissa, can you hear me? Okay, perfect. All right.
So, good day, everyone. I’m JC. I have been a software engineer at Google for it’s been like a bit over 4 years now.
And just like you, I was really stressing out about the coding interviews before I went through the mind of Google. So, I’m here today to to walk you through what you will expect and give you some tips on how to practice with a with one example. Okay.
So, the interview itself, right? So, the interview is split like the interview itself is 45 minutes for the first five are short intros and the last five are just closing questions. So, the like most of the interview is right the technical assessment in the middle.
And then the technical assessment is anywhere between one to three technical questions that you’ll be asked, right? And just you know, like they will be conducted over Google Meet. And yeah, we’re going to go over some of the topics that you should know, right?
So, in terms of purely the technical standpoint, this is a list of more or less the the concepts and the data structures that you should know before the interview, right? So, this is for both SWE internships and full-time, right? So, so for the algorithms and concepts, things like loops right of of all shapes and forms, right?
So, for loops, while loops, nested loops, right? Strings, specifically being able to manipulate them, conditional logic, right? So, if statements and all that, sorting, searching, binary search, big O analysis is very important.
You’re expected to be able to explain the Big O analysis of any code that you write. Also, graph traversals, divide and conquer, recursion, greedy algorithms, and maybe even some dynamic programming. In terms of the data structures themselves, right?
So, there’s arrays, linked lists, hash maps, slash maps, right? Sets, stacks, and queues, binary trees, heaps, and graphs, right? The expectation is that you do learn about all these topics in your courses.
One tip that I give students is that if you are in the middle of a course where you still have not had to learn any of these things, like tell the interviewer if you notice that the question involves that. So, yeah. Okay.
So, for the interview assessment, so obviously, the coding part is super important, but like Marissa said, it’s not just the coding, right? So, as the interviewer, what we are assessing, communication and collaboration is incredibly important, right? So, we want to see how clearly you’re able to explain your thinking and work with the interviewer.
So, it’s not just immediately just coding everything and that’s it, right? It’s very important that you’re able to demonstrate that you can communicate to the interviewer what like the way that you reached the solution to the problem, and also why you implemented the the solution the way that you did. Besides that, data structures and algorithms, which I already discussed in the previous slide, but yeah, obviously, your foundational CS knowledge is very important.
Right? So, the interview is not the moment to know about like to learn about list operations and what are the complexities and all that. You’re expected to already know all of that before you go into the interview.
So then, problem solving and analytical skills, right? So, this kind of goes hand hand in hand with the communication and collaboration, but being able to have a good approach to the like to breaking down the problem that is that is given to you, and also being able to communicate how you got to that point is very important, right? And via the communication is how we determine how good your problem-solving and analytical skills are.
So, and then finally, code understanding and quality, right? So, it’s not just being a good communicator and knowing the knowing computer science and being a good problem-solver, you also have to be able to like write code that is understandable. And that it, you know, is it functional and understandable and clean and all that.
Now, what you should what you should not be expecting, things like brain teasers or trick questions, you know, we’re not really going to do anything like that. I’ll go through an example of the of the type of question that you might see in an interview in just a few slides. Okay.
So, considerations from the interviewer, right? So, the things that interviewers are usually looking for, right? So, problem analysis, so how efficiently were you able to break down the problem and understand the problem?
This again goes goes hand-in-hand with communication cuz you need to Ideally, you’re supposed to be asking the interviewer a lot of questions that help you understand what the problem is. Edge cases, also something that is not always thought about by students, but being able to think of like edge cases, like for example, if you if your function will pass in a list, does your code handle that the list is empty? Or does your code handle the case where the list might have a different data type than what you’re expecting it to have?
Or does your code handle null cases? So, things like that, right? Logical approach, right?
So, was the problem-solving well-reasoned and methodical? The CS fundamentals, right? Which I kind of covered, but yeah, you should be able to know data structures and the time complexity of the methods of these data structures and all that.
Did the code work, right? And was it tested? I’ll show you how to test the code in an interview, but yeah, like it it we also evaluate whether or not you’re able to prove to us that the code works.
The code quality, right? So, whether or not the code is clean. And finally, the communication, so like can you explain your thought process and solutions?
Okay. So, let’s deconstruct the technical interview. So, the technical questions, when you’re answering them, the whole process is split into these four sections, right?
So, you clarify the question, you design the solution, you write the code, and then finally you test the code. So, first, for clarifying the question, right? So, whenever they ask you the question, right, you cannot just assume that you understand everything perfectly right away.
Like, I would highly advise you that you still ask the interviewer some questions to confirm your understanding, right? So, things like, "Can you confirm my understanding that the problem is X and Y X Y Z, right?" Also, things like being very clear about what are the inputs and the outputs of the functions that you’re going to write in the interview, right? That’s also super important.
Constraints and edge cases, right? The The interviewer will intentionally, I’m telling you, the interviewer will intentionally not give you edge cases when they give you like the question, because they’re expecting you to be able to think about them and ask them about them, right? So, that’s also super important.
And then also any other additional information that might help you solve the problem, right? And so so why clarify, right? So, needless to say, right, it shows that you’re thoughtful and detail-oriented, which are very important qualities of a software engineer.
And also, very importantly, I’ll I’ll give you a short story in just a second, but it also saves time and avoids errors. I remember there was a student that I was talking to last year, and then I he he requested a mock interview. So, I did give him a mock interview, and then I started asking the question.
The question sounded somewhat straightforward, and then he thought that he understood it right away, and then he kind of like stopped me and started just like implementing the entire solution, right? So, then when he finished implementing the solution, I looked at it. He He actually did not understand every single point of the question.
So, he actually just implemented something that was completely wrong. And then I told him that, "Look, I just so you know, and like this is a this is a mock interview, so it’s good that this happens here, but like always let the interview finish. And after the after they finish ask them any clarifying questions because you did not let me finish and it’s because of that that you implement this and that’s completely wrong and that is just like made us both waste a lot of time, right?
So things like that. Don’t don’t ever let things like that happen to you in an actual interview. Okay, so the second step is design the solution.
Notice that we have not done any coding yet, right? No coding yet. So after we clarify the question, then we design the solution, right?
So don’t rush into coding. You start out with a basic solution from a logical standpoint and then you slowly refine. You explain your design to the interviewer and you give them an idea of what the time complexity of the solution would be.
You consider the edge cases, right? You like while all this is happening you’re verbalizing everything that you’re thinking of, right? That is it’s it’s a good signal that you’re telling the interviewer all the things that go through your through your head as you’re coming up with the solution, right?
And also if you come up with multiple solutions, which is also an option, collaborating with the interviewer and asking them oh I thought about solving it these three different ways, but these are the tradeoffs. Like do you have any preference on which one you would rather see? And that’s perfectly valid question and it’s a good sign, right?
It shows that you have good communication skills. It shows that you consider various ways of solving the same thing and you know, it’s just like a good sign for someone that’s aspiring for a software engineering job. And also if there’s any ideas that you think about that you eventually notice that they don’t work out, then just let them know.
Like oh wait, I I was thinking of this but it didn’t work out because I just noticed X or Y thing, right? So all of these are fantastic signs of someone that’s getting interviewed, right? Okay, so once you clarify all the questions and you have designed the solution, then you can finally jump over to finally writing the code, okay?
So now is when we start coding. Just as a you know, FYI, right? At this point because you went through this whole thought process of how to answer the question, this is not something that should take you like that long, right?
It should not be that you’re learning how to do like a for loop in this step of the whole thing, right? It should be that you have the idea very clearly in your head and you can just go straight into like coding. It’s fine if you make like some grammatical errors in the way, but it should not be something that takes you like a very long time to do once you get to this point.
Right? So, and then some good tips is like make your code modular, meaning that if there’s anything within the function that is called multiple times, do a helper function for it and then just call the helper function within the main solution, right? When you need to you can also ask the interviewer to clarify the API for any library that you don’t typically use.
Like for example, Python has this library that’s called double-ended queue or DQ, I think is the name, which you don’t usually use that except for coding interviews. So, if you ever have question about that while you’re solving it, it’s perfectly fine to ask the interviewer which was the function like what’s the name of the function that does X or Y thing, right? A lot of students ask me about what language should be used for the interview.
The real answer is doesn’t really matter as long as you pick one and you stick with it and you’re very comfortable with it when the interview comes. So, yeah, so basically always think of comfort first. So, just choose the language and style that you know best and just use that the entire way through whenever you’re practicing mock interviews, LeetCode, all the good stuff, right?
And yeah, and then finally just do the full implementation, write the complete runnable code, right? It cannot be just pseudo code. It has to be like complete runnable code.
And once the code is written, you test your code. This part is actually very cool. And I’ll I’ll show you guys how I recommend you do it.
But, just because you write the the solution, it doesn’t mean that the I mean, the interviewer might know whether it works or not, right? But, even if they know, you still have to prove to them that it works. And the minute you prove it to them is that you verify the code that you wrote.
And so, how you do this literally, just go line by line with some test case and then prove to them that it works by What I do usually is that I I I kind of like write to the side some local variables, and then I go line by line, and then I show how those variables are updated as I go through the code all the way till this till till like goes like to the return statement of the of the function. And then that way the interviewer can see that it does work. But again, I’ll go into an example of this in just a few minutes, so.
And finally, discuss optimizations. If you have time and there’s any optimizations that come to mind, also really good for like for the interviewer. So, just mention it to them.
If there’s time, then you can implement them. If not, then at least telling them that there is one and saying that you noticed it like that’s also really good sign. Okay, so final.
Let’s We got a chance to practice. So, let’s go through this problem. The first thing we’re going to do is we’re going to read it.
Right? Very important. So, a sample question for a SWE internship.
So, let’s say that you’re asked to write a program that simulates the actions of luggage handling for a large aircraft, including luggage is loaded into containers in the order the luggage arrives. When a container doesn’t have enough capacity for the next luggage or there is no more luggage, the container is loaded into the aircraft. The weight capacity of each container is 40 weight units.
At the destination, containers are unloaded from the plane in last-in-first-out order, meaning the last container loaded in is unloaded first. Luggage is unloaded from containers in first-in-first-out order, meaning the first luggage which was loaded into each container is unloaded first. So, there you go.
What do we do now? And the answer is not panic. Right?
Okay, so we So, we went through this, right? I Personally, when I saw the slide, I was like, I don’t understand anything. Nothing at all.
Okay, so what’s the best that I could do? Let me just reread. Let’s go step by step.
Again, not panic. So, okay. So, let’s just go through the first bullet points, right?
Let’s try to get an understanding of what’s going on here. So, okay, so based on the question it says, we need to write a program that simulates the actions of luggage handling for some aircraft. Okay, luggage handling.
Cool. So, what are the rules of this luggage handling system, right? So, let’s see the first bullet point, right?
Luggage handling I mean, luggage is loaded into containers. So, we know there’s luggage and containers. And the luggage is is loaded into the containers as it arrives, right?
When a container does not have enough capacity for the next luggage or there is no more luggage, the container is loaded to the aircraft. So, it is implied that there’s some type of capacity for these containers, right? So, we have luggages So, I mean, so we have luggage and we have containers.
And the containers have like a max weight, which means that the luggage must also have some type of weight, right? So, kind of visualizing this, the way that I visualized this was okay, so we have the luggage. We have and then each luggage has some type of weight.
And then the luggage gets added into containers. Let’s say that the containers look like this. And then we know that the container has a max capacity of 40, right?
So, it says that the luggage goes into the container in the order that they arrive, right? So, first the container is empty, it has a capacity of 40. We can add in the the 30 and the five at this point.
We have a we have a space left I mean, we have five spaces left or like a weight of five left, right? 40 Minus 35. So, because this next luggage has a weight of six, it doesn’t fit into this container.
So, what happens? We need another container. So, we get container two.
We add this luggage here, right? So, here we have the two containers and in these two containers we have added all of our luggage. So, that kind of covers the first few bullet points, right?
So, just as a quick summary, the luggage is loaded into containers in the order the luggage arrives. Got it. When a container doesn’t have enough capacity for the next luggage or there is no more luggage, the container is loaded into the aircraft.
Got it. And the weight capacity of each container is 40 weight units, right? So, we’re kind of understanding what is going on with this drawing.
Or like with this diagram, right? Okay, so now let’s cover the last two things, right? So, at the destination, so once the airplane lands, right?
Containers are unloaded from the plane in last-in, first-out order. Meaning the last container loaded in is unloaded first. And once the containers are unloaded, the way that the luggage is unloaded from the containers is in first-in, first-out order.
Meaning the first luggage which was loaded into each container is unloaded first. So, I did some more diagrams here to explain this, right? So, going back to our example, we had container one and container two.
Container one gets loaded first when the airplane like in the airplane before the flight happens, but after the plane lands, container two is the one that gets unloaded first. So, so they get unloaded, this one first, this one second, and then it says that the luggage gets unloaded from containers in first-in, first-out order. Meaning that first is container two unloads the six, which is the only one that it had, and then container one first unloads the 30, and then unloads the five.
Right? And after going through this, the unloading order of our luggage was first the one with weight of six, with weight of six, then the one with weight of 30, and finally the one with weight of five. Right?
So, hopefully this diagram And by the way, this diagram was not there. I made this specifically for you. So, hopefully it helped out.
I hope that you liked it. But this is the way that I kind of like like to visualize these problems that don’t make a lot of sense to me when I read them the first time. And again, don’t feel bad if you don’t understand the first time.
I certainly didn’t. So, that’s why I did the diagrams in the first place. But yeah, okay.
But now that we kind of like saw how the whole system worked, now you see more or less like you hopefully have a better idea now of what you have to do with the function weights. But if you remember the step that we talked about, there’s still a lot of things that need to be done before we were able before we’re able to code anything, right? So one really important thing or I guess some some clarifying questions that we have to ask is and I’m sure that one of them a lot of them are a lot of you are thinking about this right now what does this function even even receive?
Like what’s the input? So okay, so a lot of you might think that you’re receiving a list with some weight. It turns out no. It turns out that you’re receiving a string containing all of the luggage weights and they’re separated by commas in order of arrival.
So the string looks like this, right? It’s like bag one, bag two, etc. until you get to bag n. Which is very different from having received a list, right?
So this is why it’s important to clarify what the input is. Also what should the output be? So the output is basically like a string in the same format but in the correct order of how the luggage is unloaded.
And then some edge cases, right? So this so like some edge case that like the edge case that I was talking about before, right? So for example, one good edge case is can the bag can the bag weights be under one?
So no, like here the interview is like no, like you can assume that the bag weights will always be over one. I mean over zero units. Do the dimensions of the luggage and containers matter?
Also a really good question. Answer is no for the purpose of this problem. Can the bags be over 40 units?
And the answer is no, just either throw an error or ignore the bag as being against the airline policy. Charging them extra is not an option here. Just no, you can’t you can’t load it to the airplane.
And also what if the last container doesn’t fill completely? Also another edge case, right? Because you can be filling up container and then at the end and you might forget to to add in that one to the final solution.
So, the answer is make sure the last container is accounted for. And finally, another another question that you could be asking, right? Can the input be empty?
So, yeah, the answer is handle empty input. In my In the In the case that the input is empty, then it just returns an empty string. Right?
So, these are examples of real-life clarifying questions that would be very good to ask in the case that you get that that problem that I talked about earlier. Right? So, hopefully these are helpful.
Now, we have to design the solution, right? So, that’s the next step. So, the example that I gave translated into actual code, the string that is passed into the like the string that we’ll be passing as the example would be this one, right?
It would be like 30, 5, 6. So, these are the bags or like the luggage, you know? So, they will be loaded into two containers.
The containers will have first 30 and 5, and the second one will have just 6. Then the containers will be unloaded in the opposite order. So, first it will unload the one that has the 6, and second the one that unloads the 35.
The 30, 5 I should say. And the bags in each container will be unloaded in order, so the overall result will be 6, 30, 5. So, long story short, this function would receive the string 30, 5, and it should return should return the string 6, 30, 5.
All right? So, hopefully this to out. So, now that we have a better understanding, and we know what the input and output looks like, now we can finally begin with the solution.
So, what’s the first thing that we should do? We could do a We could something simple. We could just write the function definition, right?
So, we can call the function get luggage ordering. I’m using Python in this example just because it’s like shorter, so it saves me a lot of space on the slides. But, yeah.
So, we define the function called get luggage ordering, and then it has like the input string, which has the luggage in it. So, the next question, so the luggage is in this shape of like a string that it with numbers separated by commas. So, how could we actually split that luggage into separate like, I don’t know, into like separate bags or whatever, right?
For those of you that know Python, right? You could we could use the split function. So, we could do like this, right?
And And we want to definitely go through each one of the through each one of the of of the things in the luggage at least once. So, we could do for X in inputstring.split. I would call X luggage, but again, I’m just saving a little bit space, but yeah.
For luggage in inputstring.split, and then you tell them what to split what to split with. In this case, a comma cuz you know because you asked and you’re clarifying questions that the string is comma-separated. Like it’s it’s like a bunch of a bunch of numbers that are comma-separated.
So, what else? So, right? So, we got to the point where we define the function, we’re splitting up the luggage, and we’re going through one at a time inside of the for loop.
So, what next, right? We need to keep track of the current weight of the of the of the current container that you are that you’re filling up. We need to keep track of of the of what is inside of the of the current container, and what has been loaded into the airplane.
So, how could you do that? You could just use three local variables, right? Simple enough.
Current weight keeps track of that you’re checking constantly to see that current weight does not exceed 40. This is the current bin where you’re adding in each of the like each of the of the of the bags from the luggage one at a time. And then, once you’re done with the bin, you add it into the overall bins.
Right? So, now that we know So, so how can we add the current luggage into the bin until the overall size of the bin does not exceed 40? So, here’s where we use conditional logic.
Right? So, see how we’re building up this thing very slowly? So, we have the function, we have like these local variables, we’re going through each each part of the luggage once, and then we check to see if the current weight plus the size of the of this new bag exceeds 40 then we have to add this bin like the add this container into the airplane and just use a new one.
So, bins.append and then here you’re just like joining that luggage into the airplane and then you’re just like getting a new bin meaning that current bin is equals like a new empty list and then current weight is now zero cuz now like this new like this new bin is empty. And yeah, and then now you just add in that that that piece of luggage into into the new bin and then you add into the weight and then you keep going. And finally, how can we add any pending bins into the airplane?
So, if you look at this solution, this is not going to add in like the like the current bin at the end if there’s like there’s this case where if the current bin if the last bin that you’re checking in has anything, you also have to add it into the airplane. So, the way to So, the way that you do that is that you can do if current bin and then for those of you that don’t use Python if current bin, what that what that does is that that checks if that list is empty or not. So, what this line does is that if current bin, meaning if this bin has anything inside, just add that bin into the airplane alongside the ones that you had before.
If current bin is empty, then it doesn’t do anything. And finally, right? So, remember how when you’re unloading the when you’re unloading the the bins or like the containers from the airplane once you arrive they need to be re-returned in reverse order.
So, how could you do that, right? Remember that you’re saving up I mean you’re you’re storing all of the all the containers inside of that bins list, you could just reverse that list, right? So, that last return statement, you’re joining using the comma separated values bins and then that colon colon minus one, what that does is that that just reverses the list.
So, what that does is that it just like in our example, it would just return the container two and then the container one. And with that said, this is our final solution. Right?
So, hopefully it’s understandable. I will prove to you that it works in just a second. You see, this is why it’s important to prove to it because in case you didn’t understand what was going on, now it is the interviewer’s job to explain that it works, right?
So, the way that we do this is to prove our solution works, we will go line by line of our code showing the interviewer what will happen to any variables we declare locally. So, we will use our example of 35 and 6, right? And when I said line by line, actually I actually really did mean line by line.
So, like I said, right? What I would recommend you do is that you create these like you like you write out these variables locally to the side, right? So, input string is 35 and 6 that you do know.
That’s That’s your example. And then current weight is zero, current bin is zero, and bins is empty, right? So, you do the four, so you know that because you’re doing the split based on the comma, the first X will be 30.
And then you check. Current weight is zero, so current weight So, 0 + 30 does not exceed 40, so it jumps this if statement. So, what it does So, what it does then it adds the 30 into current bin and it adds 30 into the current weight.
It goes into the second one. Now it’s five. So, five So, 30 + 5 is 35.
That does not exceed 40, so it jumps the if statement. It adds 35 into current weight. And it also adds the five into current bin.
And then finally number six, right? So, if you add in six into the into the bin, it actually does exceed 40. So, in this case it does go into the into the if statement.
So, first what it does is that that bins dot append doing the join. So, you see how current bin has 30 and five, right? It’s a separate strings.
So, it is joining them as a single string and adding it into bins. As you see here, right? So, now bins look like that.
So, that’s the same thing as like saying container one from our example. Now, you’re going to create container two by just like clearing current bin and also clearing its weight to be zero. Right?
So, now you’re going to add in the six that you’re looking at into current bin. And you add the weight, right? Current weight is six, right?
And now you’re done with the for loop. And now this line of if current bin, as I said, right? This just checks to see if current bin So, this is an edge case.
You see how current bin has something, but it is not loaded into bins? So, what this if statement does is that it checks for that edge case. So, if there’s anything inside of current bin, it is also going to append it into into the bins as a sec as a separate string.
So, you see how it looks like this? And now I do the reverse. Like I mentioned, because I want to unload container two first.
And then I want to unload container one. So, now bins looks like this or or like or like yeah, so like the values inside of bins looks like this. And now you do the the join again, and ta-da, it looks like we expected.
And I don’t have time to go through the analysis, but you can check on your side, right? But this is O of N complexity. And where N is the amount the number of the amount of numbers or I guess of bags that are inside of input string.
Okay? So, really important. A lot of students ask me this in the past.
This is how you actually prove that your code works. So, get prepared. Get ready in your interviews to be able to go through something through through a process similar to this to explain.
I actually did this through all of my coding interviews. So, yeah. Unfortunately, not something that I was ever taught in any of my courses, but yeah.
Anyways, it doesn’t matter. I know how to do it now, so that’s good. And hopefully you guys do so, too.
Okay. So, for the final reminders, okay. So, a few things, right?
So, we clarify before you before you code, right? I’ve mentioned this multiple times. The goal is to fully understand the question before before answering anything.
As you said, there are cases where you might be asked a question that is not super straightforward at first. And then based on the previous asking a bunch of questions and try to understand everything little by little, that’s how we got to understand what we have to do. So, again, ask questions like inputs, outputs, constraints, edge cases, etc. framework thinking, right?
So, how are you going to do it? What is like the most efficient or easiest way to do what I have to do? Things like reversing the list and all that, right?
And also avoid rushing into the code. A lot of students absolutely adore rushing into the code having no idea what they’re going to do. Big mistake.
I used to do it, too. I don’t do it anymore. So, yeah.
And finally, create a plan and use your voice. So so so remember to like break down large tasks kind of like we did, right? We broke down the large task like I I implemented the solution little by little like first the function definition, then splitting up the input, and then the local variables, and then the logic, and all that, right?
Optimize. So, if there’s any way to optimize the solution, explain your optimized approach. Explain the chosen algorithm before writing the code, although I didn’t do it in this case, but yeah, like in a real-life interview, you would have to do that.
And then avoid jumping straight into the optimal Actually, yeah. So, one trick is if you can avoid jumping straight into the optimal solution, that’s also pretty helpful because then if you’re able to implement like a simple solution quickly, and then you’re also able to get them more optimal, and that also looks really good on you. So, if you know the simple one super easily, you can just do that really quickly and then and then be like, "Oh, hey, so but if it would be more optimal if I do it this way, right?" So, then you could like either implement it first in the in like the more normal manner and then optimize it, or just let them know before you implement any and see what they think, right?
And then force-feeding memorized solutions. Yeah, I There’s a lot of temptation, I’m sure, by a lot of you to just like spit out what you do on LeetCode. Unfortunately, that doesn’t work that well because, you know, obviously, people know that you that you study via LeetCode, so we try to not give you any LeetCode questions.
They might be LeetCode-like, but not necessarily LeetCode questions, right? So, I would highly recommend that you that you don’t just memorize something that you did on LeetCode and just like spit it out on the interview. And yeah, also like coding before the plan is clear.
So, things like whiteboarding, I’m sorry, like whiteboard slide, copy-paste, right? So, So, yeah. So, I kind of miss doing like actual whiteboarding.
But yeah, like being able to to to like understand what you’re going to do, kind of like I did with the drawings, right? Having all those ideas really clear is really clear is very important. And okay, so Marissa, Yes, I will jump into a few different things.
I was starting to notice in the Q&A some good questions, and so I do like sharing because we have a mix of folks that are again still in education spaces, but also some people that are looking for some full-time stuff. So, if you go to the next slide, I’ll talk a little bit more about what you can do next. So, the first big thing is we have jumped into and have gotten plenty of feedback when applying to Google.
I remember in my time, I filled out the same exact form 18 billion different times with all the same pieces of information. We now have this thing called Google Careers Profile. Some updates that we’ve done in the last year two that I like talking about is now there’s an option for personalized recommendations.
I especially encourage that for people that are looking for some full-time jobs, mainly because if you’ve noticed in this lovely fun job search, is all of these titles of jobs are very long sometimes. Sometimes they’re keywords that you would never think of. Sometimes there are skill sets that you forgot about and you didn’t know to search, right?
So, I like elevating this because you’re able to input your resume, all of the other details that you usually would put in for a job search, but then after we use some great AI tools in our past and it will give you recommendations. With that, I do like calling out JC Go Bright. Yeah, with that I do like calling out when actually applying to Google, there are some quick things that I like calling out to help narrow in and find the right role for you.
Again, interns, much love. There are easy awesome filters that I’ll call out, but especially for my early career folks, my folks that are maybe in their penultimate year of their their education, maybe some folks that again have already worked into the industry and are looking for different roles. Definitely use and elevate those filters.
So, one will always be geographic location. If you are cool and you are open to doing and moving anywhere, love that for you. You can just put in broad United States, and you’re like, I will move to New York and go hang out with JC at the Google office in New York.
We love that. But, definitely filter by location, and then secondly, also set your filters to either intern if you’re looking for intern roles, or specifically we have an early button under experience. I showed in the little picture right there if you zoom in real close.
And so, that’ll help with then identifying some of those roles that are either no years of experience or up to 3 years of experience based off of where you’re at working full-time. The other big thing is I did see a question about some new grad roles in our Q&A function as well. And we don’t have anything currently posted.
However, it is a hot and upcoming role and things like that. So, I do say always select that career alerts filter. Again, making that profile, logging in that email so then you’ll get that email the moment a new post for a role that hits those filters goes live will come into your inbox.
The other big thing we talk about are specifically minimum requirements. Each minimum requirement for internships, yes at Google, and then two specifically if you’re applying to many different internships across the different companies, the minimum requirements change. And I’ll call out in the recruiting world, that is how a lot of people start filtering through some of those resumes.
So, taking time to be very diligent about when you apply and curating your resume to hit those minimum qualifications are super super important. The other big thing, again, keep in mind for specifically Google, there is a limit, unfortunately, to how many roles you can apply to within a 30-day window. However, that is what the career profiles will help you keep track of.
It’ll actually give you the date so you can keep track of that and the progress of your application. With that, I think we’ll go on to some questions. Let’s see.
Let’s see. Okay. Let’s say, okay, how do we suggest prepping for technical interviews while managing 18 credits?
That’s a lot of credits. Let’s start off with that. JC, we heard a giggle across the screen.
18 Credits, work an executive position in two different clubs. How should you create a plan? I will chime in with my two cents.
JC would love your two cents as well. That is a lot going on. I will also call out specifically my own experience going through the interview process.
I don’t think I had 18 units. I think I had 16. So, again, applause.
But, with a lot of that, I do call out interview prep is almost like a part-time job. And so, if it does feel like a lot of work, that means you’re probably doing it right, unfortunately. But I think with that, it is also something that I would call out.
I used my network of students that were also in similar fields as me that were also looking to hustle. Cuz clearly that is the grind that I see that you’re at. So, it is kind of carving it out almost like an hour each certain amount of time that you can allot, right?
Again, based off of how frequent maybe your e-board meetings are, when your class time is, it’s treating it almost like a study session or like an hour’s worth of class every so often, right? So, that That personally how I approached my interview prep when looking for my new grad role. And then two, even as I prepare for industry roles, I do the same thing.
It’s hey, I need to sit down for x amount of time, close every single tab that is not related to any form of interview prep, focus because I have a terrible attention span, and really dedicate the time to grinding it out for an hour and then moving on and giving myself a break. But, JC, I don’t know if you have any other advice when it comes to stuff like that. Yeah, okay.
So, what I did what I did is cuz cuz I was when I was practicing for the Google interview, I was actually also having a full-time job and it was in the middle of COVID and yeah, so it was like a whole bunch of whole bunch of whole bunch of stuff going on. So, what I recommend is that you actually don’t want to do too much in a single session. So, what I would recommend what I was doing is that I was doing only one problem actually, believe it or not.
And then I was doing just one problem, but just multiple nights a week. So, like do it like at least three nights a week. Take one problem, put all of your attention, every every single ounce of your attention into that problem, and don’t spend more than half an hour on it.
So, it’s not even like that much. You just have to like be consistent with it, doing multiple multiple times a week. And then do do like just what even if it’s just one problem per session.
And I was also keeping track like actually created like my own my own spreadsheet where I was keeping track of of okay, so like I tried this problem, I did this well, right? If I didn’t know how to solve it, I just like marked it as like yeah, just try again later. And then in a future session, I would go back and try it.
But yeah, so I would just do it I would just do it that way. Instead of trying to cram like a whole bunch of like problems in one single session, just do one problem per day, and but just do it like multiple days. And don’t spend that much time on it.
Like I used to try to I used to try to do like a lot of problems. It just doesn’t work out. This is not like simple stuff, you know?
My brain couldn’t do more than like maybe 45 minutes per session. So, yeah, that’s what I would recommend. Love that.
Take breaks cuz I know a lot of computer science students just want to cram, and that doesn’t really help you out. Yeah, yeah, exactly. And I know I was late to the Q&A party.
I was stuck in some internet traffic. So, I just wanted to just extend some love to, all of the information that you shared. Hopefully folks, are sending some emojis to show their appreciation.
They’re going to have some time. Yes, I’m seeing some heart emojis. Thank you, everyone.
All right, next question that we have for you. What is the interview process like, for, software engineer roles, mid to senior? Is there any differences that you’re seeing between, interview prep for internship versus new grad roles?
Marissa, do you have anything? I could I could give like my input, but I’ll share. The biggest difference I’ll call out between internship versus industry is internships are going to focus in on the coding interview, right?
The biggest difference, and also I’ll call out the quantity of interviews changes the moment we start talking about industry, right? So, for the most part, when it comes to an internship, it’ll be about two coding interviews. There are other steps that will come before.
We’ll get into the nitty-gritty if needed. But, when it comes to the industry level, we’re talking about four or five. And again, people are like, "Oh, the stress, the time.
Oh my goodness." That is also a rightful, experience and expression after that. But, the biggest thing is then there are additional coding interview questions, or coding interviews. And then there is one that will be more based around what we call like, general cognitive ability, leadership, Googliness, because, you know, we love a good Google term, per usual.
And that is then where we talk a little bit more about situational or hypothetical questions, which I I a little bit more of my, university students that I work with tend to hear about and they’re like, "Okay, but like how do I prep for that?" the biggest thing that I always talk about when it comes to then my full-time folks, my folks that are looking for a new grad role, anything like that, is again, we went over all the awesome coding prep. Again, JC, rockstar of all time, walking through some of those questions. But the hypothetical and situational ones, my personal recommendation is usually thinking about three-ish four scenarios that have happened in again, either your college years, if you’ve already started working full-time, things that either have gone extremely well, and always having one where you’re like, "Man, I rocked it.
That was like the best time that I’ve led anything. No feedback, gold stars." There is then another one where you’re like, "Oh my goodness, that was what felt like a train wreck. I have so many learnings and so many lessons.
I will never do it exactly the same entire way again, but there are many different ways that I would handle it." And then a third one, or again, you can pick if there’s multiple of each one, but the last one would be one where you felt like you challenged yourself, you grew the most. It wasn’t your most optimal performance, but again, you learned a lot and it was those growing pains. Those are always the ones when it comes to the additional prep versus for my full-time roles versus my internships, that then hey, take time to reflect on that and really think through and only anchor on a few so that you’re not in a swirl when you get asked, "Tell me about a time when a project didn’t go as you planned." And you’re like, "Oh my god, I think I have like eight stories that have scarred me for life." Or whatever that might be.
It’s really thinking through, "Hey, where is one where again, I learned a lot, there were many, many challenges, and where I can then improve and or already have iterated and improved upon that that you might be able to anchor on." So, I would say those are the biggest differences between maybe like, again, an internship and then then as we start going up the ladder of early mid to senior level questions, those might change based off of then like, "Hey, maybe you’re managing a team at a mid-level, right? Thinking about those examples in context of then leadership and management. So, it just kind of varies on where you’re at in your own careers, but I would say those are kind of the bigger things.
Amazing. And I can’t believe it, but we’re we’re out of time. And I know you it’s okay though.
I hope everyone in the audience appreciated the step-by-step thorough process that JC walked us through because I think that was like critical and worth its weight in gold. So, I just really wanted to just extend a thank you to both you JC and Marissa. Please be sure you’re thanking them in the chat as well as sending those emojis for just this really thoughtful and practical presentation.
Please also be sure to fill out the survey that we have at the end and it should be popping up for you before you leave because that just helps us just incorporate your feedback for future breakouts. And then before we close out, I do believe we have a brief video from our host Bobby D. Thank you all again.
Now, wasn’t that a great session? Oh my gosh, these breakout sessions are fire and I want to encourage you to attend as many as you can. But, let me give you some information before we continue.
So, please take a moment to complete a brief survey to share your feedback. Remember, surveys are what’s going to make us get better, but also let us know what we’re doing really well. To see what’s coming up next, you can head back to the main stage and check out the schedule.
See you soon in the next session. Oh.




