Software Engineer Job Interview Manual
Job interviews for software engineers are pretty standardized. This is what to expect:
- Phone Screen by recruiter or HR: for exchanging information. 15-30 mins.
- Online tests and/or technical phone screens: coding + basic knowledge, 45 mins to 1 hour. Sometimes multiple rounds.
- Onsite interviews: 3 to 5 session, half day to full day. Depend on job level, it may have coding(data structure + algorithm), system design, specialized area(e.g. machine learning), and past experiences/soft skills.
This "manual" aims to help you prepare for the interviews
Long Before The Interview
Create The Dream Company List
The key to your career growth as a software engineer is not just to ace some job interviewers every 2 years, but you need to develop a good understanding(and be passionate) about how technology is solving the real world problems.
Accumulate Your Professional Assets
Writing your resume could cause some serious headaches, and can easily delay the start of your job search. Try to accumulate some asset alone the way, so the resume would be just a quick snapshot at the time of the job application:
- if you are a front-end engineer, create a portfolio;
- if you have some code that do not mind sharing to the public, move it to GitHub;
- maintain a blog or some notes(just like this website) to forge your knowledge graph. (I actually occasionally got some positive feedbacks from the interviewers after I added www.hackingnote.com to my resume)s
Right Before The Interview
Research The Interviewers
Get familiar with your resume
- be ready to discuss any experience on resume
- do not put anything that you cannot provide details or reasoning
During The Interview
Here's what to expect in different kinds of interviews:
Recruiter Phone Screen
Recruiter will collect your background info(like your past experiences, your preferred technologies/languages, if you are eligible to work without sponsorship, etc) and also give you some info about the hiring teams.
These should be routine and easy, unless recruiter thinks you are a not a fit and would not even pass your resume to the hiring team. So the key here is to do some homework, know about the company and the team and tailor your self intro to it.
Computer Science Basics
Normally not a stand-alone session, but questions can be asked in either phone screens or onsite interviews. Better prepared than sorry.
- operating system, process, thread, memory
- concurrency, locks, mutex, semaphores
- OOP(design an elevator/parking lot)
- Garbage Collection
- comparisons between the concepts
- Be familiar with at least one programming language(Python/Java/C++), prepare a cheatsheet if it helps(e.g. Python Cheatsheet)
- Understand Big-O and NP-complete problems
- Common Data Structures and Algorithms
- Coding Interview(LeetCode/LintCode) Solutions
System Design Interview
Machine Learning Interviews
If You Do Not Know The Answer
“I’m not familiar with this but this is how I would approach it”
At The End Of The Interview
Once You Have The Offer
- Salary Negotiation: http://www.kalzumeus.com/2016/06/03/kalzumeus-podcast-episode-12-salary-negotiation-with-josh-doody/