How Do You Design A Shared Drive
Hiring managers ask this to explore algorithm basics and backgrounds. Before you begin, make sure you understand the purpose of the task. Knowing if the changes will be registered in real time, if locking will be necessary and if it needs to be naturally convergent will help you give a complete answer.
Example:”This system works on differential synchronization. It is keeping two or more copies of the same document synchronized with each other in real time, so if a change is made on one version, the same alteration happens on all the others. It is a complex challenge, but differential synchronization is scalable and fault tolerant. The three common approaches are ownership, event passing and three way merges. I last had to do this to support in-house document sharing for one of our clients. They wanted real-time collaboration, so three-way merging was not a good option since changes are lost and cannot take effect, as major collisions are common. I used event-passing to allow for real-time collaboration as the locking or ownership approach would only allow the first one opening the document to make any adjustment. This served our client well, as its employees were able to work collaboratively even when out of office or on different schedules.”
What Interviews To Expect
First, it’s important that you understand the different stages of your software engineer interview process with Amazon. Note that the process at AWS follows similar steps. Heres what you can expect:
- HR recruiter email or call
- Online assessment
- Phone screens: one to two interviews
- Onsite: four to six interviews
In most cases, the interview process starts with an HR recruiter call to discuss your interests and to see what group or team would be best for you. Your recruiter will also use this conversation to confirm that you’ve got a chance of getting the job at all. You should be prepared to explain your background and why youre a good fit for Amazon. If things go well the recruiter will then send you an online assessment or schedule your technical screen depending on the role you’re applying for.
1.1.1 Amazon online assessments
Amazon primarily uses online assessments for internship and new graduate positions, but also sometimes for experienced positions. You might have to solve up to three different online assessments before progressing to the technical phone screen stage.
Important note: as far as we know, this online assessment is only used for internship and new graduate positions.
OA2: Coding questions
The second online assessment , is a set of two data structure and algorithm questions. Each question needs to be solved within a certain amount of time . And your code must compile for the two questions in order to move forward in the interview process.
How Did I Crack Interviews Of Google Facebook Amazon And How You Could Do It Too
In this article, my aim is not to tell what questions I was asked as that might not help you a lot. Here Ill try to focus on how I prepared and what worked for me. You might want to try the same if you are targeting any FAANG or a similar company.
There are three main skill sets that all of these companies test the candidates on:
For each of these skill sets, Ill try to cover the below three aspects that would be important for your interviews:
Don’t Miss: Interview Questions To Ask A Cfo
What Is The Amazon Interview
What exactly is the Amazon Interview? What should you expect when you walk into the room?
The majority of the Amazon interview consists of coding, and this is what the focus of this post specifically will be about. For strategies regarding how to ace your system design interview, consult the following post from Byte by Byte.
Lets break down the primary components of what the Amazon Interview consists of.
Amazon System Design Interview Practice Questions And Answers
Here are sample questions and answers you can practice with to improve your performance in a system design interview at Amazon:
TinyURL is a URL service that enables a user to enter a long URL, and it then returns a shorter, unique URL.
Answer: By using a basic 16-bit hash table.
A search engine is needed in a specific department to locate an important employee information or item.
Answer: Building an indexer and having the crawl set for H1 and H2, rather than H3, then observe if there are any inbound links to avoid spammers
A web crawler is a program designed to enter other sites and check them for information.
Answer: By integrating a URL dispatcher, used in a designed messaging queue, and extracting the data from the web page using spider.
Answer: By using event-passing to enable real-time collaborations as the ownership approach can only enable the first one displaying the document to make any adjustment.
Answer: Making use of the mark and sweep method.
Answer: By using the prominent approach of collaborative filtering.
Answer: Considering an approach end-to-end text messaging, delivered and read status, push notifications.
Also Check: Questions To Ask Cfo In Interview
Automated Interviewing With Coding Challenges
Unlike the , where the initial assessment is a phone screen, Amazon expands this assessment to sometimes include a coding challenge.
Some interviewers prefer this method, as the performance anxiety of interacting with another person is absent, and the only requirement on your end is to write code that executes correctly and efficiently.
This is also positive for Amazon, as they do not need to expend resources on conducting 30-45 minute interviews with candidates. Furthermore, they can also expand their reach substantially, as this process is somewhat automated.
Oftentimes, these coding challenges are driven through an engine similar to that of HackerRank, where your code is automatically analyzed for syntactic correctness, efficiency, and correctness for the task at hand. This gives a better signal to the interviewee about how well they are performing during the interview itself.
While all of these coding assessments will have instructions, they will often mimic those of HackerRank insofar as actually using the same submission and judging criteria.
Therefore, it is most likely a good idea to play around with the HackerRank interface, practicing a few problems to ensure that you do not get tripped up on the interface itself. This way, you can then just focus on solving the problem.
What Happens Behind The Scenes
Your recruiter is leading the process and taking you from one stage to the next. Here’s what happens at each of the stages described above:
- After the phone screens, your recruiter decides to move you to the onsite or not, depending on how well you’ve done up to that point
- After the onsite, each interviewer files their notes into the internal system, grades you and makes a hiring recommendation
- The “Debrief” brings all your interviewers together and is led by the Bar Raiser, who is usually the most experienced interviewer and is also not part of the hiring team. The Bar Raiser will try to guide the group towards a hiring decision. It’s rare, but they can also veto hiring even if all other interviewers want to hire you.
- You get an offer. If everything goes well, the recruiter will then give you an offer, usually within a week of the onsite but it can sometimes take longer
It’s also important to note that recruiters and people who refer you have little influence on the overall process. They can help you get an interview at the beginning, but that’s about it.
You May Like: Questions To Ask The Cfo In An Interview
Polling Sse And Websockets
Polling, server sent events, and WebSockets are all techniques for streaming high volumes of data to or from a server. Its important to know their differences when designing a system.
We don’t have the space necessary to explain each of these topics here, but we’d encourage you to spend a little time reviewing our to get a high-level understanding.
How Common Are System Design Interviews
You might also be wondering how common system design interviews are. The answer depends on the company and role that you’re applying for. As a rule of thumb, the more senior the position, the more system design interviews youll have.
If youre applying for junior positions, your interviews will be more focused on coding and youll usually have a maximum of 2 system design interviews . And if you’re applying for a more senior software engineer role, or for a software development manager position, then you should expect system design interviews to be much more heavily emphasized.
In addition to software engineers, system design interviews are also used in TPM interviews, and potentially in interviews for other technical roles.
Don’t Miss: Interview With Cfo
Amazon System Design Interview Process
The Amazon system design interview is typically conducted later in the interview process. If you pass the phone screening round, you’ll be invited for a video interview. This interview lasts for about 45 to 60 minutes. It will involve a hiring manager or a peer of the same level as your role. They will ask more in-depth questions about your resume.
This round is where you should be prepared to answer coding and system design questions.
To learn more, read .
What Is The Expectation:
You May Like: Interview Attire Women
Cracking System Design Interviews
There are many approaches to system design interviews, but at the end of the day, you need a technique that consistently:
- Demonstrates to the interviewer that you have the necessary knowledge.
- Divides the problem into small stages.
Lets take a closer look.
Ask clarifying questions
To begin addressing a system design interview question, ask clarifying questions. You must ensure that you grasp the systems objectives and needs. This will significantly affect the quality of your design since the value of a system is inextricably linked to how well it achieves the desired goals.
What is the systems goal?
If youre requested to design an online bookstore, you should start by gathering more precise information about the bookstores objective:
- What kind of shop is it?
- Is it aimed at a particular kind of reader ?
- Is it a bookstore that sells physical books, digital, or both?
What is the systems size?
Although knowing the systems objective is a step forward, you wont have a clear vision for the system unless you define a few additional details, like the necessary scale. A university shop that distributes special-order textbooks to the local campus would have a completely different operation than an internet bookstore that sells millions of volumes globally. Ask questions regarding the scale, such as:
Where should we concentrate our efforts?
Distributed System Fundamentals Like With Anything Else It Is Important To Start With The Basics The Fundamentals Of Distributed Systems Can Give You The Framework Of Whats Possible And Whats Not In A Given System You Can Understand The Limitations Of Specific Architectures And The Trade
Data Durability and Consistency
Know the difference and impacts of failure rates of storage solutions and corruption rates in read-write processes.
The key to unlocking data durability and consistency replication deals with backups of data, but also being able to repeat processes at scale.
Also called shards, partitions divide data across different nodes within your system. As replication distributes the data across nodes, partitioning distributes processes across nodes. This reduces the reliance on pure replication.
One of your nodes is in Seattle another is in Lahore another is in London. There is a system request at 7:05am Pacific Daylight time. Can this be recorded and properly synchronized in the remote nodes, given the travel time of data packets, and can it be concurred? This is a simple problem of consensus all the nodes need to agree, which will prevent faulty processes from running and ensure consistency and replication of data and processes across the system.
Once youve achieved consensus, now transactions from applications need to be committed across databases, with fault checks by each resource involved. Two-way and three-way communication to read, write, and commit are shared across participant nodes.
Read Also: What Should Females Wear To A Job Interview
What Are Evaluated In A System Design Interview
We all know that a coding interview is focused on those basic knowledge of a candidate, so his general technical skills, analysis ability is tested.
However, few people can tell clearly the purpose of conducting system design interviews. So before jumping into tips, its better to understand system design interview from interviewers perspective.
In a system design interview, the candidate is often asked to design a new system in order to solve an open-ended problem like designing the URL shortening service. Sometimes the problem can be quite general like how do you design the recommended system for Youtube.
During this process, discussion is the core. The candidate is more likely to lead the conversation and discussion high-level components, details, pros and cons, and everything with the interviewer.
Compared to coding interview, system design interview is much more similar to software engineers daily work.
During the interview session, your communication and problem-solving ability are mainly evaluated. Given an open-ended problem, how do you analyze the issue, how do you solve it step by step, how do you explain your idea and discuss with others, how to you evaluate your system and optimize it are what interviewers mostly care.
So lets see what you can do to prepare for it.
Design For The Right Scale
The same feature set requires a very different approach for different scales. Its important to determine the scale so that you know whether your data can fit on one machine or whether you need to scale the reads. You might ask:
- What is the expected read-to-write ratio?
- How many concurrent requests should we expect?
- Whats the average expected response time?
- Whats the limit of the data we allow users to provide?
Different answers require very different designs, so getting the scale right is key to success.
Also Check: Interview Questions For A Cfo
What Is A System Design Interview
A system design interview analyzes your ability to solve problems and create systems that can solve the companyâs or clients’ problems. You may think of it as a brainstorming session where youâll be expected to discuss a complex system efficiently.
System design interviews are always driven by open-ended questions. Consider these interviews as an opportunity to work with your interviewer, just as a team would, to solve challenges related to the companyâs goals.
Understand The Fundamental Concepts
In the beginning, you need to understand/refresh the fundamental concepts, e.g. linked lists, string handling, tree parsing, dynamic programming, etc. The following books are great resources:
- Cracking the Coding Interview: This is a great introductory book
- Elements of Programming Interviews: This book goes into much more depth. Depending on your preferred programming language, you can buy the version that uses C++, Java or Python
- The Algorithm Design Manual: This book is more advanced and can be used as a very useful resource while working on Leetcode problems. Many Leetcode problems are based on the algorithms that are shown in the book
If you prefer to watch YouTube videos, then you can use the following:
- Back to Back SWE channel: Lots of videos on fundamental concepts. Also, it includes very easy-to-understand explanations on dynamic programming, which is always a tricky subject
- Dynamic Programming for Beginners: Great introduction to Dynamic Programming, which is one of the most difficult types of questions that are asked during the interviews
Finally, if you prefer to read the structured material online in a class format, then take a look at the following:
Also Check: Best System Design Interview Prep
Publisher / Subscriber Messaging
This is an extensively used messaging paradigm . The basic premise is that publishers messages are published, and subscribers subscribe to messages. To provide more specificity, messages can be assigned to a certain subject, similar to a category. These topics are similar to dedicated channels or pipes, with each pipe handling only communications related to a single topic.
A server frequently publishes messages, and there are usually numerous topics to which they are published. A subscriber to a given topic is a person who is interested in that topic. There is no explicit link between the server and the subscriber . The only interactions are between the publisher and the topic and between the topic and the subscriber. The messages in the topic are simply data that must be delivered, and they can take any form you require. Publisher, Subscriber, Topics, and Messages are the four players in Pub/Sub.
Adding Additional Servers And Dealing With Failing Servers
As such, what if one of the servers to which you are delivering traffic goes down? The hashing function believes there are five servers, and the mod operator generates a range of 0-4. However, now that one of the servers has failed, you only have four servers, still delivering traffic to it.
On the other hand, you could create a sixth server, but it will not receive any traffic because the mod operator is 5, and it would never return a figure that includes the recently introduced sixth server.
You notice that the server number changes after the mod is applied .
As a result, half of all queries are now sent to new servers entirely and can no longer benefit from recently cached data on the servers.
Request #4, for instance, used to go to Server E, but now it flows to Server C. Because the request is now traveling to Server C, all the cached data for request#4 on Server E is useless. You can have a similar issue if one of your servers dies, but the mod function continues to send requests to it.
In this small system, it seems insignificant. However, this is a terrible result on a big-scale system# SystemDesignFail.
A simple hashing-to-allocate system cannot grow or cope with failures.
Recommended Reading: Design Interview Preparation