By the will of fate, it so happened that in addition to the day-to-day responsibilities of writing code, correcting errors, countless meetings and stand-ups, and all the other things-other things, I was involved in the process of conducting interviews.
The company is interested in long-term cooperation, therefore, people are searched and hired very carefully: there is an interview stage with recruiters, a technical interview, often in several stages, a project interview where they discuss issues specific to a particular project and final conversations with the heads of departments at the proposal stage. The structure of the interviewing system is similar for all major technology companies - so one who has passed it in any organization can easily imagine the process in ten others.
Having worked in the company for more than 4 years in several adjacent large projects, I participated in an interview with more than 50 people, of whom only 5 were hired.
')
At the moment I left the company I am describing, and by agreement of the parties, I can share it with how this process is arranged a little from the inside.
For the most part I will talk about the technical interview - the very stage where we test the competence of the candidate as an engineer. The process is complex and expensive, there is no one correct approach. At its core, the goal of the dialogue is to understand what kind of residual knowledge a candidate has, his ability to think and think about personal qualities, and to answer the most
important question of the universe and all that, is I ready to work side by side with this person? project .
What for?!
Among the first there is always a question - why did you decide to work in our company? What do you know about her, why and why. Why not Google, Yandex or any other large company. The duty question helps to start a conversation, but it can also “shoot”: one candidate, who poured a mountain of marketing materials, told about the universal conspiracy and his desire to know him from the inside. We shook his hand and wished him good luck.
Summary.
Of course, we are looking, but there are some peculiarities - the first thing that interests you is that you graduated and graduated from this or that university or not - but no more than interesting. Where he worked, how often he changed jobs, why. What topics and areas dealt with. It is unlikely that a candidate involved in data mining or web 2.0 will be interested in you, although ... who knows?
Sometimes you see company name
X in the resume, you remember that your colleague
Vasily worked for this company - you go to
Vasya , you ask if he was, quite by chance, familiar with the candidate, if he was a comrade. Word of mouth - and your reputation precedes you.
J factor
A typical semiconductor in a new company is a recruiter, on the one hand, he wants to find a specialist, but on the other hand, without being a technical specialist, he is not able to assess the candidate’s real weight well and therefore seeks a resume using buzz words. Oi-wei! Yes, it's Java! But the candidate has Log4J - there must be something for Java. Go!
For ourselves, we identified the so-called.
J- factor, as the number of technologies mentioned by the candidate, containing the letter
J , for example: jsp, jdbc, j2se, ejb, etc., etc.
As a rule, the larger the
J- factor, the more dull the conversation. There is a saying
The Jack of all trades , which can be translated as "Handyman", only she has a sequel -
and master of nothing - an unnecessary translation. In short, if a person is already a mature engineer and he knows what he wants to do, this is also clearly reflected in the summary. And, of course, with such and communicate more pleasantly, and we take them much more often.
But you should not take everything too literally - every rule has its own pleasant exceptions: once a person with an overload in 9J (this is a very large number) was not just taken to work, but as an exception, they were able to make it work earlier what the hiring window allows.
HR reaction.
It should be noted that if a person really liked a technical interview, several managers would fight for him, if he liked a project interview, which can be considered in a sense as an extended one. interviews - managers and HR are doing everything possible not to miss an excellent specialist. In my memory, one very prominent bird was made an offer 5 days after the resume was sent.
My phone rang.
There are situations when either a person’s resume does not cause complete delight, or a person lives very far - in such cases, a small telephone interview is held, say for 30 minutes. Such a telephone interview (or “pre-interview”), as a rule, is more than enough to understand whether it is worth further communicating with a person or not. If it is, an invitation to an in-person interview. And no matter where a person comes from - from Moscow, St. Petersburg, Tambov or Nakhodka - the company pays for the candidate’s trip, helps with tickets and other issues.
It also happens that after talking on the phone, we give a person homework from the category of model problems or algorithms. Here you can see a lot - and the love of a person for a particular platform for assembly - ant, maven, etc., love for unit test-s, the ability to design / build architecture, understanding of the work of classical algorithms and the taste of code design.
Closer to the body.
So, based on our daily tasks, we have formed several topics for conversation.
- basic algorithms: sorting, binary search
- data structures: lists, associative arrays, trees
- knowledge of English
- mathematics
- design
- multithreading
Sprechen Sie Deutsch?
In order not to walk around for a long time, I usually ask how quick sorting, or merge sorting, or binary search in English is arranged - of course, expecting that the candidate will answer it as well, since the questions are not tricky, you can kill two birds with one stone .
You are mistaken if you think that, for example, to describe a quick sort, it will be enough to talk about finding the reference point, dividing into two subarrays and recursive call. The question has a great depth - it is worth explaining the degradation of a quick sort to O (n
2 ) and, as one of the ways to solve the problem, the so-called The problem of the national Dutch flag.
Standard Library and Design
Do not worry: everything that you knew and know about the standard library will be asked: what collections are and what contracts of use. Arguing about the pros or cons of a particular approach, we suggest that the candidate design / design a solution if he could make, for example, his own new programming language. If you have not heard what a
Gang of Four is , the probability that it will be difficult to communicate is great.
After all, we love to ask all sorts of beautiful approaches that have been applied in some well-known framework. Or, for example, why
Donald Knut strongly demands that the search in hash structures be done using prime numbers, and the engineers of
Sun , and now
Oracle , do something completely different? They not only read Knut, but also know something else.
In general, it is possible to communicate about hashCode for a very long time: and where it comes from, and why it is not an address, and if it were an address, then what would be good for someone and who would be bad and how
GC works.
It is possible that the candidate does not know or did not hear about it - it does not matter - leading questions can put him on the right path if he or she is able to think and reason.
Coding.
These are all words! It would be nice to see how a person kodit, and kodit on a piece of paper - this principle is known as white board coding. Of course, in life we ​​all code in one way or another
IDE - be it
Eclipse or
Idea ,
OS Emacs or
vi . After all, all the tools that we have at our disposal, they simplify and accelerate the process, but do not replace ourselves.
A typical stuffing on this topic is to write a function that returns the
Nth member of the Fibonacci series. As a rule, at the beginning the candidate writes a recursive implementation. Good. We specify the areas of applicability and what side effects occur. The logical extension is the iterative formula. We do not quench - we want even faster, better, more beautiful - the candidate will remember or not - we make stuffing with the exact formula of the
N -th member of the series through the
golden ratio . And again, sooner or later the question arises about the limits of applicability. One candidate literally killed me — he didn’t remember how many bits were allocated for double-precision floating point mantissa — but as soon as he found out in a couple of seconds he summarized — about 15 significant digits fit in double. How? He explained briefly and clearly, which is very important.
Mathematical fluency and Brainteasers
It's nice when a person knows how to quickly count and very sadly when a person cannot evaluate something simple - whether it is the duration of a contribution with a known initial amount and percentage, the network delay between Tokyo and London or just the root of 42. What is the accuracy? Which is easy to handle on the fingers.
As a rule, after half an hour of in-person talk with a candidate, it becomes clear whether you like it or not. In my purely personal view, the ability to solve puzzles will not say anything, if the candidate is powerful - he will solve the puzzle anyway, if the water is on the jelly, that is, don’t understand what it can or cannot solve. However, in the case of a powerful candidate, this can defuse the situation - he solved some unfamiliar puzzle, and you will draw him one more plus in karma.
And here it’s not the fluency of the account or the ability to solve puzzles as such - but how much a person can move freely between levels of abstractions. Just a minute ago, he talked about the complexity of algorithms in terms of the Big-
O notation, and now he has to evaluate when the recursive procedure ends up with concrete numbers — a good engineer does not build models in a vacuum, but in the real world. Where is the guarantee that a person who counts 100 gas stations in Moscow will not be surprised at all, having received a network delay of 500 ms between two data centers in the same city?
It is important to understand that we do not have a goal to overwhelm a person. In the situation of the interview, traditionally, the roles are highly asymmetric - we choose questions, and the candidate answers, besides, for objectivity, the evaluation of the interviewees is usually two, and therefore fill up - that is Finding an area where the candidate knows fewer interviewers and trampling there is usually not a tricky business. There are exceptions, but in any case, if a candidate can answer any of our questions, it means that he is a head taller than us in qualification, and the interview doesn’t say anything - we cannot adequately assess a person’s level a head taller than us. You just need to call more qualified professionals.
The task is different:
- understand what the candidate knows
- roughly estimate what he doesn't know
- understand how a candidate behaves when he falls outside the boundaries of his area of ​​competence - and this is perhaps the most important, and that is why we always try to get to the area where the candidate is not very well versed, and that's where to dance - to leave hints, hints, to give individual reference data - to see if a person can get comfortable in an unfamiliar area, and how quickly.
Anyone can churn out ready-made solutions, while inventing new solutions is the job of an engineer.
Chapter 17.
The
[concurrency-interest] fathers subtly hint that no one knows concurrency, except that
DL and everyone else interpret this scripture as soon as they can. It's amazing when a person comes who claims that he does know concurrency and even indicates a list of books he has read, including not only
Java Concurrency in Practice , but a simple question about wait / notify (from the series “how can the execution thread capture the monitor, to make
notify () , if another thread, has captured the monitor and waits in the
wait () call.) baffles it. More
difficult questions concern the device
COWAL ,
CHM in its basic form jdk 1.6, cause-and-effect relations like HB, why it is necessary to touch volatile, etc.
But be that as it may.
Summing up the interview, I want to understand for myself - are you ready to work with such a person on the same team, side by side for a long time, can you expect that he will be able to replace you for holidays, illnesses, yes and just nice to chat over a cup of morning coffee or evening pint. In fact, this is expressed in a certain level of comfort in working with a person — how much he will have to explain, how much to correct behind him (directly or indirectly, through the process of reviewing the code). Sometimes the smart and quick-witted junior fits into the team much better than the stubborn and intractable senior with a lot of knowledge.
PS
It would seem that there is a reason to open the cards and tell about what we asked and ask at the interviews? Certainly, the questions that I described are far from a complete list of what we can ask - as a rule, these are some random questions from a large topic that can go well into the depth of a question, and even if you so desire, you will not be able to ask all the questions during the interview. And there is nothing to it.
The motive is more than simple: at the moment the market of high-quality specialists is almost exhausted. On the other hand, there are many people in the IT environment who could be.
Get ready for an interview. Not a day, not a week. Work, solve model problems - this may take more than one month, and the investment will pay off a decent job.
pps Thanks for the help and assistance in writing this article
cheremin , Alexander Kusurgashev, Slava Tsarev, and of course,
23derevo .