軟體面試備考大禮包 – Amazon

To do before the interview:

Study Guide: ***Disclaimer: This is merely a suggested study regimen. This is a recommendation from your recruiter.

  1. Amazon Interview Process: (20% of your prep time)

·       **Leadership Principles/Behavioral: (Review email attachment Behavioral Questions/LP Prep)

  • **Describe yourself in terms of the Amazon Leadership Principles.
  • **Prepare to answer questions with the S.T.A.R. method (Situation Task Action Result)
  • **Although we agree being a team player is important, please note that we are looking at what YOU specifically did and NOT your team.
  • **I highly recommend to utilize the attached STAR pdf (attached) to write out ideas.
  • **We are very data driven, look back at your projects and note what you have improved, regarding scalability, performance, users, revenue etc.
  • **Focus on the following are prioritized Leadership Principles for an SDE II:
  • Customer Obsession
  • Invent & Simplify
  • Have Backbone; Disagree & Commit
  • Ownership
  • Deliver Results
  • Earn Trust
  • Learn & Be Curious
  • Insist on Highest Standards
  1. Computer Science & Object Oriented: (30% of your prep time)
  • Review attachment: Technical/System Design Prep
  • For the upcoming technical interview, review topics & concepts.
  • Answer: What are the 4 Basic Concepts of Object-Oriented Programming?
  • Define & Explore: Programming Basics (Operators, Variables, Functions, Strings, Objects, Classes, Methods, Loops, etc.)
  • Define & Explore: Data Structures (Lists, Arrays, Trees, etc.)
  • Define & Explore: Algorithms
  • Define & Explore: Design Patterns
  • Define & Explore: Dependency Management
  • Read & Review Syntax/Naming Conventions
  1. Practice Programming: (50% of your prep time)
  • Review email attachment: Technical Questions/Coding Prep
  • Practice in your Object-Oriented language of choice
  • Practice deciding which data structures, design patters, architectures to utilize in different situations
  • Practice developing algorithms for different situations
  • Practice using proper syntax and quality naming conventions
  • You will have three coding interviews focusing on the three areas below. The coding question will start off ambiguous and the interviewer will want to see how you disambiguate the problem by asking clarifying questions.
  1. **Data Structures and Algorithms
  2. Problem Solving
  3. Logical and Maintainability
  • You will most likely have to solve a graphing problem involving a hash map and some sort of search problem using a common data structure or algorithm like a binary search tree, divide and conquer, depth vs breadth, etc. At some point in the coding interview, the interview will change the requirements to see how you handle the added complexity and ambiguity to the problem.
  • Below is a blog post written by an Amazonian Software Engineering Manager that has KEY TIPS on what to prepare for and expect during your interview.  Out of everything in this email, this blog post is probably the most important thing to read: Blog post

Helpful tools for the coding portion:

Pro Tips:

  • **These coding interviews will be very collaborative, act like it’s your first day at Amazon rather than an interview.
  • **Ask clarifying questions, EXTREMELY IMPORTANT, don’t assume anything.
  • **Discuss your initial thoughts and tradeoffs to your solution OUTLOUD to the interviewer.
  • **Take direction/hints well, being coachable is important
  • Think OUTLOUD, be as collaborative as you can be
  • Restate the problem statement.
  • Take ownership in your work by talking about YOUR accomplishments – speak in terms of “I did this” vs “We did this”.  If you need to share an example of your team’s work, be sure to clarify your contribution.
  • “Why Amazon?”  – We genuinely want to understand what inspired you to explore an opportunity with us, so we get a better sense of who you are. We want to hire smart, passionate people. Please reflect on what motivated you to pursue a career with Amazon and be prepared to speak to it.
  • At Amazon, we love data. Use specific number/data points as often as possible (% growth or $X cost savings, etc.)
  • Ask questions, It’s also appreciated when a candidate has put thought into a few questions for the interviewer. It goes a long way when you’ve taken the initiative to research the company prior to your interview. 
  • Avoid rambling and be concise.  If you are unsure or don’t know, be honest with the interviewer but let them know you’ll give it your best try.
  • Time management: make sure you’re aware of how much time you are spending and have left
  • Voicing to interviewer at what stage you’re at in your problem
  • Inform the interviewer what you’re planning to do if you run out of time
  • If you get stuck, inform the interviewer
  • If you do identify a problem with multiple solutions, inform the interview and how you’re comparing and contrasting those solutions.
  1. Problem solving:
  • How do you engage and approach a vague and ambiguous problem?
  • What do you do with a problem when you get stuck?
  1. How to approach the problem:
  • Run through your initial thoughts, gather requirements, determine and voice the most important piece of the problem, translate it to clean written code, find edge cases, etc.              
  1. Logical and Maintainable Code:
  • Code should be clean, concise and robust
  • Try to produce as much code as you can
  • While you’re coding, ask yourself, “if someone looked at this code in the future, would they be able to understand it without explanation, comments or documentation”
  • Abstracting helping methods to help extend your code
  • Find bugs within your code
  • Talk about how to optimize your solution
  • Test your code if possible
  • Write clean and concise Syntactically correct code, avoid writing pseudo code.
  • Use proper variable names
  • Call out edge cases
  1. Data Structures:
  • How well do you understand and apply data structures?
  • Consider runtimes for common operations and understand how they use memory
    • Will be asked about “Big O Notation”
  • Understand data structures you would encounter in core libraries: Trees, Hash Maps, Lists, Arrays, Queues, Stacks, etc.
  • Think about the application of each run time
  • What data structures can you use, the different types of run time, do we value memory or run time more?
  1. Algorithms:
  • Understand common algorithms: traversals, divide and conquer, when to use breadth first vs. depth first, recursion, etc.
  • Discuss runtimes, theoretical limitations and basic implementation strategies for different classes of algorithms
  • Find ways to optimize your solution and find optimal time complexity
  1. Object Oriented Design:
  • We will look at the scalability of your solution and how you solve the problem
  • Be very familiar with object oriented best practices
  • Understanding of OO design principles
  • How do objects work with each other
  • Ability to appropriately demonstrate class structure
  • Be able to model out the problem, identifying data structure and how to use it
  • For more information in a simple format check out: https://www.educative.io/blog/distributed-systems-considerations-tradeoffs#benefits

More information on useful links: (as a reference)

One Comment

Add a Comment

發佈留言必須填寫的電子郵件地址不會公開。