Software Engineer Job Interview Guide
Job interviews for software engineers are pretty standardized.
This guide aims to help you prepare for the interviews.
Long Before The Interview
Do you enjoy building product? Or want to focus on testing or DevOps? Or maybe a security or AI domain expert? Do you prefer to be an IC(individual contributor) or a people manager? Acing a job interview should not be your ultimate goal. Think about your career
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. Research Your Next Company
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
Months Before The Interview
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
Right Before The Interview
- be ready to discuss any experience on resume
- do not put anything that you cannot provide details or reasoning
The format is very 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.
Note about 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.
“I’m not familiar with this but this is how I would approach it”