Tips for the interview Flashcards
What are the main three tips of “Setting the stage” tip?
Take notes;
Remember your resume;
Consider questions;
How to respond to questions in the interview? 6 topics
- Start with the customer (customer viewpoint);
- Use multiple examples but do not use the same more than once;
- Be detailed and specific (don’t generalize about several events; share details and provide data to support your reasoning).
- I, before we: This interview is an opportunity for Amazon to learn about what you have owned and accomplished. Use words like “I owned” or “I did” and avoid “we did” or “my manager…”.
- Show how you deal with ambiguity. Demonstrate that you can handle intentionally vague requirements; change strategies quickly when the approach doesn’t work; work through open-ended questions; is adaptable & quick learning.
- Leverage notes. You are allowed to have notes during the interview, but don’t become dependent on them. Make sure you call it out to the interviewer as well.
What is the role of the hiring manager in the interview process? What questions to ask him?
The role of the hiring manager is to make the best hiring decision for Amazon, in addition to hiring for their position and team and ensure a quality candidate experience. Like all of our interviewers, hiring managers participate in our interviewer training programs and will consider how your skills and experiences compare to objective standards for SDE success at Amazon.
This is a great Amazonian to ask questions about what it takes to be a successful SDE at Amazon and learn more about how they manage their teams.
What is the role of the bar raiser in the hiring process?
A bar raiser is an interviewer at Amazon who is brought into the hiring process to be an objective third party, making sure every candidate’s assessment is open, accurate, and fair. Not directly involved with the position, but with the hiring process at amazon;
What is the role of the interviewers?
Usually, they are Amazonians who are in the same type of role or will work closely with you.
What is the role of the Shadows in the interview?
None. Just learning from bar raisers and interviewers.
What to expect from the interviewers? 5 items
- They take notes (periods of silence)
- May redirect or interrupt
- Asking a lot and do followup questions
- Answering your questions (ask about culture, projects etc)
- Provide prompts and hints. Take the hints/feedbacks into consideration
What does the system design competency assess?
The goal is for you to deliver a design in production with considerations of deployment, scaling, failures, availability, and performance. Be prepared to discuss latency and concurrency.
How to prepare for the system design meeting? 3 items 1 note
- Often times, software systems need software components, something to store data, something to make decisions (such as business logic) and APIs or processes.
- Knowledge of distributed systems, SOA, and n-tiered software architecture is very important in answering systems design questions. If you don’t work with these concepts regularly, be sure to review them.
- Also, be sure to practice drawing your system design by hand and be prepared to whiteboard.
Note: For the system design competency, there’s often more than one correct answer. What matters is your process for how you transform the solution.
What are the tips for the system design interview?
Think about the customer first:
- Who are you designing the system for and why?
- What expectations do they have in terms of functionality?
- What things would a customer just assume will be in the system but they may not think about in the forefront of their minds? (e.g. it’ll be fast and secure)
- What happens if we become hyper-popular with customers? What does 2x growth look like? Or 10x? And how would that influence the design?
- Understand first what problem your system is supposed to solve. Ask clarifying questions if this is not clear.
- See the interviewer as the customer, requirements might be intentionally vague, and she/he can give you clarifications.
- Write/raise the requirements or assumptions you are making, and base your design on them.
- Feel free to create a diagram if that helps you clarifying your thoughts.
- Scaling is a critical component of software design at Amazon.
- Fault tolerance translates to the Customer Obsession Leadership Principle.
What does the logical and maintainable competency assess?
This interview is exploring how you structure your methods and classes to ensure the logical separation of concerns is clear. It’s exploring how you name variables, methods, and classes in a way that future developers with no previous knowledge of the code can understand how it works, evolve the logic, investigate it, and debug it when needed.
Test names should describe business and technical requirements, and the test code should be consistent with the test names.
This competency measures your ability to write maintainable, readable, reusable, and understandable code.
How to prepare to Logical and maintainable overview?
Get technical. We are a technology company. So be as technical as possible in your answers.
Be ready to write code in real-time on an online editor during your interview. Be prepared to gather qualifying requirements and translate into clean written code, checking edge cases. Be prepared to write syntactically correct code, no pseudo code.
What are the 5 tips for Logical and maintainable?
Simple code: leverage reuse, properly format, no improper coding constructs. Don’t spend time thinking in an optimal solution - enhance as you go. Avoing single func that does everything.
Maintainable code: quickly able to trace impact of changes, clear variable naming conventions. Make sure that your method, parameter, and variable names are clear & descriptive and try to separate out functionality into discrete methods/functions with clear responsibilities.
Organize code: organize code in a way that is easy to read and understand. Use functions and classes, and inheritance to break up your solution into logical components. This improves readability and makes it easier to extend the solution for new requirements.
Syntactically correct code: Create syntactically correct code or it would be with minor improvements. Pick the language you’re comfortable with.
Create code that works as intended: Start small, solving one thing at a time, and iterate over your solution as you ask questions or the interviewer does more follow-ups. If you see clear design patterns or abstractions that can be applied from the very beginning, apply those! It is better to realize code can be refactored to support more requirements in a maintainable way, rather than building a complex solution or investing time applying a design pattern that doesn’t solve the requirements.
Think through test cases (both working and breaking), edge cases, boundary conditions, null/nil/none etc. Try and enumerate these cases before you begin coding so that when you have a solution you feel works, you can use these as validation. Be sure to also confirm test cases with your interviewer.
What does the “data structures and algorithms” competency assess?
This competency measures your ability to choose the most efficient run-time solutions. For example, different data structures are more performant for reading data while others are more performant for writing. Algorithms should be as fast as possible and, of course, solve the problem correctly. Look out for edge cases for which your algorithm fails to satisfy requirements.
How to prepare for “data structures and algorithms” competency?
- Consider runtimes for common operations and understand how they use memory.
- Understand data structures you encounter in core libraries (e.g., trees, hash maps, lists, arrays, queues, etc.)
- Understand common algorithms (e.g., traversals), divide and conquer, when to use breadth first vs. depth first recursion.
- Discuss runtimes, theoretical limitations, and basic implementation strategies for different cases of algorithms.
Suggested areas of refresh:
- Binary search tree data.
- Scalability methods—With the architecture, there are many techniques and methods which can be used in order to customize and improve the design of a system. Some of the most widely used are: redundancy, partitioning, caching, indexing, load balancing, and queues.