How would you design a website like LinkedIn? Asked during Microsoft on-campus interview.
There are key objects and properties, and workflows. We start with one major flow like job marketplace and extend to social. There are tiers in architecture like frontend, API gateway, APIs and backend services, messaging streaming lines, DB and data analysis. There are also integration with 3rd parties like social media, payment gateway, etc.
The design start with objects , properties, and then event flows. Then drill down to services and db schemas.
We shall use many design patterns like factory, observer, singleton.
The key objects and schema: Company(with id, name, descriptions, etc), Job(with jobid, companyId, title, descriptions, status, etc), the User(userid, type, status, etc), resume(resumeid, userid, details, etc), User Message Box, User Message with more functions like job watch list, user favorite , resume reviewed by, etc, there will be more objects and properties.
The basic flow for posting and apply job is like a marketplace : HR(a type of user) create a company, with validation passed, then HR create jobs under this company, the website will display all valid jobs, and provide a search function. The User(candidates) create his/her resume, find a job in the marketplace and post resume, the resume will be sent to HR by a User Message, then HR and Candidate will send each other messages to communicate. HR can deactivate the job when found candidate or job closed.
The flow for HR or any other user to find candidate is also like a marketplace of candidate. HR or user type with job agent can review and search user with resume, and send User Message .
There will be statics and analytics like # of candidate reviewed the job, # of resumes received on the job, etc.
According to the basic functions , there will be detail designs in web front end and services backend, and DB schema, and online analytic.