In software engineering interview process system design round has become a standard part of the interview. If you want to get your dream job in some big tech giant companies (especially as a senior engineer) then you need to tell your approach about building a complex large scalable system. There is no standard or accurate answer to the design interview questions.
You may have different conversations with different interviewers. Due to the lack of experience in building a large scale system and open-ended nature of system design round a lot of candidates struggle with this round. Not just junior and mid-level developers but also experienced developers feel uncomfortable in system design round. If you are preparing yourself for this round then we recommend you to read the blog How to Crack System Design Round in Interviews?.
Frontend Engineer System Design Interview: How to prepare, Interview Questions and Tips
Design Facebook Messenger or WhatsApp (a global chat service)
Things to discuss and analyze:
- Approach for one-on-one text messaging between users.
- Approach for extending the design to support group chats.
- Delivered and read status
- What action needs to be taken if user is not connected to the internet.
- Push notifications
- Sending media like s or other documents
- Approach for providing end-to-end message encryption.
How would you design a search engine?
Sometimes search engines are needed within a specific department of a company to systematically locate an item or important employee information. Hiring managers want to see that you can tailor designs to the needs of the company. You can detail some of the overall architecture and explain it, using the foundation below. You can also consider discussing any other relevant issues such as website front-end performance, testing search engine improvements and integrating previous search data and trends in indexing.
Example: “Before I relocated here, I was working on a project similar to this one. The search engine I had been enlisted to create needed to work with keyword searches. I began by building an indexer, which is a piece of software that crawls and produces results in a data structure. The crawler would put web page links together and group them or dump them into sets. Then the indexer ran as part of a reduce job to single things out. For each website, the number of links was calculated and analyzed for presentation. I had the crawl set for H1 and H2, rather than H3s. Then I checked outbound links to avoid spammers. Lastly, I checked the serving results to verify that the design was working at optimal capacity and relevancy.”
7. Design a Web Crawler
Design a Web Crawler scalable service that collects information (crawl) from the entire web and fetch hundreds of millions of web documents.
Things to discuss and analyze:
- Approach to find new web pages.
- Approach to prioritize web pages that change dynamically.
- Ensure that crawler is not unbounded on the same domain.
Design a URL Shortening Service (TinyURL)
URL shortening service allows users to enter a long URL, and then it returns a shorter, unique URL. For example bit.ly and TinyURL. These services generate a short URL if user gives a long URL and if the user gives a short URL then it returns the original long URL.
Things to discuss and analyze:
- Given a long URL, the service should generate a shorter and unique alias of it.
- When the user hits a short link, the service should redirect to the original link.
- Consider scalability if 1000’s of URL shortening requests coming every second.
- Service handle redirects.
- Support for custom short URLs.
- Track click stats.
- Delete expired URLs.
- System should be highly available.
You need to consider three things while designing this service.
- API(REST API)- Discuss how client will follow an approach to communicate with the service along with load balancer which is the front end of the service.
- Application Layer– Discuss how the worker thread or hosts that will take the long URL, generate the tiny URL and how it will store both of the URLs in the database .
- Persistence Layer– Database