It so happened that I wanted to become a programmer while still studying at a university in Moscow, but I already became outside of Russia and not immediately - the path was long and thorny. I went to a lot of interviews (at first I was looking, then they were already looking for me), delved into the subtleties of work and thought about the topic of how to become a good programmer.
One of the aspects that is relevant throughout the career is job search and the passage of the interview. I myself conducted very few interviews (4-5), but visited a large number of them (> 100). I had a 3-4 job search period for the last ~ 7 years, when I went to an interview for a month or two, sometimes 1-2-3 per day.
In this article I would like to share the experience of the interview, give some sort of systematization, how it looks and happens, what to prepare for.
What I would be interested to know in the comments - as is the case with others, especially in Moscow / Russia, there are certainly differences with Europe.
Based on my personal experience, talking with colleagues, reading forums, books and so on. I would say this - this is my subjective opinion on the situation as a whole, this post claims to be complete information and that it covers most, if not all, aspects. Where my opinion, I write, in my opinion. Otherwise, I claim objectivity.
Almost all my experience is interviewing IT at European financial companies for a java (senior) developer position, mainly in London. There is no web (in any form, front / end-backend), no integration, no work for the customer (by the type - there is CRM and the company implements it in banks), Amazon, Facebook, Google are also not represented - I do not know how there and not really strive, I guess. My experience starts from a simple programmer and ends with senior developer. Team / techlead / manager - no.
The interview process is statistical, i.e. - we are going wherever it is interesting, something will not work out simply because we are not lucky, we have already hired, some other considerations of the momentum or experience are not enough, or simply the candidate has been found better. Those. It is very difficult to pass an interview if it is only one company position. In this sense, I think Google is problematic - he is so alone. There are many banks involved in similar things, not in one, because in the other there is an interesting project, the day will be successful, etc.
An interview is a game according to its own rules, which it is customary to observe, knowledge of these rules helps to stand out the expectations and the process of preparation and passing. In the end, it shows that you know how to play by the rules and accept them, know how to take into account the customs of the team. Nobody writes sorting manually, and even synchronized is unlikely to be written, let alone notify / notifyAll. No less is it necessary to have a detailed knowledge of the internal structure of the hashmap - but this is one of the most popular questions - 70 percent of interviews do not go without it, with this question only the contract between equals and hashcode can argue. On the other hand, it speaks of the overall preparation of the candidate, how well he approaches the work task (and the search for work is also a kind of small project).
Forget waiting for an answer. No answer - no answer.
Sometimes it seemed to me that it was their rule of good tone — they did not respond if they were not interested. This is an example with recruiters - if you answered him that work is not needed now, then this is a kind of weakling. For they themselves, of course, do not label, if they don’t need, logic - what time to spend. Generally, recruiters, these are amazing people, once it began to seem to me that they are like sirens - it’s worth answering and that’s all, you’ve already been to an interview that you wouldn’t have. The ability to clearly say no, or articulate what I need, is a good skill. I trust agents, but I never trust them. I take only the facts, and those that can be proved from the category “this is a new project, everything is very good there” - this is air shaking. And if "they are ready to raise the salary by 10 thousand" - then this is already something :-)
Some curious information - the agent (agency) gets a good part of the annual salary of a successful candidate (and past the probationary period). It seems that the company has a separate budget for agents, i.e. If you find the same job without an agent, then, most likely, you can hardly count on a large salary. I don’t quite understand why this may be different in small companies.
From agents, of course, there is a sense, sometimes they are useful and good. The fact is that some very interesting vacancies came to me only through agents. But the opposite is true, in spite of popular opinion, work without an agent can and should be found. Especially if you are interested in working in a less clear area - we take the top 20 companies around the world / country in this industry and go to their sites. So I found my first job in London, which I was very pleased with.
It is also worth mentioning that it is necessary to prepare for the interview, the form at the beginning of the race is significantly different after a month of interviews. Questions are repeated, simple tasks are written simply, immediately and quickly. The story of his experiences, strengths, projects and plans for the future rebounds from the teeth. At some point, I wanted to carry a poster with the architecture of our system, so that it was more convenient to tell what I was doing.
In general, always and everywhere - the average level does not interest, it is necessary to be above the average, including, and above the abilities, in the sense that it is necessary to give everything to the fullest.
Financial IT is a huge bureaucracy, and we must be able to exist in it, yes, resources are spent on it and everything is inefficient, but these are the rules and sometimes there is simply no better option. Of the benefits - there are interesting, very interesting projects, bureaucracy and business analysts do not really get and very good money.
I will not consider the preparation for the interview at all. We believe that this is a past stage, the necessary knowledge is there, and there are invitations for an interview.
The preliminary stage is a telephone interview.
Often with an agent, they will ask basic information from a resume, whether they really work now where you work, salary expectations and current salary (this is a separate topic - I’ll tell you below), visa status and how quickly you can get to work. The agent, as a rule, will tell about the company and about the vacancy (but alas, only general information) and ask if I am interested in this and in general what I am looking for. They ask seriously about motivation, why you are looking for, changing your job.
If the conversation is directly with a company representative, then the first telephone conversation may be with HR or immediately with a team representative in which they hire, as a rule, a hiring manager, i.e. someone is pretty blue, who determines and filters out the right candidates, and whether it is worth spending energy on a technical interview.
The advantage is that you can immediately find out more information about the project and refuse, because not interested, or vice versa even more interested in understanding that it is very interesting.
There were a few cases (but they were consistently) when everything starts hard already at the first interview - hello, hello, well, let's go through JVA, algorithms, and so on. Just 40-50 minutes of those questions in the spirit of the computer science exam.
I have had a taboo on this topic for quite a while - I didn’t want to know how much my colleagues received - it would demotivate me and lower my self-esteem. Then I changed my point of view on the opposite - hiding salary is good for the employer, so I don’t mind sharing my colleagues with my colleagues, but not just acquaintances. For London - you can look at the glassdoor and multiply by 1.5. for some reason, the upper part of the salaries is not represented there, although this is the sweetest part and, importantly, is quite achievable. In any case, a programmer in London at the bank is very, very good money and the standard of living is higher than in Moscow (this is my subjective opinion, based on my ideas about the standard of living and needs, as the cities themselves impose restrictions, in Moscow, I it seems, I would not have thought about a mortgage, in London, Europe, 2% per annum - norms, a 20-25% first installment is already enough).
Returning to the interview, I understand that the employer wants to see a candidate with a certain amount. I would say that it’s better to answer at some intervals, but you have to put it wisely so that later it doesn’t turn out, everything is fine, but I want more money. In general, I would say that + 10-15% of the current salary is the average option. A salary increase of almost doubled is also possible and an annual increase of 10% at the current place is also, no matter what the agents say. Let me explain, on the one hand, the more expensive the agent sells, the more he will receive, but the priority is to sell you at all, and for how much, as it will, 5-10% of the difference in your salary for an agent is not such a big difference in that the agent himself will get his hands (this assumption).
I had an interesting observation of how the interview itself was organized, where it was held, the office itself and the meeting room. Confirmation of the date, time, place - rarely when just by phone, but it was. As a rule - the letter. Often from an agent with a minimum of information. The most pleasant thing is a well-formatted letter, with names and positions, with whom the meeting is and what is interesting - with indication of the negotiation room (which means they know how to plan in advance, and not to look for a free conversation 5 minutes before the interview), agents also often send an interviewer's interview - save me time, because I always view the profile of the person with whom I potentially have to work. If there are his articles - I read them.
By the way, if several people are announced, it’s normal to expect that all of them will not come if the most important of them delegates this to someone. But, IMHO, it's nice when all the declared guests come.
Then everything is standard, came, reported to the reception, came down for you or sent one to the meeting room. As a rule, an employee comes down behind you and leads you yourself. Time in the elevator and on the road can also be used for negotiations.
And by the way - how the company is like recruiting candidates is also an indicator. An interview is a two-way process, as a company, some people approach this process, as far as they can talk, this is also a characteristic of the company / team. This, of course, is subjective, it seems to me that it is not the best choice to ask all the Collections interfaces at the level, you know / do not know, it is much more interesting to choose a topic and develop it further, the very same hashMap itself - what are the differences from CHM, how can you keep map in memory, ask about the access time, what happens during rehashing, and further develop the topic of how items are stored in collision lists (list, tree, which tree, etc.))
Also, if the interview was not successful, they refused, but it seems to you that you performed well - this is also not a reason to get upset, if you don’t come up and there is no spark, then it’s better not to start. In this sense, I like the idea that if it does not work out, perhaps I don’t need to go there. I also like the approach (google by the way) - it’s better not to hire a good employee than to hire a bad one. The same is true for a candidate - it is better not to get into a good company than to get into a bad one.
I was curious about two things - the actual start time of the interview (I always came 10 minutes before the start) and which pictures weigh on the walls, the design of meeting rooms - as a rule, these are negotiation rooms for bank customers and they invest a lot of money in their design.
There is such a moment - an interview for 2 hours with 4 people is announced, and after an hour they say thank you. It is clear that you did not pass. I don’t know how to relate to this, it’s not that - I’m offended, I’ve gotten ready, let them listen (or even if I’ll get the practice of passing the interview) - everything is clear and yes, tough; rather, it’s probably that it was a bad performance, and if you continue, everything will be better. But here, again, logic means that it is better not to hire the good than to hire the bad.
The most basic, as I described, telephone conversation. Technical questions can be, but something very difficult or complex is obviously difficult to ask. Implementation details in places quick sort are unlikely to ask, and if they do, they need to run, because, IMHO, this is inadequate.
Further, my favorite recently (it was not 5-7 years ago or was less) - online programming like hackerrank or online tests.
Tests with a choice of answer from the list are rarely and, in my opinion, rarely does the test adequately reflect the candidate's preparation, although I came across one, just wonderful, 12 minutes, 12 rather intelligible questions. Therefore, I think this is such a coarse filter.
Online programming with the interviewer looks like this - go to the site, log in, and you have an online IDE in front of you, which is visible to you and the interviewer. He gives you tasks, and you immediately write code, run it, etc. Only once I met, when it was just a Google Doc, everything else is quite a simple online IDE.
Old and good tests, when a description of the problem is simply given, and you need to send a solution - sometimes for a while, sometimes simply, within 1-2-3-4 days.
According to the format of tasks - homework, as a rule, very intelligible and meaningful. This is either algorithmically something (something like finding a path in a maze, or a small system according to calculations of the average value from the price stream and the storage of the most recent, there is a little need to design classes and write everything with an emphasis on low latency) or, as I I call it, on the OOP - there is a simple domain, you just need to write a program that displays the task. For example, we have a hospital, there are patients in it, each patient is given a certain list of drugs, the drugs interact with each other according to certain rules causing a different effect (if you take A and B, then the patient will get sick X, if patients with D disease were not given drug and he will die). It is necessary to write a program that, according to a given list of drugs, gives the result of applying them to the list of patients (each of which has its own original disease). Another example is to write an ATM (attention to the atomic nature of transactions). Another one is to write a game of rock paper scissors.
On-line programming for a time (without human intervention from the other side) - as a rule, this is something algorithmic from traversing a tree, working with arrays - everything that geelforgeeks has is more frequent and more fuzzy. Unfortunately, the solution of many problems depends on whether she met before or not, often the tasks are complex and taken (and formulated) in open sources, it seems to me that this is not a very good choice of tasks, the interviewers are unlikely to want to test the skills of using Google.
On-line programming with the interviewer is also an interesting look, the tasks are much simpler, but the stress and unusualness of the IDE is added, the main thing here is not to be silent, to reason and not to rush to write the solution right away. Think and estimate. An example of a task that can be - a set of values ​​is given, each value is given a probability. It is necessary to write a program that gives these values ​​with a given probability. In my opinion complicated, but feasible.
Another example - there is a long operation that takes one argument as input, there are many threads that call and do this operation. Write a wrapper that would optimize calls (caching should be done with emphasis on multithreading, so that if the second thread calls an operation with the same value and an operation in the calculation process, then you do not need to start the calculation again, you just have to wait). The devil is known to be in the details and extreme cases.
More about agents - sometimes it happens that agents know, as it were, that they will ask and can describe it somehow. This is a gray area, on the one hand it is good to know whether the interview will be purely technical or just talk, what is expected of you, etc. Its OK. But to say specific tasks, I think this is not very good, especially with regard to the company, also, the candidate will look very bad if he magically wrote the solution to the problem right away, but could not explain it. Therefore, I would prefer not to use such hints.
Just talk.
By the conversation itself - 50/50 will be 1 / many interviewers, in general, it's not bad when there are several at once, and it is interesting when it looks like a cross-examination - everyone asks a lot.
Knowledge of the decision does not guarantee anything, as well as inaccuracies, incompleteness of the decision, the answer.
The task itself, the question is the beginning of a conversation on the topic. For example, how to merge two sorted arrays. Then, if we have more than 2 arrays. What is the complexity, how to optimize, and what if we change this and that. In my opinion, this is a very good approach - you are not threatened with a complex algorithm, but something simple is given, and then the conversation begins on a topic, a complication.
normal hard
complicated
easy
the norm
difficult (from the category, it is not clear who made them up and for whom)
My favorite tasks are dynamic programming. They were asked a little, but once they asked Pts and Pts in a steep office for Pts to take a steep position and, it seems to me, they took me precisely because I solved this problem, because there was nothing else difficult there.
Feel free to ask your colleagues to interview you, and enjoy all that you do, including interviews and job search.
Source: https://habr.com/ru/post/430788/