Discover more from BowTied Bull
10-Step Guide for Literally ANYONE to Land a 6-Figure FAANG Job (Part 3)
Level 3 - DeFi Virgin Analyst
Google prefers that you knock one interview out of the park and have at least one strong endorsement than having decent endorsements across the board.
As of 2019, Google requires a diversity interview. Here are some questions:
What is your experience with diverse workforces and how have you contributed?
What is the most diverse team you have worked on?
What do you think diversity adds to a team?
Have you worked with different cultures?
Online Assessment: Here are 20 LeetCode questions Google is known to ask during their online assessment: 1) Min Amplitude; 2) Ways to Split String; 3) Maximum Time; 4) Min Abs Difference of Server Loads; 5) Most Booked Hotel Room; 6) Minimum Domino Rotations For Equal Row; 7) Time to Type a String; 8) Maximum Level Sum of a Binary Tree; 9) Min Number of Chairs; 10) K Closest Points to Origin; 11) Odd Even Jump; 12) License Key Formatting; 13) Unique Email Addresses; 14) Fruit Into Baskets; 15) Min Days to Bloom; 16) Fill Matrix; 17) Decreasing Subsequences; 18) Max Distance; 19) Stores and Houses; 20) Watering Plants
8. Networking and Referrals
Some people will say that networking is optional, but I will argue that it is an enormous advantage to network. Individuals at the company know secrets to the interview that you may not. For example, did you know that Google will ask you “How much do you enjoy coding,” and that any answer other than, “I love it and do it every second of every day even after work” will ding you?
Additionally, Google’s DSA problems will emphasize knowledge of graph problems. There is no way you will get this insider knowledge without networking because it varies significantly across each company.
You will not know a company’s idiosyncrasies such as this until you network with someone in the field. It is in your best interest to maximize your preparation before interviewing because there is a 1-year wait time to reapply to FAANG. Some companies such as Apple have reduced this time to 6 months, but 1 year is typical.
Unlike Wall Street, getting the interview is easier than the interview itself. Most tech companies will interview nearly everyone because they have an online LeetCode test that filters out low-quality hires. Though, to minimize risk, I suggest getting a referral anyway because it guarantees that you will pass the résumé screening.
Employees are encouraged to do referrals because they can receive >$5k bonuses for a successful referral. However, this bonus may only apply if you have not applied to the company before. If they ask if you’ve applied before, now you know. Still, if you are a generally likable person and respectful in your approach, most people are willing to help.
How to Get a Referral
If you graduated from a university, try searching in alumni groups or talk to your career center. If not, hop on LinkedIn, make a neat, detailed profile, then start doing cold outreach to people at the companies you are trying to apply to. It is easier to reach out to more junior than senior people, but this varies.
Do not be that guy that spams messages to everyone or reaches out to a senior-level person with “cAn We GeT cOvFeFe,” especially if unprepared. People talk, and they will know that you sent the same message to five different people even if they are on different teams.
LinkedIn will also let recruiters reach out to you if you have a decent profile, but this is unlikely unless you are experienced or have a Master’s Degree.
For cold outreach, you want to follow @BowTiedBull’s method:
Include 1) Who you are, 2) Why they should hire you, 3) What you can bring and 4) Exactly what position you hope to obtain. Again keep this short, 3 sentences or so and send them out on a Friday.
“Hi my name is (name), and I previously worked at XYZ firm doing XYZ and YXZ tasks. Given my previous experience in XXX and XXX, I believe I could be a good fit with your organization. In particular, I am interested (company) because of XX, XX, XX. If possible I’d like to set up a quick meeting about any advice you have regarding the interview.”
If you really want to, you can just pay for a referral on RooftopSlushie.
However, my goal is to make this guide accessible for people without money or a college education. So, here is my Sly Fox Tip for getting referrals:
Look up the keyword “(company) referral”
See if others have offered referrals in the past
If yes, look at the profile of people who have done referrals in the recent past. They may have an email in their profile, or you can message them from the platform itself. Be courteous when asking for a referral because many people are rude about it, so they are hypersensitive to your approach.
If you are unable to find anyone, make a post that says, “I’m a (new grad) / (older hire that is trying to pivot) and has prepared for tech interviews for x months. Many people recommend getting a referral. Does anyone know the process behind getting referrals or reaching out to people? I’m not sure how it works.”
Because this is a nice approach that is not just, “REFER ME,” you will get a lot of messages of people saying they can refer you.
You can also reach out to people in online groups. Search “FAANG/Big Tech interview Discord” to look for Discord groups. On the Jungle Discord there is a channel where people post their backgrounds. You can see who has worked at a big tech company and reach out to them for a referral as well. You may also be able to find someone on the CS Career Hub Discord. Just look around.
During recruitment, you will first get an online assessment, 1–2 phone / remote interviews, and then an onsite super day. The super day will have multiple technical interviews and may include a casual lunch interview.
Notice how this is very similar to Wall Street. You can use much of the Wall Street advice on behavioral interviews to prep for FAANG interviews.
If you are dealing with misfortune, reschedule and deal with it first. There is no need to let extenuating circumstances distract you during an interview.
If you get the names of your interviewers, stalk them online. The more information you have, the more common interests you can find and can build rapport with them. Use common sense here and do not overstep any boundaries.
Sly Fox Tip: Here is a framework to mention an interest.
They ask “How are you?” → You respond “happy because (something related to interest)” → They ask more about it → You mention their interest → $$$
Suppose you know their favorite basketball team. “How are you?” → “Pretty happy, my favorite basketball team just won a game last night.” → “Oh, what’s your favorite basketball team?” → $$$
Suppose they just had a great vacation in Colombia. “How are you?” → “I’m doing great! My girlfriend and I just planned a visit to her family in Colombia” → $$$
Do not do this if you have no clue about anything regarding that interest. (But how hard could it be to watch some travel videos on YouTube…) 😉
Etiquette for On-Site Interviews
Do not be a disgusting, basement-dwelling loser, nor a tryhard in a suit.
Wear fitted, tailored clothing without wrinkles. Neutral colors. No ties or sneakers. Look up “Business Casual men/women” on Pinterest for ideas.
Hair and Nails
Keep your hair neat. Wash the back of your ears and clean your hair with shampoo and conditioner. Or get a haircut before the interview. If you have a scraggly beard, shave or trim it. Pluck wild eyebrow hairs, nose hairs, and ear hairs. Trim your nails and file them so you prevent slicing someone’s hand during a handshake. Go to a salon if you need to.
No bad breath. Avoid dairy, garlic, onions or cigarettes before the interview. Floss, brush, then mouthwash. You can use 1.5% hydrogen peroxide (or dilute 3.0%) and do a 30-second gargle if mouthwash is too harsh.
Use a tongue scraper before bed if your tongue is not red/pink and has discoloration or whiteness. If you want to double check your breath, you can scrape your tongue from back-to-front with an inverted spoon and take a whiff.
Wear lip balm to prevent cracked lips and licking sounds while you talk.
No strong fragrances or deodorant. After you get out of the shower, dab a wet fingertip into baking soda and put it on your (shaved) armpits. Be careful because excess baking soda can cause irritation. Mix with cornstarch or baby powder to dilute. These also works for sweaty hands.
Use the restroom before your interview even if you don’t feel like it. Stop drinking water 1 hour before your interview so you avoid having to go during. However, keep a small bottle of water on-hand so you may take sips during the interview to prevent mouth clicking and saliva noises.
Obviously turned off or at least Do Not Disturb mode. No offensive phone cases or wallpaper. Ideally an iPhone if doing Apple interview or Android for Google, but not necessary.
Come 10-15 minutes early, but not any more
Having a few copies of your résumé makes you look prepared and helps if the interviewers do not have a copy. A pen and small notebook are optional
Sit up straight and have open body language
Wait to be asked to take a seat or ask after they sit, “May I take a seat?”
Address the interviewer with the name they give you; trying to be too polite using their last name is awkward. Plus, avoiding Mr/Ms allows you to avoid misgendering someone
You can make a joke, but do not make it about something that can be interpreted as offensive in any way, such as race, religion, gender, politics, or economics
Do not speak negatively of previous employers
Thank the interviewer or panel at the end of the interview
Smile, but avoid overdoing it like a clown
There are many arrogant candidates and insecure candidates. Strike a balance and avoid being annoying or desperate.
Sly Fox Tip: Do not use amphetamines. If you are extremely timid, consider taking a single shot of liquid courage before your interview.
You do not need to know the answer, how to solve the problem immediately, nor how to code perfectly either.
They want to know that you have a structured thought process. They also want you to be excited about the problem (do not overdo this).
On a whiteboard:
Start at the upper-left corner of the board.
Erase things taking up space.
Don’t close braces or if blocks until you get to them
Add whitespace around lines so you can add things later
Pay extremely close attention to everything that they are saying and write it down. Repeat the question back to them in your own words. Write the expected input and output. Ask your interviewer for clarification if you are unsure about anything. For example, “What should happen if the input is negative?”
Then, state every single one of your assumptions:
“May I assume the input is positive?”
“May I assume these are all 64-bit integers?”
“May I assume everything in this string is ASCII-encoded?”
“May I assume this graph is formatted as an adjacency matrix?”
If they give you nice inputs, you will save time on error-handling. But, if you don’t explicitly ask them in the beginning, they will hold it against you later on.
You do not want to write an algorithm that does the wrong thing, so ensure that you have gone through the requirements thoroughly.
Generating a Solution
Then, think out loud about a solution. Never go silent. “I’m thinking about…”
If you are unable to come up with a good solution:
Think of an unoptimized, brute-force algorithm
Look for missing requirements or ask for clarification
Start with base cases and build it out from there
Draw an example
Solve it “incorrectly” and think about why it does not work
Solve a simpler version of the problem
Think about how you would solve it in your head
Run through all the data structures you could possibly use
Consider a Hash Map (Dictionary in Python)
Try sorting first
If the problem breaks down into a search, consider Binary Search
If solving for an input (N–1) is easier than (N), use dynamic programming. If a dynamic programming solution is too difficult, start with a recursive algorithm and optimize it afterwards
If you need to take a min or max of a dynamic collection, consider heaps
If you need to insert random elements, consider a sorted array
Be honest with the interviewer if you are unable to come up with anything. They will give you a hint. You may lose a point, but it is better than not having a solution at all. However, just like LeetCode, try extremely hard before you give up.
Once you have thought of a solution, explain your approach in detail before you start coding. You should not start coding until spending at least a few minutes thinking it through first. Explain why your solution works. “Because” is your favorite word here to justify correctness. You can outline what you will code using using comments if you want, but do not let this take up too much of the interview time. Keep talking while you are coding
Be EXTREMELY careful, if the interviewer says “are you sure about X” they are telling you to think twice. Never ever respond with “yes / absolutely.” Don’t be embarrassed if your interviewer pauses or interrupts to help you. If you take it in stride, it reflects well on your character. Remember, they are doing a wholistic evaluation; you are not just being tested on how well you solve the problem.
Wait for the interviewer to give you the green light to begin coding. You should ask, “May I begin coding?” Announce that you will be using Python. Also mention if you will be using any special data structures or libraries: “May I assume that I have access to X?”
Sly Fox Tip: You can use helper functions within your main function without filling them in immediately. For example, suppose say you are writing a findAverage() function. Average is defined here as the sum divided by the frequency of a set of numbers. Within findAverage(), you can have findSum(). Explain to your interviewer what findSum() does and why it is important, then tell them you will fill out the function later. At the end, ask your interviewer, “This helper function does X. Would you like me to write/fill it out as well?” They will not always say yes, thus asking may save you precious time.
Optimizing Your Code
Announce that you will now optimize your code. Analyze the time and space complexity of your algorithm.
Optimize your code by using the BUD method:
If you have an algorithm with multiple stages, and one part of it has greater time complexity than the other, there will be a bottleneck.
For example, if you have an O(N log N) sort followed by a O(N) search, the total time complexity of your algorithm will only improve if you change the O(N log N) sort. You should still improve the O(N) linear search to an O(log N) binary search, but mention that the runtime does not improve significantly because the sort dominates.
Note: A single O(N) linear search is faster than an O(N log N) sort followed by a O(log N) search. However, when you are doing multiple searches, m * O(N) grows faster as m → ∞ in the long run compared to O(N log N) + m * O(log N). It is worth mentioning tradeoffs like this to demonstrate your knowledge.
If you must sort and are unable to make it any faster, you know that you have the best conceivable runtime, and you should state that this is your lower bound.
See if you can trade increased space complexity for decreased time complexity. Faster algorithms are generally more valuable than space-efficient algorithms because space is easier to increase.
Once you have a solution, consider reformulating it. Example:
Question: Print all positive integers in this equation, a² + b² = c² + d² where a, b, c, d are integers between 1 and 1000.
Brute-Force Solution: 4 nested for-loops, runtime O(N⁴)
n = 1000 for a in range(1, n): for b in range(1, n): for c in range(1, n): for d in range(1, n): if a**2 + b**2 == c**2 + d**2: print(a, b, c, d)
You can improve this by rewriting the equation as d² = a² + b² - c²
n = 1000 for a in range(1, n): for b in range(1, n): for c in range(1, n): d_squared = a**2 + b**2 - c**2 if a**2 + b**2 == c**2 + d_squared: print(a, b, c, d)
You no longer have to loop through d, so this equation is reduced by a factor of N and is now O(N³)
Optimize repeated work.
Let us take the Fibonacci sequence for example.
The first way to represent the sequence is via recursion:
def fibonacci(n): if n <= 1: return n return fibonacci(n - 1) + fibonacci(n - 2)
Think about this for a second.
When you call fibonacci(n - 1), you are going to call fibonacci((n - 1) - 1). But is that not just fibonacci(n - 2)? You already calculate fibonacci(n - 2) in the previous call. So you are doubling the amount of work you have to do with every call.
The time complexity of this recursive algorithm is O(2ⁿ). You can see how this works because the branches are in pairs of 2. Notice the repeated branches.
We can optimize this algorithm by saving the value of each fibonacci(n) that we’ve already calculated in an array:
def fibonacci(n): f = [0, 1] for i in range(2, n + 1): f.append(f[i - 1] + f[i - 2]) return f[n]
And now we have O(N). Notice how much smaller the tree looks:
This is a huge difference. With 1 computation per second, fib(10) would take half an hour with the first algorithm, and 10 seconds with the second. You can try it on your own computer and feel the difference.
Cleaning Your Code
Announce that you will now clean your code.
Once you have a solution, refactor to make it look neat.
Ensure that the code is compilable and not pseudocode, and that you have as few syntax errors as possible. To save time, you may abbreviate code that is repeated consecutively (such as insertions to a LinkedList), but ensure that your interviewer knows what you are doing.
If you use .add instead of .insert on a LinkedList, it is not a big deal. But, if you start using operations that are unsupported in your language such as ++i or --i in Python, the interviewer will begin to get concerned, and it demonstrates that you have little experience with the language.
Modularize the code with DRY - don’t repeat yourself. Put repeated code in functions.
Read style guides for the programming language you will be using. For Python specifically, read the PEP8 Python Style Guide and the Google Style Guide for Python. There are other tricks you can find online and with books such as Clean Code, but those two should be sufficient for an entry-level interview.
Here is one of my favorite pieces of advice:
There are two ways to represent an if statement.
The first method is to compare a variable inside the if statement:
if cost > 5: leaveStore()
My preferred way is to make this more readable by defining a boolean outside:
tooExpensive = cost > 5 if tooExpensive: leaveStore()
Announce that you will now test your code.
Write examples and edge cases:
What happens if an input is:
very small / large
a fraction or decimal value (double)
Double-Check: ”Is the arithmetic correct?”
Consider base cases
Casting doubles before doing integer division
Stack Tracing: “What is happening in memory?”
Line-By-Line Analysis: “What should happen on line X, then line Y?”
Example Cases: ”Let me walk through this small test case line-by-line”
Understand Rubber Duck Debugging
When you are finished, announce it to your interviewer.
There are many types of behavioral interview questions, but the best way to prepare for all of them is to be introspective and reflect on your classwork, challenges, and work experience. Get a journal and start writing about some stories that can reflect positively on your character.
You can use the Amazon Leadership Principles as a starting guide and write about stories related to those principles. Here is a YouTube playlist that explains the culture and principles of >100 different companies.
There are hundreds of behavioral interview questions online and examples on YouTube. You MUST answer them in STAR format. Here is a guide by Harvard on how to answer behavioral questions, including advice for phone and video interviews. Harvard also has a rubric that hiring managers use to evaluate candidates. Grokking the Behavioral Interview is also a good free course. Start your answers off with, “Sure, I’ll tell you about the time I…” to give your interviewer a heads-up overview.
Generally, they just want to know if you will be pleasant to be around. Even when Google says that they are testing for “Googleyness,” this is just another word for “cultural fit.” They are asking themselves, “is this person sharp, pleasant, humble, mature, interesting, curious?” There are far too many insufferable candidates, so they want to ensure you are not one of them. Again you can just look up “Googleyness” on YouTube and find plenty of examples.
Be clever when you weave these traits into your interview. For example, one subtle way to demonstrate emotional maturity is to be slightly happy when a particular question is challenging. Getting frustrated or emotional is the last thing you want to do when you come across a difficult question.
Sly Fox Tip: If you have zero interesting experiences, you can lie, but make sure your lies are convincing. Just add some spice to your existing stories. You do not want to be in a position where they ask more details about a scenario, then you stumble on your answer. At least if your story is somewhat truthful, you will find it far easier to B.S. on the spot. You can practice your acting skills by going out to bars or random Meetups and Toastmasters Clubs.
Thank you again to BowTiedFox!
Disclaimer: None of this is to be deemed legal or financial advice of any kind. These are *opinions* written by an anonymous group of Ex-Wall Street Tech Bankers who moved into affiliate marketing and e-commerce. Child Labor Investments is a joke/meme and not a legal entity.