2. Max Product of K Integers. Not exactly on Leetcode, but this one I really like. https://leetcode.com/problems/maximum-product-of-three-numbe.... It's essentially finding the maximum product obtained by selecting k numbers from a list of N integers (1 <= k <= N). This problem can be solved with a greedy algorithm, two pointer with sorting, using heap, and dynamic programming.
3. Word Ladder (https://leetcode.com/problems/word-ladder/) I think it would be wrong not to include a string problem. I think there are a lot of different ways to solve this one. You could use a trie or treat the strings as a graph. There are also a lot of optimizations you can make depending on the length of words vs number of words.
Honorable Mention. LRU Cache (https://leetcode.com/problems/lru-cache/). This may be the most common interview question asked at one point. Being able to execute a doubly ended linked list, leverage a dictionary, and implementing them all in a class with object oriented principles.
These don't cover everything, but give pretty good coverage of all the topics.
Thanks for taking the time for this! 1, 3, and the honorable mention are among my all time favorites. I haven’t seen either variation of 2 before — Going to do it right now
Hi TreasonStar, so I actually went through a pretty painful team matching process myself. I had to wait 4 months getting turned down by hiring managers in favor of internal transfers.
Did your recruiters say that you had passed the hiring committee? If so, then your interview feedback is probably very strong. Even with the hints, Google decided you met the bar. I can't comment on what actually happened in the interview, but I suspect the delay on the team matching is not because of your interview performance.
Unfortunately all I can say now is that it takes time waiting. I was pretty picky with location so I had to wait longer. If you're concerned about the job market or looking to get a job soon then you can express to your recruiter you're open to more locations and also remote options (this would help if you originally said I need to be in X city).
Another thing you can do is look on LinkedIn for Google engineering managers that explicitly say they are hiring. You can reach out to them directly, inform them of your level and that you made it through hiring committee and ask if they'd like to connect. The recruiters don't know ALL of the managers hiring so this can help expedite the process.
I don't know if I've passed the HC, so I'm assuming no. My only feedback is that I did "great" in the interviews and I've moved on to the team matching phase.
I'm actually very picky about my location due to personal reasons, but it's good to know that will likely make the process longer.
Thanks for the tip of contacting the engineering managers directly. I might just do that when the frustration grows too large (even though I don't know if I've passed the HC).
Oh this is good to know. I would recommend asking the recruiter directly if you passed HC.
For borderline candidates what they do is wait until a hiring manager is interested in your profile before moving to HC. They do this because if a hiring manager already wants you on their team, then your chance of passing HC increases.
In any case I think the plan would be the same to reach out to hiring managers and see who shows interest. I'd also ask any friends you have at Google if there are teams hiring at your level. It will be easier if you're experienced hire (L4 or higher)
Should I be willing to relocate to US for FAANG internship or it would be fully remote? If need to relocate, will I be responsible for paying flight tickets and lodging?
> If companies have given you an offer to work in the US for an in-office internship, then will pay for any flights/relocation for you to get there. They will not explicitly pay for housing, but often will have some stipend to help with the housing costs. With any FAANG internship, you would be paid more than plenty to live comfortably. This way if you want to splurge on a nicer place you can choose to, and similarly you can choose cheaper options if you prefer. I think most companies will be doing internships in-office but it depends on the company. Are you thinking for this year or next year?
Submit resume directly to company website?
> I would say never do this unless a recruiter said to do this after you set up a phone call AND they told you'd they set up an interview. Online applications are basically black holes so don't apply. Often times if you get filtered out automatically here, you can't apply again even through a recruiter directly.
Also, what is the best way to get accepted for FAANG interview for someone with no work experience? Connect with FAANG recruiters on LinkedIn and direct message them?
> You'll want to add some experience to your resume. As a college student you don't need much. If you have any programming projects from coursework, you can put them on your GitHub (clean up the READMEs to make it look professional) and then put on your resume as "Open Source Programming". When you put "Coursework" recruiters don't take it seriously, so make sure it doesn't have "school project" written anywhere on it. They will never actually read the code so spend a good amount of time cleaning up the readme. Then update LinkedIn profiles to show the same thing. Once you've done this, then directly reach out to 25 recruiters per day. Recruiting is a numbers game so just keep reaching out. Even a 1% success rate means you get a phone call with recruiter every 4 days.
Maybe try to get some experience in other tech company before applying to FAANG to maximize chances?
> If your goal is to go straight to FAANG, I think it makes sense to just start going for FAANG internships as a junior.
One thing that was not discussed here is actually preparing for the interview. Once you get the interview, you need to actually be able to pass. I'd say 90% of the time spent should be on grinding LC and studying technical concepts and only 10% recruiting after you're able to solve interview questions reliable (150 LC-mediums completed).
+1 to the comment on the resume funnels being a black hole.
The best option is to directly interface with recruiters. Recruiting is a numbers game at the end of the day. There are pseudo-infinite recruiters and a few applications for each company.
If the goal is to get a FAANG-level internship, then there's 2 parts.
1. Get the Interview
2. Pass the Interview
My opinion is getting the interview takes ~10% of the time and passing the interview is ~90% of the work. With this in mind, I'll
Passing the Interview.
To make life easier, you should use Python for coding interviews. It's a high-level programming language, meaning that the code looks more like English that others like C/Java. When you start Leetcoding, focus on doing the problems in Python.
For most FAANG internship interviews, you'll be asked Leetcode-style quesitons. This means to prepare for the interview you should spend most of your time solving problems on Leetcode and then once you've completed ~150 medium level problems (https://neetcode.io/ is a good place to start) then you should try and find ways to do mock interview. You can DM me when you get that point if you need help setting up mocks.
Before diving into LC, I would recommend studying the equivalent of a data structures / algorithms course. If you've already taken one, then I recommend reviewing all the concepts before diving into Leetcode.
When doing Leetcode, make sure to really understand each problem before moving onto the next one. It's ok to look at solutiosn or hints the first 1-2 times you solve a problem, but you should really digest what the key ideas are so you can solve a new problem that uses the same technique/
Getting The Interview.
If you've done any programming projects for your university coursework or on your own, make sure they are advertised on your GitHub and link them in your resume. Either way put them as "Open Source Programming" on your resume and list as many bullets and keywords as possible (e.g. Python, Machine Learning, AWS, GitHub, Testing, etc...). You might think it's cringe to add all the keywords, but recruiters scan resumes like a computer, looking for keywords. University internship recruiters will think this is really good, even though they don't know what you're doing. Put the same projects as experience on your LinkedIn as Open Source.
Once these are ready, directly reach out to 25 university recruiters at the companies you're looking to work at every day. Ask them to set up a phone call for you to learn about open role. Once you get on the phone learn about the company and ask how you can get started with the process. Even if only 1% respond, that means you'll get a phone call every 4 days. Keep doing this over 1 month and you'll get several interviews.
Answering your Questions
what should I focus on?
Personal projects on my resume? Open source personal projects on my Github? You should take any projects you've already done for school or personally and put them on GitHub. Make it look professional with README and everything, but then focus on Leetcoding.
Contributions to big and established OSS projects? This is nice but not needed.
If so, should I dive deeply into a single project, or would smaller contributions to a few projects be more advantageous? Are there any specific projects / subject areas that I should focus on? What about commercial work experience (or the lack thereof)? It's not needed for FAANG internship interviews. How does all that compare to actual leetcode knowledge / algorithmic problem-solving skills? You just need to know Leetcode. Start by reviewing DS/A and then Leetcode until you've done 150 mediums.
Any great resources for acquiring those? Leetcode.com, Neetcode.io, https://ocw.mit.edu/courses/6-006-introduction-to-algorithms..., https://coachable.dev are all great places to start :)
While it can happen, I'd say it's very rare that if a candidate does poorly on the LC interview that they would get hired at FAANG companies in the current hiring environment.
FAANG companies don't really have another better alternative to Leetcode interviews so that's what they go with.
So yes, most FAANG are married to leetcode interviews especially for SDE1/SDE2 roles.
I'm looking to work for a US/EU company, from where I live. I'll take a look at the reddit thread, thanks. For now, I target small companies from AngelList + the who is hiring thread from HN. What do you mean by coding background?
Hi I totally understand the sentiment and this is a very common thought that I've seen people have about making the jump to FAANG. Just a heads up, my advice is in the context of getting SWE roles at FAANG companies.
First off, you definitely can make the jump to FAANG. You've gone through a PhD in applied ML. That's really challenging and at least in my opinion much challenging and impressive than getting an entry-level FAANG SWE job. Even if you don't know the core CS topics now, I doubt it will be that hard for you to pick them up. It will take some time to ramp up on them, but not too long.
To give more reference, if you were to go into FAANG with a PhD you would usually start as an SDE2 and earn 300k+ per year as a starting all-in compensation.
If you want to make a go into a FAANG SWE role, then here's what I'd recommend. My guess is the whole process would take ~300 hours so maybe 2-3 months if you do it 40 hours per week or ~5 months at 20 hours per week.
1. Learn to code in Python. You probably know a coding language (if not Python) by doing ML. Otherwise there are tons of free resources to get up to speed on Python (https://introcs.cs.princeton.edu/python/home/ is an example)
2. Data Structures / Algorithms. With your math background this should come quickly. You'll need to learn the bread-butter algorithms, the ones covered in every undergrad course on DS/A. Again there are tons of free resources online. Here's MIT's open source one (https://ocw.mit.edu/courses/6-006-introduction-to-algorithms...)
3. Practicing Interview Problems. Complete all the problems on here - https://neetcode.io/. If you don't understand a problem, study the solutions and google around until you do.
4. Mock Interviews. If you have friends in FAANG ask them to do a few mocks for you - this is what I did. Alternatively you can use pramp.com and interviewing.io to schedule some mocks. If none of these work, can DM me on hackernews and I can try and help set something up.
5. Recruiting / Getting Interviews. I've made several posts on reddit about this (https://www.reddit.com/user/coachdarek) but with a PhD all you need to do is ping 25 recruiters on LinkedIn per day saying you're interested in SWE roles. You'll get at least a few interviews lined up with 2 weeks. PhDs are hot commodities by big-tech.
6. Interview. This is the easy part, once you've got the interview skills and interviews setup, you just show up and do them. Make sure to have at least 6 interviews scheduled because there's a lot of variance in each interview.
If you have more questions, happy to answer and follow ups.
Thank you so so much! I guess #3-5 is what I need to work on. Let me go over a plan & if I still need some advice, I will shoot you an email. Thanks genuinely
Specifically for big tech companies there wasn't much difference. But then again, most of the companies are American companies so I imagine a lot of the same interview culture was brought with.
Most final round interviews would have 4 rounds with 3 technical and 1 behavioral. The behavioral seems very similar in that you would discuss past experience and how you handled challenging situations, etc etc.
The technical rounds are where I noticed some divergence. In the US, I think there is a stronger focus on doing Leetcode and doing the LC problems quickly (FB asks 2 medium level questions in their interviews).
However for the EU interviews, I've noticed that typically 1-2 of the interviews will be more practical based with debugging, code review, design classes rather than just straight Leetcode. In a 5 round interview you may expect 1 less LC question and 1 more "general coding" for lack of a better term. It almost feels like the EU companies were interviewing like slightly smaller tech companies do in the states and have a slight preference toward practical coding skills.
That being said, there are still 2-3 LC-style interviews so it's a lot of overlap nonetheless.
1. Unique Paths 2. https://leetcode.com/problems/unique-paths-ii/. This problem can be solved with dynamic programming, graph traversal, and recursion.
2. Max Product of K Integers. Not exactly on Leetcode, but this one I really like. https://leetcode.com/problems/maximum-product-of-three-numbe.... It's essentially finding the maximum product obtained by selecting k numbers from a list of N integers (1 <= k <= N). This problem can be solved with a greedy algorithm, two pointer with sorting, using heap, and dynamic programming.
3. Word Ladder (https://leetcode.com/problems/word-ladder/) I think it would be wrong not to include a string problem. I think there are a lot of different ways to solve this one. You could use a trie or treat the strings as a graph. There are also a lot of optimizations you can make depending on the length of words vs number of words.
Honorable Mention. LRU Cache (https://leetcode.com/problems/lru-cache/). This may be the most common interview question asked at one point. Being able to execute a doubly ended linked list, leverage a dictionary, and implementing them all in a class with object oriented principles.
These don't cover everything, but give pretty good coverage of all the topics.
Hopefully that answers your question!