Author: Robert Mao (CEO and Chief Architect of ArcBlock)
ArcBlock has been established and developed over the years, and we have never stopped recruiting. The differences at different stages may only be the number of vacant positions and the pace. Our team building principle is "quality over quantity", strict recruitment assessments have kept ArcBlock maintaining a small and efficient team. At the same time, we have spent a lot of time and effort in numerous interviews, occasionally some candidates have slight complaints about the recruitment process at ArcBlock. The following content is to help candidates who are interested in ArcBlock better understand our recruitment process and pass our interviews more easily.
ArcBlock's recruitment process.#
The current recruitment process of ArcBlock is an optimization of Microsoft's recruitment process.
The processes of various groups at Microsoft are slightly different, but overall they are very strict. Each hiring company requires a lot of manpower and time. The Microsoft Research Institute where I used to work is known for its very strict interview process.
- HR Resume Screening
- Phone screening (2 rounds, each round about 45 minutes, phone/skype/screen sharing to verify technical content in the resume, usually includes coding, relatively simple)
- Coding Test (programming test, automatically timed, about 1 hour, complete code submission)
- Interview (3-5 rounds, coding, design, future team members, subordinates, managers, usually including a lunch interview round)
- Manager interview (if the previous interview conclusion is hire)
- Make an offer (phone).
On the day of the interview, in general, if there are two rounds of "no hire", it will not continue, and all the following interviews will be canceled. Therefore, if a candidate is informed by HR of a plan for 5 rounds of interviews but does not meet all of them, it basically means "no hire". On the contrary, usually reaching the final round of interviews means there is a considerable possibility of being hired.
Microsoft's interviews involve exchanging opinions between each round, which means the next interviewer knows the results of the previous round, as well as what issues the previous round suggested the next round should focus on. ArcBlock also follows this practice. It is said that Google adopts a different approach, where each round of interviews is independent, and then collectively evaluated by a committee.
ArcBlock's current recruitment process:
- Resume screening
- Phone call (around 30-45 minutes, mainly for introducing each other)
- Coding Test (allow up to one week for completion)
- Interview (if the previous round of coding tests passed, at least 2 rounds)
- Manager interview (if the previous interview results are consistent with hire)
- Make an offer.
Our processes are similar, but the total time is significantly reduced. Another characteristic is that our Coding Test segment has higher requirements, but also provides more time, allowing candidates to demonstrate their abilities more fully.
ArcBlock Code Test#
Regardless of whether it is at Microsoft or at a startup, I will encounter some people who do not quite approve of our recruitment interview methods. For example, our Coding Test, in our view, is the most important part, because it involves solving a clearly defined small problem in a relaxed, pressure-free environment with sufficient freedom. Of course, for some people, this "freedom" is precisely "unclear goals" - actually both perspectives are correct, but what we simulate is the way our team works, and individuals who prefer very detailed task definitions may be highly valued human resources in other teams, but not necessarily a good fit for the ArcBlock team.
When I worked at a certain large company in the past, I once encountered a candidate refusing a system design question, stating that he would only share his "brilliant" ideas if we signed a non-disclosure agreement with him or hired him; there were also candidates who believed that requiring a Coding Test was a way for us to promote our technology, and even some who publicly wrote articles criticizing our methods. These may seem negative, but in fact, they fully demonstrate the effectiveness of this screening process. These candidates may indeed have extraordinary ideas and personalities, but at least it shows that they have different values and perceptions from us. Identifying and terminating early, without wasting each other's time by hiring unsuitable candidates, is the greatest gain for both parties.
ArcBlock's interview: no need to brush up on questions#
In addition to the Coding Test, we will ask candidates to write some "simple" code in each round of the interview. Now programming interviews in technology companies are already very popular, so everyone may be more accustomed to it.
Over the past decade, many tech companies have liked to present some "high difficulty" brain-burning algorithmic problems in interviews, leading to the increasingly serious trend of "grinding problems". However, recently, people have generally stopped doing these coding tests that can be bypassed by grinding problems, and ArcBlock is no exception. Whether it's the coding tests mentioned above or those in interviews (basically, in each round of interviews, it's inevitable to write some code), we strive to conduct interviews with relatively simple and direct questions, even in algorithmic code tests, we try to avoid questions that can't be answered without "reviewing".
Give an example that I have used in an interview, for example: Implement a function that converts an integer string to an integer (C equivalent to itoa in C language), this is a very simple question, even without knowledge of algorithms should be able to implement it. But in reality, I found that in over 80% of my past interviews, people could not correctly write out this code completely, mainly due to insufficient consideration of some boundary conditions (such as handling signed integers, handling very large integers, etc.).
Our another type of question is the answer "open" question, usually starting from a very simple program, gradually increasing the difficulty until it becomes a very difficult question. For example, in actual interviews, I will use the T9 input method to implement, starting from the simplest version, and gradually requiring the implementation of predictive input, considering various optimized versions. This type of open-ended interview question does not have a standard answer, and will become more and more difficult, which can fully test a person's comprehensive abilities.
Interview is a two-way choice process.#
Interviews are not only companies interviewing job seekers, but also job seekers interviewing companies.
Normally, in the IT industry, both the recruitment and job-seeking sides are fairly equal. As a job seeker, there is no doubt that you hope to receive an offer through an interview. Perhaps it is a job that you really like, or maybe there is a technical atmosphere and colleagues that you have longed for in the team, so it is understandable that your urgency is high. In fact, companies as recruiters are equally urgent, with many tasks that need manpower to complete or explore, eager to find the right candidate immediately. During the recruitment process, companies will try their best to get to know the candidates. Candidates should also take this opportunity to learn more about the company and determine if it is the right place for them.
During an interview, we may ask the candidate "Do you have any questions?" This is a good time to ask. Generally, in a 60-minute interview, I will chat for 2 to 3 minutes, then spend 30 to 50 minutes on coding and design-related questions, and the rest of the time is left for answering questions.
Interviews are not "exams", but a microcosm of daily work#
During the interview, if you encounter difficulties and get stuck, what should you do? Remember that an interview is not an exam, but a condensed version of actual work. When you get stuck on a problem, you can try to solve it on your own or seek help. Usually, interviewers are willing to help you during the interview.
Therefore, during the interview, be sure to speak out your thoughts instead of staying silent to think or immediately start coding. Even if you are confident, you can first briefly explain your understanding of the question, the approach to solving the problem, and then start coding; if you encounter difficulties while answering, you can let the interviewer know where you are stuck and what problems you are facing, usually the interviewer will help you. Imagine this is like working normally - you and your colleagues cooperate to solve a problem, as a team, you should definitely tell your colleagues how you plan to do it, ask for help when encountering problems, and discuss with them.
Almost all interviewees actually hope that you can pass, rather than create obstacles for you. This is actually a "secret" of company interviews. For every person who comes to interview, I sincerely hope that you can pass smoothly, so the interviewees' mentality is not to create obstacles for you, but sincerely hope that you can perform well and pass the interview. If you can pass smoothly, we can quickly fill the vacant position without spending more time interviewing more people. Especially for certain positions, it may have interviewed many people, and spent a long time and effort, this wish is even more sincere.
How does ArcBlock internally evaluate interviews?#
For high-tech companies, talent is the most important asset. Hiring the wrong person can be a huge loss for the company, and sometimes the loss is immeasurable, so it is very important to strictly control the recruitment process.
Our recruitment interview evaluation has only two choices: Yes or No. It can be Strong hire, or Strong No hire (if there is a Strong no hire, the conclusion will definitely be no hire). We do not allow ambiguous judgments or uncertainty for others to judge.
The principle that gave me a deep impression during my first Microsoft recruitment training was: "Whenever in doubt, No hire." This principle has also been inherited by ArcBlock, so as long as an interview feels unsure, or something feels off, then it's a No hire.
Such strict requirements, is it because we are only looking for "flawless" people? In fact, it is not. In fact, we will hire people who clearly expose problems in the interview - nobody is perfect, we will not reject you just because you occasionally make a mistake in an algorithm during the interview. Many times this is understandable. But for example, if an interviewee shows very strong communication skills, has a good understanding level demonstrated in many blogs and articles in the past, but performs poorly in our coding and algorithm tests several times, then we will have doubts - once we have doubts, we usually choose not to hire.
Not being hired doesn't mean there is anything wrong with your abilities.#
Job seekers not being hired does not indicate any issues with the abilities of the job seekers, it simply means that they are not a match for the job position or company team. My suggestion to all students who have not passed our or other companies' interviews is to not dwell on it, there is no confidence setback, just shift focus, concentrate on finding other positions that are more suitable for you.
For those who do not like our recruitment process, especially those who have opinions on our Coding Test method, and feel that having to write very simple code for each round of interview is inconsistent with their rich experience, this just shows that our way of working and style do not match with yours, you can timely exit to save everyone's time. Not agreeing with our practices does not mean that your views are wrong, it just indicates that our working styles are inconsistent.
ArcBlock's recruitment process is a product of pragmatism and empiricism, which is a self-perceived best practice accumulated from our past work, and will be continuously adjusted and iterated in future practices. Our goal is to find talents that both parties feel are suitable for mutual development.
If you have just joined ArcBlock, I guess you have been through the above process, congratulations! In the future, you will have many opportunities to go through this process again in the ArcBlock team, but in another position: the recruiter.
Explanation: This article on ArcBlock's recruitment and interview training is aimed at both the general public and our internal team. In the new IT era, we will gradually adopt an open and transparent strategy in internal team building, where training content and courses will no longer be differentiated between internal and external, and will also gradually organize and make public the materials and videos of past internal training.