Ask HN: How to prepare for Programming Interview?
12 comments
Read "Hacking a Google Interview" from MIT (http://courses.csail.mit.edu/iap/interview/). Solid gold.
Besides that, a lot of startups ask about distributed computing. So make sure you understands the AWS tool ecosystem, as well as have an understanding of new (NoSQL) data stores.
Besides that, a lot of startups ask about distributed computing. So make sure you understands the AWS tool ecosystem, as well as have an understanding of new (NoSQL) data stores.
Thanks, there is some great stuff on there.
I am already familiar with AWS and a little Cassandra
1) have the details (and top level descriptions) of the work you have already done and put on your resume, on your fingertips.
2) Remind yourself of the obstacles you have faced in your projects and how you solved them - see that your explanations as to how you solved them will highlight the positives in you such as resourcefulness, creative problem solving, readiness to take help, determination, etc
3) If the requirements are for skills that you do not have, but think you can pick them up fast, figure out how your current skills and past exposure will enable you to quickly pick up tne new skills
4) Know the requiremetns very well so that you don't get any surprises
5) know your resume very well
If I were the interviewer, I would also ask (preferably through a questionnaire) a ton of questions to check problem solving capabilities and attitudes about different stuff.
Good luck and cheers.
If I were the interviewer, I would also ask (preferably through a questionnaire) a ton of questions to check problem solving capabilities and attitudes about different stuff.
Good luck and cheers.
Great advice! I would add knowing common data structures such as trees, linked-lists and queues/stacks and how to traverse/sort/build them
I assume you're still in school or just left?
If you've had an internship involving programming or a side project, put it on your resume and be prepared to talk about it
If you don't, then pick the most (and perhaps least) interesting class and be prepared to talk about it One of the biggest problems I have with interviewees is dragging out of them what they did on their last project. I don't care what the project achieved, I don't care how cool the people were, I don't care how amazing the UI that Jim built looked. I care what YOU did
You'd think this would be easy, it sure ain't. I love interviewees who are cocky and confident: they are easy to talk to and I don't spend an hour gently teasing information out of them. Know what excites you and talk about it! HR can deal with "where you want to be in 5 years" and all that crap. We the techies just want to know if you can code, if we can get along with you, and if you'll be productive in our environment. Make it easy for us to tell that and you're ahead of the pack!
Oh, and please be capable of writing a for..next loop! Seriously!
If you've had an internship involving programming or a side project, put it on your resume and be prepared to talk about it
If you don't, then pick the most (and perhaps least) interesting class and be prepared to talk about it One of the biggest problems I have with interviewees is dragging out of them what they did on their last project. I don't care what the project achieved, I don't care how cool the people were, I don't care how amazing the UI that Jim built looked. I care what YOU did
You'd think this would be easy, it sure ain't. I love interviewees who are cocky and confident: they are easy to talk to and I don't spend an hour gently teasing information out of them. Know what excites you and talk about it! HR can deal with "where you want to be in 5 years" and all that crap. We the techies just want to know if you can code, if we can get along with you, and if you'll be productive in our environment. Make it easy for us to tell that and you're ahead of the pack!
Oh, and please be capable of writing a for..next loop! Seriously!
Make sure your resume follows this (not joking):
http://stevehanov.ca/blog/index.php?id=56
Also practice coding on a whiteboard. Some problems, like running out of vertical space, are things you don't run into on a computer.
http://stevehanov.ca/blog/index.php?id=56
Also practice coding on a whiteboard. Some problems, like running out of vertical space, are things you don't run into on a computer.
I've interviewed hundreds if not thousands of programmers over the past 15 years. I am coming from the perspective of a UK based internet infrastructure/software startups of 1-100 people, much applies to other situations but there are some cultural differences over size of companies, geography etc.
CV/Resume Stage (getting an interview)
* In your CV/Resume be clear about what you've achieved. What I look for is somebody who has achieved 'stuff'. Either in jobs, their education or their career. Try and display an ability to problem solve and make a difference. It doesn't have to be massive achievements, but if you word it properly it can sound impressive, but don't exaggerate. For each job position talk about what you accomplished, were responsible for. For your education, give a paragraph about your projects. Talk about stuff you've done in your spare time, taught yourself. As well as demonstrating what you've achieved it also helps steer an interview to stuff you will be strong about.
* If you struggle to talk about interesting things on your CV/Resume, then that is perhaps an issue. Write some code in your spare time, get involved with an open-source project etc.
* People form impressions within a few seconds of looking at your resume. Format and layout matters, but also make it easy for them to scan through it. For HR people this does often mean some relevant tech buzzwords, but put yourself in the position of someone recruiting for the job you're looking for. What would give them confidence?
* Don't hide details. I personally like to see dates of jobs/education and grades. If you had a career brake or dropped out of college, don't hide it, think about how you can present in a positive manner.
* Find interesting companies and apply direct to them. This saves recruitment fees for the company, but it also shows you are interested in them. Write a short covering letter that is tailored to them, and (without being smarmy) make it clear why you are a good fit for them. Sell yourself.
Interview Stage
* Take your resume, and look at what obvious questions might come up. Work out what you can address in your resume, and what you would answer when asked. Be prepared to admit short-falls rather than bluff your way through them, but be prepared to spin them to your favour.
* Be prepared to deal with the standard generic interview questions "where do you see yourselves in 5 years?", "what makes you enjoy your job?", "what do you like doing in your spare time?". In most cases when asked this sort of question, the interviewer is just looking to get your talking to find out more about you.
* Ask intelligent questions. This (if managed properly) helps the flow of the interview and allows the interviewer to feel in control. If you're tested on some technical thing and you don't know the answer, feel free to ask them 'if you don't mind could you just explain that to me?' rather than just shrinking into your seat feeling stupid when you don't know the question. An interviewer goes into the interview with 4-5 set questions in their mind, and if they spend 10 minutes explaining to an intelligent curious person the answer to one, they leave feeling good. If you just say "sorry - i don't know" and look sheepish, they move onto the next question, and mark you poorly on it.
* Get comfortable being put under pressure, explaining things on a whiteboard and coding whilst you talk. One can imagine some brilliant programmers who might get agressive if challenged, or who are not used to explaining their thinking as they go along.
* Most technical interviews involve some technical questions. Some will be detailed specifics (in this language how do you that?) for these there is little prep you can do bar knowing it. For others, there may be more generic questions. A class Microsoft question used to be something like "Why are manhole covers round?". Imagine an interviewer asking you that kind of question. If you just say "I don't know" and show no curiosity it won't reflect well. If you go into silence and think for 10 minutes it won't make a good interview. Learn to enjoy the question rather than feel threatened by it. Learn to think allowed and articulate your thought processes. Ask gentle questions like 'am i thinking along the right lines here?'. These questions are more designed to test your problem solving and analytical skills. The third type of question is open questions like "is garbage collection a good thing?" or "is agile the right approach to development". In this case the interviewer wants to have a balanced, rational, pragmatic opinion on the subject. Don't be shy with stating a view, but preface it with 'it obviously depends upon the specific application/product/requirement'.
* Understand the business of the company you are interviewing for. For example, if you're interviewing at Google for a product management role, expect to be asked questions like 'which search terms do you think think have the highest CPM rates?'. They don't want a perfect answer, they just want someone who can have an intelligent guess.
* Treat everybody you meet at the company with respect and confidence. You never know who are the decision makers, and don't underestimate the importance of the receptionist, junior-HR person in having some influence.
* Make an effort. Turn up on time. Dress appropriately. Understand the company.
* Don't take rejection personally. People tend to recruit in their own image. There are some companies where they you won't be a good fit, and you won't come across right, or fit in. To some extent it's a numbers game.
CV/Resume Stage (getting an interview)
* In your CV/Resume be clear about what you've achieved. What I look for is somebody who has achieved 'stuff'. Either in jobs, their education or their career. Try and display an ability to problem solve and make a difference. It doesn't have to be massive achievements, but if you word it properly it can sound impressive, but don't exaggerate. For each job position talk about what you accomplished, were responsible for. For your education, give a paragraph about your projects. Talk about stuff you've done in your spare time, taught yourself. As well as demonstrating what you've achieved it also helps steer an interview to stuff you will be strong about.
* If you struggle to talk about interesting things on your CV/Resume, then that is perhaps an issue. Write some code in your spare time, get involved with an open-source project etc.
* People form impressions within a few seconds of looking at your resume. Format and layout matters, but also make it easy for them to scan through it. For HR people this does often mean some relevant tech buzzwords, but put yourself in the position of someone recruiting for the job you're looking for. What would give them confidence?
* Don't hide details. I personally like to see dates of jobs/education and grades. If you had a career brake or dropped out of college, don't hide it, think about how you can present in a positive manner.
* Find interesting companies and apply direct to them. This saves recruitment fees for the company, but it also shows you are interested in them. Write a short covering letter that is tailored to them, and (without being smarmy) make it clear why you are a good fit for them. Sell yourself.
Interview Stage
* Take your resume, and look at what obvious questions might come up. Work out what you can address in your resume, and what you would answer when asked. Be prepared to admit short-falls rather than bluff your way through them, but be prepared to spin them to your favour.
* Be prepared to deal with the standard generic interview questions "where do you see yourselves in 5 years?", "what makes you enjoy your job?", "what do you like doing in your spare time?". In most cases when asked this sort of question, the interviewer is just looking to get your talking to find out more about you.
* Ask intelligent questions. This (if managed properly) helps the flow of the interview and allows the interviewer to feel in control. If you're tested on some technical thing and you don't know the answer, feel free to ask them 'if you don't mind could you just explain that to me?' rather than just shrinking into your seat feeling stupid when you don't know the question. An interviewer goes into the interview with 4-5 set questions in their mind, and if they spend 10 minutes explaining to an intelligent curious person the answer to one, they leave feeling good. If you just say "sorry - i don't know" and look sheepish, they move onto the next question, and mark you poorly on it.
* Get comfortable being put under pressure, explaining things on a whiteboard and coding whilst you talk. One can imagine some brilliant programmers who might get agressive if challenged, or who are not used to explaining their thinking as they go along.
* Most technical interviews involve some technical questions. Some will be detailed specifics (in this language how do you that?) for these there is little prep you can do bar knowing it. For others, there may be more generic questions. A class Microsoft question used to be something like "Why are manhole covers round?". Imagine an interviewer asking you that kind of question. If you just say "I don't know" and show no curiosity it won't reflect well. If you go into silence and think for 10 minutes it won't make a good interview. Learn to enjoy the question rather than feel threatened by it. Learn to think allowed and articulate your thought processes. Ask gentle questions like 'am i thinking along the right lines here?'. These questions are more designed to test your problem solving and analytical skills. The third type of question is open questions like "is garbage collection a good thing?" or "is agile the right approach to development". In this case the interviewer wants to have a balanced, rational, pragmatic opinion on the subject. Don't be shy with stating a view, but preface it with 'it obviously depends upon the specific application/product/requirement'.
* Understand the business of the company you are interviewing for. For example, if you're interviewing at Google for a product management role, expect to be asked questions like 'which search terms do you think think have the highest CPM rates?'. They don't want a perfect answer, they just want someone who can have an intelligent guess.
* Treat everybody you meet at the company with respect and confidence. You never know who are the decision makers, and don't underestimate the importance of the receptionist, junior-HR person in having some influence.
* Make an effort. Turn up on time. Dress appropriately. Understand the company.
* Don't take rejection personally. People tend to recruit in their own image. There are some companies where they you won't be a good fit, and you won't come across right, or fit in. To some extent it's a numbers game.
A friend of mine runs CareerCup - http://careercup.com/
Highly recommended as a place to find/practice tech interview questions.
Highly recommended as a place to find/practice tech interview questions.
Check out the interviews section on the glassdoor.com profile of the company you are interviewing with.
yes i just did that, lots of good feedback
try this: http://niniane.org/interview_howto.html
That was about as content-free as you'd expect from an eHow article.
Make sure you know how to write a brainfuck compiler
haha well i did take compiler design, but i think id rather do an implementation of lolcode
What's lolcode?
I'm serious about brainfuck. You can explain it in a minute and can expect a smart person to work with it from the start (even a non-techie (although the compiler question is for techies)).
Don't test knowledge, test smarts.
I'm serious about brainfuck. You can explain it in a minute and can expect a smart person to work with it from the start (even a non-techie (although the compiler question is for techies)).
Don't test knowledge, test smarts.
What kind of company?
Web Development and content provider
Small to medium size companies? If so, I'd say they're probably more interested in experience & knowledge from related projects and technologies than more theoretical concepts (the really big actors tend to hire for an idealized position, and then find you something to work on after they've hired you).
I also assume that you know all the basic interviewing stuff (be yourself, don't try to bullshit them, don't panic, etc).
I also assume that you know all the basic interviewing stuff (be yourself, don't try to bullshit them, don't panic, etc).
So we wanted to know what fellow HNers were doing?