I recently prepared for a couple of onsite interviews for Software Engineering Manager positions. While the process and structure might be slightly different between companies, in general, there are commonly a very distinct set of topics that are covered during the onsite interview process. I am outlining these topics out below briefly and then list the resources that I found useful in preparing for questions in these areas. Since the themes that are being covered stay pretty much constant over time, this will also serve as an excellent resource for whenever I have to go through the interview preparation process again myself.
Coding Interview
The on-the-spot coding exercises are usually the ones that intimidate me the most when anticipating getting into an interview loop. Given my background and interests, I was never someone who was exposed to (or in need of) studying Computer Science topics like different data structures and algorithms. As a frontend engineer starting out, I focused on building sites, and languages like PHP and JavaScript were merely tools that I started using. I wasn’t necessarily concerned with how these tools actually did their job. The good news is that, under normal circumstances, the coding skills required for a management position are less in-depth than were you interviewing for an Individual Contributor (IC) position.
A great resource often cited is Gayle Laakmann McDowell’s Cracking the Coding Interview. While I did not buy the book but instead looked at practicing questions elsewhere, she has given numerous talks over the years, where she talks through what to expect during an interview for a Software Engineering position and how to prepare for it. The most recent installment I could find was a 1-hour 49-minute talk about helping people prepare for their interview at Facebook. The slides and handouts from the talk are available publicly.
In this, she mentions the following topics to practice and prepare for. In general, a simple search on YouTube will yield videos explaining these very concepts. I will link to a few in the list below.
- Data Structures: ArrayLists, Hash Tables, Trees, Tries, Graphs, Linked Lists, Stacks/Queues, Heaps
- Algorithms: Merge Sort, Quick Sort, Breadth-First Search (BFS), Depth-First Search (DFS), Binary Search
- Concepts: Big O Time, Big O Space, Recursion, Memoization & Dynamic Programming
To brush up on these core concepts and practice, I found the following resources helpful:
- HackerRank. A hiring/assessment platform, as well as a playground to practice all sorts of CS problems.
- GeeksforGeeks. Tutorials on CS concepts in addition to blog posts and articles on CS topics.
- HackerRank YouTube Playlist on Algorithms
- HackerRank YouTube Playlist on Data Structures
Other resources that are recommended, but I haven’t personally tried them:
- HiredInTech: Algorithm Design. Course with exercises covering dynamic programming, sorting, and string problems.
- CodeChef. Practice coding problems, coding competition, and forums to connect with fellow coders.
- Project Euler. Series of challenging mathematical/computer programming problems.
- CareerCup. Interview questions and resume tips for Software Engineering positions.
- LeetCode. Offers both practice exercises and mock interviews.
- Problem Solving with Algorithms and Data Structures using Python. Thorough explanation of CS fundamentals using Python.
- Topcoder. Talent platform with competitive programming challenges.
- Master data structures and algorithms for coding interviews. Courses covering data structures and algorithms in-depth using popular programming languages.
Other resources
Depending on whether you will conduct your interviews in person or remotely, it is advisable to practice writing code on a whiteboard or get familiar with collaborative code editing tools like CoderPad.
Systems Design/Architecture Interviews
Equally important in the technical parts of the interview are questions about System Design and Architecture. Possible exercises in this area are:
- Design Google Search
- Architect a worldwide video distribution system
- Build Facebook chat/WhatsApp
- Design a mobile image search client
- Design the Facebook Newsfeed
- Build an API to power a crowdsourced address book
- Design a (distributed) key-value store
- Design a hotel reservation system
- Design an existing system like Twitter, FB, Google, Uber, Netflix, Instagram
This area connects core computer science topics with large-scale system design and knowledge of current system technologies (database, load balancer, cache, etc.). 40 Key Computer Science Concepts Explained In Layman’s Terms is a helpful starter to brush up on the topics.
What will be beneficial here is re-familiarizing yourself with some core technologies, like IP/TCP/HTTP, arguments to decide between a SQL vs NoSQL data storage solution (including concepts like sharding and replication), knowing about Load Balancing, reading up on message queue systems and committing some essential latency numbers to memory as best as possible.
YouTube, again, proves to be a treasure trove for educational videos on these topics. I found the following creators and playlists most helpful.
- Gaurav Sen: System Design
- Tech Dummies: Grokking System design
- Success in Tech: Coding and System Design Interview Questions
- Tushar Roy: System design interview questions
- Grokking the System Design Interview Playlist (with a mix of the above and a few more)
- Cracking the Coding Interview (Part “Design Questions”)
The above videos cover a significant part of the topics and questions mentioned above. Below are a few links to non-video material.
- Grokking the System Design Interview (course on Educative)
- System Design Interview Questions – Concepts You Should Know
- The System Design Primer
- High Scalability
As with the coding interview practice, it is prudent to practice these questions with pen and paper or on a whiteboard. Some companies will, in the remote interviewing case, again use collaborative online tools for this like Google Drawings or a whiteboard feature built into the video conferencing software. I find using these online drawing tools a bit too cumbersome to use in a high-pressure interview situation, which is why using a physical whiteboard at home that I can point my camera to is my preferred method.
Behavioral Interviews
The other half of management-specific job interviews are usually focused on behavioral questions. These most likely will include a discussion around your people management skills, an in-depth look at how you handled certain situations throughout your career, and possibly a retrospective chat about a project.
Below is a, by no means exhaustive, list of possible questions that can be thrown your way during these interviews. The primary purpose of thinking and practicing answers to these questions beforehand is that you are not surprised by them during the interview and can have a satisfyingly sounding answer at the ready. Usually, the best way to respond to these questions is by using the Situation-Task-Action-Result (STAR) formula.
People Management
- How do you build a team?
- How do you keep people motivated?
- What’s the value of 1:1s with your team members?
- Give an example of a conflict between teammates and how you resolved it.
Hiring
- What are you looking for in an engineer when you recruit? Do you prefer to hire only experienced folks? Are you more comfortable with generalists or specialists?
- How have you optimized the recruiting process in the past? Have you thought about the recruiting funnel and how you can optimize different parts of it?
- What are their thoughts on structured interview loops vs. non-structured free-form loops?
Performance & Career Management
- How do you deal with people’s performance issues?
- Have you ever had to implement a PIP (performance improvement plan)? What are your thoughts on it?
- Have you ever had to fire someone?
- How do you identify engineers who could make good managers? How do you help them develop?
- How do you handle a great engineer with communication problems?
- How do you handle someone who really wants a promotion but isn’t ready?
- How do you help people manage their careers?
- A Tech Lead on your team tells you, “I want to be a manager.” How do you respond?
Cross-Functional Collaboration
- Give an example of when Eng. wanted to prioritize Project X, but data science or design disagreed?
- How do you reason about Engineering Excellence-type work with less technical partners?
- Talk me through a conflict with a cross-functional team member and how you resolved it.
- How do you work with less or non-technical colleagues such as designers or PMs?
General Management
- Why is management attractive to you?
- What in your mind are the responsibilities of a manager? What specific types of duties would you like to help with at Company X?
- What kind of process have you followed in the past, and what has worked well for you?
- What hasn’t worked?
- How do you institute the right process at the right time? How do you know when you need something more formal?
- Have they ever removed process? Why or why not?
- What’s an example of a tough management situation you’ve dealt with?
- Describe your leadership style.
Other
- Tell me about yourself.
- What is your greatest strength?
- What is your greatest weakness?
- Why should we hire you?
- Why do you want to work here?
- Tell me about a time when you showed leadership.
- Tell me about a time you were successful on a team.
- How do you measure your success?
- Describe your most challenging project.
- Tell me about something you’ve accomplished that you are proud of.
- Tell me about a time you had to manage conflicting priorities.
- Tell me about a time you failed or made a mistake.
- Tell me about a time you worked with a difficult person.
- Tell me about a time you had to persuade someone.
- Tell me about a time you disagreed with someone.
- Tell me about a time you created a goal and achieved it.
- Tell me about a time you surpassed people’s expectations.
- Tell me about a time you had to handle pressure.
- Tell me about a time you had to learn something quickly.
- How do you describe your job to people outside the industry?
- Think of a mistake or failure you’ve made in the past two years. What did you learn from it and/or do differently in the future?
- What would your co-workers say about you?
- What would a report/peer/manager feedback on you be? Strengths, areas for development, etc.
- How would you assess if someone is a good manager?
- What are the pros/cons of public vs. private titles?
- What do you do when a team completely disagrees with the founder/VP on the direction of a product?
- How do you bootstrap technical leadership in an organization that has no public titles?
In addition to these, questions around why you want to work at Company X will most likely also come up during this part. Here, it will be crucial to formalize your own motivation and reasons and how these line up with the core values of the company.
More resources
- Grokking the Behavioral Interview (course on Educative, free with registration)
- Software Engineering Interview Prep (PDF, Hired)
- How to Ensure Your Final Round Interview Lands You the Job
- How to Answer the Top 10 Most Asked Interview Questions
- How to Build Instant Rapport in an Interview
- 45 Sample Behavioral Questions
- 10 Common Behavioral Interview Questions and How to use the STAR Method
- Engineering Manager Interview: 15 Questions