Google (Offer) | Mountain View | Facebook (Reject) | Remote | Software Engineer | Dec 2020
Anonymous User
5918

Status

Years of Experience : 6
Position applied for : L5 (Google) | E5 (Facebook)
Leetcode problems solved : 45 Easy, 59 Medium, 8 Hard

Google (Offer) | Mountain View | Dec 2020

Telephone Interview:
45 minutes
Medium difficulty. Matrix related on Leetcode
The crux of the problem was multiple for loops and making sure the + and - are handled correctly. Lots of edge cases and frankly a pain to debug on whiteboard / online editor.
But the interviewer liked the logic and overall flow. I had a couple of minor + and - incorrectly handled, but lucikly for the phone round errors or hints are not considered seriously against you.
I was also less prepated at this stage.

Preparation before virtual onsite: Around 1 month

Virtual onsite: each round was 45 minutes
5 Interview - 3 Coding, 1 System Design, 1 Behavioral

Coding:
Not disclosing specific problems. But in general the Google style questions are much different than older leetcode problems.
Almost always ended up writing a class with multiple methods. It is a design + coding. And also how you gradually add meat into the class.

Lots of optimizations, starting from a O(n^2) solution.
Also ended up using one or more data structures in one class and then use that class in your solution class.

Some discrete math involved too.

Personally, I liked these more than FB coding questions. The class or the solution was about solving a real world problem. And the interviewers leave it upto you for most part to decide on the method arguments. E.g. adjacency list vs. adjancency matrix.

For LC prep, don't focus on super hard problems. Focus on "breadth" of problems. I'd recommend solve a few of each data structure type. Each problem of same type after 10th solution will give you deminishing returns on your thinking ability.

System Design:
Medium complexity. Very important for L5.
Also brush up on testing and challenges, approaches.
I thought I did ok, but the feedback was negative for this round.. recruiter said barely didn't make it.

Behavior:
Google has some differences as compared to Amazon / FB. They don't want fast and hacky solution. They want a proper solution even if it takes more time. And the behavior questions reflect that.
E.g. An instance where you thought it will take X time, but took X * 1.5 times and how did you convince. OR why choose A over B even if A took more efforts at first.

Virtual Onsite Round 2 :
Due to failed system design, and one lackluster coding round I was given a chance to do two more coding rounds since the 2 out of previous 3 coding feedback was very positive.
Also downgraded to L4 since the system design experience was not good enough.

Coding:
Similar to previous coding format. One of the question was graph related. And apparently I solved early, so there were multiple follow up questions but didn't have to code for them just a pseudocode approach discussion. And one of the follow up question had O(n!) complexity.. I think there was a way to optimize it more but we ran out of time. The questions were again real-world-ish, and vague.

And for Google keep in mind the questions start out as one or two liners and super vague. It is expected that you work through the ambiguity by discussing with the interviewer and find out different cases. This reflects on their regular experience of working on ambiguous problems and meaningful communication within the team, and they want you to demonstrate that skill.

The whole process from phone interview to the offer letter can take around 3 months. Be prepared for the long haul, unless you have competing offers which warrants some expediency and recruiters will try their best to speed it up too.

Another feedback about Google recruiters, I really liked them. They appeared to be really into their job sinceraly. Or maybe just my luck that both Google recruiters I worked with were nice.

Facebook (Reject) | Remote | Dec 2020

Telephone round:
Two LC easy questions. Finished right on time.
Mostly leetcode with slight modification, definitely not original.

Virtual onsite: 45 mintues each
2 Coding, 1 System Design, 1 Behavioral

Preparation before onsite: 2 weeks

Coding:
One round had 1 easy and 1 medium. Again very similar to existing LC.
Personally, these questions did not make me scratch my head or anything. Even though I solved just over a 100 LC problems, they felt familiar.

Second round had a head scratcher. As soon as I heard the question, I had a gut feeling I am going to bomb this one.
Backtracking, hash maps, and also a big matrix. Huge space complexity, and around O(2^(n * m)) time complexity. I was miserable while trying to come up with a solution.
Also, it required around 4-5 helper methods to copy a matrix etc. A whole method with two loops just to figure out if the recursion tree stopped there :( And two basic method, I just wrote a comment in it, no code... serisouly not enough time.
Throughout the first 30 minutes of interview, the interviewer had a serious face and I had no idea if I am on right path or wrong. But near the end interviewer specifically mentioned that the solution is good. And the helper methods with comments in it, we both ignored them, and we both thought the program is done but then I scrolled down (btw, it was 200+ lines) and oops. But luckily interviewer said, just ignore them they are basic.

Anyway, the style of questions again lines up with the culture. Hack it till you make it!

System Design:
Medium complexity. The key was to reduce DB operations and just hold them in cache until we had to write. Personally, I thought I didn't do well here (as opposed to Google)

Behavior:
Very focused on FB LPs. Get it done fast, and how to handle conflicts etc.
Btw, I made a horrible mistake here. Interviewer asked - "Why do you want to leave your current company". I answered, "I don't want to leave...", before I could finish my sentence with " but given the right opportunity I may", interviewer said while making writing down a note "Ah yes, it is good to be validated by FB". Facepalm....

The recruiter was not at all interested!! Extremely slow response.. sometimes none for weeks! I seriously thought I am being ghosted and thought about reaching out to the previous recruiter who handed me off to this one.

I even asked just give me some feedback even if it is negative. Finally after giving up on it, recruiter asked for 15 minutes. We setup a time, and recruiter didn't show up. Like WTH, at least let me know. I finally reached out next day and asked if we could just do it over email, and I offered whole next day.. just asked to drop me an email 5 minutes before the call so that I can step away from my work call.

According to the recruiter, I did solve both coding rounds, to expected complexity. But , "when it comes to FB, we have certain standards of coding. The team felt they will pass the chance to extend an offer this time, since they were hoping for me improve my style" . What the heck does it even mean!
I asked, what about System design, I felt I didn't do well, and was told that round was ok. No problem there.

The feedback was really confusing, and I got a feeling that this is a canned response. I don't even know what to improve on, what is style? My variable names? Or that I write too many comments?

What I really think happened was, they got a feeling that I don't want FB enough and just did the loop for experience. If the recruiter had said my coding was not fast enough, I would have understood, It did take longer time for the hard question and had incomplete helper methods. Maybe they just wanted a reason.

Thoughts
Please focus on solving multiple different types of problems instead of diving 120 question down into one area in sequence.

There is a luck component. I personally thought I will not be able to crack Google coding round, and FB was possible. But it turned out other way around. Or maybe I was lucky that Google wanted "layered" code, I do that even in my current job.

Can't speak for system design. I prepared using Gro** ing and some youtube videos. I have never designed or built high-scale system personally at my current job. Complex yes, but low scale.. enough to fit into one server. I hope my experience at Google in coming years will help me build that know-how.

If you have some tips on how to do better in System design rounds, when you don't get a chance to actually do that at your job, please share.

Comments (13)