Here, many tell how to conduct interviews. Well, I also decided to tell you how it happens with me.
I am a lead developer. This means, in particular, that I can independently decide how many and which specialists should be hired to carry out the project. The salary level, as a rule, is initially determined by me, then the director / owner of the company approves it.
As for the salary. Usually in such topics they write, they say, "you offer low wages, but you demand a lot." So, the following describes the interview of the minimum complexity, which I spend with all candidates for any position and for any salary. Those. In my opinion, this interview should take place any person who calls himself a programmer, regardless of salary.
Yes, what kind of programmer are we talking about? I develop web projects - site engines, online auctions, hosting management systems, intranets and other nonsense, where there is a base, engine and web interface. Accordingly, I recruit staff who are versed in such things.
')
I do not ask philosophical questions like "Who do you see yourself in five years." This is done by the personnel department. I speak with candidates exclusively on technical topics.
The interview consists of two parts - theoretical and practical. In the theoretical part, I ask the candidate to briefly tell what he knows about all the technologies mentioned in the summary.
Here, as a rule, candidates make the first mistake - they write in the resume what they don’t really know. Classic dialogue:
- Where did you apply XSLT?
- Well ... we were told something about this at the university ...
Or (real case):
- Are you familiar with the work of DNS?
- Well, yes, che there, was the case ...
- Well, tell me, what level domain vkontakte.ru?
- Well ... high level, probably ...
I can understand if a person five years ago used some rare, uncommon technology in a project, and now he does not remember how it worked there. But if a person’s resume says “good knowledge of MySQL”, but in fact “yes, I don’t remember, it’s been a long time and, honestly, I’ve worked a little with muscle ...” then this is a big fat minus. You do not know something - do not powder my brain and do not take time.
In general, the theoretical part is highly dependent on the candidate’s resume. Regardless of the summary, I usually ask two questions - “What is the most difficult project you have done” and “Did you have to work with any external API, such as payment systems or Google maps”. If the case had and clearly tells - this is a plus. A note like “receiving notifications from Yandex money sucks, the webmans have done much more conveniently (with the justification of such an opinion)” is a big fat plus.
A set of practical questions I have long settled down and looks like this:
1) Test SQL knowledge
Task: “There is a table with two fields - Department and Employee, it is required to withdraw those departments in which more than five employees work.”
The candidate’s understanding of the work of group functions and the HAVING operator is checked.
Half of the people with the group are familiar theoretically. The other half, familiar with the group, often gives the following result:
SELECT otdel FROM table WHERE COUNT (sotrudnik)> 5 GROUP BY otdel
This option, of course, does not work, since aggregate functions cannot be used in the WHERE operator.
Rare units are generally familiar with the transcendental operator HAVING. At the expense of HAVING'a I bzik. Personal observations show that if a person knows and knows how to apply HAVING, then this is a sensible person who read the documentation and solved practical problems. It's like a litmus test.
A candidate who cannot write this request immediately gets a big fat minus.
2) Testing the knowledge of the working environment
Task: “The test.local website has been opened in the browser, you need to find the directory where the files of this site are located.”
The candidate’s knowledge of the DNS system is checked (determine the server’s IP), the ability to work with SSH (log in to the server), the understanding that a certain web server gives the sites (no tricks, Apache is used), the ability to read the Apache config and find the DocumentRoot directive indicating to the desired directory.
For a significant part of people (it surprises and laughs me at the same time), the brain explodes when trying to understand what “test.local” is. The next part is lost at the rezolving stage of this host (they don’t know about the host, or at least about the banal ping). Well, not all of the others can read the Apache config. It is especially difficult to read the config, in which virtual hosts are placed in a separate file with the Include directive.
3) Perl knowledge test
Here I have this position: I never ask tricky questions, the answer to which the hell immediately figure out, but realizing - nowhere do you use it. Those. these are questions like “what would happen if you write print $ i ++ + ++ $ i” or “write a recursive regular expression to test nested brackets”.
The standard task is quite simple: “Write a script that reads a text file, processes it line by line and displays the result to the browser. The file contains e-mails, processing is to check e-mails for validity using a regular expression. "
The ability to create an executable Perl script, the ability to work with files, experience with regular expressions and the ability to give the result in a readable form to the browser is checked.
Many, writing a script "hello world", calling it from the browser and receiving an error 403 Forbidden, stand in a dead end. I don’t know how it happens, but many people don’t know that the script needs to be made executable. And who knows - they often can’t remember the chmod permissions change command.
Further reading from a file becomes a mystical riddle. If the opening of the open descriptor is familiar to almost everyone, then not everybody guesses to make a cycle by \ <FILEHANDLE \>.
Regular to check e-mail'a I ask you to write complex so much, how many candidates can do it in a few minutes. If the spelling of the regular season is delayed longer than five minutes, I ask you to stop there. In almost 100% of cases, the result is as follows:
/\w+?@\w+?\.\w+?/
I consider this result unsatisfactory. Usually, in this case, I ask a “backfill question” - “which invalid character will pass this test?”. In response, I want to hear the "underscore". Almost none responds.
And finally, the next stumbling block is the output to the browser. About half do not realize that the output of the actual result should be preceded by the output of the HTTP header. The other half, which remembers that something must be withdrawn, does not remember what it is that should be withdrawn.
In terms of the situation, I can also ask you to complicate the script — to put the check into a separate function, put the function into a module, and, for the most intelligent, make the module object-oriented. About a quarter of the candidates reach these challenging stages.
The results of the interviews invariably upset me. The vast majority of candidates are terrible.