1. Trong kiểm thử phần mềm, ‘Black-box testing’ (Kiểm thử hộp đen) tập trung vào việc kiểm tra gì?
A. Chức năng và hành vi của phần mềm dựa trên đầu vào và đầu ra, mà không xem xét mã nguồn bên trong.
B. Cấu trúc bên trong, thiết kế logic và mã nguồn của phần mềm.
C. Hiệu suất, độ tin cậy và khả năng mở rộng của hệ thống.
D. Giao diện người dùng và trải nghiệm người dùng.
2. Trong quá trình phát triển phần mềm, ‘Requirements Elicitation’ (Thu thập yêu cầu) là giai đoạn:
A. Tìm hiểu, thu thập và hiểu rõ các nhu cầu, mong muốn và ràng buộc từ các bên liên quan (stakeholders).
B. Thiết kế kiến trúc tổng thể và chi tiết của hệ thống phần mềm.
C. Viết mã nguồn cho các chức năng đã được xác định.
D. Kiểm tra để đảm bảo phần mềm hoạt động đúng như mong đợi.
3. Khái niệm ‘Continuous Delivery’ (Phân phối liên tục) khác với ‘Continuous Integration’ (Tích hợp liên tục) ở điểm nào?
A. Continuous Delivery đảm bảo rằng mã nguồn luôn ở trạng thái sẵn sàng để triển khai lên môi trường sản xuất, còn CI chỉ tập trung vào việc hợp nhất và xây dựng mã.
B. CI tập trung vào việc triển khai sản phẩm lên môi trường sản xuất, còn Continuous Delivery chỉ là việc xây dựng mã.
C. Continuous Delivery là một phần của CI, không phải là một khái niệm riêng biệt.
D. CI liên quan đến việc kiểm thử hiệu năng, còn Continuous Delivery liên quan đến kiểm thử đơn vị.
4. Trong mô hình phát triển ‘DevOps’, khái niệm ‘Continuous Integration’ (Tích hợp liên tục) đề cập đến việc:
A. Thường xuyên hợp nhất các thay đổi mã nguồn từ nhiều nhà phát triển vào một kho lưu trữ chung, sau đó tự động xây dựng và kiểm thử.
B. Tự động hóa toàn bộ quy trình triển khai phần mềm lên môi trường sản xuất.
C. Liên tục giám sát hiệu suất và trạng thái hoạt động của ứng dụng sau khi triển khai.
D. Tự động hóa việc thu thập và phân tích phản hồi từ người dùng cuối.
5. Mục tiêu chính của ‘Performance Testing’ (Kiểm thử hiệu năng) là gì?
A. Đánh giá tốc độ, khả năng đáp ứng và độ ổn định của phần mềm dưới các tải khác nhau.
B. Xác minh rằng tất cả các chức năng được triển khai đúng theo yêu cầu.
C. Tìm kiếm các lỗ hổng bảo mật trong ứng dụng.
D. Đảm bảo giao diện người dùng trực quan và dễ sử dụng.
6. Trong mô hình phát triển xoắn ốc (Spiral Model), mỗi vòng xoắn thường bao gồm những hoạt động chính nào?
A. Xác định mục tiêu, đánh giá rủi ro, kỹ thuật và phát triển, lập kế hoạch vòng tiếp theo.
B. Phân tích yêu cầu, thiết kế chi tiết, lập trình và kiểm thử đơn vị.
C. Thu thập yêu cầu người dùng, thiết kế giao diện, phát triển tính năng và kiểm thử tích hợp.
D. Triển khai sản phẩm, đào tạo người dùng và bảo trì hệ thống.
7. Trong mô hình ‘Kanban’, việc giới hạn ‘Work In Progress’ (WIP) nhằm mục đích gì?
A. Giúp cải thiện luồng công việc, giảm thời gian chờ đợi và tăng hiệu quả tổng thể.
B. Tăng tốc độ phát triển bằng cách cho phép nhiều công việc được thực hiện đồng thời.
C. Đảm bảo tất cả các nhiệm vụ đều được hoàn thành với chất lượng cao nhất.
D. Loại bỏ hoàn toàn các rủi ro trong quá trình phát triển.
8. Trong lĩnh vực Agile, ‘User Story’ thường được sử dụng để:
A. Mô tả một tính năng phần mềm từ góc nhìn của người dùng cuối, tập trung vào giá trị mà tính năng đó mang lại.
B. Xác định chi tiết các thành phần kiến trúc và luồng dữ liệu của hệ thống.
C. Lập kế hoạch chi tiết cho từng nhiệm vụ kỹ thuật trong một sprint.
D. Đánh giá hiệu suất và độ tin cậy của các module phần mềm.
9. Theo mô hình phát triển phần mềm theo vòng đời (Waterfall model), giai đoạn nào thường diễn ra cuối cùng và liên quan đến việc bàn giao sản phẩm cho người dùng?
A. Bảo trì (Maintenance).
B. Triển khai (Deployment).
C. Kiểm thử (Testing).
D. Thiết kế (Design).
10. Khái niệm ‘API’ (Application Programming Interface) trong công nghệ phần mềm cho phép:
A. Hai hoặc nhiều ứng dụng phần mềm có thể giao tiếp và trao đổi dữ liệu với nhau.
B. Người dùng cuối tương tác trực tiếp với mã nguồn của ứng dụng.
C. Tự động hóa quá trình biên dịch và đóng gói phần mềm.
D. Quản lý cơ sở dữ liệu và lưu trữ thông tin người dùng.
11. Trong các phương pháp phát triển phần mềm linh hoạt (Agile), ‘Sprint’ là một khoảng thời gian cố định, thường kéo dài bao lâu?
A. Thường từ 1 đến 4 tuần.
B. Có thể kéo dài đến 6 tháng.
C. Chỉ kéo dài 1-2 ngày.
D. Không có thời gian cố định, tùy thuộc vào độ phức tạp của công việc.
12. Khi thiết kế một giao diện người dùng (UI), nguyên tắc ‘Consistency’ (Tính nhất quán) đề cập đến việc:
A. Sử dụng các yếu tố thiết kế, bố cục và hành vi tương tự trên toàn bộ ứng dụng để người dùng dễ dàng học và sử dụng.
B. Cung cấp cho người dùng nhiều tùy chọn tùy chỉnh giao diện theo sở thích cá nhân.
C. Đảm bảo giao diện hiển thị tốt trên mọi loại thiết bị và kích thước màn hình.
D. Sử dụng các màu sắc tươi sáng và bắt mắt để thu hút sự chú ý của người dùng.
13. Khái niệm ‘Scrum Master’ trong framework Scrum chịu trách nhiệm chính về điều gì?
A. Đảm bảo Scrum được hiểu và thực hành đúng, loại bỏ các trở ngại cho nhóm phát triển.
B. Xác định các yêu cầu và tính năng của sản phẩm.
C. Quản lý ngân sách và lịch trình của dự án.
D. Kiểm tra chất lượng của sản phẩm cuối cùng trước khi bàn giao.
14. Trong kiểm thử phần mềm, ‘Usability Testing’ (Kiểm thử khả năng sử dụng) tập trung vào việc đánh giá:
A. Mức độ dễ dàng, hiệu quả và sự hài lòng của người dùng khi tương tác với phần mềm.
B. Khả năng của phần mềm trong việc xử lý một lượng lớn giao dịch đồng thời.
C. Tính bảo mật của dữ liệu người dùng và hệ thống.
D. Sự tuân thủ của phần mềm với các tiêu chuẩn mã hóa.
15. Khái niệm ‘Technical Debt’ (Nợ kỹ thuật) trong phát triển phần mềm ám chỉ điều gì?
A. Hậu quả của việc lựa chọn giải pháp dễ dàng, nhanh chóng nhưng không tối ưu về mặt kỹ thuật, đòi hỏi công sức sửa chữa trong tương lai.
B. Số lượng lỗi nghiêm trọng đã được phát hiện nhưng chưa được khắc phục trong phiên bản hiện tại.
C. Chi phí phát sinh để mua các công cụ và giấy phép cần thiết cho dự án.
D. Thời gian bị chậm trễ so với kế hoạch ban đầu do các vấn đề kỹ thuật không lường trước.
16. Khi nói về ‘Refactoring’ (Tái cấu trúc mã nguồn), điều gì là đúng nhất?
A. Là quá trình thay đổi cấu trúc bên trong của mã nguồn mà không làm thay đổi hành vi bên ngoài của nó, nhằm cải thiện khả năng đọc, bảo trì và mở rộng.
B. Là việc sửa các lỗi nghiêm trọng được phát hiện trong quá trình kiểm thử.
C. Là quá trình bổ sung các tính năng mới theo yêu cầu của khách hàng.
D. Là việc viết lại toàn bộ mã nguồn từ đầu với công nghệ mới.
17. Yếu tố nào sau đây KHÔNG phải là một trong các nguyên tắc chính của ‘Agile Manifesto’?
A. Làm việc với quy trình hơn là sản phẩm làm việc.
B. Phản hồi với thay đổi hơn là tuân theo kế hoạch.
C. Con người và sự tương tác hơn là quy trình và công cụ.
D. Phần mềm làm việc hơn là tài liệu toàn diện.
18. Trong quy trình phát triển phần mềm, ‘Unit Testing’ (Kiểm thử đơn vị) thường được thực hiện bởi ai?
A. Các nhà phát triển phần mềm (Developers).
B. Các chuyên gia kiểm thử độc lập (Independent Testers).
C. Người quản lý dự án (Project Managers).
D. Người dùng cuối (End Users).
19. Trong kiểm thử phần mềm, mục tiêu chính của ‘regression testing’ (kiểm thử hồi quy) là gì?
A. Đảm bảo rằng các thay đổi hoặc sửa lỗi mới không ảnh hưởng tiêu cực đến các chức năng hiện có của phần mềm.
B. Xác minh rằng tất cả các yêu cầu chức năng ban đầu của phần mềm đã được đáp ứng đầy đủ.
C. Khám phá các lỗi tiềm ẩn trong phần mềm thông qua các trường hợp thử nghiệm không xác định trước.
D. Kiểm tra hiệu suất và khả năng chịu tải của phần mềm dưới các điều kiện hoạt động khác nhau.
20. Mục tiêu của ‘Code Review’ (Rà soát mã nguồn) trong công nghệ phần mềm là gì?
A. Phát hiện lỗi sớm, cải thiện chất lượng mã nguồn và chia sẻ kiến thức giữa các thành viên trong nhóm.
B. Tăng tốc độ phát triển bằng cách giảm thiểu số lần biên dịch và chạy thử.
C. Đảm bảo mã nguồn tuân thủ nghiêm ngặt các quy định pháp lý về sở hữu trí tuệ.
D. Tối ưu hóa việc sử dụng tài nguyên hệ thống bằng cách tìm kiếm các đoạn mã kém hiệu quả.
21. Trong quản lý dự án phần mềm, ‘Scope Creep’ (lạm phát phạm vi) đề cập đến hiện tượng nào?
A. Việc giảm bớt các chức năng ban đầu để hoàn thành dự án đúng thời hạn.
B. Việc yêu cầu thêm các tính năng hoặc thay đổi không được dự kiến ban đầu, làm thay đổi phạm vi dự án.
C. Việc hoàn thành dự án sớm hơn so với kế hoạch ban đầu.
D. Việc phân bổ nguồn lực không đủ cho các nhiệm vụ trong phạm vi dự án.
22. Trong các loại kiểm thử phần mềm, ‘Unit Testing’ (Kiểm thử đơn vị) tập trung vào việc kiểm tra gì?
A. Toàn bộ hệ thống và tương tác giữa các thành phần.
B. Các thành phần mã nguồn nhỏ nhất, độc lập (như hàm, phương thức, lớp) để đảm bảo chúng hoạt động đúng.
C. Giao diện người dùng và trải nghiệm người dùng.
D. Các yêu cầu phi chức năng như hiệu năng và bảo mật.
23. Trong quy trình CI/CD, ‘Continuous Delivery’ (CD) tập trung vào việc gì?
A. Tự động hóa toàn bộ quy trình từ viết mã đến triển khai lên môi trường production.
B. Đảm bảo rằng phần mềm luôn ở trạng thái sẵn sàng để triển khai lên môi trường production bất cứ lúc nào, thông qua việc tự động hóa quá trình xây dựng, kiểm thử và đóng gói.
C. Chỉ tập trung vào việc kiểm thử tự động sau khi mã đã được tích hợp.
D. Việc quản lý cấu hình và triển khai thủ công.
24. Khái niệm ‘Spaghetti Code’ trong công nghệ phần mềm mô tả loại mã nguồn nào?
A. Mã nguồn được viết bằng ngôn ngữ lập trình Python.
B. Mã nguồn có cấu trúc phức tạp, khó hiểu, với nhiều câu lệnh ‘goto’ hoặc luồng điều khiển nhảy lung tung, khiến việc bảo trì và mở rộng trở nên khó khăn.
C. Mã nguồn được viết theo phong cách lập trình hướng đối tượng sạch sẽ.
D. Mã nguồn được tối ưu hóa cao về hiệu năng.
25. Trong phát triển phần mềm theo mô hình Agile, ‘sprint’ được định nghĩa là gì?
A. Một giai đoạn phát triển cố định, thường kéo dài từ 1 đến 4 tuần, trong đó một tập hợp các công việc được hoàn thành.
B. Một cuộc họp hàng ngày để các thành viên trong nhóm cập nhật tiến độ và kế hoạch.
C. Một tài liệu mô tả chi tiết các yêu cầu chức năng của sản phẩm.
D. Một bài kiểm thử được thực hiện sau khi hoàn thành toàn bộ sản phẩm.
26. Tại sao ‘Pair Programming’ (lập trình cặp đôi) thường được áp dụng trong các nhóm phát triển Agile?
A. Để giảm số lượng lập trình viên cần thiết cho dự án.
B. Để tăng cường chất lượng mã nguồn thông qua việc xem xét liên tục, chia sẻ kiến thức và giảm thiểu lỗi.
C. Để giải quyết các vấn đề kỹ thuật phức tạp mà một người không thể tự làm.
D. Để đảm bảo mỗi lập trình viên hoàn thành công việc đúng thời hạn.
27. Trong mô hình phát triển phần mềm, ‘Minimum Viable Product’ (MVP) là gì?
A. Một phiên bản phần mềm hoàn chỉnh với tất cả các tính năng dự kiến.
B. Phiên bản sản phẩm có đủ các tính năng cốt lõi để thu hút người dùng đầu tiên và xác thực ý tưởng kinh doanh, cho phép thu thập phản hồi để phát triển tiếp.
C. Một bản demo của sản phẩm chưa có chức năng thực tế.
D. Một sản phẩm được phát hành cuối cùng sau nhiều năm phát triển.
28. Mục tiêu chính của ‘Behavior-Driven Development’ (BDD) là gì?
A. Tăng tốc độ viết mã bằng cách bỏ qua các yêu cầu chi tiết.
B. Cải thiện giao tiếp và sự hợp tác giữa các bên liên quan (lập trình viên, QA, product owner) bằng cách sử dụng ngôn ngữ tự nhiên để mô tả hành vi mong muốn của phần mềm.
C. Phát hiện các lỗi bảo mật trong hệ thống.
D. Tối ưu hóa hiệu năng của cơ sở dữ liệu.
29. Mục đích chính của ‘Code Review’ (xem xét mã nguồn) trong quy trình phát triển phần mềm là gì?
A. Tăng tốc độ phát triển bằng cách bỏ qua các bước kiểm tra.
B. Phát hiện sớm các lỗi, cải thiện chất lượng mã nguồn và chia sẻ kiến thức trong nhóm.
C. Viết tài liệu kỹ thuật chi tiết cho từng dòng mã.
D. Đảm bảo tất cả mã nguồn đều tuân theo một phong cách định dạng duy nhất.
30. Trong mô hình Agile, ‘Daily Stand-up’ (họp đứng hàng ngày) có vai trò gì?
A. Thảo luận chi tiết về các giải pháp kỹ thuật phức tạp.
B. Cập nhật tiến độ công việc, xác định các rào cản và điều chỉnh kế hoạch cho ngày làm việc tiếp theo.
C. Đánh giá hiệu quả của các bài kiểm thử đã thực hiện.
D. Lên kế hoạch chi tiết cho toàn bộ dự án trong nhiều tuần.
31. Trong các nguyên tắc SOLID của thiết kế hướng đối tượng, ‘Liskov Substitution Principle’ (Nguyên tắc thay thế Liskov) đề cập đến điều gì?
A. Một lớp cơ sở có thể được thay thế bằng một lớp dẫn xuất mà không làm thay đổi tính đúng đắn của chương trình.
B. Các lớp nên được thiết kế để có một trách nhiệm duy nhất.
C. Không có lớp nào nên phụ thuộc vào chi tiết triển khai của các lớp khác.
D. Các lớp dẫn xuất không nên thay đổi hành vi của các phương thức đã định nghĩa trong lớp cha.
32. Mục tiêu chính của ‘Test-Driven Development’ (TDD) là gì?
A. Viết mã nguồn trước, sau đó mới viết các bài kiểm thử.
B. Viết các bài kiểm thử tự động cho một chức năng trước khi viết mã nguồn thực thi chức năng đó.
C. Thực hiện kiểm thử thủ công sau khi toàn bộ hệ thống đã hoàn thành.
D. Tập trung vào việc kiểm thử hiệu năng và tải của hệ thống.
33. Khái niệm ‘DevOps’ trong công nghệ phần mềm nhấn mạnh vào điều gì?
A. Việc phát triển phần mềm chỉ do đội ngũ phát triển thực hiện.
B. Sự hợp tác chặt chẽ và giao tiếp giữa đội ngũ Phát triển (Dev) và Vận hành (Ops) để tự động hóa và tối ưu hóa quy trình phát triển và triển khai phần mềm.
C. Chỉ tập trung vào giai đoạn kiểm thử cuối cùng của sản phẩm.
D. Việc phân chia rõ ràng trách nhiệm giữa các bộ phận mà không có sự tương tác.
34. Trong quy trình phát triển phần mềm, ‘User Story’ là gì?
A. Một tài liệu kỹ thuật chi tiết về cách triển khai một chức năng.
B. Một mô tả ngắn gọn về một tính năng từ góc nhìn của người dùng cuối, thường theo cấu trúc: ‘Với vai trò là [người dùng], tôi muốn [hành động] để đạt được [mục tiêu]’.
C. Một bài kiểm thử tự động cho giao diện người dùng.
D. Một bản tóm tắt về các rủi ro của dự án.
35. Khái niệm ‘Technical Debt’ (nợ kỹ thuật) trong phát triển phần mềm ám chỉ điều gì?
A. Việc thiếu vốn để đầu tư vào công nghệ mới.
B. Hậu quả của việc ưu tiên tốc độ phát triển hơn là chất lượng mã nguồn, dẫn đến việc phải sửa đổi hoặc tái cấu trúc mã trong tương lai.
C. Các khoản vay được sử dụng để mua phần mềm.
D. Việc sử dụng các công nghệ lỗi thời.
36. Trong phát triển phần mềm hướng đối tượng, ‘Encapsulation’ (đóng gói) có ý nghĩa gì?
A. Cho phép một lớp kế thừa thuộc tính và phương thức từ nhiều lớp cha.
B. Việc gộp dữ liệu (thuộc tính) và các phương thức xử lý dữ liệu đó vào cùng một đơn vị (lớp), đồng thời che giấu chi tiết triển khai bên trong.
C. Việc định nghĩa một giao diện chung cho các lớp khác nhau.
D. Việc cho phép một lớp có nhiều phiên bản khác nhau.
37. Phương pháp ‘Continuous Integration’ (CI) trong CI/CD có mục tiêu chính là gì?
A. Tự động triển khai phiên bản mới nhất của phần mềm lên môi trường production.
B. Tích hợp thường xuyên các thay đổi mã nguồn từ nhiều nhà phát triển vào một kho lưu trữ chung, sau đó chạy các bài kiểm thử tự động.
C. Thực hiện các bài kiểm thử giao diện người dùng (UI testing) trên môi trường staging.
D. Quản lý các yêu cầu và lỗi của dự án thông qua một hệ thống theo dõi.
38. Trong mô hình phát triển Waterfall, giai đoạn ‘Testing’ (Kiểm thử) thường diễn ra khi nào?
A. Ngay sau khi yêu cầu được xác định.
B. Sau khi giai đoạn Thiết kế (Design) hoàn thành.
C. Sau khi giai đoạn Phát triển (Development/Implementation) hoàn thành.
D. Song song với giai đoạn Yêu cầu (Requirements).
39. Tại sao ‘Sơ đồ tuần tự’ (Sequence Diagram) lại hữu ích trong việc mô tả hệ thống phần mềm?
A. Để mô tả cấu trúc tĩnh của hệ thống, bao gồm các lớp và mối quan hệ giữa chúng.
B. Để minh họa cách các đối tượng tương tác với nhau theo trình tự thời gian, thể hiện luồng thông điệp giữa chúng.
C. Để xác định các yêu cầu không chức năng của hệ thống.
D. Để lập kế hoạch quản lý dự án và phân bổ nguồn lực.
40. Khái niệm ‘Refactoring’ (tái cấu trúc mã nguồn) trong công nghệ phần mềm ám chỉ điều gì?
A. Việc thêm các tính năng mới cho sản phẩm phần mềm.
B. Việc thay đổi cấu trúc nội bộ của mã nguồn mà không làm thay đổi hành vi bên ngoài của nó, nhằm cải thiện khả năng đọc, bảo trì và hiệu năng.
C. Việc viết lại toàn bộ mã nguồn từ đầu.
D. Việc sửa các lỗi nghiêm trọng trong mã nguồn đã được phát hành.
41. Tại sao việc xem xét mã nguồn (code review) lại quan trọng trong quy trình phát triển phần mềm?
A. Để đảm bảo tất cả lập trình viên sử dụng cùng một kiểu định dạng mã.
B. Để phát hiện sớm các lỗi, cải thiện chất lượng mã, chia sẻ kiến thức và đảm bảo tuân thủ các tiêu chuẩn mã hóa.
C. Để tăng tốc độ phát triển bằng cách giảm bớt công việc cho từng cá nhân.
D. Để xác định ai là người viết mã tốt nhất trong nhóm.
42. Trong phát triển phần mềm theo mô hình Agile, phương pháp Scrum khuyến khích việc sử dụng một tài liệu mô tả chi tiết các yêu cầu chức năng và phi chức năng của hệ thống. Tài liệu này được gọi là gì và vai trò chính của nó trong Scrum là gì?
A. System Design Document (SDD), cung cấp bản thiết kế chi tiết cho kỹ sư.
B. Product Backlog, là danh sách ưu tiên của các công việc cần thực hiện để phát triển sản phẩm.
C. User Story Map, tổ chức các ‘user stories’ theo một lộ trình phát triển sản phẩm.
D. Requirements Specification, mô tả đầy đủ các yêu cầu từ góc độ người dùng và hệ thống.
43. Trong phát triển phần mềm, ‘Continuous Delivery’ (Giao hàng liên tục) khác với ‘Continuous Deployment’ (Triển khai liên tục) ở điểm nào?
A. Continuous Delivery chỉ tự động hóa việc xây dựng và kiểm thử, còn Continuous Deployment tự động hóa cả việc triển khai lên môi trường production.
B. Continuous Deployment chỉ tự động hóa việc xây dựng và kiểm thử, còn Continuous Delivery tự động hóa cả việc triển khai lên môi trường production.
C. Continuous Delivery chỉ áp dụng cho các ứng dụng web, còn Continuous Deployment cho ứng dụng di động.
D. Không có sự khác biệt thực sự giữa hai khái niệm này.
44. Khi thực hiện kiểm thử hiệu năng (performance testing), loại kiểm thử nào đánh giá khả năng của hệ thống duy trì hiệu suất ổn định dưới tải trọng dự kiến trong một khoảng thời gian dài?
A. Load Testing (Kiểm thử tải).
B. Stress Testing (Kiểm thử sức chịu đựng).
C. Soak Testing (Kiểm thử ngâm) hoặc Endurance Testing.
D. Spike Testing (Kiểm thử đột biến).
45. Phương pháp ‘Pair Programming’ (Lập trình cặp) trong Extreme Programming (XP) có lợi ích chính là gì?
A. Giảm số lượng lập trình viên cần thiết cho một dự án.
B. Tăng cường chất lượng mã nguồn thông qua việc xem xét liên tục và chia sẻ kiến thức giữa hai lập trình viên.
C. Đảm bảo tất cả các lập trình viên đều có kinh nghiệm như nhau.
D. Giảm thiểu thời gian dành cho các cuộc họp và trao đổi nhóm.
46. Khi áp dụng kỹ thuật ‘Refactoring’ (Tái cấu trúc mã nguồn), mục tiêu chính là gì?
A. Thêm các tính năng mới cho phần mềm.
B. Sửa các lỗi nghiêm trọng được tìm thấy trong quá trình kiểm thử.
C. Thay đổi cấu trúc nội bộ của mã nguồn mà không làm thay đổi hành vi bên ngoài của nó, nhằm cải thiện tính dễ đọc, dễ bảo trì và hiệu suất.
D. Viết lại toàn bộ mã nguồn từ đầu.
47. Trong các mô hình phát triển phần mềm, mô hình ‘Spiral Model’ (Mô hình xoắn ốc) nhấn mạnh yếu tố nào là quan trọng nhất?
A. Phát triển theo chu kỳ lặp lại với sự tập trung mạnh mẽ vào quản lý rủi ro.
B. Hoàn thành toàn bộ các yêu cầu trước khi bắt đầu thiết kế.
C. Giao sản phẩm cho người dùng cuối càng sớm càng tốt.
D. Tối ưu hóa việc sử dụng lại các thành phần phần mềm đã có.
48. Khi thiết kế API (Application Programming Interface), việc sử dụng các phương thức HTTP như GET, POST, PUT, DELETE có ý nghĩa gì trong ngữ cảnh RESTful API?
A. GET dùng để tạo mới, POST dùng để cập nhật.
B. GET dùng để truy xuất dữ liệu, POST để tạo mới, PUT để cập nhật toàn bộ, DELETE để xóa.
C. PUT dùng để truy xuất, DELETE để tạo mới.
D. POST dùng để xóa, GET để cập nhật.
49. Một trong những nguyên tắc cốt lõi của SOLID trong thiết kế hướng đối tượng là ‘Single Responsibility Principle’ (Nguyên tắc trách nhiệm đơn). Nguyên tắc này nói gì?
A. Một lớp chỉ nên có một phương thức duy nhất.
B. Một lớp chỉ nên có một lý do để thay đổi.
C. Một lớp chỉ nên kế thừa từ một lớp cha duy nhất.
D. Một lớp chỉ nên có các thuộc tính là hằng số.
50. Khi đánh giá kiến trúc phần mềm, tiêu chí ‘Maintainability’ (Khả năng bảo trì) đề cập đến khía cạnh nào?
A. Khả năng của hệ thống chịu được các cuộc tấn công từ bên ngoài.
B. Khả năng của hệ thống xử lý đồng thời nhiều yêu cầu.
C. Khả năng dễ dàng sửa đổi, cập nhật hoặc mở rộng hệ thống mà không ảnh hưởng lớn đến các phần khác.
D. Khả năng hệ thống hoạt động liên tục mà không bị gián đoạn.
51. Trong các loại kiểm thử phần mềm, ‘Usability Testing’ (Kiểm thử khả năng sử dụng) tập trung vào khía cạnh nào của sản phẩm?
A. Khả năng của phần mềm hoạt động hiệu quả trên các hệ điều hành khác nhau.
B. Mức độ dễ dàng mà người dùng có thể học, sử dụng và đạt được mục tiêu của họ với phần mềm.
C. Khả năng của hệ thống xử lý một lượng lớn dữ liệu một cách nhanh chóng.
D. Tính bảo mật của dữ liệu người dùng và hệ thống.
52. Khái niệm ‘Agile Manifesto’ (Tuyên ngôn Agile) đã đề cao giá trị nào là quan trọng nhất?
A. Quy trình và công cụ hơn là con người và sự tương tác.
B. Tài liệu toàn diện hơn là phần mềm hoạt động.
C. Hợp đồng hơn là sự hợp tác với khách hàng.
D. Phản ứng với thay đổi hơn là tuân theo kế hoạch.
53. Trong phát triển phần mềm, ‘User Acceptance Testing’ (UAT) là giai đoạn kiểm thử mà?
A. Nhóm kiểm thử nội bộ xác nhận phần mềm đáp ứng các yêu cầu kỹ thuật.
B. Người dùng cuối (khách hàng hoặc đại diện của họ) kiểm tra phần mềm để xác nhận nó đáp ứng các nhu cầu kinh doanh và sẵn sàng để triển khai.
C. Nhóm phát triển kiểm tra các module riêng lẻ để đảm bảo chúng hoạt động đúng.
D. Các chuyên gia bảo mật đánh giá lỗ hổng của hệ thống.
54. Khi nói về ‘Design Patterns’ (Mẫu thiết kế) trong công nghệ phần mềm, mục đích chính của chúng là gì?
A. Thay thế hoàn toàn việc viết mã của lập trình viên.
B. Cung cấp các giải pháp tái sử dụng, đã được kiểm chứng cho các vấn đề thiết kế phổ biến trong phát triển phần mềm.
C. Tự động hóa quá trình biên dịch và liên kết mã nguồn.
D. Chuẩn hóa các quy tắc đặt tên biến và hàm.
55. Trong kiểm thử phần mềm, ‘Boundary Value Analysis’ (Phân tích giá trị biên) là một kỹ thuật tập trung vào việc kiểm tra các loại giá trị nào?
A. Các giá trị ngẫu nhiên nằm trong phạm vi hợp lệ của một trường dữ liệu.
B. Các giá trị nằm ngay tại các điểm biên của các khoảng hợp lệ và không hợp lệ của dữ liệu đầu vào.
C. Các giá trị mặc định được thiết lập cho các trường trong biểu mẫu.
D. Các giá trị lớn nhất và nhỏ nhất mà hệ thống có thể xử lý.
56. Trong mô hình phát triển phần mềm hướng đối tượng (Object-Oriented Programming – OOP), khái niệm ‘Polymorphism’ (Tính đa hình) cho phép điều gì?
A. Một đối tượng có thể có nhiều thuộc tính khác nhau.
B. Một giao diện hoặc một lớp cơ sở có thể biểu diễn các hành vi của nhiều lớp con khác nhau.
C. Một lớp chỉ có thể có một phương thức duy nhất.
D. Các đối tượng không thể tương tác với nhau.
57. Khi thực hiện kiểm thử hồi quy (regression testing) trong một dự án phần mềm, mục tiêu chính của loại kiểm thử này là gì?
A. Phát hiện lỗi mới xuất hiện do thay đổi mã nguồn hoặc sửa lỗi.
B. Đảm bảo phần mềm hoạt động đúng theo các yêu cầu đã định nghĩa.
C. Kiểm tra hiệu năng và khả năng chịu tải của hệ thống.
D. Xác minh tính thân thiện với người dùng của giao diện.
58. Trong mô hình DevOps, khái niệm ‘Continuous Integration’ (Tích hợp liên tục) có ý nghĩa gì?
A. Việc phát triển các tính năng mới một cách độc lập hoàn toàn.
B. Thường xuyên tích hợp mã nguồn từ nhiều nhà phát triển vào một kho lưu trữ chung, sau đó tự động xây dựng và kiểm thử.
C. Tự động hóa hoàn toàn quy trình triển khai sản phẩm lên môi trường production.
D. Quá trình người dùng cuối liên tục cung cấp phản hồi về sản phẩm.
59. Trong quản lý dự án phần mềm, ‘Scope Creep’ (Sự leo thang phạm vi) là hiện tượng gì?
A. Sự gia tăng không kiểm soát của các yêu cầu mới hoặc thay đổi yêu cầu ban đầu mà không có sự điều chỉnh về thời gian và chi phí.
B. Việc khách hàng yêu cầu cung cấp thêm các tính năng ngoài phạm vi đã thỏa thuận.
C. Sự chậm trễ trong việc hoàn thành các giai đoạn của dự án.
D. Xu hướng đội ngũ phát triển mở rộng quy mô đội hình làm việc.
60. Trong quy trình phát triển phần mềm, khái niệm ‘Technical Debt’ (Nợ kỹ thuật) thường đề cập đến điều gì?
A. Số tiền mà khách hàng còn nợ nhà phát triển cho sản phẩm đã bàn giao.
B. Chi phí phát sinh do sử dụng các công cụ phát triển lỗi thời.
C. Hậu quả của việc đưa ra các quyết định kỹ thuật kém chất lượng để đẩy nhanh tiến độ, dẫn đến chi phí bảo trì và phát triển trong tương lai cao hơn.
D. Chi phí bản quyền của các thư viện và framework bên thứ ba được sử dụng trong dự án.
61. Trong mô hình Agile Scrum, ‘Sprint Planning’ là buổi họp mà đội phát triển sẽ:
A. Đánh giá lại hiệu suất của đội trong Sprint vừa qua.
B. Lập kế hoạch cho những công việc sẽ được thực hiện trong Sprint tiếp theo.
C. Trình bày sản phẩm đã hoàn thành cho các bên liên quan.
D. Cập nhật tiến độ của các nhiệm vụ đang thực hiện.
62. Kỹ thuật ‘Code Review’ (Xem xét mã nguồn) có vai trò quan trọng nhất trong việc gì?
A. Đảm bảo mã nguồn tuân thủ các quy định pháp lý.
B. Phân tích chi phí và lợi ích của việc phát triển phần mềm.
C. Phát hiện lỗi, cải thiện chất lượng mã và chia sẻ kiến thức trong nhóm.
D. Tự động hóa quá trình biên dịch và đóng gói ứng dụng.
63. Khi thiết kế cơ sở dữ liệu, khái niệm ‘Normalization’ (Chuẩn hóa) được áp dụng để làm gì?
A. Tăng tốc độ truy vấn dữ liệu.
B. Giảm thiểu sự dư thừa dữ liệu và các vấn đề về cập nhật (update anomalies).
C. Tăng cường bảo mật cho dữ liệu nhạy cảm.
D. Tự động hóa quá trình sao lưu và phục hồi dữ liệu.
64. Trong công nghệ phần mềm, ‘Technical Debt’ (Nợ kỹ thuật) thường phát sinh từ đâu?
A. Việc sử dụng các thư viện mã nguồn mở.
B. Các quyết định thiết kế hoặc triển khai tạm thời, không tối ưu để đáp ứng deadline.
C. Thiếu tài liệu chi tiết về hệ thống.
D. Sự thiếu hụt kinh nghiệm của các thành viên trong nhóm.
65. Khi áp dụng phương pháp Agile, vai trò của ‘Product Owner’ là gì?
A. Chịu trách nhiệm kỹ thuật cho việc phát triển sản phẩm.
B. Quản lý đội phát triển và phân công công việc.
C. Đại diện cho khách hàng, định nghĩa và ưu tiên các yêu cầu trong Product Backlog.
D. Thực hiện kiểm thử và đảm bảo chất lượng sản phẩm.
66. Trong các loại kiểm thử hiệu năng, ‘Load Testing’ (Kiểm thử tải) được sử dụng để làm gì?
A. Kiểm tra khả năng phục hồi của hệ thống sau khi gặp sự cố.
B. Đánh giá hành vi của hệ thống dưới tải thông thường hoặc cao.
C. Xác định điểm lỗi cuối cùng của hệ thống khi tăng tải.
D. Kiểm tra các chức năng cụ thể của hệ thống.
67. Khi thực hiện ‘User Acceptance Testing’ (UAT), ai là người chủ yếu tham gia vào quá trình này?
A. Đội ngũ phát triển phần mềm.
B. Chuyên gia kiểm thử độc lập.
C. Người dùng cuối hoặc đại diện của họ.
D. Quản lý dự án.
68. Trong kiến trúc phần mềm, ‘Domain-Driven Design’ (DDD) nhấn mạnh vào điều gì làm yếu tố trung tâm của quá trình phát triển?
A. Hiệu năng của hệ thống.
B. Mô hình hóa lĩnh vực nghiệp vụ (domain) và ngôn ngữ chung (ubiquitous language).
C. Tái sử dụng mã nguồn giữa các dự án.
D. Tối ưu hóa việc lưu trữ dữ liệu.
69. Khi áp dụng ‘DevOps’, khái niệm ‘Infrastructure as Code’ (IaC) có ý nghĩa là gì?
A. Quản lý cơ sở hạ tầng phần cứng thông qua giao diện đồ họa.
B. Sử dụng mã nguồn để định nghĩa, cấu hình và quản lý cơ sở hạ tầng.
C. Tự động hóa việc triển khai ứng dụng lên các máy chủ ảo.
D. Phân tích log hệ thống để phát hiện lỗi.
70. Trong kiểm thử phần mềm, loại kiểm thử nào tập trung vào việc xác minh các thành phần riêng lẻ của hệ thống hoạt động đúng như mong đợi?
A. Kiểm thử tích hợp (Integration Testing).
B. Kiểm thử hệ thống (System Testing).
C. Kiểm thử đơn vị (Unit Testing).
D. Kiểm thử chấp nhận (Acceptance Testing).
71. Trong mô hình phát triển phần mềm ‘Waterfall’, tại sao giai đoạn ‘Testing’ (Kiểm thử) thường được đặt ở cuối quy trình?
A. Để đảm bảo tất cả các tính năng được phát triển đầy đủ trước khi kiểm thử.
B. Vì kiểm thử là giai đoạn tốn nhiều thời gian và cần được ưu tiên.
C. Để kiểm tra sự tích hợp của tất cả các thành phần sau khi chúng đã được xây dựng.
D. Do việc phát hiện lỗi ở giai đoạn này thường dễ dàng và ít tốn kém hơn.
72. Trong quản lý dự án phần mềm, ‘Scope Creep’ (sự phình to phạm vi) là hiện tượng gì?
A. Việc hoàn thành dự án trước thời hạn.
B. Sự thay đổi liên tục và không được kiểm soát của phạm vi dự án, thường là thêm yêu cầu mới.
C. Giảm bớt các tính năng không cần thiết để tiết kiệm chi phí.
D. Việc phân bổ nguồn lực không đủ cho dự án.
73. Khi phân tích yêu cầu, kỹ thuật ‘prototyping’ (tạo mẫu thử) được áp dụng nhằm mục đích chính là gì?
A. Giảm thiểu chi phí phát triển ban đầu.
B. Tăng tốc độ hoàn thành dự án.
C. Xác nhận và làm rõ yêu cầu người dùng một cách trực quan.
D. Chuẩn hóa quy trình kiểm thử phần mềm.
74. Trong phát triển phần mềm hướng đối tượng, ‘Encapsulation’ (Đóng gói) là nguyên tắc gì?
A. Khả năng một đối tượng có thể thể hiện các hành vi khác nhau dựa trên ngữ cảnh.
B. Khả năng che giấu chi tiết triển khai bên trong và chỉ cung cấp giao diện công khai để tương tác.
C. Khả năng một lớp kế thừa các thuộc tính và phương thức từ một lớp cha.
D. Khả năng một lớp có thể có nhiều hình thức khác nhau.
75. Khi đánh giá một yêu cầu phần mềm, tiêu chí ‘Atomic’ (Nguyên tử) có nghĩa là gì?
A. Yêu cầu đó phải có khả năng mở rộng cao.
B. Yêu cầu đó phải có thể kiểm thử được một cách độc lập.
C. Yêu cầu đó phải bao gồm nhiều chức năng con.
D. Yêu cầu đó phải có thể thực hiện được trong một lần chạy.
76. Kỹ thuật ‘Continuous Integration’ (CI) trong DevOps nhằm mục đích gì là chính?
A. Tự động hóa hoàn toàn quá trình triển khai sản phẩm lên môi trường Production.
B. Tích hợp mã nguồn từ nhiều nhà phát triển vào một kho chung và chạy kiểm thử tự động định kỳ.
C. Phân tích hiệu năng của hệ thống dưới tải cao.
D. Quản lý cấu hình và triển khai trên nhiều máy chủ.
77. Kỹ thuật ‘Pair Programming’ (lập trình theo cặp) trong các phương pháp Agile có lợi ích chính là gì?
A. Tăng số lượng code được viết trong một khoảng thời gian nhất định.
B. Giảm thiểu sự tương tác giữa các thành viên trong nhóm.
C. Nâng cao chất lượng mã nguồn thông qua việc xem xét và phản hồi liên tục.
D. Tạo ra sự độc lập tuyệt đối cho từng lập trình viên.
78. Kỹ thuật ‘refactoring’ trong công nghệ phần mềm ám chỉ hành động nào?
A. Thêm các tính năng mới vào phần mềm.
B. Sửa chữa các lỗi (bug) phát hiện trong quá trình kiểm thử.
C. Cải thiện cấu trúc nội bộ của mã nguồn mà không thay đổi hành vi bên ngoài.
D. Viết tài liệu chi tiết cho các module phần mềm.
79. Kỹ thuật ‘Test-Driven Development’ (TDD) là một phương pháp phát triển mà trong đó:
A. Viết mã nguồn chức năng trước, sau đó mới viết các trường hợp kiểm thử.
B. Viết các trường hợp kiểm thử tự động trước khi viết mã nguồn chức năng.
C. Chỉ viết mã nguồn chức năng mà không cần kiểm thử.
D. Thực hiện kiểm thử thủ công sau khi hoàn thành toàn bộ mã nguồn.
80. Trong quy trình phát triển phần mềm theo mô hình xoắn ốc (Spiral Model), giai đoạn nào chịu trách nhiệm đánh giá và làm rõ các yêu cầu, rủi ro, và mục tiêu cho vòng xoắn tiếp theo?
A. Lập kế hoạch (Planning)
B. Phân tích kỹ thuật (Engineering)
C. Đánh giá (Evaluation)
D. Xác định mục tiêu (Determine Objectives)
81. Trong mô hình phát triển phần mềm theo hướng dịch vụ (Service-Oriented Architecture – SOA), vai trò chính của một ‘service’ là gì?
A. Đại diện cho một giao diện người dùng tùy chỉnh.
B. Thực hiện một chức năng nghiệp vụ cụ thể có thể được truy cập và sử dụng bởi các dịch vụ hoặc ứng dụng khác.
C. Lưu trữ toàn bộ dữ liệu của hệ thống.
D. Quản lý toàn bộ quy trình phát triển phần mềm.
82. Trong quá trình kiểm thử phần mềm, ‘Kiểm thử hồi quy’ (Regression Testing) nhằm mục đích chính là gì?
A. Kiểm tra chức năng mới được thêm vào.
B. Xác minh rằng các thay đổi gần đây không làm ảnh hưởng tiêu cực đến các chức năng hiện có.
C. Đảm bảo hiệu suất của hệ thống dưới tải nặng.
D. Kiểm tra tính khả dụng của giao diện người dùng.
83. Yếu tố nào sau đây không phải là một trong ‘Vũ khí Bí Mật’ (The Seven Pernicious Postulates) của Fred Brooks trong ‘The Mythical Man-Month’?
A. Giả định rằng công việc có thể chia nhỏ vô hạn.
B. Giả định rằng mọi người đều là lập trình viên giỏi.
C. Giả định rằng sẽ có sẵn những công cụ hoàn hảo.
D. Giả định rằng sự chậm trễ có thể được khắc phục bằng cách thêm nhân lực.
84. Khái niệm ‘Continuous Integration’ (Tích hợp liên tục) đề cập đến việc gì?
A. Việc triển khai phần mềm lên môi trường production một cách liên tục.
B. Quá trình các nhà phát triển thường xuyên hợp nhất (merge) các thay đổi mã nguồn của họ vào một kho lưu trữ chung, sau đó được tự động xây dựng (build) và kiểm thử.
C. Việc kiểm thử phần mềm chỉ được thực hiện sau khi toàn bộ dự án hoàn thành.
D. Thiết kế kiến trúc hệ thống dựa trên các dịch vụ độc lập.
85. Trong các nguyên tắc của SOLID (thiết kế hướng đối tượng), nguyên tắc ‘Single Responsibility Principle’ (Nguyên tắc Trách nhiệm Đơn lẻ) nói rằng?
A. Mỗi lớp chỉ nên kế thừa từ một lớp cha duy nhất.
B. Một lớp chỉ nên có một lý do để thay đổi.
C. Các lớp phải đóng mở (mở để mở rộng, đóng để sửa đổi).
D. Tất cả các lớp trong một hệ thống phải có một giao diện chung.
86. Khái niệm ‘refactoring’ trong công nghệ phần mềm được hiểu là gì?
A. Việc thêm các chức năng mới vào phần mềm hiện có.
B. Quá trình sửa chữa các lỗi đã được phát hiện trong mã nguồn.
C. Việc thay đổi cấu trúc nội bộ của mã nguồn mà không làm thay đổi hành vi bên ngoài của nó, nhằm mục đích cải thiện tính dễ đọc, dễ bảo trì và hiệu suất.
D. Thiết kế lại hoàn toàn giao diện người dùng của ứng dụng.
87. Khái niệm ‘technical debt’ (nợ kỹ thuật) trong phát triển phần mềm ám chỉ điều gì?
A. Chi phí tài chính phát sinh do sử dụng công nghệ lỗi thời.
B. Sự trì hoãn trong việc sửa lỗi nhỏ để hoàn thành tính năng mới.
C. Hậu quả của việc chọn giải pháp dễ dàng hoặc nhanh chóng thay vì giải pháp tốt nhất trong ngắn hạn, dẫn đến chi phí cao hơn trong tương lai.
D. Chi phí cấp phép cho các công cụ phát triển phần mềm.
88. Khái niệm ‘Pair Programming’ (Lập trình cặp đôi) là một kỹ thuật trong phương pháp Agile, đề cao giá trị nào?
A. Tối ưu hóa việc sử dụng tài nguyên phần cứng.
B. Tăng cường sự cộng tác và chia sẻ kiến thức giữa các lập trình viên.
C. Tự động hóa toàn bộ quy trình kiểm thử.
D. Giảm thiểu số lượng tài liệu cần thiết.
89. Trong các phương pháp phát triển phần mềm linh hoạt (Agile), ‘sprint’ là gì?
A. Một giai đoạn thiết kế chi tiết cho toàn bộ dự án.
B. Một vòng lặp phát triển lặp lại, có độ dài cố định (thường là 1-4 tuần), trong đó một tập hợp các công việc được hoàn thành và có thể chuyển giao.
C. Buổi họp tổng kết cuối dự án để đánh giá kết quả.
D. Quá trình thu thập yêu cầu ban đầu từ khách hàng.
90. Trong quy trình phát triển phần mềm, ‘đặc tả yêu cầu’ (requirements specification) đóng vai trò quan trọng nhất trong giai đoạn nào?
A. Giai đoạn bảo trì và sửa lỗi.
B. Giai đoạn triển khai và vận hành.
C. Giai đoạn phân tích và thiết kế.
D. Giai đoạn kiểm thử cuối cùng.
91. Khái niệm ‘DevOps’ nhấn mạnh sự hợp tác và tích hợp giữa các nhóm nào?
A. Nhóm phát triển (Development) và nhóm kinh doanh (Business).
B. Nhóm phát triển (Development) và nhóm vận hành (Operations).
C. Nhóm kiểm thử (Testing) và nhóm bảo mật (Security).
D. Nhóm thiết kế (Design) và nhóm marketing (Marketing).
92. Trong kiểm thử phần mềm, ‘Boundary Value Analysis’ (Phân tích Giá trị Biên) là một kỹ thuật gì?
A. Kiểm thử tất cả các giá trị có thể có trong một phạm vi nhập liệu.
B. Tập trung kiểm thử các giá trị tại các điểm biên của các khoảng hợp lệ và không hợp lệ, vì đây là những nơi thường xảy ra lỗi.
C. Kiểm tra giao diện người dùng cho đến khi nó hoàn toàn không có lỗi.
D. Đảm bảo phần mềm chạy nhanh hơn dưới tải cao.
93. Khái niệm ‘code review’ (xem xét mã nguồn) trong quy trình phát triển phần mềm nhằm mục đích chính là gì?
A. Đảm bảo mã nguồn tuân thủ hoàn toàn các quy định pháp luật.
B. Kiểm tra xem mã nguồn có đáp ứng đủ yêu cầu chức năng hay không.
C. Phát hiện lỗi, cải thiện chất lượng mã nguồn, chia sẻ kiến thức và đảm bảo tính nhất quán.
D. Ước tính thời gian hoàn thành cho các tính năng mới.
94. Trong mô hình phát triển phần mềm Agile, vai trò của ‘Product Owner’ là gì?
A. Chịu trách nhiệm kỹ thuật chính của nhóm phát triển.
B. Quản lý tiến độ và tài nguyên của dự án.
C. Đại diện cho khách hàng và các bên liên quan, chịu trách nhiệm tối đa hóa giá trị của sản phẩm bằng cách quản lý Product Backlog.
D. Thực hiện các hoạt động kiểm thử và đảm bảo chất lượng.
95. Trong mô hình phát triển phần mềm Waterfall (Thác nước), khi nào thì giai đoạn kiểm thử (Testing) thường được thực hiện?
A. Song song với giai đoạn thu thập yêu cầu.
B. Sau khi giai đoạn thiết kế đã hoàn tất.
C. Sau khi giai đoạn lập trình (Implementation) đã hoàn tất.
D. Trong suốt quá trình phát triển.
96. Trong quản lý dự án phần mềm, ‘scope creep’ (sự leo thang phạm vi) là hiện tượng gì?
A. Sự giảm thiểu không mong muốn của các yêu cầu ban đầu.
B. Việc tăng trưởng liên tục và không kiểm soát được các yêu cầu của dự án sau khi phạm vi đã được xác định.
C. Sự chậm trễ trong việc hoàn thành các giai đoạn của dự án.
D. Việc sử dụng các công cụ phát triển mới.
97. Khi áp dụng phương pháp Agile, giá trị cốt lõi nào sau đây được ưu tiên hơn so với các quy trình và công cụ?
A. Tài liệu toàn diện.
B. Hợp đồng chặt chẽ.
C. Cá nhân và tương tác.
D. Kế hoạch chi tiết và tuân thủ tuyệt đối.
98. Trong phát triển phần mềm theo mô hình xoắn ốc (Spiral Model), giai đoạn nào là quan trọng nhất để đánh giá và giảm thiểu rủi ro?
A. Giai đoạn lập kế hoạch ban đầu.
B. Giai đoạn thiết kế chi tiết.
C. Giai đoạn kỹ thuật và phân tích rủi ro.
D. Giai đoạn đánh giá của khách hàng.
99. Khái niệm ‘User Story’ (Câu chuyện người dùng) trong Agile thường được viết theo định dạng nào?
A. Là một tài liệu kỹ thuật chi tiết về cách thực hiện.
B. Một mô tả ngắn gọn về một tính năng từ góc nhìn của người dùng cuối, thường theo mẫu ‘Với vai trò là (vai trò người dùng), tôi muốn (mục tiêu) để (lợi ích)’.
C. Một báo cáo tiến độ hàng ngày của nhóm phát triển.
D. Một bản kế hoạch kiểm thử chi tiết cho toàn bộ dự án.
100. Khái niệm ‘API’ (Application Programming Interface) trong phát triển phần mềm là gì?
A. Một phần cứng chuyên dụng để xử lý dữ liệu.
B. Một tập hợp các quy tắc và định nghĩa cho phép các ứng dụng phần mềm khác nhau giao tiếp và tương tác với nhau.
C. Một ngôn ngữ lập trình mới được phát triển.
D. Một phương pháp quản lý cơ sở dữ liệu.