System Design
1. Discuss building a configuration system using the following constraints
- Share some details of your research methodology. In case you have to work out a new software system, what precedes the actual deployment?
- You need to create a configuration system in which users can configure other systems using a GUI. The system has around 10 000 daily user hits. What architecture would you propose for such a system?
- The daily user hits spike to 100 000 users per day. How would you change your architecture? What about 1 000 000? And 10 000 000?
- The users can download a zip file with their whole configuration that averages around 2 gb per download.
- The system needs to have a way to authorize and authenticate users. How would you do that? What if the client of the system does not want to use our authentication system? How would you store the user information?
- The users of our system want to be able to collaborate on the creation of configurations. How would you implement that? What challenges would you face?
- Users want to upload files for configurations and in their profiles. How would you implement this?
- How would you allow third party developers to create plugins for your system?
- You need to monitor the health and status of your system. How would you do that?
- What are some security guidelines that you should follow when designing new systems? What security issues have you faced in your practice?
2. What architectures have you used? What are their pros and cons?
3. What language do you prefer? What do you prefer statically or dynamically typed languages? What about weak vs strong typing? What do you think about your favorite language?
4. Tell us about your preferred programming language. Would you like to enrich it with a few new options? Which exactly?
5. How would you ensure code quality for a product and across multiple teams?
6. How would you measure if a system is of a high quality?
7. How would you refactor a legacy system?
8. How would you test a piece of software? What testing approaches do you use?