Google Poland L4 Interview experience.
Summary
I interviewed for an L4 Software Engineer role at Google Poland, going through a comprehensive process including technical and behavioral rounds. Despite feeling positive about my performance, particularly in problem-solving and coding, I was ultimately rejected without specific feedback, which left me disheartened.
Full Experience
I was reached out to by an HR on LinkedIn for an L4 Software Engineer opportunity in Poland and scheduled an initial call.
1. Initial HR Call (30 mins)
This call covered basic questions about my language preferences and my revision timeline. Following this, a screening round was scheduled.2. Screening Round (45 mins)
I was given a problem involving encoding and decoding a Directed Acyclic Graph (DAG), with a follow-up to include cycles. I made sure to ask clarifying questions, create examples, and consider edge cases. I thought out loud, explaining my approach verbally while writing clean, properly indented code with appropriate methods. After completing the solution for DAGs, I performed a dry run and discussed how to extend it for cycles. The interviewer seemed satisfied, and two weeks later, I received a call to schedule further interviews. Two DSA rounds and one Googleyness round were scheduled for about 20 days later.3. Round One - DSA (45 mins)
The interviewer presented a parking lot problem. I needed to design a system given an array of pairs (vehicleType, slots) and another array of pairs (vehicleType, costPerMin). Three functions were provided to implement:initialize(vector<pair<string, int>> slotsPerType, vector<pair<string, int>> costPerMinPerType);
bool onEnter(string plateNumber);
int onExit(string plateNumber); // returns calculated cost & -1 otherwiseAs before, I asked clarifying questions, thought aloud, and wrote clean, modular code with proper indentation, explaining each line. I created an example, performed a dry run, and covered edge cases. The interviewer then asked me to write unit test cases. I wrote some tests in the main method and iterated over them to verify the functionality of the three methods. The interviewer acknowledged the code was fine but commented, 'I was expecting you to write unit test cases and end to end code but the time was over.' This felt awkward, and I later emailed the HR about the feedback.4. Round Two - DSA (45 mins)
For this round, I was asked to create a custom LinkedList that would store three pieces of information:value, a pointer to the next node, and a string containing a hash of the current value as well as the hash of the next node's hash. If the next node didn't exist, its hash should be considered an empty string. I again asked clarifying questions, created an example, thought out loud, and wrote clean, properly indented code while explaining my thought process. I implemented a LinkedList class and a Node class, including an addNode function. The interviewer then asked me to write a function to validate the linked list, returning false if any node's hash value was tampered with, and true if all nodes' hashes were valid. I coded this function, and the interviewer seemed happy. We ended the round discussing the onboarding process.5. Round Three - Googleyness (45 mins)
This round involved several behavioral questions. I felt I handled them well, engaging in back-and-forth discussions, and the interviewer seemed content.Verdict
The very next morning, I received a call from Google. The recruiter asked for my feedback first, then informed me that I would not be moving forward this time and that there's a 12-month cool-down period before I could reapply. When I asked for specific feedback, I received a generic reply: 'I do not have a feedback but in general, I would suggest keep doing what you were doing and keep practicing DSA and coding then apply again after 12 months.' I pressed for areas to focus on, but he reiterated that he had no specific feedback. Later, I asked him if the decision was from the hiring committee, given that decisions usually take 7-10 business days. He replied that 'it was a team decision not from the hiring committee.' The entire experience felt terrible in the end.Interview Questions (3)
I was given a question on encoding and decoding a Directed Acyclic Graph (DAG). The follow-up involved extending the solution to include cycles as well. I clarified the problem, created examples, thought out loud, and wrote clean, properly indented code. I also performed a dry run and discussed how to handle cycles.
I was presented with a parking lot design problem. I needed to implement a system that manages parking slots based on vehicle types and calculates costs. The problem provided three function signatures: initialize(vector<pair<string, int>> slotsPerType, vector<pair<string, int>> costPerMinPerType), bool onEnter(string plateNumber), and int onExit(string plateNumber) (which returns the calculated cost or -1). I asked clarifying questions, thought out loud, wrote clean code, created an example, and dry-ran the solution covering edge cases. I also wrote unit tests.
I was asked to create a custom linked list where each node stores a value, a pointer to the next node, and a string containing the hash of the current value as well as the hash of the next node's hash. If the next node doesn't exist, its hash should be considered an empty string. Subsequently, I needed to implement a function to validate the linked list, returning false if any node's hash value is tampered with, and true if all nodes' hashes were valid.