Interview as a process from the point of view of the interviewee

    By the will of fate, it so happened that in addition to my daily duties of writing code, correcting errors, countless rallies and stand-ups, and everything else, I was involved in the interview process.

    The company is interested in long-term cooperation, therefore, the search and hiring of people is carried out very carefully: there is a stage of an interview with recruiters, a technical interview, often in several stages, a project interview, where they discuss issues specific to a particular project and the final conversations with the heads of departments at the proposal stage. The structure of the interview system is similar for all large technology companies - therefore, whoever 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 related 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 about which I describe, and by agreement of the parties, I can share how this one works the process is a little inside out.

    For the most part I will talk about a technical interview - the very stage where we check the competence of the candidate as an engineer. The process is complex and expensive, it does not have the only right approach. At its core, the purpose of the dialogue is to understand what residual set of 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 - am I ready to work side-by-side with this person project .

    What for?!


    Among the first, the question always arises - why did you decide to work in our company? What do you know about her, why and why. Why not Google, not Yandex or any other large company. The on-duty question helps to start a conversation, but it can also “shoot”: one candidate who poured a mountain of marketing materials spoke about the ecumenical conspiracy and his desire to know him from the inside. We shook his hand and wished him good luck.

    Summary.


    Of course we look, but there are some peculiarities - the first thing that interests you is that you graduated from one or another university or not, but no more than what is interesting. Where he worked, how often he changed jobs, why. What topics and areas involved. It is unlikely that a candidate involved in data mining or web 2.0 will be interested in you, though ... who knows?

    Sometimes you see the name of company X in a resume , you remember that your colleague Vasily worked for this company - you go to Vasya , ask if he, quite by accident, knew the candidate, whether he was a comrade. Word of mouth - and your reputation is ahead of you.

    J factor.


    A typical semiconductor to a new company is a recruiter, on the one hand, he wants to find a specialist, but on the other hand, being not a technical specialist, he is not able to assess the real weight of the candidate well and therefore is looking for a resume using buzz words. Oh wow! Yes, it's Java! But the candidate has Log4J - there must be something for Java. Go!

    For ourselves, we have 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 dull the conversation. There is a proverb The Jack of all trades , which can be translated as " Jack of all trades ", but she also has a sequel -and master of nothing - redundant translation. In a word, if a person is already a mature engineer and he knows what he wants to do, this is also clearly reflected in the resume. And, of course, it is more pleasant to communicate with such people, and we take them much more often.

    But do not take everything too literally - each rule has its pleasant exceptions: once a person with an overload of 9J (this is a very large number) was not just hired, but as an exception they could make it so that he can start working earlier, than the hiring window allows.

    HR response.


    It should be noted that if a person really liked in a technical interview, several managers will fight for him, if he liked in a project interview, which can be considered in some ways as an extension of those. interviews - managers and HR do their best not to miss out on an excellent specialist. In my memory, one very prominent bird made an offer 5 days after the resume was sent.

    My phone rang.


    There are situations when either a person’s resume is not completely delighted, or a person lives very far - in such cases a small telephone interview is conducted, say for 30 minutes. Such a telephone interview (or “pre-interview”), as a rule, is more than enough to understand whether it is worth talking to a person further or not. If it’s worth, an invitation to a face-to-face interview. It doesn’t 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 questions.

    It also happens that by talking on the phone we give a person homework from the category of model tasks or algorithms. Here you can see a lot - and a person’s love for a particular assembly platform - ant, maven, etc., love for unit tests, the ability to design / build architecture, an 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 discussion
    • basic algorithms: sorting, binary search
    • data structures: lists, associative arrays, trees
    • knowledge of English
    • math proficiency
    • design
    • multithreading

    Sprechen Sie Deutsch?


    In order not to go around for too long, I usually ask how quick sorting, or merge sorting, or binary search in English is arranged - of course, expecting the candidate to answer it too, and 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 quick sorting, it will be enough to talk about finding a reference point, dividing into two subarrays and a recursive call. The question has great depth - it is worth explaining the degradation of quick sorting 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 knew about the standard library will be asked: what collections are there and what are the usage contracts. Talking about the pros or cons of this or that approach, we offer the candidate to design / design a solution if he could make, for example, his new programming language. If you have not heard what Gang of Four is , the likelihood that it will be difficult to communicate is great.

    After all, we love to ask all sorts of beautiful approaches that were applied in some well-known framework. Or for example, why Donald Knuth urgently requires that searches in hash structures be done using prime numbers, and Sun engineers , now Oracledoing completely different? They not only read Knut, but also knew something else.

    In general, you can talk about hashCode for a very long time: where it comes from, and why it is not an address, and if it would be an address, then what was good for someone, and for whom it was bad, and how the GC works .

    It is possible that the candidate does not know or did not hear about it - it does not matter - with leading questions you can lead 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 codes, and code on a piece of paper - this principle is known as white board coding. Of course, in life we ​​all code in one or another IDE - be it Eclipse or Idea , OS Emacs or vi . After all, all the tools that we have at their disposal, they simplify and speed up the process, but do not replace us.

    A typical throw-in on this topic is to write a function that returns Nmember of the Fibonacci series. As a rule, at the beginning, the candidate writes a recursive implementation. Good. We clarify the areas of applicability and what side effects occur. The logical continuation is an iterative formula. We do not let up - we want even faster, better, more beautifully - the candidate remembers or not - we make a throw with the exact formula of the Nth member of the series through the golden ratio . And again, sooner or later the question arises of the limits of applicability. One candidate literally killed me - he did not remember how many bits are allocated to the mantissa in a double-precision floating-point number - but as soon as he found out in a couple of seconds he summarized - somewhere 15 significant digits fit in double. How? He explained briefly and clearly, which is very important.

    Fluency Math Account and Brainteasers


    It’s nice when a person knows how to count fluently and very sadly when a person can’t evaluate something simple - be it the duration of the contribution with a known initial amount and percentage, the network delay between Tokyo and London or just the root of 42. What accuracy is it? Which is easy to handle on your fingers.

    As a rule, after half an hour in-person conversation with a candidate, it becomes clear whether you like it or not. In my purely personal opinion, 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 jelly, that is, do not understand, it can somehow solve it or not. However, in the case of a powerful candidate, this can defuse the situation - he has solved some unfamiliar puzzle, and you will draw him another plus sign in karma.

    And here it is not the fluency of the score or the ability to solve puzzles as such that matters, but how much the person is able to freely move between levels of abstractions. Just a minute ago, he talked about the complexity of algorithms in terms of Big- O notation , and now he needs to evaluate when the stack of a recursive procedure ends - with specific numbers - a good engineer builds models not in a vacuum, but in the real world. Where is the guarantee that a person who has 100 gas stations in Moscow will not be surprised at all just the same, 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 the goal of man to fail. In the interview situation, the roles are traditionally very asymmetric - we select questions, and the candidate answers, in addition, for the objectivity of the assessment, there are usually two interviewees, and therefore fail - i.e. 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 - this means that he is a cut above our qualifications and the interview does not mean anything - we cannot adequately assess a person’s level a cut above us. You just need to call more qualified professionals.

    The task is different:
    • understand what the candidate knows
    • roughly appreciate what he doesn't know
    • to 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 there to dance - to leave hints, hints, give separate reference data - to see if a person can get comfortable in an unfamiliar area, and how quickly.
    Anyone can memorize ready-made solutions, but to come up with new solutions is the work of an engineer.

    Chapter 17.


    The fathers of [concurrency-interest] subtly hint that nobody knows concurrency, except that DL and everyone else interpret this scripture as soon as they can. It is amazing when a person arrives who claims that he knows concurrency and even indicates a list of books that 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 monitor to do notify () , if another thread captures the monitor and waits in a call to wait () ”) confuses it. More detailed questions concern the device COWAL , CHM in its basic form, jdk 1.6, cause and effect relationships such as HB, why you need to touch volatile, etc.

    But be that as it may.


    Summing up the interview, I want to understand for myself whether you are ready to work with such a person in one team, side-by-side for a long time, whether you can count on him to be able to replace you during holidays, illnesses, yes and it's just nice to chat over a cup of morning coffee or an 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 fix for him (directly or indirectly, through the process of code review). Sometimes a smart and quick-witted junior fits into the team much better than a stubborn and intractable senior with a lot of knowledge.

    PS


    It would seem, what reason to open the cards and talk about what we asked and ask at interviews? Undoubtedly, the questions that we have described are far from a complete list of what we can ask - as a rule, these are some random questions from a big topic that you can well go deep into the question, and if you wish, you won’t be able to ask all the questions during the interview. And there’s nothing to it.

    The motive is more than simple: at the moment, the market for quality specialists is almost exhausted. On the other hand, there are many people in the IT environment who could be them.

    Get ready for interviews. Not a day, not a week. Work, solve model problems - it can take more than one month, and the investment will pay off with a decent job.

    pps Thank you for your help and assistance in writing this article.cheremin , Alexander Kusurgashev, Glory to Tsarev, and of course, 23derevo .

    Also popular now: