Originally Posted by MillField
Hi Brandon! I am graduating with a degree in Computer Science this year and hoping to begin work in software soon. Any tips in terms of interviewing and job hunting? Thanks and welcome to the forums
Hey there MillField,
First of all, congratulations on graduating soon! What school are you attending (if you don't mind my asking)? It is a super exciting field to be going into; you're going to love it!
I actually used to do a bit of university recruiting and interviewing for Philips, so I can definitely give some tips (apologies if this is a bit lengthy!):
Before searching for jobs:
- Make sure your resume is solid. You want to lessen whitespace by filling with things you've done and things you know. Listing technologies, patterns, projects, teamwork, free-time projects, etc. is all helpful when graduating. Of course, if you have internship experience, that trumps them all. Sometimes, you might even want to tailor your resume to the job description. For instance, if you studied a bunch of hardware and software stuff in school, but the job is strictly software, you might be able to remove some of the hardware stuff and replace it with more software stuff.
- Get a good understanding of the different job titles out there for software (i.e. SDE, SDET, research scientist, build/release engineer, web developer, backend developer, DBA, etc.) so you can know what you're most interested in.
During your search:
1. Don't pass on internships/externships! It is a competitive field, and internships are a great way to get your foot in the door. In fact, I started as an intern myself.
2. Avoid headhunters early on. Use them as a last resort. They often pester you and the potential employer since they receive a commission. Avoid them when you can by just applying to the companies directly. Most companies have their available jobs listed right on their site.
3. Prepare a list of "safety jobs" to apply to first before your ideal jobs. I've found that the best way to get practice is to actually interview. In school, mock interviews are OK, but they are nothing like the real thing. So, having a list of companies to go and interview with for practice are good. And, if you get a job out of it, that's super good too. But, it will prepare you for when you land the interview of your dream job.
4. Check for local career fairs.
5. Keep track of where your peers are getting jobs. This is good for getting an idea of who is hiring, what types of questions were being asked, what types of salaries/benefits are being offered, etc. It might also help you to find some good compensation negotiation stats to work with.
6. Search for jobs using job search engines like monster.com, careerbuilder.com, dice.com, etc., but apply to the companies directly by going to their website. I've found that it yields better results and many less headhunters.
Before your interview/phone screen:
1. Make it a goal to over-prepare. There is no way to predict how an interview will go. These days, there are usually a phone screen followed by an in-person interview with 4-5 additional people. There are lots of problem-solving at a whiteboard or laptop, questions about complexity analysis (primarily time but sometimes spatial), teamwork questions, and HR-ish questions. Keep all answers as positive/optimistic as possible.
2. Make sure algorithms, data structures, and complexity analysis are fresh in your head. These days, they are loving the hash, but queues, stacks, lists, etc. are all fair game. The love tree, sorting, and search algorithms. String manipulation is growing in popularity as well.
3. Search for your interviewer on LinkedIn if you have that information early enough.
4. Research the company.
5. Research any technologies you don't know in the job description beforehand.
6. Research products/services offered by the company that are not directly related to what you're applying for.
7. Prepare a list of questions for the interviewer(s) to show your interest.
8. Practice problem-solving. Use sites like careercup.com, codechef.com, glass door.com, etc. to find good challenging questions. Ask friends for questions they've had to solve too.
During your interview/phone screen:
1. Be confident. You wouldn't have gotten an interview if they weren't interested in you...no matter who is on the line. The person you typically interview with is less committed to the process, but the person who sought you out is using the manager that's doing the hiring. See your interviewers as your challenges to get to meet that person who saw something in your experience.
2. Be honest. If you don't know the answer to something, it is cool to say you don't know. For instance, if you know Java, but the job is primarily C# focused and you're asked a C# question, you can simply reply: "I am not familiar with how to do it in C#, but in java, it is done like *this*".
3. Talk more about what you know rather than what you don't. For instance, if you don't know much about red/black trees, but you know everything about B-trees, AVL trees, or skip lists, then ask if you can talk about those instead.
4. Ask clarifying questions. Your task can be as simple as "Sort a list of strings." You should restate the problem, then start immediately asking questions. Like, what type of sort should I be using? is there a targeted runtime for my solution? are all the strings be in a single language? can the strings be empty? where are the strings stored (in memory, a file, etc.)? how should duplicates be handled? should the sort be case sensitive? and so on...
5. Jot down the questions you're being asked. It is good to save them to review again later and find better solutions to for future interviews.
6. Don't try and come up with the most optimal solution at first (unless it is at the top of your head already). Usually, if you come up with a less than optimal solution, they'll ask you to optimize it anyway. So, it isn't worth spending the time upfront.
7. Think of test cases first, and let the interviewer know what they are and why you chose them. For instance, if you had to write a method that took a string and returned its length, you'd probably try inputs like null, empty, single character, multiple characters, strings with leading/trailing whitespaces, etc.
After your interview:
1. Come up with even better solutions to the ones you gave for the questions you have jotted down. Know the pros, cons, tradeoffs, etc. among the solutions.
2. Resolve the problems every time before you interview.
3. Look for better solutions online, and make sure you understand them.
4. Let any rejections be learning opportunities.
5. Stay optimistic.
I totally tried to make that as short as possible...haha. So, feel free to ask me specific questions to drill down on any one topic (or to ask about something not covered).
PS> Because it relates to your topic of job searching, I'm doing a Twitter Q&A on May 29th, and one of the prizes being given out is a phone call with the recruiting team at Philips in addition to other cool stuff. If interested, feel free to find me on twitter and join that Q&A...@bphillpstweets.