SWE Interview Process at the Big 4 Tech Companies

My experience interviewing for software engineering roles (SWE) at Amazon, Google, Apple, and Facebook

Jessica Wang
11 min readApr 19, 2021

These past few months have been a whirlwind. After months of preparation and back-to-back interviews, I have finally signed an offer to work in San Francisco as a software engineer and could not be more ecstatic! Here is how the process went for me at the Big 4 tech companies (I interviewed for college/university grad positions and am speaking only from personal experience!)

Amazon (received an offer for software development engineer)

This was the first offer I received from one of the Big 4 tech companies — I was extended an offer for the Seattle area and was so incredibly excited to stay on the west coast!

Completed and sent in online application (early August)

I sent my application into the black hole of online applications via the Amazon Student Programs portal at the beginning of August. Amazon does not recruit at my school, I did not receive a referral, and I had never interviewed with Amazon before so I did not have particularly high hopes of receiving any response. To my surprise, I received an email, inviting me to take a series of online assessments, a few weeks later. There are three portions to this first stage of the interviewing process. Amazon sends you links to each portion only after you have completed the previous portion. I had about a week to complete each portion although I tried to get them done as quickly as I could. Amazon has its own interviewing platform which is pretty easy to use and similar to HackerRank and CoderPad.

Online Assessment — Part 1 (end of August)

This was a series of multiple choice questions. My biggest tip would be to pace yourself as you are only given twenty minutes to complete this portion. I was required to understand and debug several pieces of code. Unfortunately, I let the time get the best of me and I ended up having to randomly select an answer for the last two questions.

Online Assessment — Part 2 (end of August)

Amazon allocates an hour and forty minutes for this portion of the assessment. This portion of the assessment assesses both your coding abilities and your “work style.” The coding section felt more like a traditional technical interview where you are expected to produce code and test your implementation against different test cases. The “work style” section was more relaxed. You evaluate how well certain statements about leadership, work environment, and goal-setting align with your own beliefs. I would recommend brushing up on data structures and common algorithms for the coding section and reading about Amazon’s Leadership Principles for the “work style” section.

Online Assessment — Part 3 (end of August)

This was the longest portion of the assessment. It ended up taking me over two hours to complete. This portion built upon the “work style” section of the previous assessment portion. You are presented with various work scenarios through an interactive video simulation. Again, while it is important to answer truthfully, it helps to read about Amazon’s culture to get a better sense of Amazon’s core beliefs and values. Technical interviews stress me out way more than these types of behavioral interviews so I felt like I did quite well on this last portion of Amazon’s online assessment.

After I completed all three parts of this assessment, all I could do was wait. Since I was unable to correctly answer all the questions in part one, I was not very confident about my ability to move forward in the interviewing process. However, I received an update on my interview status over a month later and was told that my next interview would be my final interview. I was even more shocked when I was told that this final round interview would take place virtually. I hadn’t even spoken with an Amazon engineer up until this point since the only thing I had completed was an online assessment. In my experience, most companies usually do a series of phone interviews with an engineer from the company before moving to an onsite, final round interview. I was pretty confused but definitely very excited as it meant I was only one step away from landing an offer!

Virtual Final Round Interview (early October)

I was told that this interview would test both my coding ability as well as my alignment with Amazon’s Leadership Principles. I studied pretty extensively in both areas but my interviewer did not ask me anything about Amazon’s Leadership Principles. There must have been miscommunication about our interview because we were provided different links for joining the conference bridge. My interviewer was also over ten minutes late. As such, I was extremely flustered when my interview began. He asked me about my previous internship experience and was rather dismissive about what I had done as a software engineer intern at a large corporate bank. I guess he thought that it wasn’t “techy” enough since the scope of my project lay in asset and wealth management. Regardless, I left the interview with a bad taste in my mouth.

I was told that I would receive an update on my interview within the next week. I had competing offers from companies such as J.P. Morgan, Cisco, and Disney at this point so after two weeks of no update, I reached out to the recruiting coordinator. She told me that she did not have an update and did not know when she would be able to provide one. I stopped getting my hopes up and assumed that Amazon would simply be delayed in rejecting me.

Received an offer! (end of October)

I was absolutely stunned when I received an email about my offer approximately a month later. While I was overjoyed (and relieved!) to have landed an offer from such a reputable tech company, I ultimately declined the offer in favor of companies where I felt like I would fit better and have a bigger impact.

Google (received an offer for the Engineering Residency program)

I had a very interesting interview experience with this Big 4 tech company. I had originally applied for the role of software engineer but was rejected after the onsite. I received an offer for the Engineering Residency program shortly after, which I’ll explain later. Therefore, I’ll be talking about my (failed) interview process for the role of software engineer and my (successful) interview process for the Engineering Residency program.

Contacted by recruiter (beginning of September)

A recruiter reached out to me after reviewing my profile which I had submitted last year. I had previously interviewed with Google for a software engineering summer internship, which I was not extended an offer for. We set up a phone call and after our talk, she sent me a link to Google’s online assessment.

Online Assessment (beginning of September)

My online assessment consisted of two coding questions. The test is language-agnostic so you are welcome to use whichever language you are most comfortable in. I had two coding questions and I passed all of the test cases.

Onsite Final Round Interview (end of September)

My final round interview consisted of four technical interviews and a brief behavioral interview. Google does not ask system design questions for new grad positions. My onsite interview took place at the Mountain View office.

Technical Interview 1

This interview went fairly well. The interviewer started off by asking me about my previous experience which we discussed for about ten minutes. He asked one technical question during this hour-long interview. I talked through my solution, coded it up, and my interviewer took photos of the code that I had written on the whiteboard before he left.

Technical Interview 2

This interview was the best, in my opinion. I was able to code up a solution in about twenty minutes. My interviewer seemed pleased with the final solution that I came up with and I suggested alternative ways to solve the problem as well. I discussed the trade-offs in space complexity and time complexity.

Lunch Break

Google has a fantastic campus and the cafeteria is as fun and extravagant as people oftentimes describe. I had about 45 minutes for lunch. The engineer who met me for lunch was really charismatic, welcoming, and definitely eased my nerves about the interview process.

Technical Interview 3

I would give this interview a 6/10. The question required consideration of many edge cases which I did not think through before I started writing on the whiteboard. Once I started running through the edge cases, I realized that most of my logic was too “hard-coded” and I had to keep taking steps backward to try and figure out the most optimal and comprehensive solution. In the end, I defined a lot of helper functions as placeholders for where I would implement certain logic but ran out of time and was not able to finish them.

Technical Interview 4

Maybe it was because my last interview went rather poorly and it affected my mindset heading into this last interview, but regardless, I was not able to end my technical interviews on a positive note. The question was pretty difficult — I felt like I had no idea where to even start — and I coded for maybe only about 15 minutes before my interview ended. I felt incredibly embarrassed when the interviewer took out their phone to take a picture of my “code” because I had less than 20 lines of code on the whiteboard.

Behavioral Interview

This behavioral interview lasted approximately twenty minutes and was much less stressful. My interviewer asked me to describe my work ethic, my favorite and least favorite internships, and some other behavioral questions to gauge how “Googley” I was. My interviewer also let me guide the conversation and ask as many questions as I wanted.

Received rejection for software engineer role (end of October)

Google has a reputation for having a rather drawn-out interviewing process and I waited about a month before my recruiter called me with the disappointing news. Before this, about a week after my onsite, my recruiter had actually emailed me to thank me for coming onsite. She also asked if I had an updated resume and transcript which I promptly emailed back to her. She called me two weeks after to let me know that I was rejected by the hiring committee but that she would pass me along to the recruiter for Google’s Engineering Residency program because she believed that I could be a good fit. If you want to learn more about the program, check it out here!

Contacted by a different recruiter (end of October)

The recruiter for Google’s Engineering Residency program contacted me less than a week later to introduce herself. We scheduled a call for the next day so that she could give me more information about the program and its requirements. At the end of our phone call, she told me that no further steps were required from me! Yup, I didn’t have to interview again! She said that she would take my candidate packet and pass me to the hiring committee again for this new position. I was told that I would receive an update from her as soon as she had one so I was stuck playing the waiting game once again.

Received an offer! (beginning of November)

My recruiter emailed me approximately two weeks later and said that she had an update. She was pretty vague and simply asked if we could schedule a call within the next two days so that she could go over the details by phone. My friends had told me that it’s typically good news when recruiters will email to schedule a call. If they just call out of the blue, it’s usually bad news. This was the case for me! My previous rejection came via an unexpected call in the middle of the day. This Google recruiter and I scheduled a call for the next morning and she congratulated me on the awesome news! I was thrilled! While I definitely wish I had positioned myself better to land an offer with Google as a software engineer, I was still really excited to have received an offer for this program!

Facebook (did not receive an offer for software engineer)

I received a scholarship via Facebook to attend the Grace Hopper Conference, the largest conference for women technologists in the world. I was delighted to receive this scholarship as it meant that I would be able to travel to the conference at no cost to me and begin the interview process early.

Technical Phone Screen (early September)

This interview was disastrous. My interviewer had a pretty heavy accent so I had to ask him for clarification quite a few times. He also prefaced the interview by introducing himself as an engineer who liked to test interviewees in ways that I might not be familiar with. It was a really hefty question that I probably could have solved if I had three hours on my hands. It took my interviewer 10 minutes to simply set up the problem. I definitely struggled to finish so I wasn’t surprised when I received the rejection email about a week later.

Received rejection (end of September)

And this was the end of my interviewing process with Facebook! I received an email that I wouldn’t be moving forward and while it wasn’t the news that I was hoping for, I did appreciate how quickly my recruiter updated me.

Apple (did not receive an offer for software engineer)

I managed to get my foot through the door with Apple by speaking with an engineer at the Grace Hopper Conference. I dropped my resume off with him and he asked me a few questions about my prior internships. At one point, he turned my resume over and started drawing a binary graph and a linked list. He then asked some basic questions about these two data structures. I believe I answered them rather well and he seemed pleased at the end of our conversation. He then told me to expect an email from a recruiter in the coming weeks.

Technical Phone Screen (early October)

As promised, a recruiter indeed emailed me a few days later. He told me that I would be interviewing with an engineer who worked on the same team as the Apple engineer I had previously spoken with. It was a standard phone screen that lasted about an hour. While the coding question was not one that I had seen before, it was pretty similar to ones that I had previously encountered and I was able to solve and optimize a solution pretty quickly.

Virtual Final Round Interview (end of October)

About a week later, my recruiter got back to me and told me that I would be moving forward to a final interview. I was really excited because the interviewing process had been pretty relaxed and enjoyable so far. This time, I interviewed with a software engineer on a different team. I felt like the interview went well. It definitely wasn’t a type of coding question that I was familiar with — it had to do with networks and how I would handle editing a really large code base — but I thought I came up with a decent solution.

Never heard back from Apple again…

After that final interview, I waited two weeks before dropping a friendly email to my recruiter, asking if there might be any updates to my application that he could share. I waited for a week with no reply and sent him another email. He never responded to that one either so I did not land an offer. This rejection stung a little harder because I would have really appreciated even a generic rejection email so I could have let my hopes down sooner. Regardless, I am so grateful to have been given the opportunity to interview with Apple! I got exposure to different kinds of interviewing questions which I really appreciated.

So that sums up my experience interviewing with the Big 4 tech companies! I landed an offer with two of them after some trials and tribulations but it was a great learning experience! I was also fortunate enough to have landed offers with several other great companies such as Microsoft, Goldman Sachs, and Snap! I had a big decision to make after receiving a good handful of offers which I am so blessed and humbled by, but that’s a story for another day! :)

Best of luck to those navigating this crazy job-hunting process!

--

--