☕ Get 22k downloads with a $0 budget
How a Solo Developer got 22k downloads for his app over a weekend with a $0 budget. Plus, how Slack does load testing with a inhouse tool called Koi Pond.
Interviewing.io is a fantastic resource I wanted to share with you all.
You can book realistic mock interviews with senior FAANG engineers who will give you detailed and actionable feedback on exactly what you need to work on.
Mastering algorithms on LeetCode and system design on SystemsExpert is great, but they don’t prepare you for the pressure and stress that comes from an actual interview setting.
The best part?
You don’t pay anything until you’re hired.
Check them out here.
Special thanks to Interviewing.io for sponsoring Quastor Daily. I’m a user of the service!
Joshua Fonseca got tired of wasting time trying to pick a movie to watch with his friends group. So, he hacked together a Tinder for Movies.
You and your friends all log onto the app and get prompted with different movies. You swipe right for yes, left for no. If all of your friends swipe right on the same movie, then the app will tell you the movie.
He used a pretty simple tech stack with React Native for the front-end (using a cross-platform framework helped him ship faster), Express.js for the backend, MongoDB and Azure Storage (for Blob Storage).
He then posted the app to Reddit on the r/movies subreddit.
At first, he was downvoted (typical reddit), but he checked back later and saw he had 2000 upvotes.
He’s had an amazing reception since going viral….I reached out to my target audience on reddit for my app. Here are the results: - 22,000 users - 1 million interactions on my app - 13,000 upvotes on Reddit - 76 awards on reddit - 3 angel investors reached out - 400 followers - $15 in donations Thanks for 1,000 followers :)
The only way to see if your app works at scale (and find the bottlenecks) is to actually test it empirically. Load Testing is the practice of doing just that.
Slack wanted to load test their backend systems. They have Slack clients (in a browser window or in the desktop application) and these clients send messages to Slack’s backend whenever a user posts a message in a Slack channel.
The backend system then handles writing the message to Slack’s datastore, expanding link previews and then sending the event to all the other connected clients in that Slack channel.
Slack developed a tool called Koi Pond in order to load test their backend while also mimicking specific performance concerns they had about operating at scale.
A tool called Koi Pond spins up slimmed-down versions of Slack clients (Koi). Each Koi will establish a websocket connection with the backend and send the backend API calls.
Slack can run millions of Koi at a time and test various situations using a complex orchestration toolkit they built to manage the Koi in Koi Pond. One example of a bottleneck they were able to identify was on the database namespace used by their monitoring systems.
How would you build a spelling correction system?
Possible Follow On Questions
How would you check if a word is misspelled?
How would you find possible suggestions?
How would you rank the suggestions for the user?
We’ll send a detailed solution tomorrow, so make sure you move our emails to primary, so you don’t miss them!
Gmail users—move us to your primary inbox
On your phone? Hit the 3 dots at the top right corner, click "Move to" then "Primary"
On desktop? Back out of this email then drag and drop this email into the "Primary" tab near the top left of your screen
Apple mail users—tap on our email address at the top of this email (next to "From:" on mobile) and click “Add to VIPs”
As a refresher, here’s the last question
You are given two strings as input.
Write a function to check if one string is a rotation of the other string.
An example of a rotation is
You will also be given a function
isSubstring that will return a boolean that is True if one string is a substring of the other. You can only call this function once.
Input - "CodingInterview", "erviewCodingInt"
Output - True
Input - "Test", "est"
Output - False
Let's label the input strings
If x1 is a rotation of
x2 then there must be a point in
x1 where the rotation happens.
An example is if
Then, the rotation point is after
"CodingInt". We can imagine splitting
x2 at the rotation point into
x1 = erviewCodingInt = b + a = erview + CodingInt
x2 = CodingInterview = a + b = CodingInt + erview
So, we want to see if we can split
b so that
ba = x1 and
ab = x2.
We can also see that
ba will always be a substring of
ab + ab, as there is a
ba after the first
x1 will always be a substring of
x2 + x2.
So, we can check if
x1 is a rotation of
x2 by seeing if
x1 is a substring of
x2 + x2.
Want more practice with real FAANG software engineers?
Check out Interviewing.io!
You don’t have to pay anything until you get that job at FAANG!