• I interviewed at five top companies in Silicon Valley in five days, and luckily got five job offers
  • Xiaohan Zeng
  • The Nuggets translation Project
  • Permanent link to this article: github.com/xitu/gold-m…
  • Translator: Rambo Zhu
  • Proofreader: Hadeswith666, Germxu

My Road to Silicon Valley – five offers from top Internet companies in five days

From July 24 to 28, 2017, I interviewed LinkedIn, Salesforce Einstein, Google, Airbnb, and Facebook and got offers from all five companies.

It was an amazing experience and I was lucky because my hard work paid off. So I decided to write about how I prepared, the interview process, and share my feelings about the five companies.


How to start

I’ve been at Groupon for almost three years. This is my first job, and I’ve been working on amazing projects with amazing teams. Our team has been doing cool things, being very influential within the company and publishing papers and so on. Even though I was always eager to learn more, I felt like my learning rate was starting to slow down. As a software engineer in Chicago, I was seduced by the great companies in the Bay Area.

Life is short and careers are even shorter. After talking to my wife and getting her full support, I decided to take action and make my first career move.

Fully prepared

While I’ve always been fascinated by machine learning positions, the names and interview processes for these positions are slightly different at the five companies listed above. Three of the positions were machine learning engineers, Salesforce data engineers and Airbnb software engineers. So I had to prepare for three different areas of knowledge: coding, machine learning, and system design.

I also had a full-time job, which took me two or three months to prepare. Here’s how I prepared for these three areas.

coding

While I agree that coding interviews may not be the best way to assess a candidate’s skills, it’s indisputable that there’s no better way to prove in a short amount of time that a candidate is a good programmer. In my opinion, it is inevitable to get a programmer’s work code test

I mainly use LeetCode and Geeksforgeeks for practice. Hackerrank and Lintcode are also good practice tools. I spent a few weeks looking at common data structures and algorithms. Then I focused on areas I wasn’t familiar with before, and finally I did some FAQ exercises. I usually only do two problems a day because of time constraints.

To talk about some ideas,

  1. Practice. What’s the point
  2. Cover as many different types of questions as possible, and take the time to figure each one out. Don’t try to do everything in Leetcode. I swiped a total of about 70 questions on Leetcode, which I thought was enough. In my opinion, if you can’t do 70 questions, you’re not doing it right, even if you can’t do 700 questions
  3. Brush the hardest ones, and the rest will be easy
  4. If a problem is stuck for more than two hours, check out someone else’s solution; the extra time may not be worth it
  5. When you have done so, compare your answers with those submitted by others. I am often struck by the intelligent and elegant solutions of other children, especially the problems solved by a single line of Python code
  6. Answer the questions in the programming language you’re most familiar with, and explain them in an easy-to-understand way to your interviewer

The system design

This field has more to do with actual work experience. Many questions will be asked in the system design interview, including but not limited to system architecture, object-oriented design, database design, distributed system design, high scale systems, etc.

There are many online resources to help us practice. Most of the time I read articles about system design and distributed system design interviews and analysis of design cases. Here are some useful resources for your reference.

  • blog.gainlo.co
  • horicky.blogspot.com
  • www.hiredintech.com/classrooms/…
  • www.lecloud.net/tagged/scal…
  • Tutorials.jenkov.com/software-ar…
  • highscalability.com/

Although system design interviews cover many topics, there are some common routines that can help us solve these problems.

  1. First understand the requirements, then draw the high-level outline, and finally outline the implementation details. Don’t get into details without knowing what you need.
  2. There is no perfect system design, and actual requirements should be properly considered

Having said that, the best way to handle a system design interview is to sit down and actually design a system. For example, instead of doing superficial work in your day job, try to learn more about the tools, frameworks, and third-party libraries you use. For example, if you use HBase, instead of simply using the client to perform DDL and query operations, try to understand the overall architecture, read and write processes, how HBase ensures strong consistency, what major or minor encapsulation is involved, and how the system uses LRU caches and Bloom filters to improve efficiency. You can even compare the design similarities and differences between HBase and Cassandra. That way, when you’re asked to design a distributed key-value store, you’ll be ready.

There are also blogs like Hacker Noon and some of the company’s technical blogs, as well as official documentation for open source projects. The most important thing is to remain humble and curious, like a sponge to absorb all useful knowledge.

Machine learning

Machine learning interviews are usually divided into two parts: theory and product design.

Reading about machine learning is helpful unless you have experience in machine learning research or are well versed in ML courses. Classic books like The Road to Machine Learning, Pattern Recognition, and Machine Learning are great choices. If you are interested in a particular field, you can choose more books in that field.

Make sure you understand basic concepts such as bias variance equilibrium, overfitting, gradient descent, L1/L2 regularization, Bayes theory, ensemble learning, collaborative filtering, dimensionality reduction, etc. Familiar with common formulas such as Bayesian equations and popular derivation models such as logistic regression and SVM. Try implementing simple models such as decision trees and K-means clustering. If you include models on your resume, make sure you fully understand and can present the pros and cons of those models.

As for machine learning product design, I understand the general process of building a machine learning product. Here is my approach.

  1. Define our goals: prediction, recommendation, classification and retrieval, etc
  2. Find suitable algorithms: supervised vs. unsupervised, classification vs. regression, general linear models, decision trees, neural networks, etc. And be able to give reasons for your choice.
  3. Identify relevant characteristics of the available data
  4. The performance index of the model is given
  5. Evaluate how the model will be optimized in the actual project application (optional)

Again, I want to emphasize being curious and learning. Don’t just call Spark MLlib or XGBoost’s API, try to understand the rationale behind it. For example, why stochastic gradient descent is suitable for distributed training, why XGBoost is different from traditional GBDT, what is special about its loss function, why it needs to calculate the second derivative, etc.

The interview process

Start by responding to HR messages on Linkedin and asking for referrals. After a failed attempt to apply to a star startup (which I’ll talk about later), I began months of painstaking preparation. With the help of a recruiter, I arranged a week of on-site interviews in the Bay Area. I flew to Silicon Valley on Sunday, which gave me five days to do about 30 interviews with some of the best technology companies in the world. I was lucky enough to get offers from five of them.

A phone interview

Phone interviews are standard at these companies, but the difference is their duration. Some companies like LInkedin take an hour, while Facebook and Airbnb take 45 minutes.

Professionalism is the key. Because you only have a limited amount of time and you usually only get one chance. You must quickly identify the type of problem and come up with a high-level solution. Be sure to tell the interviewer what you think and what you intend. This may slow you down at first, but communication is the most important and helpful thing in an interview. Don’t recite your answers this is easy for the interviewer to see through.

Some companies will ask ML questions for machine learning positions, if you are being interviewed make sure you are prepared for these skill points.

To make better use of my time, I scheduled three phone interviews in the same afternoon, one hour apart. The advantage of this is that I have a hot hand all the time. The disadvantage is that if I don’t play well in the first one, it may affect the performance of the next one. So I don’t recommend it for everyone.

One advantage of interviewing with more than one company at a time can give you an edge. After one call I was able to skip the second round of Airbnb and Salesforce interviews because I already had in-person interviews with LInkedin and Facebook

What was even more amazing was that Google asked me to skip their phone call and arrange an in-person interview for me after learning that I had four in-person interviews next week. I know this is exhausting, but no one can turn down a live invitation from Google.

On-site interview

LinkedIn

This was my first in-person interview at Sunnyvale, where the office is always clean and people look very professional.

Each round is an hour, so the coding problem is decent, but the ML problem is a bit more difficult. However, the preparation materials I received from HR helped a lot. Until the end of the interview, there were no questions that surprised me. I’ve heard Linkedin has the best catering in Silicon Valley, as I’ve seen, if it’s not true, it’s not far off.

Now that Linkedin has been acquired by Microsoft, it looks like they’re shedding some of their financial burden and starting to do some really cool things, with exciting new features like video and professional advertising. As a company focused on professional development, Linkedin prioritizes the growth of its employees. Many of the teams involved in advertising and subscriptions are expanding, so act fast if you want to join.

Salesforce Einstein

Star projects by star teams. It’s a fairly new team, and it feels like a startup. The product is built on top of the Scala Stack, so type safety is real there. Matthew Tovbin gave great talks at Scala Days Chicago 2017 and Leah McGuire at Spark Summit West 2017.

My interview was at my office in Palo Alto. Their team has strong cultural cohesion and a very good work-life balance. Everyone was passionate about what they were doing and really enjoyed it. After four rounds of interviews, it was generally shorter than other companies, but I wished I could stay longer. Matthew even showed me around the HP garage after the interview.

Google

The absolute leader in the industry, needless to say, is Google. But it’s really, really big. It took me 20 minutes to ride my bike to meet my friend. There are also a lot of people waiting in line to order food, which is always a nice place for programmers.

I interviewed in one of the many buildings in Mountain View. I don’t know which one, because it was so big.

My interviewers seem smart. You’ll see they’re smarter when they start talking. What a pleasure it would be to work with these people.

One thing I think is particularly important in the Google interview is the analysis of time complexity. Make sure you really understand what the big O means.

Airbnb

The fast-growing unicorn has a unique corporate culture and boasts the most beautiful office environment in the Bay Area. New products such as restaurant reservations, high-end segments, and expansion in the Chinese market augur well for the company. If you want a fast growth and pre-IPO experience, and can tolerate risk, this would be a perfect choice.

Airbnb’s code quiz is a bit special because you’ll be writing on an IDE rather than a whiteboard, so your code needs to be able to compile and give the correct answer. Some problems are really difficult.

They also have what they call a cross-functional interview. This is Airbnb’s way of valuing its culture, and technical excellence alone is no guarantee of employment. I enjoyed my two rounds of cross-functional interviews. I had a light conversation with the interviewer and we were happy when the conversation was over.

Overall, I found the on-site interview at Airbnb to be the most difficult, because the questions were difficult, the duration was long and the interview was cross-functional. If you are interested, make sure you understand their culture and core values.

Facebook

Compared with Google, Facebook is another fast-growing giant, small but fast-paced. With a product line that monopolizes social networking and has invested heavily in AI and VR, it’s clear that Facebook has huge potential for future growth. And great people like Yann LeCun and Yangqing Jia, this is the happy land for machine learning people.

I interviewed in building 20, which has a roof garden and a beautiful ocean view. Zuckerberg’s office is there, too.

I’m not sure if the interviewer was instructed, but I didn’t get a clear indication that my answer was correct. I still believe they were instructed not to comment on the validity of candidates’ answers.

The hard work of the first four days took its toll on my body. At noon, I began to have a headache. I insisted on finishing the interview in the afternoon. I don’t think I did my best at all. I was a little surprised when they offered me the job.

In general I think people here believe in the vision of their company and are proud of what they do. As a $500 billion and fast-growing company, Facebook is the perfect place to start your career.

Salary negotiations

It’s a big theme, and I’m not going to talk about it here. Those interested can refer to this article.

Some things I think are important:

  1. Behave professionally
  2. Use your resources
  3. Genuine interest in the project and the team
  4. Be patient and confident
  5. Resolute but polite
  6. Don’t lie

My failed interview experience – Databricks

Failure is the mother of success, and that includes interviews. Before embarking on this silicon Valley interview tour, I had an unsuccessful interview with Databridck in May.

In April, I was intrigued when Xiangrui contacted me via Linkedin to ask if I was interested in a position on the Spark MLlib team. Because 1) I use Spark and love Scala, 2) Databridck’s engineers are the best, and 3) Spark has revolutionized the world of big data. It was too good an opportunity to pass up, so I started the interview a few days later.

Databridck has a fairly high threshold and a lengthy processing process that includes a preliminary review sheet, a phone interview, a code test and an in-person interview.

I managed to get an invitation for a live interview and a visit to their downtown San Francisco office, where we could see Treasure Island.

My interviewer is extremely intelligent and equally humble. I often feel pushed to the limit during interviews. The interview was going well until one disastrous interview, where I totally blew it because I didn’t have good skills and preparation, and I failed miserably. Xiangrui was really understanding and walked with me for a while after the interview. I really appreciated talking with him.

A few days later I received the rejection letter. As expected, though, it depressed me for a few days. Although I missed the opportunity to work for Databricks, I sincerely hope they continue to have a great impact and success.

A little feeling

  1. Life is short. Professional life is shorter. Make the right move at the right time. Life is short and careers are even shorter. Do the right thing at the right time
  2. Interviews are not just interviews. They are a perfect time to network and make friends. A job interview is not just a job interview, it’s a great time to network and make friends
  3. Always be curious and learn
  4. Negotiation is important for job satisfaction. Negotiating skills are very important if you want a satisfying job
  5. Getting the job offer only means you meet the minimum requirements. There are no maximum requirements. Keep getting better. Being hired simply proves that you have met the minimum requirements. There is no ceiling in life. Be a better version of yourself

From the first interview in May to the final offer at the end of September, my first job-hopping was so long and difficult.

It’s not easy for me, because I need to keep my current work on schedule. I spent weeks preparing for interviews until 1 am and then waking up at 8:30 the next morning to get ready for the day. Interviewing for five jobs in five days can be very stressful and risky, and I don’t recommend it unless you have a very tight schedule. But it does have the advantage of having more than one offer in hand when negotiating.

I would like to thank all my employers for their patience in arranging all the procedures for me, for their time to communicate with me, arrange the interview opportunities and finally give me the offer. Last but not least, I would like to thank my family for their love and support. Thanks to my parents, they have been watching my every step. Thank you for everything my darling wife has done for me and my darling daughter and her warm smile.

Thanks also to the readers of this long article.

You can find me on LinkedIn or Twitter.

Xiaohan Zeng

10/22/17

Translator update: The author chose Airbnb and will start in November.


The Nuggets Translation Project is a community that translates quality Internet technical articles from English sharing articles on nuggets. The content covers Android, iOS, React, front-end, back-end, product, design and other fields. If you want to see more high-quality translation, please continue to pay attention to the Project, official Weibo, Zhihu column.