Software Engineer Job Interview Guide
Job interviews for software engineers are pretty standardized.
This guide aims to help you prepare for the interviews.
Prep: Long Term
Long Before The Interview
Think About Your Career
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
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. Research Your Next Company
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
Prep: Mid Term
Months Before The Interview
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
- network
- concurrency, locks, mutex, semaphores
- OOP(design an elevator/parking lot)
- Garbage Collection
- comparisons between the concepts
Coding/Algorithm Interview
- 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
Prep: Short Term
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
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.
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
Offer Time
External Resources
- http://blog.gainlo.co/
- https://breakoutcareers.com
- http://jvns.ca/blog/2013/12/30/questions-im-asking-in-interviews/
- https://medium.com/@edwardog/questions-to-ask-your-future-web-dev-employer-f7a161b5bc70#.4a8ac7fpi
- https://projecteuler.net/archives
- http://rosalind.info/problems/list-view/
- https://github.com/checkcheckzz/interview