Two days ago I landed a gig at Amazon!
['hip', 'hip'] // Hip Hip Array!
I was also rejected by Google a week and a half ago :(
2b || !2b // To be or not to be
All FAANG interviews are hard.
let me = 'have a <br>' // let me have a break
"All FAANG interviews are EXTREMELY hard."
I wouldn't agree with this statement.
FAANG interviews are different.
Different does NOT mean EXTREME or EXTREMELY HARD
Are they Easy? Definitely not easy either.
So Extremely Hard, right? Honestly - I'd say no. They're not EXTREME in any regard.
FAANG interviews aren't EXTREMELY hard. They are tedious and time demanding if you DONT have the interview preparation experience.
So, Tedious and time demanding?
Below is a blog post I wrote outlining my thoughts and insights on the Google interview process while I was in the Google interview process.
At the time of writing this, I'm in Google's interview process.
The recruiter emailed me a list of study materials to prepare for Google's interview process.
The email snippet below is that list of resources.
This email snippet is directly from my Google recruiter.
FAANG Study Resource: Cracking the Coding Interview
FAANG companies go above and beyond to give you the best resources that'll help you prepare for their interview process.
They invest a lot of time and money into hiring engineer's that can meet or pass their coding challenges.
Although, that being said - FAANG interviews aren't meant to measure how great of an engineer you may end up being.
They're instead measuring to make sure you are above a minimum threshold.
FAANG companies don't let any weak links in, but that doesn't mean every one is phenomenal or a software engineering God. Does Google have a few top of the industry studs?
But 99% of the software engineers at Google aren't any different than you're pretty good software engineers at other organizations.
The difference at Google, Amazon, Netflix, Apple, and Facebook is that no one is below that better than average threshold.
The truth about their interview process is that many of the senior engineers at FAANG wouldn't be able to pass the interviews again - even though they're some of the best in the field. At the same time many far less experienced software engineers much would be able to pass the interview process.
"FAANGs Interview process priorities letting good engineers go to keep any bad one's from potentially getting in the Door"
FAANG's interview process is focused on NOT letting bad engineers in.
FAANG's interview process wants the best talent (who doesn't), BUT that is not the top priority of these interview processes.
If they are stuck between you're amazing and you may be a weak link in the chain then you're not getting through the door.
Their priority is to not let engineer's below a certain threshold through the door.
Fortunately and unfortunately, the types of interview's they give are very learnable. You can study and pretty much anyone willing to invest 300 - 500 hours into data structures, algorithms, and coding challenges would be able to eventually get into Google.
I'd honestly say getting into a FAANG company isn't much harder than getting into a start up.
It's just different.
The types of interview's given aren't what real world experience teaches you.
Weirdly, at this top level, College universities teach many of the concepts that FAANG tests over.
Now, that being said, just because the universities teach the concepts does NOT mean they teach you how to pass the coding challenges.
it's just the type of interview's they give aren't what real world experience usually teaches you.
If you understand data structures and algorithms really well and happen to invest your time into coding challenges for fun...
Then you'll probably be in a solid position to do really well.-
If you've never had to use data structure's and algorithms because you've never worked at FAANG and have never gone to college and don't love investing your free time into data structures and algorithms (like me) - then you have a lot of learning to catch up on.
If you've never taken a college course (like me) and have never needed to dive deep into data structures and algorithms then this learning curve is going to require 3 to 6 months of your time.
If you aren't familiar with the types of interviews given at FAANG companies, then you'll need that 3 months to 6 months of studying to basically get good at big-o notation, time-complexity, space-complexity, data structures, algorithms, and coding challenges.
You'll need a few months to prep up.
On the other hand, there's an upside.
If you have 10 years in the industry or your brand new you really only need that 3 to 6 months in both instances with everything else being even (You have invested time into data structures, algorithms, or coding challenges at all).
The upside is if you have little real world experience and are interviewing at FAANG then you still really only need 40 hours per week of studying full time for 3 to 6 months to also pass the coding interview.
If you can invest 40 hour per week studying full time, I'd estimate you really only need 3 to maaaybbeee 6 months - 10 years experience in the industry or a newbie, the time commitment is the same if you haven't learning data structures, algorithms, or invested into solving coding challenges.
The 3 - 6 months of prep is hard work, nothing extreme, just hard. But, if you are able to invest the effort into building your data structure, algorithms, and coding challenge skills for those 6 months then lala you're making the big bucks at FAANG.
It's hard work but FAANG pays the big bucks and has plenty of applicants to choose from. They don't mind waiting on you to be able to pass their coding challenge.
Side note - you can check FAANG software developer salary ranges at Levels FYI.
Software Engineer - Google - L4
- $267k/yr average income
Note: L4 is one level above entry level at Google
- L4's usually have 3-5 years industry experience
What's crazy is that it'd honestly probably only take 3 to 6 months for both an engineer who has 10 years of experience in the industry as well as an engineer who is straight out of college or
didn't even go to college and has less than a year of experience to study devotedly and pass the interviews.
Ironically, I think that has a lot todo with getting in the door for the actual interview and less to do with the interview process itself.
Don't get me wrong, the interview process is intense - far from easy.
But it hasn't felt any more difficult than learning something like object oriented design patterns. If you don't have the experience then you just need to invest the time to learn 30 to 50 different design patterns. Once you know them, you'll want to begin to recognize those patterns in different contexts.
- When would these patterns be good to use?
- When wouldn't they?
- What's the pros of this pattern? What's the cons of this pattern?
- Composition vs. inheritance?
- How do I use patterns to create clean code?
Follow The Clean Code Studio Blog For More
The Google interview process (studying for it) feels a lot like learning design patterns. It's not necessarily easy and can feel boring or daunting at times when you're learning more tedious patterns - but it's definitely a feasible task.
You just can't cram and expect to understand the intricacies of the design patterns.
Google Recommended Study Resource: Example Google Interview
"You need practice and experience."
Data structure and algorithm coding challenge problems at FAANG interviews are the same kind of ordeal.
Instead of having design patterns that utilize an interface and multiple classes that implement a given interface...
you instead have a coding question that requires an algorithm that can utilize the sliding window technique for O(n) time-complexity that needs to plug in a hash map data structure to keep track of key's and values.
Instead of figuring out dependencies and which design pattern helps you stay out of dependency hell, you're figuring out time-complexity/space-complexity and making sure you're operations aren't growing relatively large relative to the input so that the 100 million data items passed in to populate your parameter's data structure during a single request doesn't cause the function to be a bottle neck due to being incapable of processing data sets of that size.
You're code must be optimal enough to handle huge data sets at companies like Google, Amazon, Facebook, Microsoft, Netflix, or Apple. These companies handle billions of requests and immense amounts of data.
Time complexity is simply counting the number of operations executed relative to the size of a given functions input. Design patterns are simply intended to manage dependencies and minimize bugs.
You have to learn how to properly implement given data structures and algorithms to minimize the operations executed within the context of a given challenge.
You have coding challenges that you can use the sliding window technique because based on the problem it makes sense. There's trade offs to using it and certain cases.
The sliding window technique wouldn't make since in many contexts. Maybe instead of a sliding window being used on an array or linked list, it makes more since to use a tree or graph.
For many questions, trees and graphs don't make any since at all.
There's also sleight variations in the sliding window technique (fixed window, expanding window, closing window, resizing window, using a sliding window with an auxiliary data structure, etc...) that you learn about from a higher level understanding and then dive deeper to learn the contextual use cases and experience based understanding of the little differences in sliding window techniques.
It's intense preparing for a Google interview - no doubt about it. On the other hand, I was also caught off guard when I was invited to interview at Google. A recruiter reached out via LinkedIn.
If I knew I'd be interviewing at Google 3 to 6 months back then I would have been preparing for 3 to 6 months. I would have been preparing this entire time and would most definitely be feeling much more confident about the entire process.
Right now I'd say it's a coin flip whether I get in - but either way it's been an interesting learning experience and I figured it was one worth sharing.
Quick points to reference:
- Data Structures
- Coding Challenges
- Behavioral interviewing focuses on a candidate's past experiences by asking candidates to provide specific examples of how they have demonstrated certain behaviors, knowledge, skills and abilities
"Given a string
s, find the length of the longest substring without repeating characters."
Input: s = "abcabcbb" Output: 3 Explanation: The answer is "abc", with the length of 3
"Talk about a time when you had to work closely with someone whose personality was very different from yours."
- Distributed Systems
- High Availability
- Horizontal Scalability
- Load Balancers
- Which Databases should you use
- Event systems
"Here's a white board....design Uber"
NOTE: "System Design interview sections are only apart of interview processes for L5 and above at Google (According to a former google interview I studied with)"
So no matter the quality of the resources listed below, you'll still have to work your butt off and then most likely - unless you have the 3 to 6 months of prep in advance - you'll fail a few times before actually getting in somewhere.
That being said, once you're in the door for the interview the first time around - it's much easier to get back in the door (even if you failed the first round) for another interview 6 to 18 months in the future depending on the company.
Once you're in the first time, it sounds like it's much easier to get invited back. So with that, here is the snippet of google recommended study materials
And now, without further a due - here's the Google interview study resources recommended by Google themselves (along with the snipper from my Google recruiter with the list). Thanks to the google recruiter I worked with - he was awesome!
Follow Clean Code Studio For More Content