{"id":20627708,"url":"https://github.com/tonyvu2014/design-questions","last_synced_at":"2026-05-27T18:32:52.253Z","repository":{"id":84864233,"uuid":"114723328","full_name":"tonyvu2014/design-questions","owner":"tonyvu2014","description":"Object-Oriented and System Design Question Analysis and Implementation","archived":false,"fork":false,"pushed_at":"2018-02-07T00:01:25.000Z","size":17,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-08T03:54:31.767Z","etag":null,"topics":["interview-questions","java","oop","system-design"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tonyvu2014.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-12-19T05:34:21.000Z","updated_at":"2017-12-26T04:00:41.000Z","dependencies_parsed_at":null,"dependency_job_id":"4afc5571-b6b4-4c54-8460-08c70e7048b5","html_url":"https://github.com/tonyvu2014/design-questions","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tonyvu2014/design-questions","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonyvu2014%2Fdesign-questions","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonyvu2014%2Fdesign-questions/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonyvu2014%2Fdesign-questions/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonyvu2014%2Fdesign-questions/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tonyvu2014","download_url":"https://codeload.github.com/tonyvu2014/design-questions/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonyvu2014%2Fdesign-questions/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33579665,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-27T02:00:06.184Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["interview-questions","java","oop","system-design"],"created_at":"2024-11-16T13:17:56.710Z","updated_at":"2026-05-27T18:32:52.234Z","avatar_url":"https://github.com/tonyvu2014.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# design-questions\nObject-Oriented and System Design Question Analysis and Implementation.\n\nThis repo to give analysis and detailed implementations for some of the sample design questions in Java.\n\n## Steps\n\nFrom my experience, the steps to follow when you are asked a design question are:\n\n1. Ask questions to clarify about the requirements. The few things that you probably want to be clear about are:\n\n- What are the use cases that are suppported?\n- How many users the system is going to support? (especially for system design question)\n- Definitions and terms that are clear\n\n2. Come up with list of entities\n\nThe rule of thumbs to remember is that trying to map to real-life objects as much as possible. For this steps, just list down the entities first without the properties and methods. Make this step quick.\n\n3. Add properties and methods to entitites\n\nTo save time, you probably want to ignore trivial like contructors or getters and setters. Also try to to come up correct relationships betweem entities, either one-to-one, one-to-many or many-to-many. Many-to-Many relationship is normally modeled with an immediate entity class. Again make this step quick.\n\n4. Refine the design with abstraction, interface or design patterns.\n\nMake sure that you know the differences between abstract class and interface and also know when you make use of common design patterns like Factory, Singleton, Builder, Strategy. An easier way to look at this is that: if there are something that you need to do more than once, there is a chance for refinement.\n\nRemember to clarify why you use abstract class, interface or a design pattern.\n\n5. Scaling\n\nNow this is when you apply your knowlege about cache, load balancer, database replication, partitioning and sharding to make sure that the system can handle \nhigh traffic. That's why the question about the number of users at the beginning.\nDraw the diagram on the paper, board or on the page. Do not forget to mention about the pros and cons of your design.\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftonyvu2014%2Fdesign-questions","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftonyvu2014%2Fdesign-questions","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftonyvu2014%2Fdesign-questions/lists"}