What is the interview like for programming jobs?
I asked another question about programming jobs and some of the answers talked about interviews. What do they do in an interview for programming and what types of questions are asked? Do you have to study for the interviews as if it's a test? Can you take a class to prepare for the interviews? I don't think I'm going to be doing any interviews until college, but I just wanted to know because someone mentioned it. #programming #interviews #preparation
I think I was actually the one who mentioned the interviews in one of your other questions. Having had my fair share of them for both full time and internship positions I'll do my best to give you a rundown of the process.
Let's start with internship interviews, these are generally a bit easier then full time obviously.
The process is pretty straightforward, you go into a room with the person giving the interview and after a short introduction they ask you to solve a programming problem for them. You usually have to write out the solution on a piece of paper or a whiteboard in a computer language of your choosing.
The interviewer will then go over your solution and ask you questions about it, such as how you could optimize it, what other approaches you could have taken, etc.
For the most part the interview usually last 1-1.5 hours and may consist of one question split up into multiple parts where they might ask you to add something else to your initial solution or several separate shorter problems.
For a full-time position the process is a bit more in-depth.
Your initial interview might be similar to the one for an internship and will usually happen on campus.
After that, if all goes well, you can expect one to three phone interviews where you will get an interviewer calling you at a specific time and asking you either about computer science fundamentals or more programming problems.
For the questions dealing with fundamentals they might ask you about different data-structures that would be used during your work as well as when it would be best to use one data-structure over another and their efficiency in storing different types of data in different situation. For the programming questions you will either be asked to write the answer out on paper and recite it to the interviewer over the phone, or log into a website where you have to type up your answer while the interviewer can also see what you're typing (similar idea to Google docs).
Finally if all those steps go well you will be invited to an on-site interview. If the company is in a different city they will take care of paying for your flight, hotel, food, taxi, etc. (which is a pretty cool perk). Unfortunately that is probably also the most stressful part of the entire process. For the on-site interviews you will usually have a full day (6-8 hours) worth of interviews. Usually they will put you in a room and you will have 5-6 interviewers go in to the room and ask you various questions. Most of these questions will be the same type of programming questions that you answered in previous interviews but slightly more difficult. You might also get one or two of those people asking you "fit questions" such as why you want to work for the company, what projects you did on your own in the past, any interesting experiences you had while working with others in college. Usually one of those people will take you to lunch and do their "fit" interview over lunch.
If all goes well after that point you will get a call back from the company within a few weeks and get to negotiate the offer they give you such as base pay, bonuses, benefits, etc. At this point you can relax a bit since you know they already want you :P
As you can probably tell from that answer, yes you usually do have to study up for the interviews like you study for a test. There are also books and classes available that you can take to help. But the main thing is to look up real questions online and practice answering them on paper before checking the answers posted. There are a lot of places that can provide you with real interview questions for free. I would suggest you take a look at http://www.careercup.com/ and http://www.glassdoor.com/Interview/index.htm
And remember this might all sound rough but as with any test when you go into the interview prepared you'll come out thinking that it was not nearly as scary as everyone told you it would be ;)
As it seems to be described pretty well, I"ll give some advice when doing interviews which I've picked up through internship interviews.
Keep talking: continue speaking out your ideas and what you are thinking about while solving the questions. You want to let the interviewer know where you're at so that they can assess your thinking and so that they can help give you a push in the right direction.
Ask questions: Many interviewees don't ask enough questions to learn about the problem and to see what clues they can get from the interviewer when asking them. Don't be afraid that the interviewer will think less of you if you ask more questions as there is a good chance that they are waiting for you to as certain questions.
I would put a lot of preparation into an interview for a programming role. There are generally two types. The HR behavioural one (run through of CV, competency based questions and discussions around your passions and motivations) and the technical one (programing, coding, mathematical and statistical questions). There may even be a number of both. I would become familiar with these types of questions and practice how you would answer prior to the interview. Not only will you come accross mroe well read but you will feel so much more confident going into the meeting. Also highlight some programming you've done in your personal time, this will really demonstrate your passion for the discipline. Finally, do thorough research on the company. Have at least two articulate and relevant questions prepared to ask prior to the closing of the interview. Good luck :)
First know whats on your resume. The interviewer may find something interesting there and may want to know more. Interview is not the best time for you to dust up the memories of a project that you worked on 3 years ago, and you may not even remember the challenges that you encountered doing it.
Typically you are asked a couple of coding questions. It would require problem solving. You would first have to talk the interviewer through your solution on the board or a piece of paper, which will lead to some discussions. Once you arrive on satisfiable solution, you may be asked to code it in your programming language of choice.
Some interviewers may ask you to code in a specific language if the project absolutely needs it.
Brush up on your algorithm design. You should understand the time/space complexity of the solution you are offering. Ask questions if something is not clear. Dont build the solution in your head for 15minutes, but rather think loudly (like I think I might be able to approach it this way etc etc)
Learn about the company you are interviewing with. You may want to ask them something about the company, the job etc.
Iliya Koreshev described the process VERY WELL. I will confess, I don't do well on technical interviews but through practice, patience, and personality, I landed an amazing job at Zynga. In addition to everything said, here are some additional tips:
0) Always read your job description. Cater yourself to it and be ready to defend what you know and don't know. People don't mind if you don't know something but if you say you know X, expect questions on X.
1) Research on the company before you interview with them. What? When? Where? How? Why? Come up to speed on the latest news on them. Jot down a cheat sheet for yourself. When they ask you, "Why do you want to work for our company?" -- you now have points and answers too. When they ask you, "What technologies do you like?" -- you can always integrate your passion with their technology and how can YOU benefit them.
2) Prepare a sheet or index cards for yourself to review, read, and study. Write things that that you're struggling on whether it be hash tables, OOP, etc. When you're waiting between interviews, read them, understand them, and practice them. It will help you on technical interviews and personality interviews.
3) Write down the interviewer's information. It's always nice to send them a note at the end. This will make you not only stand out but it says that you appreciate their time to interview you.
4) Write down the interviewer's questions. Use these questions for you to practice on yourself in the future for other interviews.
5) Practice, practice, practice. Find a friend whom you trust and practice with them. Practice makes perfect.
Keep these tips in mind and you'll be ahead of the curve.
I have hired and trained over 120 programmers and IT related people. Every company will have a different process. Sometimes this could be easy. Sometimes it could be very difficult with many interviews, tests, etc.
But, what can make you stand out is showing your work. Many people do not do this. I have had about 10 or so people really show me what they have created with motivation and passion.
Programming skills can be learned. But motivation, good attitude, and the willingness to learn are even more important. I have had people struggle in the beginning only to turn out as some of the best performers. I have had people pass all the tests and end up not working well with others. So, as you can see don't stress too much. Keep programming, practice presenting what you know, teach others, and the interview will end up being easy!
I wrote a blog post about the kinds of questions I've been asked in programming interviews: http://jvns.ca/blog/2014/01/16/what-my-technical-interviews-have-looked-like/
In any interview, the most common thing is the HR round. In that they check whether you will be a good cultural fit for the company, whether you are passionate about working for the company. Once that gets out of the door, then comes the real thing, Coding. Let me answer your questions
What do they do in an interview for programming and what types of questions are asked?
It varies from company to company. Generally, these types of modules are covered
1. Programming skills- In this question, emphasis will be on whether you can write clean code or not
2. Algorithm skills - In this question, the emphasis will be on whether you are good at thinking about algorithms. More like Dynamic Programming, recursions and so on.
3. Design skill- To check whether you can design a good class structure (for entry level engineers) or a database design.
Do you have to study for the interviews as if it's a test?
I would say study them more like to learn new concepts or strengthen your existing concepts. Try to recognize the underlying problem type so that you can relate any question to a problem type that you have already seen and think from there.
Can you take a class to prepare for the interviews?
You can take an Algorithm class or read books which will help you prepare for the interview. I would recommend Cracking the coding interview