Skip to content

Instantly share code, notes, and snippets.

@wilmoore
Last active June 24, 2024 13:12
Show Gist options
  • Select an option

  • Save wilmoore/ce2674bd716e66329d23aa0d66695353 to your computer and use it in GitHub Desktop.

Select an option

Save wilmoore/ce2674bd716e66329d23aa0d66695353 to your computer and use it in GitHub Desktop.
Software Engineering :: Career :: Interview :: Prep :: Training :: EX-Google Recruiter Reveals Secrets To Never Failing A Tech Interview

Software Engineering :: Career :: Interview :: Prep :: Training :: EX-Google Recruiter Reveals Secrets To Never Failing A Tech Interview

⪼ Made with 💜 by Polyglot.

related
  • When interviewer asks a question, do not just regurgitate the answer; instead, Verbalize your process for reaching a solution.
  • Often, in software engineering, there is no predefined solution; You have to work towards a solution.
  • The process to get to the solution often requires a lot of analysis; balancing trade-offs, discussing alternatives, and accepting feedback
  • The interviewer wants to know how you reached the answer, not just if you reached the answer
  • You'll be evaluated based on Senior-Level metrics, no matter what your leveling
  • How do you trade off time and space
  • How do you present alternative solutions?
  • Interviewers at FAANG or larget companies are primarily looking to see if you can make reasonable architectural and design decisions for large scale complex systems, and still know how to write software despite spending more time at meetings, design reviews and management than actually coding over the last few years
  • The larger the company you work for the less lines of code you actually get to write if you are hired at any level
  • There are different levels of beuracracy
  • The systems you work with are much more likely to function in a vaguely reasonable way because of the beuracratice decision that went into making them
  • Interviewers are definately evaluating ability to communicate complext technical topics; specifically, they want to know that you can communicate clearly, efficiently, and without being egocentric when mentoring junior engineers

leetcode.com

  • Easy questions are good for warm ups
  • Hard questions really aren't practical for interviews. Never seen one asked in an interview (Farah Sharghi)
  • Focus on medium questions
  • Solve at least 25 medium questions
  • Focus on fundamentals
  • Your interview will not be focused just on leetcode type questions, but still important to review fundamentals

Senior Level Evaluation Metrics

  • Ability to handle Complexity and Ambiguity
  • Teamwork
  • Collaboration
  • Communication
  • Enthusiasm
  • Passion for Learning

Characteristics Recruiters like to see in Senior Engineers

Junior developers are often supervised by Senior developers

  • Someone who cares about monitoring and alerting (not just unit testing)
  • Can negotiate with non-developers (especially product managers and operations staff)
  • Knows how the software will degrade if various systems are not working
  • Someone who understands the deployment process really well

Terminology Frequently Used when Dealing with Concurrent Traffic at Scale

Hiring company will want to know how you would deal with that

  • Sharding
  • Replication
  • Latency
  • Cap Theorem
  • Optimistic and Pessimistic Locking

Ambiguity

  • Answering a bunch of questions about data structures and algorithms is great, but, if you don't know how to apply them to an ambiguous question, where you are not given the method signature, what the inputs and outputs are, and what the data format is going to look like, then you'll most likely fail
  • Interviewers will intentionally give a vague and ambiguous question to see how you tackle that scenario
  • How to tacklet ambiguity is one of the parameters that you're going to be graded on.
  • Your interviewer may ask you a question like, Can you come up with an alternative solution to the problem with a different set of tradeoffs?
  • So, you better be prepared to think of what trade-offs would make sense and this is where you need to ask clarifying questions.

Time Efficiency

recognize opportunities for practicality and simplicity over always coming up with the most optimal time efficient algorithm

  • Suppose you get a question about Quickselect; There are a number of answers that you can choose from you can use (1) Brute Force (2) You can create a Heap (3) or, you can implement the partitioning algorithm. Partitioning is the most optimal solution; but, it's too difficult to write because it takes too much time to solve in the time allotted in an interview.
  • Interviewers would rather you use a less optimal approach such as (2) using a heap, and then quickly mention a more optimal algorithm/solution and why you're not going to use it; and it's because it's too complicated due to the time constraints of the interview
  • In this case, it would be better to use a Heap Sort, because it can be written much quicker

Teamwork

  • When asking questions, ask questions as though this is a colleague and you're solving a problem together.
  • Do not ask "is this the right solution"...
  • Demonstrate teamwork by asking collaborative questions as though this person is your colleague.
  • Sometimes interviewers just want you to answer the question, and if that's the case, just move forward and answwer the question.

Behavioral Questions

You are not being evaluated as much about your past experience as you are being evaluated about your future potential

  • Ability to learn and execute on a project
  • It's about the HOW more than the WHAT
Some Behavioral Questions Could Include

Be prepared to discuss prior projects with the mindset that it's about the trade-offs you made and why you made them

  • How did you execute on projects?
  • How was this accomplished?
  • How do you explore new technologies?

System Design

It's less about coding, and more about frameworks, APIs and design patterns

  • This section is the architectural portion of how to bring a system together
  • Scalability could play a factor as well
Resources

Technologies Frequently Used when Dealing with Scale

  • Amazon DynamoDB
  • Google Spanner
  • Big Table
  • Introduction

    • Video aimed at prepping viewers for software engineering interviews.
    • Presenter, Farah Sharghi, has extensive experience in both engineering and technical recruiting.
  • Background

    • Farah holds a bachelor's degree in computer science.
    • Experience as a software engineer working on graphics programming and text binarization algorithms.
    • Transitioned to technical recruiting, working for companies like Google, Lyft, Uber, TikTok, The New York Times, and Dillmill.
  • Mindset for Interviews

    • Shift mindset to view interviewers as potential colleagues rather than people to impress.
    • Ask clarifying questions to understand problems better, just as you would with a colleague.
  • Interview Preparation Based on Experience Levels

    • Different levels: entry, junior, mid, senior, staff.
    • Higher levels require understanding of complex systems and common issues.
    • Research the company to tailor your answers to their specific needs.
  • Difference Between Programming and Software Engineering

    • Programming is about writing code; software engineering is about managing and integrating code over time.
    • Focus on efficiency, scalability, and long-term planning in software engineering.
  • Technical Preparation

    • Practice medium-level questions from resources like LeetCode.
    • Fundamentals are crucial; senior engineers need to demonstrate tackling complexity, teamwork, and communication.
    • Understanding monitoring, alerting, deployment processes, and system degradation is important.
  • Dealing with Behavioral Questions

    • Ask clarifying questions using the five W's and the H: who, what, where, when, why, and how.
    • Focus on demonstrating your process and thought patterns rather than just the final answer.
  • System Design Questions

    • Emphasize frameworks, APIs, design patterns, and scalability.
    • GitHub's System Design Primer is a recommended resource.
  • Key Concepts and Terms

    • Understand terms like sharding, replication, latency, CAP theorem, and locking mechanisms.
    • Be prepared to discuss systems like Amazon's Dynamo, Google Spanner, and Bigtable.
  • Practicality Over Optimality

    • Use simpler, practical solutions in interviews rather than the most optimal but complex ones.
    • Explain why a less optimal approach was chosen due to time constraints.
  • Teamwork and Collaboration

    • Ask questions in a way that demonstrates teamwork and collaboration.
    • Avoid seeking validation from the interviewer; focus on solving problems together.
  • Behavioral Questions Focus

    • Emphasis on future potential and ability to learn and execute projects.
    • Discuss trade-offs made in past projects and their reasons.
  • Additional Resources

    • LeetCode: Gold standard for interview prep with a vast database of questions.
    • Tech Interview Handbook: Step-by-step guide created by former Google engineers.
    • Cracking the Coding Interview: Classic prep book by Gail McDowell.
  • Conclusion

    • Practice regularly, focus on practical solutions, and understand the company's specific needs.
    • Check out Farah’s other videos for more tips, including how to answer common interview questions like "Tell me about yourself."

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment