I applied through a recruiter. The process took 2 months. I interviewed at Snap
No offer
Neutral experience
Difficult interview
Application
I applied online. The process took 4 weeks. I interviewed at Snap (Santa Monica, CA) in May 2022
Interview
1) 1 hour long technical interview (pretty average leetcode question)
2) 5 hour onsite interview with a 30 minute break (bigger 5 phase project that is done with software engineers), last 30 mins saved for any questions you have
Remote 5 Hour Project Interview with 5 different interviewers, all Software Engineers. Last half hour is left to evaluate and ask questions about the company.
Implementation of a chat system with 3 parts: Messaging, Feed Sync and Privacy (Friend Messaging only).
Interview questions [3]
Question 1
PHASE 1 - MVP Messaging
For the initial version of Chat, Snap has decided to only support messages between 2 users. Users will only be able to enter text in the chat box and send messages to each other. Your TL has provided the below skeleton code for the API that will receive incoming messages from the client. Please implement the sendMessage and getConversation functions:
def send_message(sender_id: str, recipient_id: str, message: str) -> None:
def get_conversation(sender_id: str, recipient_id: str) -> ???:
PHASE 2 - Feed Sync
Now that basic sending and receiving of messages are working, the client team wants to work on the "Feed" screen for messages. The "Feed", in snapchat is a list of conversations that a user is a part of. The feed is sorted by the newest message at the top of the feed.. The client team has asked you to implement the following API:
[Java]
def sync_feed(user_id: str) -> ???:
PHASE 3 - Privacy Settings
To support privacy controls you will:
Create a new service that the ConversationService will use to check the relationship between two users.
Add a new method to the ConversationService that allows users to update their privacy settings.
Add logic to check if a user can send a message to another user based on their privacy settings.
from enum import Enum
class Privacy(Enum):
PUBLIC = "PUBLIC"
FRIENDS = "FRIENDS"
class ConversationService:
def set_privacy(self, user_id, privacy):
pass
class FriendService:
def is_friend(self, user_id, friend_id):
def add_friend(self, user_id, friend_id):
def remove_friend(self, user_id, friend_id):