How should I prepare for an onsite SDE interview at Microsoft?
-
I have an onsite interview with Microsoft in 2 weeks. This is for an SDE position. I have read the following posts but feel overwhelmed, may be the thoughts of interview is getting to me I am struggling to put together a plan so I can cover/refresh most topics in 2 weeks. I have been reading Algorithm Design Manual and CLRS (fast track) and Cracking the coding interview books and online every time I come across a term that I don't understand/can't recollect. In short, right now, my mind has turned into a fractal generator :-)
-
Answer:
<< I worked for Microsoft for 10+ years. Likely interviewed hundreds of SDE candidates, a few as the hiring manager >> First of all, stop stressing. Honestly. I can't recall how many really smart kids I interviewed where I had to spend good 15 minutes just calming their nerves down. Not every interviewer might be as patient. When on the other side of the table (being interviewed), I remind myself that it's just a conversation, not a test. Go in, talk to another person who might become your colleague and have a good time. Then, brush up on basic concepts, data structures and algorithms, but don't stress over it. No one expects you to recall everything from memory. I really do expect you to know how to traverse a tree. I honestly do not expect you to know every tree traversal or balancing algorithm. Or even a few of them. As long as you know basic building blocks, you'll be fine. Another mistake some interviewees make is that they try to memorize algorithms. There are so many out there, you can't possibly memorize them all, nor will that help you in figuring out when to use what. The interviewer is trying to get an insight into your thought process, you don't need to memorize anything for that. For preparation, get this book: http://www.amazon.com/Programming-Pearls-2nd-Edition-Bentley/dp/0201657880/ref=sr_1_1?ie=UTF8&qid=1388080440&sr=8-1&keywords=programming+pearls. Read it. Read it again. Do all exercises. It's the single best advice I can give you to ace a technical interview. Lets talk about what the interviewer is looking for 1) Raw intelligence 2) Problem solving skills / Dealing with ambiguity 3) Thought process 4) Good fit Show them that you know how to deal with ambiguity. When given a technical problem, don't just jump into it immediately, it's not a timed test. Take a moment to understand the problem. Ask clarifying questions. Think of edge cases. Clarify them. Look at the problem as a whole and come up with a design. Coding is honestly, easy. Coding is the last step where you write out how you solved a problem. Coding isn't how you solve the problem. And for the love of everything cute and cuddly, please test the code! The most annoying thing to see as an interviewer is to give a candidate a problem and have them jump right to coding (without properly understanding the problem), writing code that doesn't entirely solve your problem, and proclaiming they're done without even taking a minute to test it. To break it down :- 1) Ask clarifying question. If I give you an example to explain my question where n==4, don't just assume that n is always 4. May be it is, may be it's not. May be I can have duplicate entries. Interviewers aren't being silly, at Microsoft as an SDE you'll have a lot of freedom and a lot of tasks will be delegated to you without anyone watching over your shoulders. Interviewers want to make sure you have a proper process for solving problems. 2) Design a solution: Use whatever process you have. Some people draw things. Some write pseudo code. Some start with a test-driven-design. Whatever your method is, come up with a design before coming up with code. 3) Test the design: Seriously. How do you know if you solved the problem properly if you don't bother to test it? 4) Now you may write code: Coding isn't how you solve a problem. It's how you implement the solution. You cant code a solution if you don't have a solution in the first place. 5) Test it. In general interviewers aren't looking for "a right answer". I've hired plenty of people who couldn't solve the problem I gave them, but they convinced me that they'd be able to solve it in real life given proper time and resources. On the flip side, I've rejected plenty of candidates who solved my problem just fine, but not in a convincing way. It was as if they fluke into the solution. Finally, understand that Microsoft interview process generates a lot of false negatives. Microsoft isn't judging your skills and giving you an assessment. It's making sure whoever it hires is qualified. But it cannot possibly make sure it hires everyone who's qualified. If you get an offer, you are talented. But if you do not get an offer, it doesn't mean anything. It might be because they found someone else. Or they weren't 100% sure. Or any one of millions of things. It's like dating. You don't marry everyone you run into, even though they might make a very good spouse. You just want to make sure that one person you marry is the right person. Good luck.
Zeeshan Hamid at Quora Visit the source
Other answers
I recently received an offer from MS for an SDET position. Sorry for answering this anonymously, because I still havent told my current employer that I'm moving to Microsoft :) My interview time frame was 1 month and this is how I prepared: Spent 2-3 hours a day solving MS/Google/Amazon/Apple problems from http://www.careercup.com/page Bought a copy of and solved all the practice problems (The best book for interview prep so far) on paper Read few chapters from , mainly Binary Trees, Dynamic Programming and Graph Algorithms Approximately 40% of the questions I was asked, I had already seen onhttp://careercup.com. Since you have only 2 weeks left, I would highly recommend solving as many problems as you can from the book, as well as from the website. One thing I cannot emphasize enough is your approach to solving a problem. Dont be intimidated if the solution doesn't strike you at once. Have a structured approach and be sure to ask any clarifying questions you have (Do not assume anything). In many cases, they purposely omit details to see if you ask questions.
Anonymous
I would recommend dividing the preparations in following five stages: (1) Setting right mindset (2) Programming preparations (3) Being ready for the day of the interview (4) Approach during the interview (5) Followup actions after the interview (Disclosure: I have about 8+ years of experience working at Microsoft.) 1 Setting right mindset: As with everything else, having the right mindset while approaching the interview preparations would be the most crucial step. Here are few salient points I would like to mention as you begin your preparations: (a) Accept the fact that you will be asked questions which you have not heard/seen before. (b) Hone and rely on your ability to solve a new problems (as opposed to memorizing the solution to the problem you are solving during preparations). (c) Go with an open, honest mind set, if you don't know anything , say you don't know but you like to try. Honesty, Cheerfulness and positive vibe are just as important criteria. 2 Programming preparations: There are 2 parts to this. Preparing to answer programming questions and preparing for the non-programming part. 2.1 Programming practice There are 3 main resources here as mentioned below. (a) Programming Interviews Exposed: If there in only one book you can prepare from, then I would recommend this book. You should be able to solve each and every question from this book. It would be ok to discard puzzles section as I understand they do not ask puzzles any more. Note that I would highly recommend writing down each and every solution, I know lot of people who actually compile and execute each of their solutions. (b) Programming Pearls: This is a great book, which packs a lot of wisdom/insights considering the size. It has lots of good points on sorting, partitioning, string manipulations, suffix arrays etc. Compared to PIE,I think this is a much slower read, but very useful (not only for MS interview but for all dev interviews.) (c) http://careercup.com/ There are tons of questions here (including MSFT Dev questions). While questions are good, most of the answers in the comment section here can not be trusted. Note that you can not exhaust all the MSFT questions mentioned here, so just pick a few and solve them. It gives you a good idea on what to expect in real interviews. Few other points: Just to reiterate, use pen and paper to practice problems solving. If possible even use whiteboard, practicing on whiteboard will help improve you handwriting while using markers, and will help you manage WB space better. (Note that they might take picture of the WB at the end of interview, which may be used to discuss and compare candidate performance.) Also note that while you may not face the same problem(that you practiced) in the interview, there are lot of subproblems which are similar. For example, if you studied QuickSort well, next time you are faced with problem involving partitioning of an array, you can just apply for knowledge of quicksort partitioning algorithms there. So in a way all this practice will help you solve these smaller known subproblems of a real life unknown interview problem. Last interview in the loop: Generally the last interview (5th or 6th interview) would be the most important one, it is generally with someone who has decades of experience at MSFT. In most cases it is not technical, they will check soft skills, attitude etc and confirm if you are a good fit for the team and for the company. It would be a good idea to have few questions ready to ask this interviewer - high level questions, the kind of question you would ask to someone who owns a business. 2.2 Research and questions-to-ask Study job description very well, try to understand about the product and role. Have stock quesitons for each interviewer. Example questions: - What would an ideal candidate for this position look like, what qualities would she/he have? - What is the career path from this position. what would be next step in career from here. - How is the culture in this team. - What is relase cadence like? every week/month/qaurter/year? - What is your role in this team, how long have you been here? what do you like about this role/team? Now that you have read till this point, I will let you know an internal secret - a set of questions which you will be asked no matter what. These questions are your golden opportunity to impress them, prepare these questions well and it will set the direction and tone of the interview in your favor. -Tell me something about yourself. -Tell me about the last/current project you are working on . -Tell me about the most interesting project you have worked on. To address last 2 questions above, I would recommend providing interviewer with a very high level overview of your project(like you would explain your project to a 5 year old) and then pausing and asking them if they would like to dive into about any particular part of the project then go into technical details. Again, please prepare these questions as thoroughly as you can, as it is the only guaranteed part of this whole interview exercise and completely in your control. 3 Being ready for the day of the interview: Show enthusiasm and passion while talking to them, you would like to come across as someone who absolutely loves what he does and is really excited about this opportunity To this end, - Have a good night's sleep, - Have a heavy breakfast, they will test you for your stamina and tenacity on the day of the interview, to see how you respond to difficult/demanding questions at the end of a long day. - Dress comfortably, I do not think they give much importance to attire as long as it is not disrespectful. - Reach 15 to 30 mins early, breath, relax and find your "zone". - Do not be taken aback by some (perceived) negativity during the whole interview process, by one of the interviewer, it may not be intentional, focus on getting an offer, you can consider other inter-personal factors before actually joining the team. 4 Approach during the interview: Now, during the interview while facing a programming question, there are two main parameters: your approach and your solution. While actual solution to the problem would differ from problem to problem, your approach is something that can be improved with practice. I would recommend following this approach on facing each interview question and making this an intrinsic part of your response. Approach: (Once the interviewer posits a programing question to you) - Paraphrase and reiterate the question in your own words, this should eliminate any misinterpretations. - Ask clarifying questions, clarify boundary conditions, clarify special cases, be double sure you are solving the right problem. - As you think through the solution, verbalize your thought process, how you reach a solution is as important as reaching the solution itself. - Provide 1st solution (rather quickly), this solution need not be optimal, nor efficient, it can be brute force, but nonetheless a solution that works. Assert that you woul like to improve up on this solution. Interviewer may change the direction of interview at this point, be attentive to that. - Next, come up with a better/elegant solution. - Then think about which DataStructure would you use to solve this problem,. - Feel free to take a short break, use restroom, have water/soda if you need. - Explain the solution verbally, if needed write psuedo code. - Write real code. Start with function signature, choose descriptive names for function and parameters, ensure dataype of input and output parameters are as expected, confirm this function signature with interviewer. - Implement the solution. - Walk through the solution with sample input. - Walk through with a invalid input, error/exception should be thown. - Double check that there are no bugs (bug tolerance is almost zero for SDE interviews) - If things looks good, declare code complete :P. 5 Followup actions after the interview It is not over till you get a written offer in your hands, so immediately after the interview: - Send a quick thank you note to HR (or wheoever you talked to if you have their email addresses) , in this note - thank them for their time and for what you learnt from them. - show excitement and reiternatte you are interested in this opportunity. - Once you get an offer, tactfully play the salary/level/benefits negotiations game. Finally, If you do _not_ get the job, well it is a learning experience to be interviewed at MSFT, this experience itself prepares you well for other interviews. If you do get the job, remember, this is not an achievement, it is an opportunity - so make the best of it ;) All the best and happy interviewing!!! There are already excellent points mentioned by Zeeshan Hamid and others in previous answers, add here I am just adding my humble 2 cents. (Disclaimer: I do not take any credit for the images posted above, if these images belongs to you and would not like it to appear here, please send me a message and I will remove them from here. Thanks. )
Chinmay Parekh
Preparation points include, Data structures Algorithms Implementation in at least one language Ability to test your implementation Object oriented design Algorithmic analysis Advanced data structures like splay tree and red black trees - optional Possible books for preparation are cracking the coding interview and programming interviews exposed . possible websites to browse before interview are glass door and career cup .coms.
Deepan Prabhu
Best Site for preparation is : http://www.geeksforgeeks.org/ try the android app which also allows code copying and offline browsing of the website which is best for programmers to always stay in touch https://dl.dropboxusercontent.com/u/105573711/geeksforgeeks.apk
Anonymous
Although 2 weeks is really a short timeline, but you still can do a lot to maximize your chance. The high level idea of the strategy would be spending as much time as you can to practice with interview questions. But in detail, there are lots of things to keep in mind and I'll also recommend several resources to make it easier for you. 1. Make a timeline To start with, I always recommend people make a preparation timeline in the beginning, which is more important for people with short preparation time like 2 weeks. More importantly, you need to make sure how much time you will allocate to interview preparation per day. Apparently spending less than an hour every day won't work for majority of people. In addition, a big chunk of preparation time is always better than breaking into small half hour chunks due to context switch. 2. Prepare well for data structure and algorithms You'd better spend a lot of time getting familiar with these basic knowledge you learned at school, as they are the basic of your interview. I would describe these as your tools to solve interview questions. In an interview, you may encounter different data structures, you may be asked to analyze time and space complexity, and all of them are covered in this topic. Books like http://www.amazon.com/Introduction-Algorithms-Edition-Thomas-Cormen/dp/0262033844 are great options and you can also check https://gist.github.com/TSiege/cbb0507082bb18ff7e4b and http://bigocheatsheet.com/. 3. Be familiar with coding questions The idea is to be familiar with how to use what you learned from those books to solve a real question and know about what kind of questions are asked in a general interview. Just delve into those questions and practice as much as you can. Resources like http://leetcode.com/, http://glassdoor.com/ and http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X are very popular and you can find tons of interview questions online to practice. Since it's a very short timeline in your case, I would recommend go directly with Glassdoor and practice with past interview questions from your company. 4. Have mock interview Technical interview doesn't only evaluate your coding ability, but a variety of skills and abilities like communication skills, analysis ability etc.. Also many people will feel nervous solving a problem when someone is looking over his shoulder. That's why people may fail with problems that can be solved easily at home. The key point is to practice with a real person instead of yourself. A lot of people also want to get good quality feedbacks from experienced interviewers. With that in mind, we worked on building http://www.gainlo.co/, which allows candidate have mock interview with experienced interviewers from top companies like Google, Amazon etc. and will get real feedback to help them improve. All in all, I think you should make sure you are improving everyday and definitely you're gonna make it after 2 weeks.
Jake Cook
All SDE interviews have similar pattern to prepare, and once you make it, you made a big time. First of all, no matter how many time left for you to prepare, data structure and basic algorithms are always the #1 thing you should keep in mind as all SDE interviews are based on these basic stuffs. If you fail to get a good grasp of those basic data structures you learnt at school, you just failed the whole interview. I'm not exaggerating, once you've been thru several technical interviews, you'll realize how important it is. Books about data structure and algorithm are everywhere, do make sure you are very clear about basic stuffs like binary tree, queue, stack, linked list and so on. Since you said you have only 2 months left, then I'd suggest you skip everything else (except the 1st tip) and delve into real interview questions from the company you aim at. Do a little Google search and I promise there're tons of these questions from past interviewers (like http://www.glassdoor.com). Don't expect to have the same interview question you prepared (though it's possible), but practicing with real interview questions will help you be aware of the difficulty, style of each company and what they really care about. If you still have time left (maybe for the last week), you can try mock interviews. You can do this with your friends, classmates, that's awesome. If you can't find someone, try site like http://www.gainlo.co where you can have mock interview with people working at Microsoft, Google etc.. Within 2 weeks, there are a lot you can change. It's never too late to start preparing and do keep in mind, data structure and algorithm are always the #1 thing you should be familiar with.
Mark Ali
Related Q & A:
- How can I prepare for a good interview?Best solution by Yahoo! Answers
- How do I prepare for the Foreign Service Officer exam?Best solution by Quora
- How do i prepare for holiday?Best solution by Yahoo! Answers
- How should i prepare for job interview?Best solution by Yahoo! Answers
- How Do I Prepare For My Modeling Interview?Best solution by ChaCha
Just Added Q & A:
- How many active mobile subscribers are there in China?Best solution by Quora
- How to find the right vacation?Best solution by bookit.com
- How To Make Your Own Primer?Best solution by thekrazycouponlady.com
- How do you get the domain & range?Best solution by ChaCha
- How do you open pop up blockers?Best solution by Yahoo! Answers
For every problem there is a solution! Proved by Solucija.
-
Got an issue and looking for advice?
-
Ask Solucija to search every corner of the Web for help.
-
Get workable solutions and helpful tips in a moment.
Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.