Mục lục
Tại Sao Thiết Kế Hệ Thống và Kiến Trúc Phần Mềm Lại Quan Trọng?
Chào các Dev! Thiết kế phần mềm (Software Design) hay Thiết kế hệ thống (System Design) là một trong những chủ đề khó làm chủ nhất. Bạn có thể dễ dàng học một ngôn ngữ lập trình như Java hay Python, nhưng việc xây dựng phần mềm bằng ngôn ngữ đó lại là một câu chuyện hoàn toàn khác.
Tương tự, ngay cả những nhà phát triển giàu kinh nghiệm cũng gặp khó khăn khi giải quyết các câu hỏi phổ biến như làm thế nào để thiết kế WhatsApp hay YouTube, hoặc phân biệt giữa API Gateway và Load Balancer, Scaling Ngang và Scaling Dọc, Forward Proxy và Reverse Proxy.
Đó là lúc kỹ năng thiết kế phần mềm và kiến trúc hệ thống phát huy tác dụng. Nó thực sự là một nghệ thuật để cấu trúc chương trình của bạn, thiết kế các module, xác định ranh giới và tương tác với các phần khác của hệ thống sao cho chúng dễ đọc, dễ bảo trì và linh hoạt khi có thay đổi.
Đây là một trong những kỹ năng thiết yếu nhất đối với kỹ sư phần mềm nhưng thường bị bỏ qua.
Nếu bạn tìm kiếm các khóa học online để học về Thiết kế phần mềm và Kiến trúc hệ thống, bạn sẽ thấy không có nhiều lựa chọn tốt.
Trong khi đó, nếu bạn tìm các khóa học về Java, Python hay JavaScript, bạn sẽ tìm thấy vô số lớp học. Đó là lý do có rất nhiều lập trình viên biết Java, Python, JavaScript, nhưng khi đề cập đến phát triển phần mềm, thiết kế hệ thống, coding, họ thường gặp khó khăn.
Khi tôi chuẩn bị cho buổi phỏng vấn về Thiết kế hệ thống, tôi đã tìm hiểu và tổng hợp danh sách những khóa học online tốt nhất về Thiết kế/Kiến trúc Phần mềm/Hệ thống dưới đây.
Bạn có thể tham gia các khóa học này để xây dựng kỹ năng mạnh mẽ này, một kỹ năng sẽ phục vụ bạn trọn đời. Không như các ngôn ngữ lập trình, framework hay thư viện, kỹ năng này cũng không bị lỗi thời chỉ sau vài năm.
À này, hãy chuẩn bị tinh thần học hỏi chăm chỉ. Việc đăng ký khóa học online thôi chưa đủ, vì hầu hết mọi người chỉ tham gia mà không thực sự hoàn thành hoặc làm theo hướng dẫn của giảng viên.
Bạn không học được kiến thức khi đăng ký khóa học online; bạn học được khi làm việc và áp dụng kiến thức đã có. Đó là lý do các khóa học dựa trên dự án tỏa sáng. Chúng khuyến khích bạn sử dụng kinh nghiệm để giải quyết các vấn đề thực tế, và bạn sẽ tìm thấy một vài khóa học như vậy trong danh sách này.
Top 11 Khóa Học Về Thiết Kế Hệ Thống và Kiến Trúc Phần Mềm
Để không làm mất thêm thời gian của bạn, đây là danh sách các khóa học online tuyệt vời, tương tác và thú vị để học về Thiết kế Phần mềm và Kiến trúc.
Danh sách này bao gồm các khóa học về thiết kế hệ thống, kiến trúc phần mềm và thiết kế hướng đối tượng từ các nền tảng học tập uy tín như Udemy, Coursera, Educative, ByteByteGo, Design Guru và Exponent.
1. Mastering the System Design Interview bởi Frank Kane (Cựu Quản lý Tuyển dụng tại Amazon)
Đây là một khóa học chất lượng cao khác để làm chủ chủ đề Thiết kế hệ thống cho các buổi phỏng vấn kỹ thuật. Trong khóa học luyện phỏng vấn Thiết kế hệ thống tốt nhất này trên Udemy, bạn sẽ thực hành giải quyết các câu hỏi phỏng vấn thiết kế hệ thống thực tế để học các khái niệm và mẹo thiết kế hệ thống thiết yếu.
Dưới đây là những kỹ năng chính bạn sẽ học trong khóa học kéo dài 5 giờ này:
- Cách chọn thuật toán và cấu trúc dữ liệu phù hợp cho thiết kế hệ thống.
- Cách áp dụng scaling ngang (horizontal scaling) cho các giao dịch, lưu trữ dữ liệu, phân tích và cơ sở dữ liệu.
- Cách cấu trúc câu trả lời phỏng vấn để đạt kết quả tốt nhất.
- Cách tiếp cận các vấn đề thiết kế hệ thống từ các góc độ phù hợp và đặt đúng câu hỏi.
- Cách xử lý các kỹ năng mềm mà người phỏng vấn đang ngầm đánh giá bạn.
- Cách làm việc với Big Data, Apache Spark và Điện toán đám mây (Cloud computing).
Tôi là một fan lớn của giọng nói rõ ràng và cách giải thích khái niệm của Frank Kane, vì vậy việc tham gia khóa học này là điều đương nhiên, và tôi phải nói rằng tôi đã học được rất nhiều. Ngay cả khi tôi đã có ý tưởng khá tốt về thiết kế hệ thống, tôi vẫn học được cách nhìn mọi thứ từ một góc độ khác.
Điều tuyệt vời nhất về khóa học này là bạn sẽ nhận được mẹo nội bộ cho buổi phỏng vấn thiết kế hệ thống từ một cựu quản lý tuyển dụng của Amazon, điều này thực sự tuyệt vời, và nếu điều đó chưa đủ, bạn còn nhận được 6 buổi phỏng vấn giả để luyện tập!
Nếu bạn đang chuẩn bị cho các buổi phỏng vấn System Design tại các công ty FAANG như Amazon, Facebook và Netflix, tôi thực sự khuyên bạn nên tham gia khóa học này.
Đây là liên kết để tham gia khóa học Luyện phỏng vấn System Design tốt nhất này – Mastering the System Design Interview
2. Grokking Modern System Design for Software Engineers & Managers trên Educative
Đây là một trong những khóa học yêu thích của tôi khi nói đến việc học Thiết kế phần mềm hay Thiết kế hệ thống. Nó thực sự được tạo ra để chuẩn bị cho bạn cho buổi phỏng vấn Thiết kế hệ thống, nhưng bạn cũng có thể sử dụng nó để học cách tiếp cận Thiết kế hệ thống nói chung.
Khóa học Grokking Modern System Design for Software Engineers Interview là một trong những khóa học (hoặc sách) đầu tiên mô tả chi tiết các vấn đề Thiết kế hệ thống phân tán quy mô lớn (Large Scale Distributed System Design). Ngay cả khi bạn đã từng làm việc với Hệ thống phân tán trước đây, có rất nhiều điều bạn có thể học được từ khóa học này.
Các tác giả đã tạo ra khóa học này để cung cấp cho bạn các lựa chọn thiết kế (bao gồm ưu và nhược điểm) để bạn có thể hiểu yêu cầu, so sánh các cách tiếp cận và đưa ra giải pháp tốt nhất cho vấn đề đang gặp phải.
Họ cũng rất cẩn thận để không làm người học bị choáng ngợp bởi thông tin và cung cấp giải pháp ở mức độ chi tiết phù hợp cho một cuộc thảo luận kéo dài 45 phút. Điều này làm cho khóa học trở nên rất thú vị. Ngay cả khi bạn không chuẩn bị cho phỏng vấn kỹ thuật, tôi khuyên bạn nên tham gia khóa học này để cải thiện kỹ năng Thiết kế hệ thống của mình.
Đây là liên kết để tham gia khóa học Thiết kế hệ thống tốt nhất này – Grokking Modern System Design for Software Engineers
3. System Design Interview — An insider’s guide [ByteByteGo] bởi Alex Hu
Nếu bạn đang chuẩn bị cho buổi phỏng vấn Thiết kế hệ thống hoặc đã từng chuẩn bị trong quá khứ, thì chắc hẳn bạn đã gặp cuốn sách System Design Interview — An insider’s guide của Alex Xu, một trong những cuốn sách về Thiết kế hệ thống phổ biến nhất trên Amazon với hàng nghìn đánh giá và xếp hạng.
Trong khi cả hai phần của cuốn sách này là nguồn tài nguyên vô giá để học Thiết kế hệ thống, nhiều người không biết rằng Alex cũng có một khóa học Thiết kế hệ thống trên ByteByteGo, không chỉ bao gồm tất cả nội dung trong sách mà còn có các bài hướng dẫn mới về các câu hỏi thiết kế hệ thống phổ biến như làm thế nào để thiết kế YouTube và làm thế nào để thiết kế trò chuyện WhatsApp.
Nếu bạn đang chuẩn bị cho buổi phỏng vấn Thiết kế hệ thống và thích cuốn sách thiết kế hệ thống của Alex Hu, thì tôi chắc chắn bạn sẽ yêu thích khóa học thiết kế phần mềm này.
4. Khóa Học Luyện Phỏng Vấn System Design bởi Exponent
Nhiều người không biết rằng Exponent là một trong những trang web tốt nhất để truy cập nếu bạn đang chuẩn bị cho các buổi phỏng vấn FAANG. Họ đã giúp nhiều người thành công trong các vai trò PM, TPM và Kỹ sư Phát triển Phần mềm tại Amazon và Microsoft, và họ có các khóa học chuyên biệt cho Amazon, Facebook và Google.
Đây là một trong những khóa học mà bạn sẽ học mọi thứ về cách trả lời các câu hỏi Thiết kế hệ thống trong các buổi phỏng vấn FAANG. Bạn sẽ học cách vượt qua buổi phỏng vấn thiết kế hệ thống với các ví dụ video chuyên sâu, cùng với các khái niệm cơ bản về các chủ đề cần biết như xác thực, kiến trúc đám mây và độ tin cậy.
Bạn cũng sẽ học cách trả lời các câu hỏi thiết kế hệ thống đầy thử thách như Thiết kế Twitter, Instagram, Bãi đậu xe, thiết kế Web Crawler và nhiều câu hỏi thiết kế phần mềm phổ biến khác.
Nói chung, đây là một khóa học Thiết kế hệ thống hoàn hảo cho kỹ sư, quản lý và kiến trúc sư.
Nhưng ngoài khóa học, họ còn cung cấp các buổi phỏng vấn giả, giống như một buổi tập luyện thực tế, huấn luyện 1-đối-1 và thảo luận tương tác về các câu hỏi phỏng vấn phổ biến từ Google, Facebook, Microsoft và Amazon, và bạn có thể tham gia chỉ với $12 một tháng ngay bây giờ (giảm giá 70%).
Nếu bạn đang chuẩn bị cho các buổi phỏng vấn Thiết kế hệ thống tại các công ty FAANG, tôi thực sự giới thiệu khóa học và trang web này cho bạn.
5. Grokking the System Design Interview trên Design Guru
Đây là một trong những khóa học Thiết kế hệ thống yêu thích của tôi, trước đây có trên Educative, nhưng giờ đã chuyển độc quyền sang Designguru.io. Trang web này được tạo bởi Arslan Ahmad, cựu kỹ sư phần mềm @ Facebook, Microsoft, Hulu và là một nhà văn.
Khóa học này không chỉ cung cấp cho bạn giải pháp cho các câu hỏi Thiết kế hệ thống phổ biến như làm thế nào để thiết kế hệ thống chat như WhatsApp hay làm thế nào để thiết kế URL shortener, mà còn cung cấp một template Thiết kế hệ thống hoàn chỉnh về cách tiếp cận và giải quyết một vấn đề thiết kế hệ thống.
Bên cạnh đó, đây là một khóa học tương tác, nơi bạn có thể thực hành online ngay trên trình duyệt của mình, và nó cũng có hỗ trợ cộng đồng, nhưng điều tuyệt vời nhất tôi thích ở khóa học này là các nghiên cứu điển hình thực tế về các vấn đề thiết kế hệ thống khác nhau. Đó là viên ngọc quý thực sự của khóa học này.
Điều này còn được hỗ trợ bởi người tạo ra khóa học là người không chỉ làm việc tại các công ty FAANG mà còn có cơ hội độc đáo vừa là ứng viên vừa là người quản lý tuyển dụng, vì vậy họ không chỉ biết hỏi gì, mà còn biết trả lời như thế nào.
Nói tóm lại, đây là một trong những nơi tốt nhất để học thiết kế hệ thống, và nếu bạn muốn tự tin vượt qua buổi phỏng vấn thiết kế hệ thống của mình, bạn nên xem xét khóa học này. Dưới đây cũng là một template thiết kế hệ thống hoặc cheat sheet hay mà bạn có thể tham khảo từ họ.
6. Chuyên Đề Software Design and Architecture [Coursera]
Đây là một khóa học khác được cấu trúc tốt để học về Thiết kế phần mềm và Kiến trúc hệ thống. Nó được cung cấp bởi Đại học Alberta và được giảng dạy bởi Kenny Wong.
Chuyên đề này bao gồm 5 khóa học online để dạy bạn về thiết kế hướng đối tượng (object-oriented design), các mẫu thiết kế (design patterns), kiến trúc phần mềm (software architecture) và Kiến trúc hướng dịch vụ (SOA).
Chuyên đề này cũng bao gồm một dự án, và bạn sẽ được cấp chứng chỉ sau khi hoàn thành khóa học. Phần tốt nhất của chuyên đề này là bạn sẽ học được khoa học đằng sau Thiết kế và Kiến trúc phần mềm.
Một khi bạn biết các mẫu và nguyên tắc liên quan, việc giao tiếp kế hoạch của bạn với đồng nghiệp và các bên liên quan sẽ dễ dàng hơn nhiều. Bạn cũng sẽ có khả năng nhìn nhận phần mềm hoặc một đoạn code một cách phê phán từ góc độ thiết kế.
7. Pragmatic System Design [Khóa Học Udemy]
Đây là một khóa học tuyệt vời khác để chuẩn bị cho buổi phỏng vấn Thiết kế hệ thống và học các khái niệm Thiết kế hệ thống thiết yếu trên Udemy. Bạn sẽ học mọi thứ từ việc chuẩn bị cho phỏng vấn thiết kế hệ thống đến việc kiến trúc các hệ thống thực tế.
Khóa học này cũng được thiết kế theo kiểu tăng dần, giúp việc học dễ dàng và hiệu quả hơn. Ban đầu, bạn sẽ học các khái niệm và thành phần thiết yếu của thiết kế hệ thống, sau đó, bạn sẽ học một quy trình từng bước chắc chắn để giải quyết bất kỳ vấn đề thiết kế hệ thống nào.
Tất cả các case study đều được trình bày một cách toàn diện và được thiết kế theo các bước này. Bạn cũng sẽ học cách thiết kế các hệ thống có khả năng mở rộng (scalable systems), chịu lỗi (fault tolerance), có tính sẵn sàng cao (high availability) và phát triển module.
Đây là liên kết để tham gia khóa học thiết kế hệ thống này trên Udemy – Pragmatic System Design
8. Hướng Dẫn Phỏng Vấn System Design bởi Sandeep Kaul (Tech Lead @ Facebook)
Đây là một khóa học luyện phỏng vấn Thiết kế hệ thống khác trên Udemy để giúp bạn vượt qua buổi phỏng vấn Thiết kế hệ thống. Nó bao gồm nhiều hệ thống thực tế, có thể giúp bạn hiểu cách một số hệ thống lớn nhất thế giới được thiết kế như thế nào.
Khóa học này được giảng dạy bởi Sandeep Kaul, một Kỹ sư từ Facebook, người đã giúp nhiều ứng viên vượt qua các công ty FAANG khác nhau. Vì bản thân Sandeep đến từ một công ty FAANG, anh ấy biết cần gì để vượt qua phỏng vấn Thiết kế hệ thống từ các công ty FAANG, và điều đó thể hiện rõ trong khóa học của anh ấy.
Tại sao khóa học này hữu ích?
- Nó bao gồm tất cả các câu hỏi Thiết kế hệ thống thường gặp và cung cấp cho bạn giải pháp mà bạn có thể sao chép trong buổi phỏng vấn của mình, ví dụ: cách thiết kế Uber, Airbnb, Amazon, WhatsApp, NetFlix, Twitter, Facebook, YouTube, Zoom và Google Maps.
- Nó sẽ giúp bạn nắm vững các quyết định thiết kế khác nhau mà bạn cần đưa ra trong buổi phỏng vấn Thiết kế hệ thống, ví dụ: cách chọn cơ sở dữ liệu phù hợp cho hệ thống của bạn.
- Nó cũng xem xét các câu hỏi mà người phỏng vấn có thể hỏi bạn và cách bạn nên trả lời.
Nói tóm lại, đây là một trong những khóa học Thiết kế hệ thống tốt nhất để làm chủ nghệ thuật Thiết kế hệ thống và cũng học các mẹo để giải quyết các câu hỏi thiết kế hệ thống thực tế. Khóa học luyện phỏng vấn Thiết kế hệ thống này cũng sẽ giúp bạn cấu trúc buổi phỏng vấn theo cách mà hầu hết người phỏng vấn mong đợi và điều đó làm tăng cơ hội vượt qua buổi phỏng vấn.
Tôi thực sự giới thiệu khóa học này cho tất cả các loại nhà phát triển, cả người mới bắt đầu và lập trình viên có kinh nghiệm, những người muốn trở thành kiến trúc sư phần mềm.
9. Web Application & Software Architecture 101 [Educative.io]
Đây là một khóa học tuyệt vời khác để tìm hiểu về Kiến trúc phần mềm từ Educative, một nền tảng học online tương tác, dựa trên văn bản. Như tiêu đề gợi ý, khóa học này là một khóa 101 về kiến trúc ứng dụng web và phần mềm. Nó hướng dẫn bạn từng bước qua các thành phần và khái niệm khác nhau liên quan khi thiết kế kiến trúc của một ứng dụng web.
Bạn sẽ học về các kiểu kiến trúc khác nhau như client-server, kiến trúc phi tập trung peer-to-peer, microservices và các nguyên tắc cơ bản về luồng dữ liệu trong một ứng dụng web.
Khóa học này cũng là một bước đệm tuyệt vời cho các kiến thức cơ bản về thiết kế hệ thống. Kiến thức về kiến trúc phần mềm sẽ rất giá trị đối với các lập trình viên mới bắt đầu và những người đang tích cực phỏng vấn (đặc biệt là các nhà phát triển full-stack).
Truy cập vào khóa học này không mất thêm chi phí nếu bạn đã mua đăng ký Educative, hiện có giá chỉ 14.99 USD mỗi tháng theo gói hàng năm, giảm giá hơn 75%. Điều này sẽ cho phép bạn truy cập vào hơn 1000 khóa học tương tác và được hỗ trợ bởi AI của họ.
10. Master the Coding Interview: System Design + Architecture trên ZTM Academy
Nếu bạn đang tìm kiếm một khóa học Thiết kế hệ thống theo kiểu bootcamp để nhanh chóng làm mới tất cả các khái niệm Thiết kế hệ thống thiết yếu, thì khóa học này từ ZTM Academy là lựa chọn tốt nhất để bắt đầu.
Đây là một khóa học Thiết kế hệ thống toàn diện nhằm hướng dẫn các nhà phát triển trẻ thăng tiến sự nghiệp và trở thành Kỹ sư Phần mềm Cấp cao hoặc Nhà phát triển tại các công ty công nghệ hàng đầu.
Được giảng dạy bởi chuyên gia trong ngành Yihua, người có kinh nghiệm làm việc thực tế tại các công ty công nghệ lớn, khóa học online này cung cấp những hiểu biết vô giá và mẹo nội bộ để làm chủ thiết kế hệ thống.
Khóa học tập trung vào việc phát triển một khung tư duy để suy nghĩ như một Kỹ sư Phần mềm Cấp cao, giúp sinh viên phân tích công việc của mình từ góc độ thiết kế hệ thống.
Nó bao gồm nhiều khía cạnh, bao gồm đánh giá các thành phần và công nghệ khác nhau trong ứng dụng web, hiểu các cân nhắc và đánh đổi khi xây dựng ứng dụng, và sử dụng thiết kế hệ thống và kiến trúc phù hợp để đưa ra các giải pháp tối ưu.
Mục tiêu là trang bị cho sinh viên các kỹ năng cần thiết để vượt qua phỏng vấn thiết kế hệ thống và xây dựng các sản phẩm, ứng dụng xuất sắc.
Điều làm cho khóa học Master the Coding Interview: System Design + Architecture của Zero to Mastery khác biệt so với các khóa học thiết kế hệ thống khác là sự nhấn mạnh vào việc nhìn nhận bức tranh lớn hơn và thực hiện nó.
Nó vượt ra ngoài việc coding cấp thấp và khuyến khích sinh viên hiểu hệ thống lớn hơn mà họ là một phần của nó, thúc đẩy sự hiểu biết sâu sắc hơn về “lý do” đằng sau công việc của họ.
Bằng cách cung cấp một khung giải quyết vấn đề và kiến thức thực tế thu được từ kinh nghiệm trong ngành của Yihua, khóa học trao quyền cho sinh viên trở thành những người giải quyết vấn đề và lập trình viên giỏi hơn.
Nhìn chung, đây là một trong những khóa học online tốt nhất không chỉ để làm chủ các khái niệm Thiết kế hệ thống mà còn để vượt qua phỏng vấn kỹ thuật tại các công ty công nghệ hàng đầu và thăng tiến để trở thành một kỹ sư phần mềm cấp cao.
Đây là liên kết để tham gia khóa học này – Master the Coding Interview: System Design + Architecture
À này, bạn sẽ cần đăng ký thành viên ZTM để xem khóa học này, có giá khoảng 39 USD mỗi tháng nhưng cũng cho phép truy cập vào nhiều khóa học cực kỳ hấp dẫn và hữu ích khác. Bạn cũng có thể sử dụng mã giảm giá FRIENDS10 để được giảm giá 10% cho bất kỳ gói đăng ký nào bạn chọn.
11. Software Architecture & Design of Modern Large Scale Systems bởi Michael
Nếu bạn đang tìm kiếm một khóa học online để học cách thiết kế các hệ thống quy mô lớn hiện đại, thì khóa học Udemy này là dành cho bạn. Nếu bạn muốn trở thành Kiến trúc sư Phần mềm hoặc Trưởng nhóm Kỹ thuật vào năm 2025, thì khóa học “Software Architecture & Design of Modern Large Scale Systems” là một điểm khởi đầu tuyệt vời.
Được tạo bởi Michael Pogrebinsky, một chuyên gia về Java và Thiết kế hệ thống, đồng thời là Kiến trúc sư phần mềm, khóa học này là một trong những khóa học bán chạy nhất trên Udemy và có xếp hạng xuất sắc 4.7 trên 5 từ 5,267 đánh giá. Khóa học này được thiết kế cho những cá nhân khao khát làm chủ kiến trúc phần mềm, thiết kế hệ thống và xử lý dữ liệu lớn (big data processing).
Khóa học bao gồm các khía cạnh quan trọng như thiết kế các hệ thống quy mô lớn có khả năng xử lý hàng triệu yêu cầu mỗi ngày, tạo ra các hệ thống phần mềm có khả năng mở rộng cao và tính sẵn sàng cao, và áp dụng các mẫu kiến trúc và phương pháp hay nhất đã được chứng minh trong ngành.
Khóa học bao gồm 7 giờ video theo yêu cầu, 9 bài viết, 1 tài nguyên có thể tải xuống và có thể truy cập trên cả nền tảng di động và TV, đảm bảo trải nghiệm học tập linh hoạt và phong phú. Sau khi hoàn thành, bạn cũng sẽ nhận được chứng chỉ, thể hiện chuyên môn mới của mình.
Với 39,902 học viên đã đăng ký, tôi rất háo hức được tìm hiểu nội dung toàn diện do giảng viên tạo ra, và nó đã không làm tôi thất vọng. Đây thực sự là một trong những khóa học kiến trúc phần mềm tốt nhất dành cho các nhà phát triển có kinh nghiệm, và tôi thực sự giới thiệu nó cho tất cả các lập trình viên Java.
Kết Luận
Đó là tất cả về một số khóa học tốt nhất để học về Thiết kế hệ thống và Kiến trúc phần mềm. Như tôi đã nói, đầu tư thời gian và công sức vào những kỹ năng này sẽ giúp ích rất nhiều cho sự nghiệp của bạn và giúp bạn trở thành một nhà phát triển phần mềm giỏi hơn.
Chúng cũng giúp bạn vượt qua các buổi phỏng vấn kỹ thuật vì thiết kế hướng đối tượng và thiết kế hệ thống là những phần không thể thiếu trong các buổi phỏng vấn xin việc lập trình.
Nếu bạn cần luyện tập thêm, bạn cũng có thể xem codemia.io, nơi có bộ sưu tập lớn nhất các vấn đề Thiết kế hệ thống để luyện tập.