Interview Passage - Inside Look

    Reading posts on a habr, I noticed that many are not particularly aware of how the interview process is actually organized, especially from the employer. It should also be noted that many articles about the passage of the interview are a bit “PR” in nature, and do not describe the details. I want to fill this gap, and without water tell how it works from the inside.

    All of the following is typical for my company, but HR itself is fairly standard by California standards (which has now almost become international standards). No PR, so just in a nutshell: my company is a small multinational company with a staff of about 4,000 people, HQ in Palo Alto, R&D (where I work) - Vancouver, BC. I am interviewing for a position in my team that is developing a web-frontend for embedded devices (using Python, C, and a standard HTML set).


    Writing a job announcement

    An announcement is made not only for the candidate, but also for the HR department. The first step in the interview is a telephone interview, and the ad must have keywords that will be used during the conversation. Unfortunately, the HR department is not always competent in the technical field, and this must be taken into account. Another hidden purpose of the announcement is to scare away unqualified candidates. Unfortunately, this is often done incorrectly, and managers point out stupid things like “30 years of .NET programming.” The copy-and-paste method is also very common when they look for ready-made ads and change them to fit their needs. As a result, nonsense from the original announcement goes to everyone else.

    So you need to look at the ads soberly, very often they overdo it a lot. Unfortunately, recently everyone has become so used to it that they simply spit on all the requirements indicated in the announcement and send their resume regardless of qualifications.

    CV analysis

    A resume is one of the key steps in getting a job; many people underestimate how important this is. So, the candidate sends a resume with his data, and possibly a cover letter (everything that is not included in the resume is usually a message in the style of “what a good company you are, and I'm good too, let's be friends!”). In most cases, the resume is processed automatically , in any large company HR receives hundreds of applications a day, they simply do not have time to process everything manually. So if you made a fanciful resume in Photoshop, there is a huge chance that they will not be considered. This also applies sometimes to small companies when HR uses standard solutions in this area.

    During automatic processing, personal data is extracted from the resume. If the data is incorrect, then in the database they can fall into the incorrect table. So it is better to comply with standard formatting - name, contact information in a standard format, address in a standard format. If it was not possible to extract this data automatically, then the database will have empty records, and they will be considered last (or will not be considered at all).

    Another important factor is the address. There is a common practice when a company moves a candidate to a new place at his own expense. So if you are applying for a company in another city, be sure to indicate whether you will move yourself at your own expense (for example, that you are ready to move, there are plane tickets, you’re already looking for a job previously). Also usually candidates from other cities are considered last (the same applies if the address is not specified), and the further the city, the less chance that will be considered at all.

    Now, as a matter of fact, the resume itself is considered. From my own experience, I must say that I no longer believe anything that can be written there, especially if this is a resume from a citizen of Indian nationality - they have a very, very good written language, sometimes it is so good that there is a temptation to immediately take to work no interview. However, many things in the resume are contrived. In North America, there is no such practice as work books, and it is very difficult to verify qualifications. All letters of recommendation also do not inspire confidence, as many simply make arrangements with their friends to confirm the recommendation.

    So basically I do company checks indicated in the resume and the candidate’s online profile (simply speaking, I’m looking on the Internet). Naturally, I look at the candidate’s blogs and projects. I want to immediately give a recommendation to potential candidates - have a profile on Linked In, your technical blog and several OSS projects. If I can’t find the network presence of the candidate, then this is a fat minus. I understand about the NSA, but nevertheless, if a person does not shine anywhere, then there are two reasons: he is paranoid (which is good for some works), or he has no life other than work and home (even if the candidate has only a page with kittens on facebook, this is good - it means this is a person, not a monkey, who can only hammer on the keyboard). Of course, there are exceptions, but my practice shows that a person who does not shine anywhere usually a rather banal person without obvious interests and hobbies. For Russia, this may be the exact opposite, but I think it is also applicable to some extent. In any case, for the West, checking for network presence is a must-do.

    And one more thing - the resume database does not always send notifications (for example, I did not configure them myself, and I'm not really sure that this is even possible in our system). So it’s quite possible that a resume will be considered a couple of weeks after it was sent. Yes, this is bad, but such are the realities - you should not expect that they are waiting for you with open arms, you are just one of many.

    Telephone interview

    This is standard practice, and almost always it means that your candidacy has interested the company and it will conduct a full interview. The purpose of a telephone conversation is to find out communication skills (language skills), technical skills (usually a couple of points are taken from an ad, and qualifications are specified) and agree on further actions. You should not expect serious technical questions at the first telephone interview, but you must be prepared for the fact that questions with under-the-markers can make up. For example, to ask how much experience you have with .NET, (and given that the ad says “30 years of experience”) with the answer “31 years,” they can say goodbye right away because they know that this is a lie. Usually, for such a case, HR has a special questionnaire. But again, they usually don’t ask for anything complicated, there’s a technical interview for this.

    The following interviews are usually scheduled during a telephone interview, or the time is specified when you can give a written assignment to you. In our team we give a task for which 1.5 hours are given. Usually, during a telephone interview, the time is indicated when the task arrives at the email address and when a response is expected.

    Writing assignment

    In essence, this is a set of questions that require writing code. All answers can be found on the Internet, however there are specific things with which it will not help. This allows you to determine what terminology a candidate has (usually knowledge and the ability to correctly apply the terms say a lot about qualifications). For example, we have a question “rewrite such and such code using Python built-in functions”. This baffles many because they don’t know the difference between built-in functions and other functions.

    Many questions are fairly elementary, but suggest several solutions. Naturally, we also use the Internet, and we know what solutions can be found on the Internet, and which most likely the candidate found himself. However, the level of trust in any code is quite low, and we always assume that the candidate used the help. Therefore, already during a personal interview, we specify how this or that code works.

    The answers to the task determine whether the candidate will be considered further. The solution algorithm is usually checked, syntax errors are ignored (but then this is clarified during a personal interview). Sometimes tasks are returned without answers, or decisions are completely wrong (for example, when a PHP code is sent to us on the question about validation on the client side, and this despite the fact that PHP knowledge does not bother us at all, not to mention the fact that the question was about client, not server validation).

    Personal interview

    If the written assignment was more or less normal, we schedule a personal interview. Sometimes this happens even if the written assignment was done poorly, as the stress of the candidate must be considered. Some people show themselves very badly under stress, and we take this factor into account. Therefore, at the beginning of the interview, we conduct an ice breaker (insignificant conversations) about the weather, about us (the company and our team) and about the candidate himself.

    The next step is a resume. The purpose of the conversation about the resume is to find out the social skills and level of the candidate. We had a candidate who indicated on the resume “Google Street driver” (he drove a car that took pictures) in Ireland many years ago. It was interesting to just talk about it, and it had a good effect on the atmosphere of the interview, as relieved stiffness. We also clarify the tools used by the candidate (OS, VCS, programming languages, editing environments, continuous integration servers, etc.) Usually this stage is positive, because we don’t go into details, but if a candidate says that all his life he only programmed under Windows (while we need a Linux developer), this already creates small minus signs. The same applies to storing source codes in archives, using Far as an editor and other things,

    Why is that bad? A few reasons:
    • have to spend time training the candidate
    • if a person is not interested in new trends, this means that for him, work is just an uninteresting craft, for the sake of money. Such people are characterized by the fact that they write a lot of lines of code, work on projects for a long time and are quite conservative in adapting new technologies
    • there is a high probability of alienation from the team - if, say, everyone is used to making good atomic commits in Git, then such a person will most likely make huge commits that constantly conflict with other commits and are difficult for codereview


    These are my observations of such people all my conscious life. I have never met an exception, but I guess that they can be. For myself, I put minus signs to such people.

    After talking about the resume, we switch to technology. The purpose of this stage is to find out the theoretical basis and the set of terms used by the candidate. The language barrier is a very serious thing, especially in an international company. If, in addition to a purely conversational barrier, there is also a barrier of terminology, this will lead to very painful consequences. I have seen many times when a manager verbally gives an assignment to an employee, he nods his head - yes, he understood everything, and in a week comes with a completely wrong decision, because I thought that the conversation was about something else (for example, instead of CSRF I thought about XSS ) Sometimes even correspondence exclusively by e-mail does not help, simply because different concepts are implied. For example, “stream” - the manager did not specify what network stream meant, and the employee thought that it is just to rewrite the code using C ++ I / O streams. Close, yes, but wrong.

    Further, interview approaches branch out depending on the team. Someone asks the classic but useless questions “write a simply connected list”, and “what kind of O (N) sortings”. Someone asks even more useless, but again classic questions about manhole covers and balls on the bus. All this is already leaving a little, and many companies no longer ask abstract things. I must say that sometimes we use these kinds of questions if we have doubts about the candidate, but usually this is not required.

    Basically, here we either round off (if we see that the candidate has accumulated too many minuses), or we proceed to the analysis of the technical specifications. In addition to the obvious questions about syntax errors and how it works, we ask the candidate to write a more efficient algorithm (either faster or to consume less memory). Sometimes we bring a candidate to a decision if we see that he has some thoughts, but cannot formulate a solution. The questions on improving the efficiency of the algorithms proved themselves to be a long practice, because they immediately show several skills of the candidate: knowledge of algorithms and data structures, knowledge of the low-level component (bitness, binary operations), knowledge of the programming language and, in general, the ability to solve problems, sometimes in a non-standard way. For example, even in Python with arithmetic of unlimited precision of integer operations, knowledge of low-level things is quite important, because Python automatically switches from fast arithmetic in registers to inefficient bigint, and sometimes a simple change makes the program faster. But this is just an example - if the program is fast, but incorrect, then it goes to landfill regardless of its optimizations.

    After discussing the assignment (if everything went well), the candidate has a nightmare, because we squeeze out of it all possible knowledge in the field of interest to us. These may be questions about the memory manager in Python, and how je_malloc is better than PyMalloc, and about segmentation of memory and the use of sbrk in malloc, javascript prototypes and closures, css selectors, HTML5 EcmaScript Shims, jQuery deferred, CSS3 pseudo classes (I give more specific examples in order to minimize discrepancies ), etc. The purpose of this is to find out the limits of knowledge and stress resistance of the candidate. Usually we do this for candidates whom we have already decided to hire, but now we want to determine his position and salary (naturally, those who pass tests with brilliance receive a better offer).

    The last stage is the candidate's questions to us. This perplexes many, but this is a mandatory part of all interviews in Western companies. Here again, there is a test of social skills. It also allows you to sometimes understand how interested the candidate is in the position. It is unprofitable for us to spend our time and money on a candidate who is likely to quit in a couple of months, and we always try to understand how interesting he is to us.

    Selection criteria

    And finally, small conclusions - what criteria do we consider before inviting to work:
    • Technical skills (learning is never profitable)
    • Social skills (communication barrier may reduce work efficiency)
    • Experience in a similar field (the minimum factor, but may affect the final decision)
    • Overqualification (not sure about the Russian term, but in general this means that we will not take the professor to the place of a junior analyst)


    I hope that this will help you in the hard work of finding a job, or simply broaden your horizons on how corporations work from the inside out.

    Also popular now: