
Ask HN: How to prepare for Programming Interview? - madmaze
A few of my friends and myself are preparing for job interviews. So we have been crawling the internet for the best way to prepare for Programming interviews.<p>So we wanted to know what fellow HNers were doing?
======
bravura
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.

~~~
madmaze
Thanks, there is some great stuff on there. I am already familiar with AWS and
a little Cassandra

------
skowmunk
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.

~~~
peterL
Great advice! I would add knowing common data structures such as trees,
linked-lists and queues/stacks and how to traverse/sort/build them

------
peterpaul
Make sure you know fizz-buzz and OOP

~~~
peterL
Dont underestimate non computer related questions like:

What sets you apart from others?

------
HeyLaughingBoy
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!

------
lchengify
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.

~~~
madmaze
very interesting, i think my resume would get a decent score according to that
scale =) i cant say my resume is LaTeXed =/

------
adamt
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.

------
natgordon
A friend of mine runs CareerCup - <http://careercup.com/>

Highly recommended as a place to find/practice tech interview questions.

------
brown9-2
Check out the interviews section on the glassdoor.com profile of the company
you are interviewing with.

~~~
listigerpeter
yes i just did that, lots of good feedback

------
peterpaul
I think that should be "Ask HN" not HW

~~~
madmaze
thanks fixed it

------
peterL
try this: <http://niniane.org/interview_howto.html>

~~~
peterL
and this: [http://www.ehow.com/how_4526446_prepare-software-
developer-i...](http://www.ehow.com/how_4526446_prepare-software-developer-
interview.html)

~~~
studer
That was about as content-free as you'd expect from an eHow article.

------
jhuckestein
Make sure you know how to write a brainfuck compiler

~~~
madmaze
haha well i did take compiler design, but i think id rather do an
implementation of lolcode

~~~
jhuckestein
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.

------
studer
What kind of company?

~~~
madmaze
Web Development and content provider

~~~
studer
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).

