During my interviews I didnt sign a NDA, but I do respectthe effort that interviewers put into preparing their questionsso Im not going to discuss them. That doesnt matter though, because you probably wont get the same questions anyway, and the algorithm stuff is far from the whole story.
Yes, Im glad you picked up on the fact that this blog post was actually to encourage people to use it as practice for many other things. Working for Google would be cool of course, but I got so much more out of it than that 🙂 so really, the result doesnt matter so much, as long as you open yourself up to the whole experience.
Anecdotally, programming. The thing is, I feel that the same areas of the brain would be used for math problems too. When trying to solve math stuff, you undergo a very similar creative process. To me they are the same. In case you disagree, I would say that the best talent to have would be to enjoy solving problems (mathematical, programming, or other). By extension this would mean welcoming a math problem, even if you dont have a strong background in it.
Thanks for all the efforts in putting this together, not to mention replying to all the folks here!
Just a reminder though, this is all speculative 😉 I only have a few data points to work with.
I do not mind weather they inform or not, but i want to know if they do.
Hey n1te, thanks for the feedback 🙂
One time I was walking to an interview in the city (not a Google interview) and I was really nervous, even though I didnt care either way if I got the job. I thought about how the nerves wouldnt be an issue after the interview, because Id have already done the scary thing by then. I couldnt time travel, but I instead wondered if there is a way to use up the nerves on something else.
Great article Alex, thanks. I have been doing some serious preparation and I now have some good idea about how the google interview might be like. But, after reading the article, I am wondering if my preparation will be a waste if I cant clear interviews from the top 5 companies(Google, Microsoft, Apple, Amazon, Facebook). Or are there other companies that do CS-algo based interviews? If yes, where to find them?
I would like to add that even if you choose Python, you should be familiar with either Java or C++, because they will probably still ask you questions about those (those are the languages they use most for production code).
4. Intern Software Engineer in Tokyo.
I have had my phone interview today for Test Engineer in Mountain View. I was 50 min long. I answered the question about testing google maps and then there was pretty strait-forward coding task in Java: Given an array of integers, please write a function to print a pair of integers from the array whose sum is closest to zero.
Hi Alex, great article. Couple of questions, were all of those interviews for Google Sydney, if so what positions did you interview for?
The people you will talk to are smart, and its a fun experience to be able to solve problems with smart and passionate people. One of my interviews was just a discussion about the good and bad parts (in our opinions) of a bunch of programming languages (Scheme, Python, C, C++, Java, Erlang). We discussedSICPand the current state of education, and he recommended some research papers for me to read. All the intriguing questions and back-and-forth made me feel like I was being taught by a modernSocrates(perhaps Google should consider offering a Computer Science degree taught entirely with interviews :P).
However other than programming you might need to look on the below points that can help you to understand the overall concept : (Possibly that may help you to have further thoughts to think what extra you might need.)
(Step-3) : You must practice several coding problems to implement the things which learn from Step-1 , and Step-2 (you may do the following choose any coding language for the choice of yours (C,C++ or Java or Python or PHP)
And as always, please read the comments below and add your own thoughts to the discussion. In particular,Sumit Aroragave some important advice that I didnt cover.
If you know another language that they do use, Id suggest to focus on that instead (you wont have to waste any cognitive power on switching languages unexpectedly).
Does Google informs us if we are not selected? I had couple of interviews via hangout, Its been 5 days since.
You might recognise the adjacency matrix as potentially being a very poor choice, depending on the nature of the graph. I did discuss when this might not be a good option. In fact, for every question, Istart off by describing a naive approach, and then refine it. This helps to verify the question requirements, and gives you an easy starting point. Maybe you could introspectively comment on agile methodology (Google practises Scrum).
FWIW, my mistakes were specifically not understanding/clarifying the question. This is probably easier to remember to do if you express your assumptions and talk through your thinking more. It isnt easy to master this without practice either. Id recommend solving questions with a friend (take in turns to ask each other, but discuss it together).
Thank you for the article and taking time answering comments! I find the article still being relevant even 3.5 years later. Great links and suggestions too!
Ive never been a studying person, I could barely get myself to study unless I had to. Though I have absolutely no problem sitting down hours straight intrigued, learning or solving problems for projects. I managed to pass through my CS degree scraping an 80 avg. I know I can do anything I put my mind to but since my degree was kind of a fly by I have so many holes and feel truly lost on how to approach all these subjects and to which depth I should get involved for a grad position.
Please see the attached ppt, that provide few points that might be helpful to plan the missing things around you If exist.
I recently read Cracking the Coding Interview ( which gave similar advice.
More than any other book it helped me understand just how astonishingly commonplace (and important)graph problemsare they should be part of every working programmers toolkit. The book also covers basic data structures and sorting algorithms, which is a nice bonus. But the gold mine is the second half of the book, which is a sort of encyclopedia of1-pagerson zillions of useful problems and various ways to solve them, without too much detail. Almost every 1-pager has a simple picture, making it easy to remember. This is a great way to learn how toidentify hundreds of problem types.
What about you? Any plans to interview there (or somewhere else)?
I hope Ive got you curious about what you could learn from a Google interview. If you are worried about the possible rejection, treat it as a win in a game ofRejection Therapy. You can re-apply as many times as you like, so you could also think of it asTDDfor your skills, and you like TDD, right?
Additionally,Interview Cakeoffers a new approach, which systematises your technical preparation so you can know exactly what to focus on while avoiding becoming overwhelmed. It is a paid service, but they also have a free mailing list with weekly questions to keep you sharp (great for your long-game).
Have you really read this far? Consider adding me toTwitterand telling me what you thought 🙂
There was a girl walking next to me, so I turned to her and said she was dressed nicely. She said a timid thank you and picked up pace to get away from me. I laughed at my failure, but suddenly I didnt feel so scared about the interview. I think this is a great example of whyRejection Therapyis worth experimenting with.
Here Google doesnt mean the Google, it means any company which is very creative to introduce the computer science related products e.g. Google, Microsoft, Apple, Amazon, Facebook, ..or any one else which you feel to be a reasonable fit
If you are doing a phone interview, answer it standing up (you can sit down after) and pace around a little bit. Smile as you talk, as well. You should also take down their name on paper ready to use a few times casually. These are tricks from the infamousHow to Win Friends and Influence People. Maybethese alonewont make you likeable, but I think it causes you to think about the other person and stop being so self conscious, which helps you to relax. Youll beone charming motherfucking pig.
Yes, but hopefully not permanently. I migrated from Posterous over the weekend. There is a way to import my comments into Disqus, but it requires some hacking. I will get around to it in a week or two when I get time 🙂
You can ask. It really depends on the interviewer though.
Theywillask you about your previous work and education, though, and pretty much always ask about a technical challenge you overcame. I like to talk about a fun incremental A* search I did at my first job (and why we needed it to be iterative). You can probably think of something, dont stress, but better to think of it before the interview.
And have a question ready for when they let you have your turn. Dont search forgood questions to ask in technical interviews, because if it isntyourquestion, you might be uninterested if the interviewer talks about it for a long time. Think of something that you could have a discussion about, something you are opinionated about. Think of something you hated at a previous job (but dont come across as bitter), how you would improve that, and then ask them if they do that. For me, I was interested in the code review process at Google, and what sort of project they would assign to a beginner.
I have interviewed with some other companies too, and most of them asked me algorithm style questions (the ones that didnt already knew me personally). I dont think it would be a waste to prepare for algorithm questions 🙂
You might need to ask appropriate questions to understand the question or any other discussion item.
Its a bit frightening that you being a PhD CS student didnt get the Intern SE position (Im a Master of CS student myself). What would you say is more important to the interviewers, your math or programming skills? Also, was the interview for SE in Mountain View any different than the one in Sydney?
I had an interview via hangout today. I totally effed it up and I dont expect to hear from them again. But thats OK. I already have a job and I only applied because theyre google, not actively looking for a new job. Would have been nice to work there, but no one has died from their rejection, I think. Best of luck with your PhD!
The interview process usually reflects this. They usually want to see how you would go about solving something you dont know. There is a relatively small core of skills in algorithm design, which are also tacit knowledge, that if you practice enough beforehand, you should have a good idea about them and be able to reapply them to many problems youve never seen before. In addition, I think they want to see how passionate and welcoming you are to difficult problems (see them as a game, not a chore), and how well you communicate.
Thanks for sharing your experience DT, and best of luck with it 🙂
It is competitive, which is why good people can be turned away. It does highlight holes in your knowledge though, which is what I especially took away from the whole experience.
Thats my experience anyway. I think the opt-in part is so they can *try* to find good interviewers for you (but it probably isnt that high priority for them, especially if you dont opt for a language they use officially).
Here is the timeline for my locations and positions:
The phone interview they asked the non technical interviews mainly while the guy was showing me around the local campus. I got past the phone interview without problem.
But a PhD isnt the best indicator of ability anyway.
The phone interviews usually are accompanied by a Google doc for you to program into. I usually nominate Python as my preferred language, but usually they make me use C or C++ (they often say I can use Java too). I was rusty with my C++ syntax at the time, but they didnt seem to mind. I just explained things like using templates, even though I can never remember the syntax for the coolmetaprogramming tricks.
Ive participated in about fourof Google interviews (of about 3 interviews each) for various positions. Im still not a Googler though, which I guess indicates that Im not the best person to give this advice. However, I think its about time I put in my 0.2 bitcoins. I recently did exactly this to help my brother prepare for his interviews and the guy kicked ass. If he gets the job Im going to take as much credit for it as I can 😉
I wasnt a PhD student at the time 🙂
The mechanics were slightly different (programming into a Google Doc was a new addition) but other than that no. I think it would be the same either way now.
Hi Shay, thanks so much for your kind words. Sorry for my slow reply (I was travelling). How did your interview go?
This post is mainly about the rituals I perform during preparation for the interviews, and the lessons I have learned from them. I am of the strong opinion that everyone should apply for a job at Google.
Hi Alex, great article. I just gave the on-site interview at Google and thought it went OK. Do the recruiters inform you of their decision even if they are not hiring you? Or do we just have to wait for a couple of weeks and move on? Whats your experience with Google rejection notification. Thanks
You need to understand clearly the questions given to you
2. Software Engineer in Sydney (this job wasnt advertised, but they saw that I had a stronger background in programming that product management),
Yeah. It can feel like a big deal before the interview though 😉 but if you take a step back and realise you are doing fine as you are, then its just a good learning experience either way.
My main reason for applying is actually to help me with other job applications, I dont really believe Ill be able to make it passed the first interview unless somehow Ill manage sit my ass down and study in an organised and effective way, and of course have a lucky questions streak.
Thanks dude! Glad you liked the post, and especially for mentioning the quality of the links. I want to post more often, and knowing that people like the links makes it easier for me to justify writing posts curating ideas and linking them together (my more recent posts were explaining my original research much harder to write). Cheers!
First of all, you are going to want to practice. Even if you have been coding every day for years, you might not be used to the short question style.Project Euleristhe bombfor this. You will learn some maths too, which will come in handy, and it builds confidence. Do at least one of these every day until your interview.
I havent read the whole thing, but what I have read of it is eye and mind opening. This wasnt recommended to me directly by Google recruiting staff, but one of my interviewers emailed me a bunch of links after, including a link to the page for this book. There was a recent review of this book featured onHacker News. It is very good. The author, Steve Skiena, also offers hislecture videos and slides kick back and watch them with a beer after work/uni.
(Step-2): You should have practical understanding of Data Structures e.g. (Practical use cases related to :when to use circular buffer , or when to use adjacently list )
Sorry for the late reply! I guess you have figured it out by now, but yes, they will contact you regardless of the outcome.
Then the day of the interview the week before I lost a bit of my voodoo. Did
Hey, Thanks Gaby! No, I havent. I did interview once again (this time I did a full day of in-person interviews super fun), but Ive really been focusing on my PhD since I wrote this. Ill probably apply again though (and many other places. I might do a follow up post if its something people are interested in).
I dont expect you to have an answer to my nonsense, just sharing makes me feel better and I would be happy to hear any thoughts you may have, given your knowledge and experience. 🙂
I came up with the approach to solve this but struggled to get rid of bugs (I recently self-educated in programming). Then I was asked if I had any questions. I did ask few. I was very nervous during the interview and mentioned it few times to the interviewer. After the interview I finished the task and sent email to the recruiter thanking her and added my solution to the email, that to show that I dont give up and get things done. I read somewhere that proper communication with the recruiter may help.
Here are a few things that help me handle the pressure before an interview.
You seem like a reasonably educated guy. Why the hell then you have to use such profanity you mother*****? Do you want everyone to talk like that you a**hole?
this is an awesome post! I made it till the end! 🙂 Fucking great links! Skeina is great as everyone confessed! Thanks for putting it all together!
They will contact you either way. It can take a few weeks sometimes. I think its because they collate a bunch of candidates results, and then discuss them all in a meeting. They have a lot of people applying at any given time, and I bet they dont have a meeting every day. Just sit tight for now ^^
Thanks for sharing your experience. You are right, given more time and less pressure to perform the problems become much easier. I think interviewers would know this and take it into account, but it isnt a perfect signal of talent. Unfortunately, I think interviewing may never reach perfection 🙂
I write how I speak, and I dont believe people should be offended so easily (profanity can add nuance and value to language in fact, your comment would sound totally different without the profanity you used). But I dont want to impose my beliefs on you. You are welcome to not read my blog in the future (as it will most likely have swearing).
I really find your actions (reapplying, taking notes, taking those notes into action, writing the blog, answering every single post) inspiring! Im sure youll find your way with or without Google!
Not everyone wants to work for Google, but there are valuable side effects to a Google interview. Even if you dont think you want a job there, or think that you are under-qualified, it is a great idea to just try for one. The absolute worst thing that could happen is that you have fun and learn something.
Steve Yeggesays there are lots of smart Googlers who didnt get in until their third attempt (I still havent gotten in after my fourth, and I dont think Im stupid). As I mentioned, Im writing this post because I found the process of doing a Google interview at all to be very rewarding.
I had my first phone interview with Google Software Engineering position yesterday. I think I agree with you on all the aspects you mentioned. But what I would like to add though questions even though are not very difficult it is the time and the given moment you have to think and come up with code. I still have not heard about anything from them but my guess is I wont get to the next stage as they are pretty quick to respond to positive ones.
And Im glad you said that this isnt just about Google. The fact that the company doesnt matter has missed many people 🙂
Its funny how nervous one can get from a simple phone call, I have my first tech interview for a YouTube grad position in 2 weeks and Im terrified, even though Ive seen and been through a bunch of more intense experiences in my life from a combat army service, running marathons and other things we all approach during life.
I feel I have so many gaps in my knowledge too. As you can probably appreciate, the more we learn, often the more we realise there is left to learn. I get overwhelmed sometimes, but learning is a lifelong thing, so dont beat yourself up about it. And FYI, 80 average isnt scraping 😉
If the size of The Algorithm Design Manual is daunting and you want a short book to conquer quickly (for morale reasons), giveProgramming Pearlsa read. Answer as many questions in it as you can.
(Step-1) : You should have practical understanding of the Algorithms (e.g. When to use BackTracking, When to Use Divide and Conquer, Why double hashing required ?,Where brute force concept can be applied ?)
Thanks for your comment. Out of curiousity, have you gone through the process before?
Hi Alex, kudos to your for being so persisting with interviewing at Google. I hope youve found it rewarding. All the best in your future endeavours and thanks for sharing your thoughts!
Hmm, I dont think even positive interviews would have a follow up after just one day. I think it would be at least a week. But dont let it deter you if they take much longer it probably doesnt mean anything other than that they are busy.
Thanks for the comment Ari! I did find it rewarding and enjoyable, and an efficient way to learn and benchmark myself.
You will also want some reading material. Google recommendedthis post by Steve Yegge, which does a good job of calming you. They also recommendedanother post by Steve Yeggewhere he covers some styles of questions that are likely to be asked. Yegge recommends a particular book very highly The Algorithm Design Manual:
They Alex. I know your brother and mentioned this post to him when I caught up recentlyof course over spicy food. I recently went through the process. The phone interview I did in person due to disabilities I mentioned to them and they were willing to accomodate.
You need to understand the interviewers expression and mindset to un- derstand those questions
If you want more blog posts to read about how to get better at Computer Science, I recently foundthis post by Matt Mightto be a good target to aim for. Check outTen Things Every Computer Science Major Should Learn by Macneil Shonleas well, and my previous postAdvice to CS Undergrads(the links at the end in particular).
Finally, the absolute best way to prepare for a Google interview is to do more Google interviews, so if you fail, good for you! 😉
I know someone who asked questions fromThe Joel Test. The interviewer might recognise these questions and either congratulate you on reading blogs about your field, or quietly yawn to themselves. Its up if you want to take that risk (well, its not abigrisk). I definitely think its better to ask about something that has the potential to annoy you on a personal level if they dont give you the answer you want 😉 its subtle, but people can detect your healthy arrogance and passion.
One last thing! Google schedules the interview to be from 45 minutes to an hour. I have had awkward moments at the end of interviews where the interviewer mentions that our time is nearly up, andthenasks another question, or asks if I have any questions. It made me feel like he was in a rush, so I didnt feel like expanding on things much. Now, I recommend taking as much time as they will give you. Keep talking until they hang up on you if you have to 🙂 although it might help to say I dont mind if we go over, as long as Im not keeping you from something when the interviewer mentions the time.
Here are my comments related to the Google Interviews.
Sadly, a subsequent interview stumped me because I didnt understand the requirements. Even the stumping interviews have given me a great chance to realise some gaps in my knowledge and refine my approach. I knew that it was important to get the requirements right, but this really drove it home.
Everyone has holes in their knowledge some people will be a better fit for various projects at a given time though.
If you have a tech blog, refer to it. Ive had interviewers discuss my posts with me (which they found from my resume). Blogs arent hard to write, and even a few posts on an otherwise barren blog will make you look more thoughtful.
Now Im working withjava barcode creator, like many people, I also hope I can work in Google, but I dont have enough experience, so google interviews is difficult for me. But still thank you a lot, your experience learn more. Hope your dream come true, good luck.
However other than programming you might need to understand the main concept for the interview is to keep the interview active and this requires some action from your side, such as the following:
Edit: It turns out importing the comments is realllllllly tedious. Ive tried 20 times (not an exaggeration). Disqus parser doesnt tolerate Posterous output XML, and being remote it is quite difficult to debug 🙁 andthis scriptdoesnt seem to work anymore.
A couple of the things I learned are algorithms for (weighted) random sampling, queueing, vector calculus, and some cool applications of bloom filters.
Ill add a link to your comment in the article. Thanks again.
Hi Alex, following up to hsenpawss question Ive only had one round so far and have not heard back. Will they inform me if Im not making it to the next round or should I consider no news as bad news?
Take some time to think before answering, and especially to seek clarification on the questions. Ask what the data representation is. Ive found that they tend to say whatever you want. In a graph question, I said Okay, then its an adjacency matrix, which made the question over and done with in ten seconds. The interviewer seemed to like that, so dont be afraid to be a (humble) smart ass.
3. Software Engineer in Mountain View, and
Speaking of tricks, you get style points for using features of the language that are less well known. I had an interviewer say he was impressed because I used Pythons pattern matching (simple example:(a, b) = (b, a)). List comprehensions, map/reduce, generators, lambdas, and decorators could all help make you look cool, too. Only use them if they areusefulthough!
I agree with everything you wrote. The algorithm stuff is covered in Algorithm Design Manual, but I didnt say it explicitly.
Thanks for commenting! Good luck with it 🙂
So yeah, talk to a stranger. If you are waiting at home for a phone call though, another thing I do is jack jumps, dancing, or jogging on the spot just to make myself forget the other reason my heart is pounding so fast.
I started reading back on sortingsearching algo and data structures but Im afraid to waste time on the wrong things, and getting too scattered will probably result in a loss of interest or motivation.
There will also be a few non-technical questions. When I did my first one, a friend recommended that I have answers ready for cookie-cutter questions likeWhere do you see yourself in ten years?andWhy do you want to work for Google?. Dont bother with that! Do you really think one of the biggest companies in the world will waste their time asking questions like that? Every candidate would say the same answer, something about leading a team and how Google would let you contribute to society, or whatever (great, buteveryonewants that).
Glad to hear you found the post useful 🙂 let me know how things turn out!
Even when I opted for Python (one of the official languages used there) it didnt guarantee that the interviewer would know it. Some interviewers are happy for you to explain the syntax as you go, but others might insist you use C/C++ or Java.
Im not so much of a studying person either. I used to be one, but now I am so distracted by learning other things (usually tacit knowledge, especially about cultural, psychological and sociological things after moving to Japan) that I am a totally different person. But if the right problem presents itself, I can lose weeks of sleep. The thing is, I guess focused learning/solving is a good skill to master. I dont believe we are victim to the way we are right now.
If you talk about the programming then :
Thanks Alex for sharing your interview experiences.Actually I want to go to google and with your post i have got quite clear idea about how to prepare for google interviews..
It is important to reflect afterwards in order to reap the full benefits of interviewing at Google. If you did well, why? But more importantly, if you feel you did poorly, why? Google wont give feedback, which can be a bit depressing at times. After each interview write notes about what you felt went well and what didnt this way you can look back if you dont get the job, and decide what you need to work on. This post is the culmination of my reflections and the notes if you decide to write a blog post, Id enjoy reading it and will link it here.
They do, but you might have to wait up to 2 or 3 weeks.
Ah damn. Hope you had fun all the same 🙂
Hey, I think it is great that you dont give up. Its been three years since this post. Did you finally get in?
When you are accepted for a phone interview, Google sends you an email giving you tips on how to prepare. Interestingly, this has been a different list each time. Ill discuss the one I liked the most. They only give advice on the technical side. I will also discuss what I think are some other important aspects to be mindful of.