My Four Year Plan at UCSD as a Computer Science Major
I still remember applying to Facebook every year and getting rejected and how bad I flunked my interview with Google during my senior year of college. Well good news is that studying actually paid off because in I had the opportunity to interview with some of my dream companies back in 2017. I interviewed with Microsoft, Uber, Facebook, and Google and I received offers from all of them. I had actually so many interviews lined up that I ended up not proceeding with most of the companies like Apple and Amazon. I wanted to share my experiences, my study routine, and my thoughts on each company in order to help you guys join your dream company.
One big was surprised transitioning from intern life to full time was the difficulty in the interview questions. I honestly was not prepared for that when I interviewed for companies my Senior year of college. From my epic failures, I learned that I needed to prepare weeks in advance instead of days. As a Software Engineer with a full time job, I found it really difficult to find time to prepare. Back when I was working at Intuit, I typically worked from 9am - 7pm. That only gave me around 3 hours to prepare during the weekday. To compensate for this, I spend my entire weekend just studying.
Let's start with the first step which is to update your resume. Here are some tips to update your resume.
There's a lot to study for the technical interviews. You gotta brush up on algorithms, system design, and whiteboarding skills. I started my adventures on Codewars which similar to LeetCode, but has a lot easier problems to start with. This helped refresh my memory on basic algorithms and solving basic interview questions. I also shared a LeetCode Premium account with my friend. My favorite part about LeetCode Premium was it shows topics and types of questions some companies like to ask. This can help you target your studies towards your dream company better. Honestly, $35 a month isn't that much in comparison to how much you'll make once you work for a FANG company. I only studied for 3 months so that only came out to be $105.
In addition to LeetCoding, I read a couple of books to refresh on basic algorithms. I noticed I got really distracted whenever I read books or pdfs on my computer, so I found myself checking Reddit or Facebook every couple of minutes. Since you'll only have 3 hours to study I suggest getting a physical copy or buy a dedicated e-reader. This really helped me focus since I wasn't tinkering on my computer with multiple windows open. Here's the list of devices and books I used.
Here's some of my tips and tricks that I learned along the way.
Of course theres a billion things you need to study, but here's a list of the main topics I focused on.
These problems tend to be open ended. The interviewer gives you some sort of scenario or a real world problem and will ask you to "design" it. I usually start by listing out use cases. Let's say the interviewer asks you to create Youtube. There's a lot of parts of Youtube so just list all of them that come to your mind. Once you have all those features, I would start eliminating features that are not part of "core" features.
I actually learned how to answer System Design questions by watching Youtubers walkthrough some problems. Here's a video that I found pretty helpful.
After applying to a company, a recruiter will email you to chat. Usually your first phone calls is a non-technical interview with a recruiter. This call is mainly to find out your availability for interviews. Depending on your situation, you can tell the recruiter one of the following:
The last option tells the recruiters that you need to interview with their company as soon as possible and potentially skip the phone interview. I actually skipped the phone interview with Google because I told my recruiter I already had onsites scheduled with Facebook, Uber, and Microsoft.
All of technical phone interviews were more or less the same. You spend 45 minutes to 1 hour with an engineer to code up some problems on a Coderpad or a Google Doc. If you do well then you'll move onto the onsite. I would recommend starting phone interviews with companies you are least interested in first. That way you can practice and gauge how well you're doing. Also, since the interviewer can’t see you, it’s important to explain your thought process and how you plan to tackle the problem.
Here are some takeaways
On-site interviews vary company to company, but for the most part, you and an interviewer interact in solving a problem on a whiteboard. Most companies have about 4-5 technical interviews and sometimes a System Design question depending on your level. These interviews are back to back with a lunch break in-between. While you don't want to eat too much, actually try out some of the food because if you join that company you're going to be eating their food for many years to come.
Don't start these problems by busting out code. Start by writing down all the ideas that come to my head. For example, if they ask you to get the top K elements of an array, just write down all the ideas that come to your head even if they sound crazy. This will also allow you and your interviewer to bounce ideas off each other.
Another trick I learned along the way is if you're unsure of the most optimized answer or an answer in general, start with the brute force solution. Once you figure that out, try to bounce ideas off with your interviewer.
I actually didn't apply to Microsoft. Rather Microsoft reached out to me for a hiring event. Instead of doing a phone interview, I had to complete an online coding assignment in an hour. After I finished the assignment, the recruiter reached out to chat and scheduled a date for an onsite interview. Microsoft flew me to Redmond and paid for the flight, food, and the hotel. I came in a day earlier to check out the city, visited common tourist areas, and I even stopped by the original Starbucks shop. The next day, I came for the on-site, which had 4 rounds with each being 45 minutes long. I also had a System Design round.
This was actually the 2nd time I interviewed with Google. The first time did not go so well, so I really wanted to redeem myself this time. Also, since I had other on-sites coming up and an offer from Microsoft, Google let me skip the phone interview.
I interviewed at the Sunnyvale site which is where their Google Cloud team is located. The on-site had 4 rounds with each round being 45 minutes long. They also have a Googler take you out to lunch at the Google cafeteria after the 2nd interview. I would say this was the hardest of all my interviews. I heard Google has a behavioral round to gauge your Googleyness now, but I didn't have one of those.
After you finish your interviews, the interviewers submit their feedback and it goes into a packet for a hiring committee to review. If they give the thumbs up, then you start the project fit calls. These calls are pretty informal where you and a potential manager chat about the team and what you want to do. After these calls, you select one of them that you're most interested in.
Uber has a couple of offices with some in Palo Alto, but their main HQ is in SF which is where they conducted the interviews. But thankfully, Uber was considerate enough to provide me with $200 of Uber credits so I didn't have to worry about driving to SF and back.
Uber's on-site consists of 3 technical rounds and 2 behavioral rounds. They allowed me to bring my laptop and code out their coding questions on my device. I really enjoyed this since it felt more practical. I also liked having 45 minutes to just talk with the manager and a cultural bar raiser. The cultural bar raiser is someone at Uber who isn't on the team I'm interviewing for. Talking to him gave me an opportunity to learn about what others thought about the company. It felt like they really value culture fit as much as technical prowess.
The interview took place at Building 10 inside of the Classic campus. Facebook's campus has the biggest wow factor. Seriously, Facebook Classic is amazing. I seriously felt like I just walked into Disneyland. They literally have everything on campus including a sweet shop, a health center, a Phillz, a barber shop, an arcade, pop up shops, and way more that I have not covered. Check out some pictures here.
So the interview was pretty long consisting of 5 rounds. I had 1 system design question and the rest were all coding questions. Each interviewer asked about two coding questions.
I would recommend scheduling all your interviews as closely as possible. It will make negotiating a lot easier since you'll have most of your offers at the same time. The key to negotiating is having more than one offer. Having patience is also important. Recruiters will try to pressure you to accept an offer as soon as possible, but you can tell them you're still waiting to hear back from all the other companies to buy some time. Once you have all your offers, you can use your offers to increase each other. For example, if company A offers you $100k and company B offers you $120k, you can use the offer from company B to increase the offer from company A. Generally big companies don't match offers from startups since their stocks are not liquid yet, but this strategy worked well for me regardless. One big mistake I made was giving out my expectations; if a recruiter pushes for a number, try to push it off. Offers usually consists of base salary, a targeted bonus, a sign on bonus, and equity. Targeted bonus is paid out annually based on your performance. If the target is at 15% and your base salary is 100k, then your bonus is 15000. Equity usually vests over a certain time period. So, the company may offer $10000 worth of stocks over 4 years and lets assume the stock price is $1 when you started. This means you have 10000 shares. However, you will only earn 2500 shares every year.
All products recommended are selected by our team. If you buy something through one of the links on this page, you'll be supporting our team to keep doing what they love.