After 2 years as a C # developer in a small English company in the construction industry, I decided to find out my value as a specialist in the UK labor market. Despite the fact that most of the vacancies are roughly the same: “It takes a man-orchestra with 10+ years of experience for a very interesting job,” – I deliberately chose the positions of an exclusively junior developer that did not contain the numbers 5+, 10+ and 15+ in description. How it was – read on.
This article had been in my outline for two years, and I doubted whether it was worth publishing at all. During this time, some of the details of the stories were lost, but I remember inadequacy in interviews-interrogations well. The events described took place before the pandemic, around 2019. Therefore, the article differs from modern realities. For example, face-to-face interview, which is practically unnecessary today.
On a cold spring morning, I was taking a taxi to the airport to travel to London for an interview for the position of Junior C ++ Developer. A small networking and security company invited me for a personal interview after spending the entire weekend doing their homework. I was informed that the developers praised my solutions, but they also had some comments that they would not tell me so that their solutions would not be leaked to the network. This was a preliminary test, consisting of a dozen problems on arrays, pointers in C / C ++, arrays of pointers, Fibonacci numbers, as well as statistics and one theoretical question about the finalize () method in Java.
I was not given any specific instructions on how to prepare for the interview. Moreover, it was reported that no special training was required. And here I am on the plane, sitting – reading a long list of differences between Java and C #, just like that, just in case. It is to the credit of the company that they booked me a hotel the night before the interview. So in the morning, having had a good night’s sleep, I went to the appointed address.
One of the developers met me, very friendly, and invited me to the glass room, from where almost the entire open space was visible. He asked if I had arrived normally and told what the company was doing. Then I told about myself. He asked me some technical questions and asked me to solve a couple of simple problems on the board. Then he invited another developer, with whom we discussed in detail how I implemented a scientific computing project on a cluster using C ++. He asked extremely meaningful questions about my topic, which left a good impression.
After the break, another friend came to interview me, who was introduced to me as a highly qualified specialist who, part-time, “solves business problems”. Probably, seeing in my face another problem for the business, he decided to puzzle me outright by bypassing the binary tree. To this, I must admit, I was not very ready. And if I somehow remembered a simple workaround, then some tricky calculation of the sum in the tree, where it was necessary to use some kind of sliding window method (try to come up with this while standing at the board), I specifically screwed up. This interview ended. The whole process took approximately 4 hours.
Upon returning home, they sent me a refusal, commenting on this by the fact that there were 2 positive and 1 negative reviews on my candidacy. In general, they know how to masterfully bring out “june-impostors” who are not able to click puzzles on trees on the go. Now I knew that the skill of working with trees is not only absolutely necessary, but also must be decisive in hiring a programmer for a job, regardless of other skills and experience. In my case, the recommendation of the internal recruiter to come for interviews without preparation was especially “appropriate”. As the saying goes, “don’t believe the prosecutor’s smile.”
In 2021, I again submitted my resume to the same office, because I am interested in this field of activity. The same tasks and the usual, not exhausting, as opposed to the previous, interview awaited me. And a refusal without specifics. Probably, this time my financial expectations of £ 60K (market average) seemed too high to them. I was told that yesterday’s students work for “up to £ 40K”, apparently hinting at what salary to ask for. Thank you, but I am no longer a student.
3. Garbage collector
Let’s go back to 2019. Another company, a vacancy for a C # developer, and again a test task. This time I had an online test on algorithms and data structures on the Codility website. The essence of the test is to write a function that solves a strictly specified problem in any of the available programming languages. Then the solution passes several unit tests on hidden datasets and, based on the number of successful tests, a final score is formed.
The investment company that invited me to take this test made it clear that their specialty is financial transactions, and everything is very serious there and they supposedly need real specialists. And a programming test is needed to weed out all sorts of crooks, and the tasks for this will be appropriate. I took this test very seriously, having previously shoveled a bunch of tasks over trees, sliding arrays and other nonsense that I had never encountered before.
The online test included 3 tasks for 3 hours. Two of them were relatively simple, although not without a trick, and one seemed to me just deadly complexity. Here is the condition in your own words:
An array of integers from a range is given [-100; 100]… The maximum size is a million items (or a billion – I don’t remember exactly). Implement an efficient algorithm for counting the number of all possible contiguous subarrays that have zero sum of elements. If there are more than a billion of them, return -1.
The program execution time is limited, so there can be no question of any O (n ^ 2) or even more O (n ^ 3). Here I had to sweat a lot to find an acceptable solution that would work fast enough to pass the test against the clock. I did not estimate the complexity of my solution, but I suppose that it was slightly worse than O (n * log (n)). As a result, I got the maximum score of 100 points out of 100 on each of the three problems. Surely, this office did not see such a result every day, and they promptly sent me an invitation to a telephone interview.
I talked with the lord of all the lords (yes, that’s how he introduced himself). Of course, there was not a single general question or discussion of the problems I solved – this is all a waste of time. His very first question was “How does the .NET garbage collector work?” – yes, right off the bat. No hello, no suggestive discussion, which is usually designed to nudge an answer. Take out and put an excerpt from the runtime specification. Naturally, I did not know the specifics of .NET in this matter, and I directly said about it, but still tried to answer in essence. I told by what principles garbage collectors are usually tripled – building a tree of links, repacking objects in memory, etc. commonplace things. In response, he quoted me a spec about three object generations. From the interviewer’s point of view, knowledge of the specific GC implementation was especially important and my general understanding of it was clearly not enough.
The next question was how collision resolution works in Hashset. I thought he was kidding by asking such random questions. Remembering university lectures, I tried to talk about building a hash tree and placing collisions in a separate structure, but I never knew and do not know exactly how this is implemented in C #.
Probably, some discerning senior with 10+ years of experience reading this article is already feeling indignation from the lack of author’s qualifications. Indeed, how can one claim to be a programmer without proper knowledge of trees, hash tables and garbage collectors ?! It’s amazing how someone even hired him as a developer, and not distribute flyers!
In short, my interview with the mega-señor continued for a few more minutes in the same spirit and with a subsequent refusal. It’s good that I didn’t have to go anywhere and personally attend such an interrogation. Looking back, I can definitely say that this office has shown one of the worst attitudes towards a job seeker I have ever encountered.
4. Instead of a conclusion
Here I planned to describe at least one more interview, but everything that happened in it was very similar: closing gaps in theory, test problems, strange interview questions, refusal.
Summarizing my experience, I can say the following – intensive preparation for the interview and the study of previous mistakes do not guarantee anything. Jun can be asked whatever you want, and he is unlikely to get away with it easily. Job seekers for junior positions are knocked down at interviews in batches, and for this in companies, apparently, there are special “seniors”.
Well, the reader will say, let’s say we prepared for a long time and memorized the specification of the language and its entire ecosystem. Then how about a phone math test? Or stress testing with questions like “who do you see yourself in N years” and “what if your colleague is autistic”? Oh yeah, we still forgot to figure out the behavior of a random piece of shit out of context and without the Main () method.
Being in person for the interview only made things more difficult. The fact is that in 2021, with the popularization of remote work, it became an order of magnitude easier to look for a new job than in 2019. Today, it is not necessary to ask your superiors for time off and get permission in advance for every sneeze. In those days, before going for an interview, you had to first take a day off, study the transport schedule and plan a route in an unfamiliar city, which is why many interviews turned into a difficult quest, which already required a lot of preparation. Negligence towards the applicant, subsequently, was perceived as a mockery.
However, the described events are long in the past and are only isolated examples from my experience. It is possible that the companies mentioned do hire junior developers and sometimes even provide them with normal conditions. However, my experience has taught me not so much to prepare for difficult questions as to recognize the “bells” in the early stages.
(Picture with garbage truck from of this blog.)