Google SDE-3 interview Experience

google logo
google
SDE-34 years
July 8, 20252 reads

Summary

I shared my Google SDE-3 interview experience, which included a screening round with an API concurrency problem and follow-up, followed by three Data Structures & Algorithms rounds covering specific LeetCode problems and an Object-Oriented Design question, with my result still pending.

Full Experience

Hi all! I’d like to share my Google interview experience in case it helps someone who’s currently preparing or going through a similar phase. 🔹 Quick Background I have around 4 years of experience, primarily as a Frontend Developer working with the React.js tech stack. My main programming language is JavaScript. To be honest, I wasn't very consistent with LeetCode, and only began solving problems regularly when I started preparing for this interview — because like many, Google has always been one of my dream companies. 🔹 Getting the Call A recruiter reached out to me via LinkedIn, and I requested one month to prepare. They were kind enough to accommodate and even rescheduled the interviews multiple times 🫤 . Kudos to the Google recruiting team for being so supportive throughout the!

🧪 Round 1: Screening / Elimination Round This was the initial elimination round, and I’m glad to say I cleared it.

	○ Duration: (e.g., 45 minutes)

Question : Implement the function "GetTotalCount(num_docs: int)", which returns the total number of words in documents with ID numbers in the range [0, num_docs).

E.g. GetTotalCount(5) -> # words for docIds 0,1,2,3 and 4 return the sum of those # words.

Candidates have the following Web API available to retrieve the number of words in a document id.

https://www.count-words.com/document/?worker_id=

Response: { count: <# of words for document-id> }

worker_id = there are infinite worker and the worker_id is a non-negative integer [0, infinity). One worker can perform only one computation at a time.

https://www.count-words.com/document/1?worker_id=1 --> trigger #words on worker 1 for docId 1 https://www.count-words.com/document/2?worker_id=1 --> Cause an error if the above call is in progress. --> If that call is finished, trigger #words for docId 2 on worker 1 => It could take a long time for the a API call to finish (for e.g. if doc has a lot of words).

Follow-up: "GetTotalCount(num_docs: int, num_workers: int)" where num_worker is the max workers that available with ids [0, num_workers).

GetTotalCount(5, 3) => Have to get # words for docIds [0, 1, 2, 3, 4 using workerIds [0, 1, 2].

Selected in Round 1

Round 2 , 3, 4 - All three are DSA round (45 minutes : The interview is strictly limited to 45 minutes, and the recruiter won’t allow even a single extra second.)

Interview 1 : https://leetcode.com/problems/car-pooling/description/

Interview 2 : https://leetcode.com/problems/sequence-reconstruction/description

Interview 3 : Based on OOPs concepts Create an online match-making algorithm that receives players and dispatches a call to a game server when it finds players with close enough skill ratings to play against each other.

Specifically, the candidate should create a class MatchMaker with a single public method to a add a player to the match-making logic. They can assume that a class GameServer with a StartGame(player1, player2) function, as well as a class Player with a GetRating() function already exist.

Players should be added to a match as soon as a valid match is found and not wait for a more optimal match coverage solution that may occur with additional players.

The max skill rating difference allowed is the same for all games (the candidate may assume that they can get this via the MatchMaker constructor, but a global constant is also acceptable), and should be inclusive.

Result is still pending ...

Interview Questions (4)

Q1
GetTotalCount with Concurrent API Calls
System Design

Implement the function "GetTotalCount(num_docs: int)", which returns the total number of words in documents with ID numbers in the range [0, num_docs).

E.g. GetTotalCount(5) -> # words for docIds 0,1,2,3 and 4 return the sum of those # words.

Candidates have the following Web API available to retrieve the number of words in a document id.

https://www.count-words.com/document/?worker_id=

Response: { count: <# of words for document-id> }

worker_id = there are infinite worker and the worker_id is a non-negative integer [0, infinity). One worker can perform only one computation at a time.

https://www.count-words.com/document/1?worker_id=1 --> trigger #words on worker 1 for docId 1 https://www.count-words.com/document/2?worker_id=1 --> Cause an error if the above call is in progress. --> If that call is finished, trigger #words for docId 2 on worker 1 => It could take a long time for the a API call to finish (for e.g. if doc has a lot of words).

Follow-up: "GetTotalCount(num_docs: int, num_workers: int)" where num_worker is the max workers that available with ids [0, num_workers).

GetTotalCount(5, 3) => Have to get # words for docIds [0, 1, 2, 3, 4 using workerIds [0, 1, 2].

Q3
Sequence Reconstruction
Data Structures & Algorithms
Q4
Online Match-Making Algorithm (OOP Design)
System Design

Based on OOPs concepts Create an online match-making algorithm that receives players and dispatches a call to a game server when it finds players with close enough skill ratings to play against each other.

Specifically, the candidate should create a class MatchMaker with a single public method to a add a player to the match-making logic. They can assume that a class GameServer with a StartGame(player1, player2) function, as well as a class Player with a GetRating() function already exist.

Players should be added to a match as soon as a valid match is found and not wait for a more optimal match coverage solution that may occur with additional players.

The max skill rating difference allowed is the same for all games (the candidate may assume that they can get this via the MatchMaker constructor, but a global constant is also acceptable), and should be inclusive.

Preparation Tips

To be honest, I wasn't very consistent with LeetCode, and only began solving problems regularly when I started preparing for this interview — because like many, Google has always been one of my dream companies. I also did lots of research, reviewing other interview experiences, and noted that graph topics—particularly DFS, BFS, and Topological Sort—are considered mandatory for interviews.

Discussion (0)

Share your thoughts and ask questions

Join the Discussion

Sign in with Google to share your thoughts and ask questions

No comments yet

Be the first to share your thoughts and start the discussion!