5 ms·
Ask HN: How to prepare for Programming Interview?
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.
So we wanted to know what fellow HNers were doing?
- peterpaul 16y agoMake sure you know fizz-buzz and OOP
- bravura 16y agoRead "Hacking a Google Interview" from MIT (http://courses.csail.mit.edu/iap/interview/ 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 16y agoThanks, there is some great stuff on there. I am already familiar with AWS and a little Cassandra
- peterL 16y agotry this: http://niniane.org/interview_howto.html http://niniane.org/interview_howto.html
- natgordon 16y agoA friend of mine runs CareerCup - http://careercup.com/ http://careercup.com/ Highly recommended as a place to find/practice tech interview questions.
- skowmunk 16y ago1) 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 16y agoGreat advice! I would add knowing common data structures such as trees, linked-lists and queues/stacks and how to traverse/sort/build them
- peterpaul 16y agoI think that should be "Ask HN" not HW
- madmaze 16y agothanks fixed it
- lchengify 16y agoMake sure your resume follows this (not joking): http://stevehanov.ca/blog/index.php?id=56 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.
- studer 16y agoWhat kind of company?
- madmaze 16y agoWeb Development and content provider
- studer 16y agoSmall 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).
- jhuckestein 16y agoMake sure you know how to write a brainfuck compiler
- madmaze 16y agohaha well i did take compiler design, but i think id rather do an implementation of lolcode
- jhuckestein 16y agoWhat'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.
- brown9-2 16y agoCheck out the interviews section on the glassdoor.com profile of the company you are interviewing with.
- listigerpeter 16y agoyes i just did that, lots of good feedback
- adamt 16y agoI'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.
- HeyLaughingBoy 16y agoI 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!