[Personal experience] Front-end engineer from London Facebook: how to get into FAANG?

How to prepare for interviews to apply for a FAANG-level company? Together with  Oleg Gromov , front-end engineer from the London office of Facebook (ex. Yandex, Toptal etc.), we drew up a training plan based on the last webinar  - based on his personal experience.



Discussing:



  • pros and cons of working in large companies,
  • CV design,
  • how are the screening, algorithmic and architectural sections,
  • what is the role of English and soft skills - in the behavioral section and generally in the interview,
  • where to train the necessary skills for each stage: collected useful links.






FAANG is an abbreviation for Facebook, Amazon, Apple, Netflix, Google, the name, as far as I know, appeared 3-5 years ago. These were the companies with the largest capitalization in IT. They are like a bar that everyone is trying to reach: if you have grown to FAANG, then only the stars are higher. Many engineers want to get there: big salaries, good conditions, opportunities for development - this is the best thing in the world among corporations.



Someone includes Microsoft, Uber, Airbnb, someone is trying to transfer the term to Russian large tech companies: Yandex, Mail.ru, Avito, ABBYY. In my opinion, they are not part of FAANG, the very concept is only about the tech giants listed above.



But there is a Fang interview style, and that's a different story. The style has been adopted by many companies that are not similar to FAANG either in size or profitability. An interview consists of 4 or more sections , which include: algorithmic interview, system design, behavioral interview. As you prepare for such an interview, you can get a job at a company in addition to FAANG: the format becomes familiar. I propose to use this broad approach, we will talk about companies that interview on the Faang structure.



Pros and cons of working at FAANG level companies



Side note: I'm talking exclusively about experience in web development. All my life I have been doing frontend, over time I have become more of a full stack web developer: I deal with code from balancers to databases. But I'm not talking about interviewing and working at FAANG as a marketer or project manager.



Pros:



  • development.

    If you really love your job, if you want challenges and complex projects, you want to develop and communicate with a large number of people, including the best specialists.

    The first thing that I realized when I got to Yandex: "everyone around is smart, but I am not." This is a typical story, the same happens when you get a job at Google, Facebook: large companies are a very nutritious medium for growth. Especially for people who are not interested in building a business, but in developing themselves as a specialist.
  • , .

    RSU â€” restricted stock unit, .        . RSU â€”  .  ,   RSU-   â€” ,       .
  • .

    :    !   .


The cons depend on what kind of person you are and what you want out of life. Basic: you shouldn't get a job at FAANG if you don't like being a cog in a mechanism, moreover, a mechanism is highly regulated.



Naturally, when a company has 40-60 thousand people - almost like a city - the processes must be quite strict. And not necessarily from the category of "report to this and this." I mean, companies have a motivation system that tunes developers in a certain way.



For some it is suitable: for example, young people who graduated from university. They worked somewhere for a year, got into this splendor and enjoy the process and the result. But those who already have 15 years of experience behind them want more responsibility, they want to use their experience not for a small task within the company. They may not be very good in FAANG. You need to keep this in mind and choose a place for yourself and your strengths: do not hope that on Facebook you automatically become the happiest person in the world. This is not true.



Before discussing the stages of the interview, I would like to step back and talk about the experience. This is a preliminary step before you try to design your resume.



If you want to get a job as a senior at FAANG, it is not enough to do one project in a year and present it beautifully. Most likely, this will not be enough. If, for example, you've worked on multiple projects for several years, you may need to prepare for interviews - but most importantly, you have experience.



If you are looking for positions with relocation, subscribe to our @g_jobbot bot . And an IT recruiter at g-mate will help you package your resume in a way that engages interviewers. The bot is simple and quick to set up: sphere, salary, relocation location. The options that suit you will be sent to Telegram.







Summary



I'm not hiring at Facebook now, I say from the point of view of a former hiring manager at Yandex and Toptal: it is important to understand what usually happens with a resume. When you send it to a company, it appears among hundreds, thousands of others. Depending on internal processes, it may be viewed now, or may never be seen. It can lie for six months, a month, or one day.



To be noticeable in a good sense, a resume should not be full of all the colors of the rainbow or cats - it should be compiled for a specific vacancy of a specific company. Don't include all the experience you have, focus on what is needed in a particular position. Suppose you are a back-end developer on Facebook, and you worked as a data engineer, front-end developer, webmaster and sysadmin - then you probably shouldn't talk about sysadmins and webmasters in your resume.



I made a resume for each company I applied to. Except for the cases when I sent my resume "to the heap" to practice on interviews.



We remove the irrelevant, emphasize the strengths, all the experience suitable for the vacancy.Not in the sense of hitting myself in the chest with the heel: the team did nothing, everything was just me. The task is to tell that you are a team player and understand business. Especially if you are applying for a high-level developer position. He is required to understand the processes of teamwork, how to establish them, how to eliminate bottlenecks - that is, bottlenecks where productivity suffers. Present all this in a favorable light, but do not invent it, speak the truth: show adequate achievements, ideally, if quantitatively - all large companies will appreciate it. For example, describe technical advances as follows: the time taken to pass tests in a Continuous Integration environment has been reduced by 30%, and profits or conversion have increased by N%. Tell us about the team achievements: where did you help set up the process, who and how you hired.



Basically, tell us that you were the person who took responsibility. Maybe you were even wrong: you shouldn't write about mistakes in your resume, but if they ask in an interview, you can say.



A good tip is to write your resume on one, maximum 1.5 pages. Interviewers have little time, and it is good if all information is read by them at once.



When a resume has to go from a pile to the person who decides with whom to place the call, a recommendation is almost a guaranteed path to success.She sets the resume apart from others, otherwise, out of tens of thousands of responses, you may simply not be statistically noticed. Therefore, if you have acquaintances, contact them. As a rule, people easily refer their resumes: for a successful recommendation they receive bonuses within the company. Recommendations are not some kind of taboo topic or taboo. I got to Yandex, Facebook, and even Toptal through a recommendation.



After the resume has been approved, there is usually another screening before the 4-step interview.



Screening



There is a screening with a recruiter, sometimes a technical one - it depends on the complexity of the process. The first call will be almost 100% with a recruiter. He assesses the overall adequacy, learns the life story, why a person is looking for a job, tries to filter the flow. Sometimes someone accidentally submits a resume - weirdness is present in mass hiring.



If the company is located in another city, as a rule, you call up: tell a little about yourself, about wishes, ambitions, strengths and weaknesses. The conversation is usually conducted by a recruiter. If you were not silent for all 30 minutes, but presented yourself normally, a technical screening is prescribed.



At the technical screening, approximately the same happens as further at the algorithmic section, but less time is given: 40-60 minutes, 1-2 tasks: as a rule, online.



This format takes some getting used to. There is a whiteboard interview: you stand next to the board, draw diagrams, try to write code on it - it's not very convenient, many people complain. And online in a sense is even worse (someone may be better). You sit at the computer - you don't see a person, and you say - not only write a code. I don't want to offend anyone, but at this moment a problem often arises, especially for Russian-speaking developers. In our culture, it is not customary to brag and chat, we “take and do”.



Be sure to say:no one reads thoughts, even if you are the most charming and experienced developer. The conversation also depends on the context: what happens in the problem, what you understand, what details, what is your algorithm. You can even write the steps in a text editor and confirm with the interviewer that this is what he wants to hear. Many will say simply: yes, okay, it looks good. Someone will be delighted: yes, this is what they expected. That is, in most cases, you will receive feedback. But if you're not used to vocalizing the process, it can be tough.



Screening usually consists of dialogue and writing code very similar to Leetcode or any algorithmic task. They are most often of the Easy or Medium level: it makes sense, for example, to solve problems with friends online, to discuss.



Algorithmic sections



The next steps depend on the company. I haven't interviewed Google, Amazon, or Apple. As far as I know, they all have fairly characteristic processes that follow a pattern, but the details are different. For example, Amazon has Leadership Principles - a set of rules that are recommended to be learned, because they will also be discussed in the interview. Facebook doesn't have that.



There are several algorithmic sections: usually two or three. In the pre-coronavirus era, you are brought to the office, where everything happens, met, put in a meeting room, and given coffee. You solve algorithmic problems: the same ones that you see on Leetcode. Someone advised the Hard level - by the way, this is optional. Difficult tasks are probably encountered on Machine Learning or loaded backends - I personally have not met a single hard at all. Usually this is the Medium level: quite complex, you need to be able to handle them. But if you have never decided, there is probably a chance to do this, you just have practiced and know how to think.



Each section is 40 minutes long, usually one task plus a follow-up. For example, you need to solve a problem for sorting an array: write a sorting algorithm. Sorry for the stupid examples: you can solve it using bubble sort, say that it is inefficient, that you can change it, achieve efficiency in time or memory. It happens that you need to solve two small problems one after the other.



As a rule, sections are conducted by different interviewers. This is done on purpose, for objectivity. You need to say hello to everyone, tell a little about yourself. Then the section itself begins: you need to decide, think, speak, maybe make mistakes and redo.



An interview is a statistically noisy process. 5 interviewers, objectivity, attempts to quantify the candidate as much as possible - but they do not always work, someone may not like something. Sometimes they refuse not because the person does not fit, but because “the signal was not strong enough”. Hiring the wrong developer is worse for the company than not hiring the right one.



If you solve 50 or 100 problems of different levels in different categories, the chances of passing an algorithmic interview will greatly increase, there is a huge difference between 0 and 100 solved problems. But the device may still be unlucky. I advise you to look at this philosophically, refusal can happen in any case, it does not always depend on us as candidates.



The coding is usually combined with the algorithmic section. And there is a slight difference between the backend and the front end on Facebook. The same algorithms on trees, graphs or related to loops, with arrays - but with front-end specifics. As a rule, everything is in JavaScript. The choice of language is free enough. When I interviewed for another company, I wrote in C # - although I had never used it before. But since it is object-oriented and similar to Java, I just clarified in the process: is this possible? And so?



Of course, if you have been programming in Python all your life, you should not write in Java: different languages, it will be hard, you will get confused in constructs, imports. It won't be a terribly negative signal, but it will make life difficult.



And then there are system design interviews and behavioral: I have come across only such stages.



Where to prepare



I must say right away that I studied only on Leetcode, tried to learn this way of thinking, when there is a limited time and a task, a set of algorithms that you operate with, for example, binary search, traversal of graphs or something else. Typically, decisions are made up of these decision blocks.







Architectural section: system design



Architectural sections are the same as system design interviews . I think they are always present at interviews, and their number depends on the level you are applying for. There was one in Facebook, in the second company, where I interviewed in parallel - 1 or 2.



The section is open, the problem is not posed in the same way as in the problems of the algorithm. At the same time, soft skills are also important: the ability to talk, deduce and make a decision, and design a specific system. When we talk about System Design, we usually talk about the design of something highly loaded: you need to make Twitter or Instagram. Of course, you can't design a full-fledged Twitter in 40 minutes.



There are also specific tasks: to make an input form with autocomplete. In the case of the frontend, there may be something like: design a frontend for Yandex.Maps: how you structure the code, what components will be, what subordination of components to each other. We can talk about content delivery for users, CDN.



These are all very general tasks, and it can easily take an entire hour to describe one aspect of the system being designed. The most important thing not to do is to go into details before you've outlined the options and gotten approval for what you want to hear.First, you designate latitude: this is such a system, at a high level it can consist of a dozen components, draw a diagram. Further, we can say that there is little time, and offer to delve into the details, depending on the preferences of the interviewer and your knowledge. Knowledge must be used! If you don't understand how load balancing works, but you know how the search backend works, it's obviously better to talk about the backend. Everyone understands that a single developer will not complete a project.



Compared to product design, I think that in system design there is an emphasis on technical requirements, the ability to operate with standard concepts: what will be the load, what speed is needed for hard drives to make the system work. Product design, apparently, is more about your ability as an engineer to come to an agreement with the product owner, designer, prioritize ideas, and possibly conduct experiments. It's more about the business component and work organization. I have not had a product design, I admit that you can talk about the product, values, problems - which is usually the area of ​​responsibility of product managers.



Where to prepare







   ,   behavioral-



Soft skills



"Mistakes" in interviews are due to the fact that people do not know how to talk - no matter how silly and naive it may sound. In my experience as an interviewer, it happened like this: I call up, introduce myself, try to set a normal tone for the conversation and get a little talk, and I get monosyllabic answers.



- Tell us about yourself?

- Well, I'm a programmer.

- What are you doing?

- Making a website.



Maybe this is not the most common mistake, but for the interviewer the most unpleasant, because he is forced to pull out answers to questions. Sometimes it is not even clear whether a person wants to get a job or not.



Therefore, you need to be able to communicate clearly and quickly the coolest aspects of the background and experience.To practice, you can record yourself on your phone, preferably with video. Then listen and repeat after a few days. If you want to talk, this method is great.



I started doing this a long time ago, when I first prepared a presentation. I had to tell everything orally, and I wrote the text of my speech in a document. Written speech did not correspond at all to oral speech, it turned out ridiculous and clumsy. Then I sat down with the phone - maybe with a dictaphone, maybe in front of the mirror - and began to rehearse: about the tenth time, the speech became coherent and understandable.





I'm talking about an HTML parser written on an airplane on the way to offsite.



Another tip: as a rule, the interviewer does not know anything about you. Often he looks at the resume before the interview in 3 minutes, some 4 terms catch his eye, the name of the person at best. That is, as a candidate, you can focus on certain aspects of your story in order to look as profitable as possible. In a way, this is manipulation, but good. You are selling yourself: but you are not trying to tell what was not. You just had an interesting project, not at the last, but at the penultimate job, and then you can talk about it. The interviewer will surely be interested in and remember this story, and not that you are fixing bugs at the current location, because the project is undergoing support. This approach can be used for your own benefit, and the conversation turns out to be more lively.



English language



If you are interviewing in a foreign company, you should record a dictaphone story about yourself and your projects in English. If you are the coolest programmer in the world, but cannot speak, you will never get an interview, that's for sure.



I suppose that you can meet a Russian engineer who will offer, in the old fashioned way, to communicate in Russian. But all the same, at some point, ignorance of the language can stop. There are many Russian-speaking people on Facebook, but it is not obvious from them who speaks Russian. Sometimes company policies prohibit interviews in languages ​​other than English. Then communication in Russian can be maximum in the informal part.



I have been studying English for 10 years, and I always thought that I had a decent level, especially the technical language: I read manuals like everyone else. But in 2016 I went to New York and realized that I didn't understand anything. I just don't hear what they say to me - it shocked me. It’s hard to say what the level was, probably B1, upper-intermediate. But I practically did not understand the speakers and was lost in a rich conversation.



deduced the criteria for myself, by which you can understand that the level is suitable for passing the interview. If at a technical conference you understand 50–70% of what the speaker is saying and you can tell about your project in 1–2 minutes in such a way that they will understand you, this should be enough. Speakers usually have a very intelligible language, without strong slang and swallowed sounds. Certificates are not required for the interview, but will be required to move to the UK. Formal level, B1 or B2 - if you learn from scratch, in some courses you can grow to it in a year.



Communication skills in general are important - if you speak English perfectly, but looking down and looking as insecure as possible will not work. I admit that the intermediate level of the language is enough for someone, when you can discuss technical topics and get lost in informal conversations. But there is never a lot of language, I'm sure of that.



How to prepare



I cannot say that I am an ideal candidate in terms of soft skills. But what is important here: the ability to work in a team . They are mainly looking for team players who can both argue and understand someone else's point of view: no one needs loners. A good leader strives to build a team so that he has people with different strengths, and those simply have to be able to negotiate. A big company is always a team.



Plus it would be nice to figure out what soft skills are and  what they are... Probably, being a team leader, I had to constantly talk to everyone, plan, take responsibility: the skills developed naturally. You make a technical decision, another team lead comes: you must not offend him, and defend your decision and maintain a constructive dialogue. So it seems to me that skills eventually appear in people who, in adequate conditions, reach the position of senior. Not when you are alone on a project, and they call you a senior simply because there are no other developers.



Outcome



Due to the pandemic, the interview process is changing, the work format is changing too. There is an assumption that the remotes will soon appear around the world. Now companies are trying to hire in current locations, for example, in the United States - from all over the country at least. It is hard to predict whether people from Russia will start hiring who want to stay in Russia. You shouldn't count on a remout right now - maybe for several years.



The relocation process did not stop - and this is amazing for me. With the condition that there are many limiting factors, the hiring continues. This is good news for those looking to relocate. One of my friends moved to Scotland with his family right in the midst of all the events, only served quarantine upon arrival.



There are not enough people in positions, and no coronavirus has affected this. Maybe, in a sense, this is bad: companies grow like a cancerous tumor, trying to fill everything with themselves. But for us, as developers, this is good: the process has not gone anywhere. People are still needed, projects are launched, there is a lot of ambition, money is a lot, they have to be spent, and recruiting continues to work.



What to read additionally:





We have collected all useful links together with the webinar listeners. If you have any additions - send, we will add to the list :)



In our g-mate, at least 30-50% are ready to consider a remote, and relocation is the second most popular among locations. During the pandemic, both in Russia and abroad, recruitment has accelerated 3 times. Sign up to the bot to get the best tech jobs right in Telegram.



All Articles