India
8h
687
Rahul Gandhi is poison but the people who believe in him are a lot worse
2024 Presidential Election
Yesterday
252
You get what you vote for
Fitness
Yesterday
1229
Does cardio help for weight loss ?
Health & Wellness
Yesterday
1253
Low Testosterone
Tech Industry
Yesterday
5549
BREAKING: Internal sources confirm another round of layoffs just hit emails at Tesla. For real.
I just finished my interview loop with google for a ML engineer position(remote) at google. I have benefited a lot from reading other peoples experiences and I have decided to document my own experience. Additionally, the blind community has several posts for software engineer, but is lacking posts for higher level ML engineering interviews at google. So, I hope this helps the next person. Interview results: Offer@L6 Recruiter shared that HC reached consensus on my case quickly for an L6. Preparation ============================== My preparation was not only for google, but for also other companies. In total, I interviewed with Facebook(Reject), Microsoft(Offer), and Google(Pending) in the given order. I have been prepping since May 2021. In total, I must have completed over 400 leetcode problems with varying difficulties. Additionally, I also spent two months on code forces solving over 200 problems. The training from codeforces helped a lot more than leetcode. They have a edu course that thoroughly covers concepts such as suffix arrays, binary search, segment trees, disjoint set union and two pointers. The problems from code forces range in difficulty from lc easy to lc hard++++. For the ML system design interview, I studied content from grokking the ML interview from educative. Otherwise, I did not spend that much effort as this is my main function at my current role. For systems design, I used several resources 1. Grokking the system design - educative 2. Grokking the advanced system design - educative 3. Distributed Systems for Practitioners - educative 4. DIAA book 5. MIT distributed algorithms course (https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB&index=1) - (videos, papers, assignments) 6. Several MIT distributed algorithms lectures from engineering classes 7. KTH reliable distributed algorithms course on EDX (just the videos on youtube) 8. Distributed Algorithms by Prof. Nancy Lynch (some of the first several chapters) 9. Blogs from facebook, google, microsoft From this list, only MIT distributed algorithms course provided sufficient content to my liking. All the other content was too shallow, but can be considered as complementary support material. I will also note that MIT distributed algorithms course might be too difficult for several people who don't have experience. (because its a graduate level course, and it references a lot of practical knowledge that you gain by working in the industry) Mock interviews: Pramp - I did 4 interviews on this platform, but I did not get any value on this site. Most people using this site are new hires and did not know how to conduct a proper interview. I would not spend my time on this site. Friends and Colleagues - 4 interviews with my friends actually helped a lot more. Previous Interviews - After having over 10 interviews with Facebook and Microsoft, I understood the formula for success. Interview Precursor ===================== I have applied several times at google, but I never heard back. I changed up my strategy and l was able to get in touch with a recruiter using a referral to my application. Initially, I wasn't going to apply at google, but after waiting on MSFT for several months with no traction, I wanted to start another interview and have a competing offer for when MSFT would extend their offer. During my conversation with the recruiter, I set expectations that I am looking for L6 positions at google and to set my interview loops as such. This was a lesson learned from the FB recruiter which actually down-leveled me for the interview loop (E4/E5). The google recruiter wasn't convinced that I could handle L6 interviews, but all my interviewers confirmed that this was for a staff/senior level role. Interview Style ===================== For all coding questions, I followed a strict format: 1. Clarify the question 2. Identify the constraints to the problem ( like will it fit in memory, lower and upper bounds of variables, etc) 3. Discuss or psuedo code solution to the problem 4. Provide Run/space time complexity before implementation 5. Reaffirm with the interviewer if everything is correct before proceeding 6. Create implementation 7. Sanity check solution 8. Re-validate run/space time complexity 9. Walk through an example(s). During the above steps, I was constantly communicating to the interviewer. (thinking out loud) Interview Schedule ===================== After interviews with both microsoft and facebook, I realized that having 4 or 5 interviews in one day was too overwhelming for me. Therefore, for the google interview, I asked the recruiter to space out my interviews over several days (Max of 2 interviews per day). In hindsight, this was a good move as it let me focus on specific areas. However, please note that the recruiter did not tell me my schedule until the day of my first interview. (which type of interview - coding/system design/behavioral/ml). The following was the break down of my interviews. Team Match 1 - manager/director Phone Screen - Coding Onsite 1. Coding 2. Coding 3. Behavioral 4. ML system design 5. System Design (reschedule - interviewer did not attend) Team Match 2 - manager System Design (reschedule) Team Match 3 - pending Interview Retrospective ================== All of my interviews were non typical leetcode questions. They were coding questions, but I could not find similar problems to point at in leetcode. They varied from medium-hard in difficulty. Phone Screen (45 mins) - I was given a recursion problem(med/hard), which I solved very quickly and provided the optimal solution. The interviewer was surprised that I finished the question so quickly as we had 30 minutes left. The interviewer than asked me several follow up questions(not related to the original question), which I was also able to answer thoroughly. With the last 10 minutes, I had several questions for the interviewers to learn about google's culture. After the interview, the recruiter shared the feedback that the interviewer felt that "it was best interview that I had in several years". I was very happy to hear this feedback as I spent a lot of time to practicing (solving problems and mock interviewing). Coding 1 (45 mins) - This was a strange question as this had a lot of information to take in. Also, there were many answers to the solution. I was able to provide a solution which was correct. The interviewer also focused a lot in unit testing the solution. Afterword, the interviewer modified the question several times. The conversion was as follows: strategies to provide alternate solutions, and converting the problem to be a streaming problem. I was able to finish the interview on time. I used the last 5-10 minutes to learn more about google and growth at google for staff engineers. Coding 2 (45 mins) - The interviewer gave me a prompt which outlined the problem. Unlike the other questions so far, I was given some existing code which I had to reuse in my solution. The interviewer also used this as a chance to find out my understanding of the existing code, and to test me on my ability to communicate coding ideas using programming vernacular. (After all, this is for a senior position which involves giving technical direction). As for the problem, it can be considered a hard problem. The interviewer wanted me to understand the prompt by creating test cases which would assert the solution. After a bit of digging, I was able to reaffirm my understanding of the problem. Then, I proceeded to explain the optimal answer to the problem. The coding was only 10 lines long. We then focused 10 minutes on creating additional test cases. The interview wanted mocks, but my provided test cases were all blackbox. However, the mock solution was one of my proposed test cases when I was in the discover phase of the problem. Behavioral - standard Q/A ML System Design (45 mins) - Unfortunately, I was not able to find any resources online which could help with this problem. And honestly, I don't think there is actually any preparation besides solving ML problems that could really help. The interviewer asked me a custom problem, after looking at my resume in a specific domain. The problem was in computer vision ,healthcare and retail, (which I don't have much experience in as I work on NLP and biomedical CV). The interview provided an initial prompt of the general problem which had to be solved using ML. As all the other problem asked so far, the problem is under-specified. Using the traditional ML development lifecycle, I was able to give a solution to the a limited version of the problem. The interviewer asked several questions during all parts of the ML development life cycle. Unfortunately, I don't think I provided very good answers to some questions and I even remember saying, I don't know how to solve certain nuances of the problem. I really struggled with this interview for the given problem, but I was able to highlight my ML knowledge and experience. Areas which I struggled: 1. How to get data to the custom problem? 2. How to generalize the problem to classify all things? As a analogy, and maybe a hyperbole, here is a similar prompt to my question: How would you identify different types of materials on a meteorite in a lab setting? diamonds, gold, copper, etc in an image? And to make it generalizable, how would you identify unknown substances on the image (elements from the periodic table, but unbounded)? For the above question, its very hard to get image data on meteorites. Additionally, to classify unknown objects on a meteorites is also a very hard problem. System Design (45 mins) - The interviewer did not show up and it had to be rescheduled. System Design (reschedule) - So, after all that preparation on system design, was it useful? Absolutely not! I might has well not have done it. The interviewer gave me a problem that combined ML and implementing a solution to a under-specified problem. The focus of the problem was about providing a quick solution to a problem and decomposing and reducing the work into small parts that can be delegated to other individuals. A lot of this overlapped with my experience as a tech lead and architect and seemed very practical. The problem was an actual practical problem(recommendation). The interviewer facilitated most of the interview. Although, it was a very back and forth conversation, I don't think I really thrived as I am used to driving the conversation at work and in my mocks. A lot of the communication was verbal, and I did not write much in the google doc. I have a preference to draw, but I did not draw anything during this interview. 5 min - introduction 10 mins - clarifying the problem 5 mins - specifying options 5 mins - creating SLO and success criteria. Estimation and Sizing. 15 mins - breaking down the parts (components) - focused on the unit of work (ex: Component A does this, and it does it by executing the following instructions, connect to the database, validate, call an API, combine inputs, clean up, etc...) 2 mins - questions for the interviewer In hindsight, I don't even know If I built a good solution. I don't build recommenders at work, which is possible why I gave a weak answer and the ML solution I provided was subpar. However, the interviewers wasn't really interested that much in the ML problem which is good. The focus was on building a connected inference pipeline. A connected pipeline is more concerned with all the other parts to make your model work and integrating into the current ecosystem, such as getting real time data to your model, getting the right inputs, invoking your model, interpreting the results, providing online metrics, using heuristics as substitutes. Even though, I did touch on all the above topics, I did not articulate my thoughts as concisely as in this post. Conclusion ================ Overall, below is my self assessment, but I might be too strict: (I will also ask my recruiter on the feedback to see how it matched up with my experience) 1. Coding (Phone) - SH 2. Coding - H 3. Coding - SH 4. Behavioral - SH 5. ML system design - LH/H 6. System Design - LH/H Overall, I felt that the interview process was great. I did not feel the same sentiment as most the blind community that "leetcode" problems should not be used during the interview. The interviews focused on more than just solving the problem. You needed to display a multitude of soft skills such as compromising, communication, tone, highlighting your experience and several other skills. Overall, I hope I get an offer. I would love to hear from other interview conductors based the feedback above, if I am likely to get an offer. current tc: 240K yoe: 14 #tech #google
I bookmarked this post. Is there any nicer way to save posts?
I email the links to myself with a label
That's a good idea. Thanks
Great read :) Thanks a lot for sharing!
14 yoe and still had to convince for L6?
Appreciate the detailed write up. Good luck 👍 Can you please expand on what H, SH, LH mean?
This article goes over the ratings in detail: https://www.practiceinterviews.com/blog/what-you-should-know-about-googles-hiring-committees SH - strong Hire LH - Lean Hire
You’ve worked hard buddy Good Luck!! You deserve that offer
I agree that there's no real good ML System Design resources to learn from. I'm an AS1 (L4) working towards AS2 (L5), and I feel like thats the only thing stopping me from reaching there.
The only issue I have is that the job requires a year of preparation and when you are in you don’t use 90% of this knowledge and slowly forget it. For next job change spend another 6 months to a year getting interview ready. Everything goes obsolete :(
Not worth it
Nice write up . Enjoyed the read
sounds solid. What kinda ML use cases were u working on at Vanguard?
NLP