Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm pretty fresh out of college. So I don't have a lot of experience with job interviews. I'm interviewing for an entry level software developer job. I've already made it past the first phone screen and a coding challenge. Now I'm going in for a face to face technical interview. If I pass this then I probably get the job. The job description that I'm interviewing for now says I will be working mainly with C++, some C#, databases, and web development. It's a smaller comopany and my responsibilities will be a little of everything (design, documentation, coding, and QA).

I bombed my last technical interview (with a different company) because I prepared by studying the crap out of all the technologies mentioned in the job description (c#, html, sql, ajax, javascript, etc) but the interview was all questions about hash maps vs binary trees, abstract classes vs interfaces, and recursion and absolutely nothing about the technologies mentioned in the job description. Which I would have done amazing on it if I prepared by going over everything I learned in college... but the last time I worked with most of the stuff he asked about was my sophomore year in college so i was very rusty.

Anyway, I'm just looking for some advice on my situation. Should I focus on the computer science stuff that I learned in college like data structures, algorithms, recursion, etc. or should I focus on the technologies they mention in the job description? Any advice from someone with experience would be greatly appreciated.

share|improve this question

migrated from stackoverflow.com Feb 26 '12 at 1:57

This question came from our site for professional and enthusiast programmers.

closed as not constructive by Walter, Tom Squires, Caleb, gnat, Jarrod Roberson Feb 27 '12 at 17:17

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

2  
This is not the end of the world, you'll make it next time. –  Emmad Kareem Feb 26 '12 at 15:17
    
Doing poorly in one interview should give you a starting point on how to prepare for your subsequent interviews. Fundamental knowledge is always important, whereas flavors-of-the-day technologies can come and go like the tide. –  birryree Feb 27 '12 at 3:21

6 Answers 6

After 25 years in the industry I would like to offer the following advice:

  • No silver bullet. Some companies are going to grill you technically in area A, some in area B, some are going to look for a personality fit first, some will do anything for an enthusiastic employee, others care only abut coding standards, etc.
  • In many cases the industry and company size will tell you more about the nature of the company and what is a good fit for them. A programmer at an internet startup of 3 people is going to need very different skills form somone working at a huge corporate non-profit with an IS department of 500 people. Put it another way "know when to wear a tie..." The basic point here is that you can't focus on just one of these areas as you don't know what kind of interview it will turn out to be.
  • Don't be afraid of "I don't know". Many times I have used this in interviews and it's been to great affect as the interviewer has just had 1/2 dozen people who were bs'ing that they knew.
  • Take Control!!! Go with a LONG list of questions. Some of them should be technical, some should be about how people work and get along. The more (at least somewhat relevant) questions you have the more you will (usually) impress. Feel out how long to ask them based on how much response you are getting.
  • Be enthusiastic! I know many managers who will hire an enthusiastic person over a hyper-smart know-it-all that will not fit with their team. But don't fake it - just find something. It might be the company's industry, it might be your latest web ajax site. Maybe your last co-worker. Anything!!! Just something where you can use words like 'this was so neat, because...', or 'and the great thing about this project was that I got to do...' or 'working with x was so cool because he told me all about [whatever] which I love using now. Notice the words being used here. Use ones that are natural to you but find some!
  • Learn about the company. Many companies will hit you right up with "why do you want to wotk here? What attracts you about this position". It helps to have a good answer ready!
  • Tailor your interview your questions to the people you meet. If you meet with the technical lead ('your boss'), the dba and the CEO, then find some questions that are appropriate for each one. Still ask each one one or two off-topic questions just to be different and see how they react.
  • Consider salary. Companies that have a budget of $50-$70k will have different criteria and standards to those that are paying in the $120-$150k market.
  • Get there 1/2 hour early. Imagine doing all this prep and then you can't find their office / the bus brakes down / the traffic snarls up / whatever. Aim to get there 1/2 hour early and then hang in your car or a coffee shop next door, then walk in at 3 minutes before. Don't walk in 1/2 hour early. It will not help.
  • Ask why [if] the previous developer left. It's a 'pushy' question and if there's negative things about the company you will not be told directly, so when you ask this question, pay attention to how it's answered as much as the content of the answer (i.e. have your bs detector on...)
share|improve this answer
    
Great advice. Thanks! –  Chuck Feb 26 '12 at 20:09
2  
+1 for "Be enthusiastic!", very true. –  Fredrik Feb 27 '12 at 9:02

"the interview was all questions about hash maps vs binary trees, abstract classes vs interfaces, and recursion and absolutely nothing about the technologies mentioned in the job description"

But it actually was about the technologies, albeit at a lower level than you were expecting. If you wanted to know if a painter was any good, would you ask him about painting techniques or would you just get him to name the colours in the rainbow?

Take it as a lesson learned - there are lots of people who know multiple languages out there but who still can't write well engineered code. Knowing how and when to use hashmaps, binary trees and abstract classes/interfaces is important to all programming. If you don't know the basics, you're going to spend all your time thinking about how to use your tools instead of the problems at hand.

share|improve this answer
1  
Why is everyone rating this one up? It was the least helpful and most condescending. –  Chuck Feb 26 '12 at 14:42
    
I think I flavored the entire answer with "of course it was" I'll edit and change the tone. Thanks. –  x0n Feb 26 '12 at 15:04
1  
I just didn't (and still don't) feel like your response actually offers any real advice for technical interview preparation. I mean I knew these were important concepts. I just didn't know what to expect in a technical interview so I spent all my time preparing with the wrong material. Yet this response is getting rated up more even though it's essentially just rewording the problem without giving a solution. While the response that is currently below this one offers great advice by pointing me to an excellent book that will prepare me for my interview. –  Chuck Feb 26 '12 at 15:45
1  
I think x0n's point is that you should know this stuff (algorithms and data structures) for technical interviews because it is important. –  Philip Feb 26 '12 at 17:12
1  
@Chuck - The reason I voted this answer up was his explaination of the fact your other interview was asking you about those other languages is 100% correct. –  Ramhound Feb 27 '12 at 18:15

You have to be super strong in the technologies listed on your resume, not the ones in the job requirements!!!

And of course you have to be even stronger in algorithms and data structures!! Then recursion and threads depending on where you're applying to. Depending on the programming language you want to use pointers properly of course and be strong on design patterns as well.

Remember that writing software means solving problems and not speaking several languages.

A few books that you might want to study over and over:

So you studied the books above already? Start over!!

A few books that you might consider studying

It's a lot of reading but they will make you a better problem solver. You can always geek out at the beach! ;)

Good luck!

share|improve this answer
    
Thanks those are good suggestions. I already read the algorithms book in college... actually I still have it. I just picked up Cracking the Coding Interview and it looks like it will be very helpful. Thanks again. –  Chuck Feb 26 '12 at 3:04
    
You're welcome. Since you're fresh out of school let me give you another tip: Get a simple algorithm (bubbleSort, insertionSort, binarySearch, deleteDuplicatesInList, etc) and implement it on paper (nobody will give you a compiler at an interview). Can you do it without looking at the book? How long did it take you? Then rewrite it on an IDE. Does it compile? Test it. Does it work for any inputs? Can you reduce its complexity? Only following the steps above you will get ready for a serious interview... –  Gevorg Feb 27 '12 at 0:17
    
@Gevorg, do mean to be flippant, but how does knowing to write a simple algorithm by heart prepare the OP for a "serious" interview? –  tehnyit Feb 27 '12 at 13:43
    
@tehnyit There is a huge difference between what one knows, and what he or she can/cannot implement. If you have to write code on paper for the first time during an interview, "Panic hits you like a bucket of water. Bam! Right in the face", and that's it.. It's not about knowing stuff by heart, it's about practicing algorithms and structures that touch several aspects of programming and training yourself to certain kind of tests. Start with a simple algorithm, then keep challenging yourself more and more. Every new problem teaches you something, and you'll be a little bit readier each time –  Gevorg Feb 27 '12 at 15:02

Always be prepared with regards to your computer science stuff: algorithms, structures, OOP especially (since C#).

I have rarely been to an interview where they asked about particularities of one programming language (like C#) but it has been known to happen.

Think about it this way: it's easier to get a job if you know the general concepts of computer science (well) and have basic understanding of the technologies required, than it is if you don't know what an interface is but you know by heart all the reserved keywords in C#

share|improve this answer
    
Thanks. I'll try not to focus on the specifics of a language this time. –  Chuck Feb 26 '12 at 15:52
2  
it's funny because interface is a reserved keyword in C# –  andresp Sep 30 '12 at 17:53

You should probably focus on what your learned in your computer science degree. Having a base understanding of the fundamentals is more important than the technologies mentioned in the job description. You should be able to implement the ideas learned from your degree in any programming language.

For your interview you should be able to implement data structures, algorithms, and recursion in C++ or C#. It shows that you can handle the technologies needed for the job as well as you being able to implement what you learned from your degree.

share|improve this answer

The common things that I have been asked in different interview were

  • Virtual Classes ( C++,Very important for interviews)
  • Object Oriented Design (different types of inheritance in particular)
  • String (do a good amount of research on strings)
  • Algorithms (Do a couple of algorithm to prepare for the interview)
  • Abstract Classes and Interfaces (C#)

Also Go through the a general definition of things like static variable, global, private etc etc

If you were a computer Science student, these topics should really be in your grasp (I didn't and I have to refresh these things every time).

Important thing about face to face interview is that you present yourself in a nice way. Have good explanation for everything and generally have good communication skills. You do not have to have answer for everything, if you excuse yourself in a question, that is not in your range, there is nothing wrong with it.

Since you already have been through technical stuff, to me this is more like about you and your personalty and to make sure if was this guy who passed the technical stuff :)

share|improve this answer
1  
Thanks for the advice. :) –  Chuck Feb 26 '12 at 15:51

Not the answer you're looking for? Browse other questions tagged or ask your own question.