I'm interviewing at google next week. This is the first phone interview, with some live coding. Has anyone ever interviewed with a big tech company (MS/Google/FB/Amazon)? Have any advice? Also, my background is EE/Linguistics, and Comp. Ling. I feel I should stress that soon, and it makes me nervous that I'm not that up on algs/data structurs as CS doctorates straight up. What says you all?
Based on what I've heard from friends who have interviewed at Google (some of whom were hired), I think my suggestion is "be a genius." :)
They may give you some of the stupid "How would you move Mt. Fuji" type questions. At least, they've done that in the past.
I've been through two or three rounds of phone interviews with Amazon and one or two with Google before, and did an on-site with Google too (but didn't get the job). That was 2-3 years ago. Actually, I have a phone interview for Google tomorrow as well.
Originally Posted by doubleanti
You don't need to be too nervous, and you don't need to be perfect. You don't need PhD-level algo/data structure skills either. I would say it's more at a bachelor's/master's level depending on the university. I went to a UC, and I can't recall them covering anything beyond what I learned in my junior year.
They often like to "see" (hear I guess) your thought process, so don't be afraid to talk through your solution out loud. Also, feel free to go through a few iterations. Start with the simplest, most intuitive solution. They'll probably recognize it as such, and point out the downsides to it, or ask you to speed it up in some significant way.
As far as what you should know for the non-live-coding part of the phone interview, know your data structures and algorithms. Linked lists are probably a bit too simple, but binary trees (including balanced vs unbalanced), hashing, heaps, basic graph theory, etc. Algorithm wise, it probably helps to know common sorting and searching algos, graph and tree algorithms, and some of the common NP-complete problems (traveling salesman, knapsack, etc). In my limited experience, every phone interview I did for the big companies has involved a dynamic programming problem.
The live coding bits have usually been pretty easy, sometimes as simple as "reverse a string in place". You usually have your pick from the more popular languages, so pick what you're most comfortable with.
I didn't want to ramble for too long, so if you have more questions, ask.
Best of luck, and let me know how you do, hopefully I'll be able to share some tips for the on-site interview soon.
One week is a bit narrow window if you feel you have a little more studying to do. Otherwise that's plenty of time to prepare emotionally.
I'd say be brutally honest about any difficulties you may find during the interview. Don't stutter or try to magically conjure an answer you don't really know or can't remember. Your skills on this board speak for yourself, so you know you know what you know. You just may be a bit more nervous that day. Don't hide that fact from the interviewer.
In any case, your resume spoke of your abilities, and it is clear from it that you are operating at a different level. I won't expect a whole lot of algorithms side-tracking and such. Time is precious for the interviewer also. Don't forget that. So the interview will probably be more centered around your specific skills.
Really, don't be too nervous. As Mario said, your skills on this board speak to your abilities, and they saw that in your resume as well. One week should be sufficient for review. The data structures and algo questions are not so in-depth or about minute details. Think bigger picture, how and to what do you apply them.
Unfortunately, for the really big software places, that is simply not the case. I don't want to scare doubleanti, but I don't want to give him/her false hope or be unprepared.
Originally Posted by Mario F.
The big companies have a very structured hiring process compared to most small and mid-sized companies. There is a focus in the phone interviews on CS "basics", it is largely about data structures and algorithms, and how to apply them to solving problems. You probably wont get a "what is the worst-case big-O of a B-Tree", but you will get questions to which the answer amounts to "use a B-Tree". So you need to know your data structures and algorithms from that perspective.
There is a preliminary phone "interview", which is an informal chat with a recruiter, that is very non-technical, to make sure your and their interests line up, etc. Then they schedule the technical phone interview, usually 45-60 minutes. The interviewer's time is precious, but doing these interviews is part of their job, so that 45-60 minutes is set aside and dedicated to your phone interview. They will not rush you through it or skip the assigned technical questions (yep, have assigned questions and they must ask those ones). They have a set of questions they have to ask, and certain follow up and guidance questions they ask, and will record your answers in their system, along with personal notes on how they thought the interview went. There's usually a short amount of time at the end of the phone call for you to ask questions to the interviewer or discuss whatever. The on-site interview is more problem solving stuff, four 45-60 minute technical interviews with one or a couple of people, again with a bit of time at the end for you to ask questions in return. There is a non-technical "lunch interview" halfway through the day. One of the employees takes you to lunch on the Google campus, and you can ask whatever questions you want about working there, etc.
This all comes from my personal experience interviewing for two of the companies listed, as well as the experience of a few of my a few of my friends who have interviewed at such places.
A guy that had graduated from my uni was asked about string handling in C and how to handle an infinite sequence of number.The solution to the second was that we would divide by a number and then go on,but i do not remember much.
Originally Posted by doubleanti
I know my post is small , but i try to help!
Having just been through lots of interviews with big tech companies, I'll echo what everyone else has said. You know your stuff, so don't stress too much. Do spend some time brushing up on algorithms, and be very honest and open about what you're thinking during the interview. If you search online you can find many examples of the questions asked by well-known tech companies, and I found it helped me a lot to think through some problems just to get my brain in that mode.