How I Successfully Held Six Interviews in Silicon Valley

Original author: Bay Area Belletrist
  • Transfer
In six days, from August 13 to August 20, 2018, I went through interviews at six Silicon Valley companies (LinkedIn, Yelp, Apple, Amazon, Facebook and Google) and received a job offer from each.



In the preparation process, which I describe below, I relied heavily on this last year’s post - it was he who at one time prompted me to think about whether it was time to move to another company. I didn’t feel like constantly wandering to the other end of the country and back in search of an ideal job, so it was clear that I had to put together my will and plan all the interviews so that they would go one after another. I aimed at vacancies that are relevant to mobile development, but the described approach to training, tips and tricks are also suitable for other cases.

I hope my story will inspire someone who is now in the same position (not quite happy with the current job, wants to move to the bay area, but is a bit short in terms of preparation), dare - who knows what the future holds for them.

Introduction and Statistics





I firmly decided that I want to work in the gulf area, where I can get a large company and grow seriously as a mobile developer. I used to work in startups, and it was a good experience, but this time for several reasons I was looking for a bigger fish (I mean not only the size of the team, but also the capital). I also knew that I didn’t have any specific company yet, as well as understanding what salary I needed to request, so as not to lose in comparison with what I have. Finally, I had no desire to send out a hundred of resumes, as I already did right after university.

With all this in mind, I sent a resume to twenty companies. Four of them (Reddit, Nest, Stripe, Uber) refused me immediately after receiving the letter. Of the remaining sixteen, ten (Lyft, Airbnb, Dropbox, Instagram, YouTube, Square, Robinhood, Twitter, Snap, Slack) did not give any feedback at all. Simple arithmetic suggests that six companies responded and suggested that I talk with a recruiter. As a result, I received six invitations for a telephone interview, six - for an interview in the office and six job offers.

After reviewing my calendar on Google, I estimate that it was distributed like this:

  • 7 meetings with recruiters in 10 days
  • 7 technical interviews in 11 days
  • 29 office interviews in 8 days
  • 3 telephone interview interview traces

Putting these numbers together, we can calculate: I went through 46 interviews in 73 days (if you count the intervals between stages). It was hard, and for many weeks I had to spend all my lunch breaks on meetings. I began to work early in order to be able to leave early and spend evenings on telephone conversations. Complications were created by the fact that it was necessary to continue to carry out their duties properly in their current work - however, I always tried to give priority to it and rescheduled meetings if circumstances required it. I didn’t intend to swing away to make it more convenient to interview. This is unethical, leaves a bad impression, and besides, it may end up not finding a new place, and ruining your reputation on the old one.

Companies (in chronological order)


LinkedIn (Sunnyvale, CA)



LinkedIn, in fact, develops quite nice applications, and they make a considerable contribution to the open source community . All the time of our interaction, I was impressed by both the corporate culture and engineering solutions. If you compare the position in the prestige rating on the iOS market at the beginning and at the end of the whole process, it is this company that has risen most in my eyes.

Yelp (San Francisco, California)



The Yelp application looks great: you feel the fineness of the dressing, talking about thorough knowledge of the iOS platform. I liked the atmosphere in their office. The building itself is very beautiful, and I would be happy to work in a team with any of those people who interviewed. Compared to other companies from my list, this one is quite small, and it affects everything - but it has a positive effect. The team seems to have worked very well, and work processes are unfolding extremely quickly.

Apple (Cupertino, CA)



Apple has long been an integral part of the iOS market (ha ha). I’ve been their rabid fan since childhood (well, from the age of twelve for sure). It was thanks to their Mac computers that I got carried away with programming. The iPhone SDK has helped me to make and roll out my first application. When they invited me to have an interview in the office, and then become part of the team - it was like in a dream. I don’t even know what else to say on their account.

Amazon (Palo Alto, California)



I would not call Amazon a company focused primarily on mobile development, rather the opposite. However, the position and team met the criteria that I set for myself at the beginning. The office in Palo Alto, where I interviewed, did not impress me, but this is a temporary refuge and soon they should move to some building that is more in line with Amazon style. So in this regard, I just had no luck with time. The people I talked to seemed very enthusiastic about their projects. Literally from every company I heard: “We have an atmosphere here just like in startups!”, But with Amazon it really seems to be true.

Facebook (Menlo Park, CA)



I was interviewed in their newest building. In general, everything seemed to be cool, but I remember the details of the meeting quite vaguely: it was my fifth day of interviews in a row and the lack of sleep made itself felt. I only remember that I received a lot of pleasure from communicating with the employees and that the meeting at dinner turned out to be very informative.

Google (Mountain View, CA)



At Google, as I understand it, interviews for a certain position are conducted more or less in a pattern. I managed to talk with many members of the team working on one of the largest iOS products of the company, but I applied for a position not related specifically to their activities. After the hiring committee gave the go-ahead, I was transferred to the next stage, where they select the right team, and finally found a suitable option. This is a very long process, when compared with the pace of negotiations of other teams with whom I spoke. I had to constantly keep other employers in the know how we are doing business with Google, and Google, respectively, what we have come up with with other companies.

Training plan


I will make it clear: when I started, I was theoretically able to solve most of the tasks from the "Simple" section on Leetcode in about thirty minutes and about 25% of the tasks from the "Average difficulty" section, if you did not set time limits. Solving the tasks from the “Complex” section for me then was like trying to prove the equality of the classes NP and P. In short, I had a lot of work to do.

To tighten the algorithms, I first turned to the book Cracking the Coding Interview. On Sundays, in the morning, I got up, walked to the cafe, and there I solved the problems for Objective-C. Having worked out a decent number of tasks from the book (somewhere around thirty-five), I switched to Leetcode and reviewed the tasks that corresponded to the chapters I had completed. After several weeks of such classes, I felt that I had already learned the “basics” quite well and moved on to the next stage.

Armed with my basic knowledge, I took up the Elements of Programming Interviews. This book is much more complicated than the previous one. Recommended lesson plans are given there, and I tried not to deviate too much from them. If I remember correctly, one was designed for four weeks of training, and I went through it almost completely. In my opinion, it is critically important to practice solving the tasks on the board or to conduct a telephone rehearsal with someone. Moreover, by “critically important” I mean not just “useful”, but that it should be considered as an obligatory element of the curriculum. I have no doubt that someone will be able to get a job without it, but for myself I did not find a better way to develop my skills.

If someone needs a partner for rehearsing interviews for posts related to iOS, then I will be happy to help. Find me at CS Career Hackers- contact, you look, we’ll agree somehow, if I’m not very busy. And if not, there are other people who will willingly support you. Of course, you will be embarrassed. This is the whole point. If everything worked out by itself, then there was no sense in practicing, right? If during rehearsals at the blackboard or on the phone, you are very embarrassed or feel out of place, then you are doing exactly what you need - train yourself in advance. Personally, at first I felt very constrained, and then at some point it passed, so the training more than paid off.

After a month of daily assignment completion (two to three hours on weekdays, more on weekends) I focused on the section “ Popular interview questions"On Leetcode. I did not go through all of them, but went through enough. To prepare for an interview on algorithms, the main thing is to reach the level where you can find a solution right in the course of the interview. It’s not worth trying to memorize all the decisions, it’s impossible. Almost all the tasks that I encountered during that week of interviews were new to me - but at the same time, they looked like what I had already seen. After all, the development process itself occurs according to the same scheme. Many tasks in general outline each other, but each case has a special set of restrictions.

What i learned


Below I will list in a list those conclusions that I have made for myself, in random order. All these recommendations would be very useful to me if I knew them in advance - both those related to the preparation for technical interviews, and those that talk about planning and other nuances that are not related to programming. There is nothing in them that applies solely and exclusively to iOS, so I think that in general terms they are suitable for all interviews in our industry.

  • Do not drop. When I was looking for my first serious job after college, I only had enough for a week or two of classes. I reasoned like this: apparently, it’s just not given to me. After all, more than a week has passed, and almost no progress has been observed, so what's the point of wasting time further? But this time I decided that I had no choice. After some time, the picture began to take shape. It will be necessary to invest a lot of work, but it is the desire to study that distinguishes successful applicants from others.
  • Training is our (almost) everything. Of course, a certain level of innate abilities is also needed here, but practice (that is, training) can change a lot, a lot. People are not hired for what they were born with. They are hired for the fact that they are able to successfully fulfill certain duties, and where and when they received the necessary knowledge does not matter.
  • Training with friends is our rest. It doesn’t matter whether you are rehearsing at the blackboard or using something like Codeshare , the bottom line is that when you plunge into the atmosphere of an interview with someone for a long time, it is far from scary. If during the interview the brain suddenly fails and you give out some kind of stupidity, it will not unsettle you. Well, if you manage to find a person who knows the solutions even for those tasks that you don’t understand, and who can push you in the right direction - it will be generally perfect. Seriously, such training is worth its weight in gold.
  • Coverage is decisive. You can train before stupefying (and even productively) - and still not get a job, because your resume did not get to the right person or you were attacked by a stupor at the blackboard and you did not solve the problem on time. The best guarantee is to give yourself the maximum chance. That is, send a resume to everyone who suits you and to whom you fit the requirements, and not just the best option. I've selected a whole top twenty companies!
  • Decision is a process, not a result. Memorization will not achieve anything. About a week I was offered about twenty tasks on algorithms, and only one of them was familiar to me (which I immediately reported, although many would consider it superfluous). But I learned to identify patterns, and so I managed to find solutions on the go.
  • Do not give up. I got stuck more than once or twice, and the interviewer had to bring me to the correct answer. This did not stop me from receiving job offers from all companies. There was one interview, which I felt hopelessly failed (four of the five sessions, in my opinion, pulled only a definite “no”), but in fact, they eventually invited me to the team. In short, what only does not happen in life.
  • Do not rush to sweep tasks. When I was studying with a friend, he often dismissed the most difficult tasks, saying that this would not be useful to me. Interestingly, of the four types of tasks that, according to him, “they definitely won’t fall”, two were caught. Not quite in the form in which we solved them, but in a very similar way. If during the training process you regularly come across some kind of concept - work it out.
  • Do not underestimate the importance of soft skills. I think that I owe a large part of my success to the fact that my (fairly honest) answers to the questions were in line with the company's policy. I have a theory that very strong developers sometimes find it difficult to find a decent job simply because they behave rudely, lie or don’t know how to stay in situations that are not related to programming. In my opinion, all these are good reasons to refuse a candidate. Therefore, practice your behavior in the same way as technical skills.
  • Show your knowledge. During interviews, situations often occurred when, in response to a question, I mentioned some of my other skills with the caveat that due to lack of time I could not tell in detail about the implementation of this solution. Are you talking about lines? Show in your decision that you know how to work with Unicode, or tell how to support it. Calling a private method? Explain how things work with methods in Objective-C. Updating data in table view? List the animations you can support. If you are poorly versed in something, raising this topic, of course, is not worth it. But if you have something to say, take the opportunity to go beyond the narrow framework into which the initial question drives you, and show your advantage over those who do not leave the beaten track.
  • Try not to reach the bar, but to raise it. The impression that you make at the interview depends not only on whether you will be offered a job, but also on what conditions it will be offered. If at some point you will be sure that your knowledge for this vacancy is enough - excellent! But do not forget: there is a huge difference between “more or less reaching out” and “absolutely right”. Your goal should be the second. The conditions that were initially offered to me (that is, before the negotiations) were very, very good, and I think the interviews played an important role here.

Finally


That's it! The marathon was still there, but I do not regret anything. I sincerely hope that everything I wrote here will help someone get off the ground in pursuit of the dream. If someone is interested in tips relevant specifically for the iOS segment, I can share it, so write in the comments .

If this encourages you: this is my second job after college, I have about two and a half years of experience, no big names in my resume, I graduated from a very modest college, which never had large companies at the "job fair", I started the process preparation in late April, and began to send out a resume in June-July, and finally, in just a few months I got a job that I could only dream of.

Finally, I want to once again advertise the CS Career Hackers community. If you are looking for a place to practice, or just want to chat with people who are in your position (or are familiar with him, on either side), please do not pass by. I came across it only a few months after signing the contract, but anyway, it's great there. Good luck with your preparations!

Also popular now: