This is a brief overview of my experience in internship-hunting for an SE position in Silicon Valley during my junior year. I had two co-op terms during my junior year, and I ended up going to Google for the first one, and Pinterest for my second one. However, I’m not sharing interview questions due to NDA in this article, but I would like to share the recruitment processes and my feelings towards each company.
I applied through our campus recruiting event (AKA Jobmine), and there were only two back-to-back 45-min interviews with two engineers. If you pass these two interviews, congratulations, and then you’ll be moved on to the host matching process. You will be prompted to fill out a candidate form, and hosts will be looking for candidates according to your form and the interview feedbacks. Make sure you include lots of keywords in the open questions on the form so that hosts can easily find you. If there is a host match, then the recruiter will arrange a host match call between you and the host, and the call is usually non-technical. You chat with the host about the project and your interest, and if the host thinks you’re a good fit, you will get an offer from this team. For me I got two host matches from the Ads team and the YouTube team, and both gave me an offer. Then the recruiter asked me which one I would prefer, and I happily accepted YouTube’s offer.
For Microsoft, I interviewed directly with the team – Surface team. This position is a bit different because it was an Embedded SE position. They talked about my potential project, which involved keyboard embedding with Surface, and they were super passionate about what they do. They obviously have carefully read through my resume before I came in, and they asked lots of specific questions about my projects and past experiences. The interviewers were very nice and easy-going, and they showed their interest in their candidates. For the technical part, I got asked some low-level questions involving C, binary manipulations, and some OOP design.
Uber reached out to me to get started on the interview process. The interviews were not very well organized. I had no information about what to expect during the interview – whether it be technical or non-technical, algorithmic or conceptual. There were a total of 3 rounds of interviews. The first one was simple algorithm, second one was non-technical, and third one was conceptual. I failed at the 3rd round. However, another team said they were interested me and would like to conduct a 4th interview with me. So this team would actually be my potential team. I did the 4th interview with them. After that, the recruiter asked specific questions like whether I needed to go through Jobmine (our school’s recruiting system) and when my internship would start, so I thought it should mean offer. I answered all of the recruiter’s questions and waited for a few days but didn’t hear back. I followed up with the recruiter, and she told me that I did great in the interviews, and the team that was interested me actually was hoping for me to be their summer intern – they were not able to hire a winter intern at this time. The recruiter said that she was looking for other teams that were hiring winter interns and would contact me as soon as she got an update. I waited for a few weeks and followed up twice, never heard back from Uber any more.
I had interviews with two teams at Apple – the IMG team and the Watch team. At Apple, you interview directly with the team. If they think you’re a good fit, you will be directed to chat with the hiring manager about next steps. My entire experience with these two teams was pleasant. The interviewers were very nice. The algorithmic questions were easy. I think what they were looking for was your coding ability and your reaction speed. They also asked a whole bunch of conceptual questions involving memory management and concurrency. You absolutely need to know ARC and GCD very well. I chatted with both teams, and it was extremely pleasant. They had a genuine interest in me, and I ended up with offers.
They reached out to me via LinkedIn and my ACM rankings. The recruiter was the most enthusiastic recruiter I’ve ever seen. She carefully read through all my experiences. By all I mean absolutely ALL experiences even from high school and from all kinds of resources I have online. I felt so warm that a recruiter could ever so carefully look at my everything. She even mentioned that if I did not do well in this interview, she would provide feedback and areas of improvements, and would interview me again later. I got super excited about this opportunity, and I really wanted to get this job. Their interviews were hard. Correctness was not the only thing they look for – they look for your entire thinking process, your coding abilities, your testing abilities, your communication abilities, your pruning abilities, and a lot more. You gotta think smart in every problem they give you. Sadly I only had two rounds with them. The recruiters got back pretty slowly, about 1.5 weeks after each interview. They provided feedback and areas of improvements in the end, and I will definitely try again next year with Dropbox.
They reached out to invite me to their open house in July. During the open house, I chatted with a few recruiters, and they mentioned that they would follow up with me with the next steps in a few weeks. So then I got the interviews. The recruiters said that they would prefer last co-op students, and so asked me to do the interviews for my last co-op which is going to be in the fall. Palantir is one of the most difficult companies to get in, and it actually is. Their questions are hard as well, and their hiring bar for interns are just as high as for full times. I have completed two rounds, and the last two rounds are going to be back-to-back Skype interview in a few weeks. The recruiter was so nice that she rescheduled my last two rounds’ interviews because I was sick.
They reached out to me. Neutral experience. The questions they asked was typical backtracking problems with a twist.
I applied through their website. I got an update pretty soon (~1-2 business days), and I had a pleasant chat with the recruiter. He scheduled my two rounds of interviews, and both of them went really smoothly. At the night before my 2nd round interview, they hosted an information session for the candidates to mingle with the interviewers. All the interviewers were very friendly, easy-going, and super nice. I had a great time that night, and I liked this kind of atmosphere – their culture, their people, and their product (obviously) – all of them deeply interested me. After the second round interview, I was directed to talk to the recruiter about salaries and stuff. Their salary was amazing, and they provided corporate housing – everyone knows how painful it is to find a housing in the bay area! I accepted their offer and I’m going to intern there in the winter of 2016.
Airbnb is no doubt one of the most amazing and attracting startups in the bay area. I applied through their website and got back pretty quickly as well. Their recruiter was super passionate and interested in me, and she made a couple of phone calls before the interviews to make sure I was well prepared and well informed. There were 4 rounds in total – the first one was on campus, and the latter 3 were back-to-back via Skype. They really really care about how much you know about their culture and your passion. So make sure you do a whole bunch of research before interviewing with them! All of their interviews required compilation and run. The code was long, and it was kind of stressful to analyze the problem, write the long code, and compile and run it in 45 minutes. The first 3 went fine, but I didn’t come up with the correct algorithm for my last one. I should have thought of topological sorting as soon as I saw rules and should’ve recognized those as a DAG. Anyway, it was a pleasant interview process with Airbnb, and I learned a lot.
Facebook has the shortest interview time span among all companies in the Silicon Valley – 2 days. First day first round, at night you will immediately know whether you get the second round the next day. The next day you do a second round, and if you pass you’ll be invited to their dinner that night and if you don’t you will receive their rejection letter immediately. I would say this is the least painful and most efficient interview. Their questions were not as hard as Dropbox or Palantir or Airbnb, but still medium level algorithm questions.
Pleasant experience. Their interviewers were very nice. The first round interview question was simple algorithm and basic concepts about hashing and web technology. The second round was a design question. I was sick that day, and was not able to write complete code for that one. I explained my design and concept, and the interviewer said that my solution was actually what they were using at Foursquare. He didn’t seem uninterested or bored because I was so sick my head was literally spinning and I couldn’t write the code. They ended up giving me a rank.
Applied through Jobmine. The only team I was interested in was Tumblr – it was their first time recruiting Canadian interns for Tumblr! They joked about whether I would like to join Yahoo Search (they know I just interned at Google). They really liked tree questions, and they asked me to implement an Arbitrary Tree. They also asked some conceptual web technology questions which were amazingly similar to the ones asked by Foursquare.
They only had one round phone interview, and they didn’t use a coderpad or any shared document. I needed to talk out my solution in the phone. They asked me to email them one of the questions’ solution after the call. I ended up sweating walking out from the phone call trying to explain my algorithm without being able to visually present my code.
I guess because it’s a location-service company, they asked me a bunch of graph problems 🙂 It was two back-to-back phone interviews, and I felt that the first interviewer was impatient, and the second interviewer had noise in the background and he muted on his end when he was not talking.
I hope this article is somewhat helpful and gives an overview of what each company’s recruitment process is like and what to expect. The last thing I would like to mention is that, be prepared all the time, because you never know when opportunities will reach out – it takes as much luck as skills to get your dream job! 🙂