Every interview is different. It varies from company to company, interviewer to interviewer. It also seems to vary between industries. For instance, the way I'd approach a job interview for an engineering position is completely different from how I'd approach a business or marketing interview. So, I'm glad you specified "Computer Science jobs" in the question.
For a time in my career I worked as a software contractor. Being a contractor I would jump from company to company every few months over the course of several years. Each time I would approach a new contract I often would have to do an interview with the new customer. After many many interviews I feel like there's about 3 kinds of typical interviews I see quite frequently:
The "HR-provided list of questions" interview
Being a good "interviewer" can be challenging. It can require social skills that don't come naturally to you. Often times a company's human resources department (HR) will provide a list of canned questions to be asked. Generally these questions are intended to get a conversation going and they're written in such a way that they could be used to interview for ANY kind of position (even non-engineering positions). A quick Google search for "typical interview questions" will get you lists of such questions you can study for. These kinds of interviews are actually quite common; even for engineering positions.
The Technical Interview
These are the kind of interviews that give developers nightmares. They are also quite common so you should focus your efforts to prepare for them the most. Here are some things to keep in mind when preparing:
It is quite possible that these interviews will be poorly designed. Often times the interviewer will simply google for technical interview questions and use those without considering the questions themselves. I've gotten questions before that even the interviewer didn't know the answer to. An engineer assigned to interview you is not always one who will be impacted by your being hired.
Sometimes, the questions being asked could be designed entirely to frustrate you to see how you handle under pressure. Ultimately, I suggest you just keep a cool head about them. It's not the end of the world if you mess up and there's always another company looking for a computer scientist. With time and experience you'll get better and better. Some people have interviewed at well-known companies like Google and Microsoft multiple times till they happened to land a good interview and finally get the job. Don't give up.
For the interviews that are well designed... those, you can actively study for. Generally interviews for individuals looking to land their first job will focus heavily on the CS fundamentals you should have been taught in school. Many individuals don't have a long work history so employers will tend to focus more on "how well did this individual learn the fundamentals they were taught".
Sometimes such questions will be academic in their format. For example, they may ask for a textbook description of a particular data structure.
Sometimes such questions could be in the form of a word problem. For example "What kind of algorithm might I use when...".
Sometimes such questions might be full blown coding exercises. For these I suggest you make sure you are comfortable coding without all your tools and search engine nearby. Try doing problems on the whiteboard or on paper.
Good technical interview questions are being invented all the time so it's hard to study for them. It'll be hard to be confident going into them because they're a moving target.
When I know I'll be faced with a technical interview in the near future I pretend I'm going to interview for Google. There's lots of example questions and resources you can search for in order to prep for Google developer interviews and they will keep you on your toes.
The Experience Interview
Lastly, I see a lot of interviews where the interviewer will probably start with a few typical HR-approved questions (see above) but then lead into a bunch of questions designed to get you to just talk shop for a while.
Examples of such questions might be:
- "I see you've got C++ on your resume, could you please tell me about a fun or interesting project you wrote in C++?"
- "How comfortable are you learning a new coding language?"
- "We do a lot of work using Amazon Web Services on our team, what kind of work have you done with AWS?"
The point of the Experience interview is to focus on story telling. You'll see more of these later in your career because by then employers will assume you sufficiently know the CS fundamentals by the fact that you've been employed in the industry by someone else.
These interviews will be rare when looking for your first job but they're still important to prepare for. When I am expecting one of these kinds of interviews I spend a lot of time looking at my resume and thinking of ways to explain how I've used each of the skills I've listed. Sometimes I'll even write down notes on all the stories I'd like to be able to share during the interview.
Ultimately, sometimes you don't know what kind of interview you are walking into. You need to research each company and find out what their interviewing process is like. Also find out what their company is like. It'll show an interviewer that you've done the due diligence to research what you are applying for.
Lastly, I'll address "what questions to ask them". I do feel strongly that an interview should be a two-way conversation. Taking on a new job generally makes a big impact to your life and it's to both your benefit and the employers that it be a win-win situation. So ask questions regarding how the job will impact your life the most.
- Ask about the work-life balance.
- Ask about the benefits.
- Ask about the type of work they intend you to do.
- Ask what the company's core hours are.
- Ask about opportunities to advance within the company.
- Ask about opportunities to learn new skills on the job.
- Ask if you'll be required to travel.
I currently work in an office that is "dog-friendly" (meaning people bring their dogs to work) so it's important that we ask if applicants have allergies and if they'll be able to work in such an environment (in case they didn't look at our website...).
Make sure the job will be just as good a move for you as it is for them.
David recommends the following next steps:
- Run a Google search for "typical interview questions" and look over the typical questions one might find in a "generic HR-approved " list of interview questions.
- Read through your resume and make a list of all the projects / stories you could tell when asked about each and every skill or tool you've listed.
- Think of the things you hope to get out of a new job. Make a list of questions you'd like to ask regarding those priorities during an interview.
- Research typical coding interview questions. Pick a few and try solving them on paper. Do this until you get comfortable with such problems.