Не так давно мой знакомый проходил интервью в некоторую довольно большую и извествую компанию в долине. До интервью рекрутер ему послал чеклист для подготовки, которым я хочу поделиться. Знакомый в итогде в эту компанию не пошел, и мы посчитали, что было бы как-то странно писать по прошествии пары месяцев рекрутеру и спрашивать о том, насколько этот список секретный.
Поэтому в качестве компромисса мы решили список опубликовать, но убрать название компании. Назовем ее условно “Simpleton“.
At Simpleton back-end engineers have to tackle a wide variety of problems and situations as we continue to innovate and develop products. We expect engineers to be proficient in algorithms, problem solving, and designing scalable fault-tolerant architectures. This includes being an expert at your programming language of choice (even engineering managers have to be awesome coders).
Effective communication is a vital attribute in any engineer as you and your team move in the fast paced development environment at Simpleton, and as such is something we look for in an engineer.
● Technical Phone Interviews
1-2 technical phone screens (45-60 minutes each). This will be a shared coding session where you will be speaking with an interviewer (or interviewers), and tackle a coding problem using a collaborative coding environment.
● Onsite Interview Sections
Architecture: Design a product from a systems perspective given requirements (think interactions between different services/components/databases). Be prepared to have a conversation about distributed systems, architectural decisions and trade-offs. This usually involves an open-ended conversation that includes diagrams and white-boarding.
Coding: In this interview you should go from a problem and a blank screen to a working program. These questions involve knowledge of data structures, and algorithms. This section isn’t whiteboard coding, we want to see how you can function in an actual programming environment.
Software Design: Design an application using OOP principles that can scale and handle potential changes. This problem might also involve solving some problems involving data structures and algorithms but with a less heavy emphasis on actual code than the Coding and Debugging interview. We want to know if you can create a program from scratch with a solid design.
Hiring Manager Conversation with a manager on an engineering team. Sometimes includes any of the above: coding, problem solving, architecture. Usually spend time talking about your experience, teamwork, past projects, etc.
Simpleton: Ensure you would be a good fit for Simpleton, and Simpleton is a good fit for you. This interview focuses on problem solving, passion for Simple Cow Software, and your entrepreneurial spirit.
- Brush up on some common algorithms and data structures
- If you were the lead engineer of a startup, how would you design their backend? Know basic architecture topology and caching techniques
- Know OOP principles and design patterns
- Check out Glassdoor for interview questions
- Cracking the coding interview (full stack) https://github.com/gaylemcd/ctci
- CareerCup http://www.careercup.com/page
- LeetCode Algorithms question https://leetcode.com/problemset/algorithms/
Areas that may be covered
- Your passion for engineering
- Software Design
- Coding & Debugging which include data structures, algorithm design/ analysis
- System Architecture
- Coding in your most comfortable language (sessions may cover whiteboard coding and coding on a laptop computer)
Be prepared to talk about
- Why you want to work at Simpleton
- Current projects and what you enjoy about your current position
- What kind of impact you will make
What to think about
- When coding, make sure you fully understand what’s being asked before diving in. It’s always okay to have the interviewer clarify
- Make sure you talk through your process out loud. We’re looking for clean, optimized code, and we want to know your way of getting there
- Software design, you might be expected to build certain system based on a set of features. In the interview, we will discuss the design of the system: API’s, public and private methods, abstraction of features, data formats, and other considerations that go into designing software
- System architecture, you might be expected to architect large scale systems, think Simpleton or Netflix. In this exercise, you will be coming up with a set of systems that handle an entire business domain. You will be expected to explain why you chose the system architecture you did, as well as discuss load balancing, redundancy, resiliency, failover, interfaces, communication protocols, and more.
Simpleton engineering blog