I applied to multiple SDE2 openings on the portal. I got a call from a recruiter. I'll consider the recruiter contact day as Day 0.
1.) We are working on a clone of Facebook. We want to add a numeric count to every post showing how many friends the post's author has at the time of viewing the post. The database schema looks like this:
USER
user_id (primary key)namecreated_dateUSER RELATIONSHIP
friendship_id (primary key, unique to each relationship)user_id (indexed)user2_id (indexed)start_dateFocusing on the database, how would you implement the friend-count feature? Note that we will soon be more popular than Facebook, so the solution needs to scale.
2.) We are working on a clone of Google Docs. The software has the following features and limitations:
Our load balancer uses a round-robin system to permanently assign documents to each server, so that each will have an equal number of documents. Do you have any concerns about this load balancing system? In those cases, how would you fix the scalability issue?
3.) Which consistency model is more appropriate for each of these applications: strong or eventual consistency? Why?
4.) Another scenario was that there was a bug on an application, and you ended up having a lot of failed requests. You have a database that stores all IDs, and you also have large log files from about 500 different production servers that log the IDs of the successful requests. How would you come up with a solution to find the IDs that were missing?
The question was similar to 68. Text Justification and had one follow-up. I was able to fully solve the question and gave my approach for the follow-up.
You have N services in a network. You are given which servers are connected and the connection latency. For example [1, 2, 200] means service 1 calls service 2 and it has a latency of 200ms. You are given Q queries where you have to output the minimum latency from Service X to Service Y.
The interviewer wanted to discuss why classic DFS and BFS should not be the solution, how Dijkstra's algorithm would work, what the other ways are to solve this, and the time complexity.
In the end, I provided the solution using Dijkstra's algorithm.
Rating: Hire (Medium confidence)
Customer Satisfaction
a) Imagine we have a customer support ticketing system. The system allows customers to rate the support agent out of 5. To start with, write a function which accepts a rating, and another which will show me all of the agents and the average rating each one has received, ordered from highest to lowest.
c) Now I want to be able to see who the best agents are each month. Change the implementation so I can get that information.
I followed the Test-Driven Development (TDD) approach as mentioned by the recruiter in the preparation guide. Atlassian recruiters are really helpful.
Rating: Hire (Medium confidence)
Question: Tagging Management Service
Atlassian has a number of different products, each containing different types of content. As an example, let’s look at three of our products:
We want to build a system that allows users to tag content from different products, and then to view content by tags. A goal of this system is that it should be built in a product-agnostic way so that we could add new products in the future without a large amount of work. There are three key experiences that we want to build here:
The recruiter focused on API Specification, DB Schema, DB Choice (SQL/NoSQL), Communication protocols, SQS vs RabbitMQ vs Kafka, and Rate limiting.
Rating: Hire (Low confidence)
The recruiter mentioned the reason for the "low confidence hire" was that the interviewer felt the design was a little rushed.
This involved standard managerial-type questions based on my previous work experiences.
Rating: Hire (High confidence)
The questions were similar to those mentioned in the following LeetCode article:
[Disclosed] Atlassian Full Loop Question [SSE & SDE 2]
Rating: Hire (High confidence)
Atlassian | P40 | India [Accepted]
Here are my thoughts on my recent 6-month job search: