1. Khái niệm ‘API’ (Application Programming Interface) trong phát triển phần mềm dùng để làm gì?
A. Là một giao diện người dùng đồ họa (GUI) cho phép tương tác trực quan.
B. Là một bộ 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ới nhau.
C. Là một phương pháp để mã hóa dữ liệu nhạy cảm.
D. Là một loại cơ sở dữ liệu chuyên dụng cho ứng dụng di động.
2. Công nghệ nào được sử dụng để tự động hóa quá trình triển khai phần mềm và các tác vụ vận hành, thường là một phần của quy trình DevOps?
A. Git
B. JIRA
C. Ansible
D. Docker
3. Kiểm thử bảo mật (Security Testing) nhằm mục đích chính là gì?
A. Đảm bảo phần mềm chạy nhanh dưới tải cao.
B. Xác minh rằng hệ thống được bảo vệ chống lại các mối đe dọa, lỗ hổng và tấn công tiềm ẩn.
C. Kiểm tra xem các tính năng có hoạt động đúng như mô tả hay không.
D. Đánh giá khả năng sử dụng và trải nghiệm người dùng.
4. Khi áp dụng mô hình Agile, ‘Product Backlog Refinement’ (hoặc Grooming) là hoạt động gì?
A. Tổ chức một buổi kỷ niệm kết thúc dự án thành công.
B. Đánh giá và cập nhật các mục trong Product Backlog, bao gồm làm rõ, ước tính và sắp xếp lại thứ tự ưu tiên.
C. Viết tài liệu kỹ thuật chi tiết cho từng tính năng.
D. Thực hiện kiểm thử hệ thống toàn diện.
5. Trong kiểm thử phần mềm, ‘kiểm thử hộp xám’ (Gray Box Testing) kết hợp các khía cạnh của loại kiểm thử nào?
A. Chỉ kiểm thử hộp trắng (White Box Testing).
B. Chỉ kiểm thử hộp đen (Black Box Testing).
C. Kết hợp cả kiểm thử hộp trắng và hộp đen.
D. Kiểm thử hiệu năng và tải.
6. Khái niệm ‘Agile Transformation’ đề cập đến quá trình gì?
A. Việc chuyển đổi từ một ngôn ngữ lập trình này sang một ngôn ngữ khác.
B. Quá trình một tổ chức áp dụng các nguyên tắc và thực hành Agile vào hoạt động của mình.
C. Việc phát triển một phiên bản mới của phần mềm với các tính năng được cải tiến.
D. Tự động hóa toàn bộ quy trình phát triển phần mềm.
7. Trong kiểm thử phần mềm, ‘kiểm thử người dùng cuối’ (End-to-End Testing) tập trung vào điều gì?
A. Kiểm tra từng thành phần mã riêng lẻ.
B. Kiểm tra toàn bộ quy trình nghiệp vụ từ đầu đến cuối, mô phỏng hành vi của người dùng thật.
C. Kiểm tra hiệu năng của cơ sở dữ liệu.
D. Kiểm tra các giao diện lập trình ứng dụng (APIs).
8. Mô hình kiến trúc phần mềm nào phân chia ứng dụng thành các lớp logic riêng biệt, mỗi lớp có trách nhiệm cụ thể (ví dụ: lớp trình bày, lớp logic nghiệp vụ, lớp truy cập dữ liệu)?
A. Kiến trúc Microservices
B. Kiến trúc Monolithic
C. Kiến trúc phân lớp (Layered Architecture)
D. Kiến trúc hướng sự kiện (Event-Driven Architecture)
9. Nguyên tắc ‘Don’t Repeat Yourself’ (DRY) trong công nghệ phần mềm khuyến khích điều gì?
A. Mỗi phần của hệ thống nên có tài liệu đầy đủ.
B. Tránh sự lặp lại của mã nguồn hoặc logic nghiệp vụ.
C. Mọi yêu cầu của khách hàng đều phải được ghi lại chi tiết.
D. Tất cả các thành phần trong hệ thống phải có khả năng tương tác trực tiếp.
10. Trong kiến trúc Microservices, việc các dịch vụ giao tiếp với nhau thông qua các API là một ví dụ điển hình cho nguyên tắc nào?
A. Tính đóng gói (Encapsulation).
B. Tính kế thừa (Inheritance).
C. Tính đa hình (Polymorphism).
D. Tính liên kết lỏng lẻo (Loose Coupling).
11. Khái niệm ‘Continuous Deployment’ (CD) khác với ‘Continuous Delivery’ (CD) ở điểm nào?
A. Continuous Delivery tự động hóa việc triển khai, còn Continuous Deployment thì không.
B. Continuous Deployment tự động hóa hoàn toàn việc triển khai lên môi trường sản xuất mà không cần can thiệp thủ công.
C. Continuous Delivery chỉ tập trung vào kiểm thử, còn Continuous Deployment tập trung vào triển khai.
D. Không có sự khác biệt, hai thuật ngữ này đồng nghĩa.
12. Trong các giai đoạn của vòng đời phát triển phần mềm (SDLC), giai đoạn nào chịu trách nhiệm định nghĩa chi tiết các yêu cầu chức năng và phi chức năng của hệ thống?
A. Lập kế hoạch (Planning)
B. Phân tích yêu cầu (Requirements Analysis)
C. Thiết kế (Design)
D. Triển khai (Implementation)
13. Khái niệm ‘Code Review’ (Rà soát mã nguồn) trong quy trình phát triển phần mềm có vai trò gì quan trọng nhất?
A. Tăng tốc độ hoàn thành dự á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 logic, lỗi cú pháp, vi phạm coding standards và cải thiện chất lượng mã.
C. Đảm bảo tất cả các lập trình viên có cùng một phong cách viết code.
D. Giảm nhu cầu về kiểm thử tự động.
14. Kiểm thử hồi quy (Regression Testing) nhằm mục đích chính là gì?
A. Kiểm tra xem các chức năng mới được thêm vào có hoạt động đúng không.
B. Đảm bảo rằng các thay đổi (sửa lỗi, thêm tính năng) không làm ảnh hưởng tiêu cực đến các chức năng hiện có.
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 giao diện người dùng có dễ sử dụng và trực quan hay không.
15. Công cụ liên tục tích hợp (Continuous Integration – CI) nào là phổ biến và có khả năng tích hợp với nhiều hệ thống quản lý mã nguồn?
A. Docker
B. Kubernetes
C. Jenkins
D. Ansible
16. Trong thiết kế phần mềm, một ‘Design Pattern’ (Mẫu thiết kế) là gì?
A. Một loại hợp đồng pháp lý cho việc phát triển phần mềm.
B. Một giải pháp chung, có thể tái sử dụng cho một vấn đề thường gặp trong thiết kế phần mềm.
C. Một công cụ để quản lý các công việc trong dự án.
D. Một ngôn ngữ lập trình mới được phát triển.
17. 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 rằng mỗi đơn vị mã độc lập 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)
18. Trong Agile, một ‘User Story’ thường bao gồm những thành phần chính nào?
A. Mô tả kỹ thuật chi tiết và logic nghiệp vụ phức tạp.
B. Vai trò, Hành động mong muốn, và Lý do/Lợi ích đạt được.
C. Tên của lập trình viên và thời gian ước tính hoàn thành.
D. Danh sách các trường hợp kiểm thử liên quan.
19. Mô hình phát triển phần mềm nào coi việc kiểm thử là một hoạt động song song với các giai đoạn phát triển khác, thay vì chỉ là một giai đoạn cuối?
A. Mô hình Thác nước (Waterfall Model)
B. Mô hình V (V-Model)
C. Mô hình Lặp (Iterative Model)
D. Mô hình Big Bang
20. Trong các giai đoạn của vòng đời phát triển phần mềm (SDLC), giai đoạn nào liên quan đến việc duy trì và cập nhật phần mềm sau khi nó đã được phát hành ra thị trường?
A. Phân tích yêu cầu (Requirements Analysis)
B. Thiết kế (Design)
C. Triển khai (Implementation)
D. Bảo trì (Maintenance)
21. Yếu tố nào sau đây KHÔNG phải là một trong những nguyên tắc cốt lõi của Agile Manifesto?
A. Cá nhân và tương tác hơn quy trình và công cụ.
B. Phần mềm chạy được hơn tài liệu đầy đủ.
C. Khách hàng hợp tác hơn đàm phán hợp đồng.
D. Tuân thủ kế hoạch hơn phản ứng với thay đổi.
22. Trong kiểm thử phần mềm, ‘kiểm thử hiệu năng’ (Performance Testing) nhằm mục đích đánh giá điều gì?
A. Tính bảo mật của hệ thống.
B. Khả năng hoạt động của phần mềm dưới các tải khác nhau, bao gồm tốc độ, khả năng phản hồi và độ ổn định.
C. Tính dễ sử dụng của giao diện người dùng.
D. Khả năng tương thích trên các trình duyệt khác nhau.
23. Trong lập trình hướng đối tượng, ‘tính đa hình’ (polymorphism) cho phép điều gì?
A. Một lớp có thể kế thừa thuộc tính và phương thức từ nhiều lớp cha.
B. Các đối tượng thuộc các lớp khác nhau có thể được xử lý như các đối tượng của một lớp cha chung.
C. Che giấu chi tiết triển khai bên trong của một đối tượng.
D. Tạo ra các lớp con từ một lớp cha mà không thay đổi hành vi của lớp cha.
24. Trong Agile, ai là người chịu trách nhiệm chính trong việc tối ưu hóa giá trị sản phẩm, quản lý Product Backlog và làm cầu nối giữa khách hàng và nhóm phát triển?
A. Scrum Master
B. Developer
C. Product Owner
D. Project Manager
25. Công cụ nào thường được sử dụng để quản lý mã nguồn và cho phép cộng tác giữa nhiều nhà phát triển trong một dự án phần mềm?
A. JIRA
B. Confluence
C. Git
D. Jenkins
26. Mô hình phát triển phần mềm nào nhấn mạnh vào việc lặp lại và tiến hóa liên tục, kết hợp cả khía cạnh của việc giảm thiểu rủi ro và lặp lại?
A. Mô hình Agile
B. Mô hình V-Model
C. Mô hình xoắn ốc (Spiral Model)
D. Mô hình Big Bang
27. Nếu một nhóm phát triển muốn xây dựng một ứng dụng web ban đầu, sau đó mở rộng sang ứng dụng di động native, mô hình phát triển nào sẽ cho phép chia sẻ logic nghiệp vụ hiệu quả giữa hai nền tảng?
A. Kiến trúc Monolithic
B. Kiến trúc Microservices
C. Kiến trúc phân lớp (Layered Architecture) với lớp nghiệp vụ tách biệt.
D. Kiến trúc hướng sự kiện (Event-Driven Architecture).
28. Trong thiết kế cơ sở dữ liệu, ‘chuẩn hóa’ (normalization) là quá trình nhằm mục đích gì?
A. Tăng tốc độ truy vấn dữ liệu.
B. Giảm sự dư thừa dữ liệu và cải thiện tính toàn vẹn của dữ liệu.
C. Mở rộng khả năng lưu trữ của cơ sở dữ liệu.
D. Tăng cường bảo mật cho các bảng dữ liệu nhạy cảm.
29. Trong lập trình hướng đối tượng, ‘tính kế thừa’ (inheritance) cho phép một lớp mới:
A. Che giấu các thuộc tính và phương thức của lớp cha.
B. Định nghĩa lại các phương thức đã có của lớp cha theo cách riêng.
C. Kế thừa các thuộc tính và phương thức từ một lớp cha đã có.
D. Tạo ra các đối tượng độc lập mà không phụ thuộc vào lớp cha.
30. Mô hình kiến trúc nào phân chia một ứng dụng lớn thành các dịch vụ nhỏ, độc lập, có thể triển khai và quản lý riêng lẻ?
A. Kiến trúc Monolithic
B. Kiến trúc Microservices
C. Kiến trúc SOA (Service-Oriented Architecture)
D. Kiến trúc phân lớp (Layered Architecture)
31. Trong phương pháp Agile, khái niệm ‘Sprint’ đề cập đến điều gì?
A. Một giai đoạn lập kế hoạch tổng thể cho toàn bộ dự án.
B. Một chu kỳ làm việc ngắn, có thời hạn cố định (thường 1-4 tuần) để hoàn thành một tập hợp các công việc đã chọn.
C. Một buổi họp đánh giá kết quả cuối dự án.
D. Một tài liệu mô tả chi tiết các yêu cầu kỹ thuật.
32. Khái niệm ‘Technical Debt’ (Nợ kỹ thuật) trong phát triển phần mềm đề cập đến điều gì?
A. Chi phí phát sinh khi mua các công cụ phát triển phần mềm đắt tiền.
B. Hậu quả của việc đưa ra các quyết định thiết kế hoặc triển khai không tối ưu trong quá trình phát triển, dẫn đến việc sửa chữa hoặc cải tiến tốn kém hơn trong tương lai.
C. Số lượng lỗi được tìm thấy trong giai đoạn kiểm thử cuối cùng.
D. Thời gian cần thiết để đào tạo nhân viên mới về công nghệ phần mềm.
33. Khái niệm ‘DevOps’ nhấn mạnh sự hợp tác và giao tiếp giữa những bộ phận nào trong một tổ chức phát triển phần mềm?
A. Chỉ bộ phận Phát triển (Development).
B. Chỉ bộ phận Vận hành (Operations).
C. Bộ phận Phát triển (Development) và bộ phận Vận hành (Operations).
D. Bộ phận Phát triển (Development), Vận hành (Operations) và Bộ phận Kiểm thử (QA).
34. Nếu một phần mềm có nhiều lớp giao diện người dùng (UI) khác nhau cho các nền tảng khác nhau (web, mobile), mô hình kiến trúc nào sẽ phù hợp để quản lý sự phức tạp này?
A. Kiến trúc Monolithic
B. Kiến trúc Microservices
C. Kiến trúc phân lớp (Layered Architecture)
D. Kiến trúc N-tier (Multi-tier Architecture)
35. Trong phương pháp Scrum, ‘Sprint Review’ là buổi họp có mục đích gì?
A. Lập kế hoạch cho Sprint tiếp theo.
B. Xem xét các công việc đã hoàn thành trong Sprint và thu thập phản hồi từ các bên liên quan.
C. Xác định các rủi ro tiềm ẩn của dự án.
D. Đánh giá hiệu suất làm việc của từng thành viên trong nhóm.
36. Khái niệm ‘Continuous Delivery’ (CD) trong DevOps là gì?
A. Là quá trình tự động hóa hoàn toàn việc triển khai phần mềm lên môi trường sản xuất.
B. Là một phương pháp đảm bảo rằng phần mềm luôn ở trạng thái sẵn sàng để triển khai bất cứ lúc nào.
C. Là việc kiểm thử tự động tất cả các chức năng của phần mềm.
D. Là quá trình thu thập phản hồi từ người dùng cuối.
37. Trong lập trình hướng đối tượng, ‘tính đóng gói’ (encapsulation) có ý nghĩa gì?
A. Khả năng một đối tượng có thể kế thừa thuộc tính và phương thức từ đối tượng khác.
B. Khả năng che giấu thông tin chi tiết về cách thức hoạt động bên trong của một đối tượng và chỉ cho phép truy cập thông qua các phương thức công khai.
C. Khả năng một đối tượng có thể có nhiều hình dạng khác nhau tùy thuộc vào ngữ cảnh sử dụng.
D. Khả năng một lớp có thể có nhiều phương thức cùng tên nhưng khác nhau về tham số.
38. Nguyên tắc SOLID là gì và nó đóng vai trò gì trong thiết kế hướng đối tượng?
A. Là bộ quy tắc về bảo mật, giúp ngăn chặn tấn công.
B. Là bộ nguyên tắc thiết kế giúp phần mềm dễ bảo trì, mở rộng và hiểu hơn.
C. Là các phương pháp kiểm thử tự động, tăng tốc độ phát triển.
D. Là các mẫu thiết kế (design patterns) cho giao diện người dùng.
39. Khái niệm ‘refactoring’ trong phát triển phần mềm đề cập đến hoạt động nào?
A. Viết tài liệu mô tả chi tiết về mã nguồn.
B. 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ó.
C. Thêm các tính năng mới vào phần mềm.
D. Sửa các lỗi nghiêm trọng được tìm thấy trong quá trình kiểm thử.
40. Mô hình phát triển phần mềm nào cho phép lặp lại nhiều lần, mỗi lần lặp lại sẽ tạo ra một phiên bản tăng dần của phần mềm, và thường sử dụng trong các dự án có yêu cầu thay đổi liên tục?
A. Mô hình thác nước (Waterfall Model)
B. Mô hình chữ V (V-Model)
C. Mô hình xoắn ốc (Spiral Model)
D. Mô hình lặp (Iterative Model)
41. Khái niệ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 tự động triển khai mọi thay đổi vào production, còn Continuous Deployment thì không.
B. Continuous Delivery đảm bảo rằng mọi thay đổi mã nguồn đều sẵn sàng để triển khai lên production bất cứ lúc nào thông qua quy trình tự động, nhưng việc triển khai thực tế vẫn cần sự phê duyệt thủ công, trong khi Continuous Deployment tự động triển khai mọi thay đổi đã qua kiểm thử lên production.
C. Continuous Delivery chỉ áp dụng cho việc triển khai ứng dụng web, còn Continuous Deployment áp dụng cho mọi loại phần mềm.
D. Continuous Delivery tập trung vào việc kiểm thử, còn Continuous Deployment tập trung vào việc xây dựng mã.
42. Trong mô hình Agile, ‘Daily Stand-up’ (hoặc Daily Scrum) là một cuộc họp có mục đích gì?
A. Đánh giá tổng thể hiệu suất của nhóm trong Sprint.
B. Cập nhật tiến độ công việc, thảo luận về những gì đã hoàn thành, kế hoạch cho ngày hôm nay, và các trở ngại gặp phải, nhằm đồng bộ hóa hoạt động của nhóm.
C. Lập kế hoạch chi tiết cho các Sprint tiếp theo.
D. Trình bày sản phẩm hoàn thành cho khách hàng.
43. Trong quá trình phát triển phần mềm theo mô hình Agile, ‘Sprint Backlog’ là gì?
A. Danh sách tất cả các user stories của dự án.
B. Một tập hợp các mục (thường là user stories và các task liên quan) mà nhóm phát triển cam kết hoàn thành trong một Sprint cụ thể.
C. Bản kế hoạch chi tiết cho toàn bộ dự án.
D. Các yêu cầu không chức năng của hệ thống.
44. Trong mô hình phát triển phần mềm xoắn ốc (Spiral Model), giai đoạn nào tập trung vào việc xác định và phân tích các yêu cầu chi tiết của hệ thống, bao gồm cả việc tạo ra các mô hình và tạo mẫu ban đầu?
A. Lập kế hoạch (Planning)
B. Phân tích rủi ro (Risk Analysis)
C. Kỹ thuật (Engineering)
D. Đánh giá (Evaluation)
45. Trong quá trình quản lý dự án phần mềm, ‘Scope Creep’ (Sự leo thang phạm vi) là hiện tượng gì?
A. Việc hoàn thành dự án trước thời hạn đề ra.
B. Sự gia tăng không kiểm soát của yêu cầu hoặc tính năng trong dự án sau khi phạm vi ban đầu đã được chốt, thường dẫn đến chậm trễ và tăng chi phí.
C. Việc giảm bớt các tính năng không cần thiết để tiết kiệm thời gian.
D. Sự thay đổi về công nghệ sử dụng trong dự án.
46. Phương pháp Agile nào nhấn mạnh vào việc giao tiếp trực tiếp và thường xuyên giữa các thành viên trong nhóm, cũng như giữa nhóm phát triển và khách hàng, thông qua các cuộc họp hàng ngày (daily stand-ups)?
A. Extreme Programming (XP)
B. Scrum
C. Kanban
D. Lean Software Development
47. Khái niệm ‘API Gateway’ trong kiến trúc microservices có vai trò gì?
A. Là nơi lưu trữ tất cả mã nguồn của các microservices.
B. Cung cấp một điểm truy cập duy nhất cho tất cả các client, định tuyến yêu cầu đến các microservices phù hợp, và có thể xử lý các chức năng như xác thực, giới hạn tốc độ, và chuyển đổi giao thức.
C. Là cơ sở dữ liệu dùng chung cho tất cả các microservices.
D. Thực hiện các tác vụ kiểm thử tự động.
48. Nguyên tắc ‘fail-fast’ trong phát triển phần mềm khuyến khích điều gì?
A. Chỉ sửa lỗi khi hệ thống hoàn toàn ngừng hoạt động.
B. Thiết kế hệ thống sao cho khi có lỗi xảy ra, nó sẽ báo lỗi ngay lập tức thay vì tiếp tục hoạt động với dữ liệu sai hoặc trạng thái không nhất quán.
C. Ưu tiên hoàn thành chức năng mới hơn là sửa lỗi.
D. Ghi lại tất cả các lỗi mà không báo cáo ngay cho người dùng.
49. Phương pháp ‘Kanban’ trong Agile tập trung vào việc gì để quản lý luồng công việc?
A. Hoàn thành càng nhiều công việc càng tốt trong một khoảng thời gian cố định.
B. Giới hạn số lượng công việc đang tiến hành (Work In Progress – WIP) trên mỗi bước của quy trình để tối ưu hóa luồng và giảm thiểu tắc nghẽn.
C. Chia nhỏ công việc thành các sprint có độ dài cố định.
D. Thực hiện các buổi họp hàng ngày để đồng bộ hóa công việc.
50. Khái niệm ‘DevOps’ nhấn mạnh vào sự hợp tác và giao tiếp giữa các bộ phận nào trong một tổ chức phát triển phần mềm?
A. Chỉ bộ phận Phát triển (Development).
B. Chỉ bộ phận Vận hành (Operations).
C. Cả bộ phận Phát triển (Development) và bộ phận Vận hành (Operations).
D. Chỉ bộ phận Kiểm thử (Testing).
51. Khái niệm ‘Software Architecture’ (Kiến trúc phần mềm) đề cập đến điều gì?
A. Chi tiết về từng dòng mã lệnh.
B. Cấu trúc tổng thể của hệ thống phần mềm, bao gồm các thành phần chính, mối quan hệ giữa chúng, và các nguyên tắc, hướng dẫn định hình thiết kế và phát triển.
C. Quy trình kiểm thử phần mềm.
D. Giao diện người dùng của ứng dụng.
52. Theo nguyên tắc SOLID, nguyên tắc ‘Single Responsibility Principle’ (Nguyên tắc Trách nhiệm Đơn lẻ) có ý nghĩa gì trong thiết kế lớp?
A. Một lớp chỉ nên có một mối quan tâm (concern) hoặc một lý do để thay đổi.
B. Các lớp nên được mở để mở rộng nhưng đóng để sửa đổi.
C. Các lớp cha nên có thể thay thế bằng các lớp con mà không làm ảnh hưởng đến chương trình.
D. Các phụ thuộc nên được truyền vào thông qua constructor, setter hoặc phương thức.
53. Phương pháp ‘Pair Programming’ (Lập trình cặp đôi) trong Extreme Programming (XP) đề cao nguyên tắc nào?
A. Mỗi lập trình viên làm việc độc lập để tối đa hóa năng suất cá nhân.
B. Hai lập trình viên cùng làm việc trên một máy tính, một người viết mã (driver) và một người xem xét mã (navigator), nhằm cải thiện chất lượng mã và chia sẻ kiến thức.
C. Phân chia công việc thành nhiều phần nhỏ và giao cho các nhóm khác nhau thực hiện.
D. Tập trung vào việc viết tài liệu chi tiết trước khi bắt đầu lập trình.
54. Khái niệm ‘Design Patterns’ (Mẫu thiết kế) trong công nghệ phần mềm là gì?
A. Các thuật toán được sử dụng để giải quyết vấn đề.
B. Các giải pháp chung, có thể tái sử dụng cho các vấn đề thường gặp trong thiết kế phần mềm, được đúc kết từ kinh nghiệm của các lập trình viên.
C. Các công cụ tự động hóa quá trình kiểm thử.
D. Các quy tắc bắt buộc về định dạng mã nguồn.
55. Trong quy trình phát triển phần mềm Agile, ‘Product Owner’ có vai trò chính là gì?
A. Quản lý đội ngũ phát triển và đảm bảo chất lượng mã.
B. Đạ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.
C. Thực hiện các hoạt động kiểm thử hệ thống.
D. Quản lý cơ sở hạ tầng và triển khai phần mềm.
56. Trong các giai đoạn của vòng đời phát triển phần mềm, giai đoạn nào thường liên quan đến việc sửa lỗi, cập nhật và cải tiến sau khi phần mềm đã được phát hành?
A. Planning (Lập kế hoạch)
B. Design (Thiết kế)
C. Implementation (Triển khai)
D. Maintenance (Bảo trì)
57. Khi nói về ‘Kiểm thử chấp nhận của người dùng’ (User Acceptance Testing – UAT), ai là người thực hiện chính?
A. Nhóm kiểm thử phần mềm.
B. Nhóm phát triển.
C. Người dùng cuối hoặc đại diện của họ.
D. Quản lý dự án.
58. Khái niệm ‘Code Review’ (Rà soát mã nguồn) trong công nghệ phần mềm nhằm mục đích chính là gì?
A. Tăng tốc độ phát triển bằng cách giảm thiểu thời gian viết 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 hóa quá trình biên dịch mã nguồn.
D. Phân tích hiệu năng của ứng dụng.
59. Một trong những mục tiêu chính của ‘Kiểm thử hiệu năng’ (Performance Testing) là gì?
A. Đảm bảo tính bảo mật của ứng dụng.
B. Đánh giá khả năng phản hồi, tốc độ, độ ổn định và khả năng sử dụng tài nguyên của hệ thống dưới các mức tải khác nhau.
C. Xác minh rằng tất cả các tính năng được yêu cầu đều hoạt động chính xác.
D. Kiểm tra khả năng phục hồi của hệ thống sau sự cố.
60. Theo nguyên tắc SOLID, ‘Liskov Substitution Principle’ (Nguyên tắc Thay thế Liskov) phát biểu điều gì?
A. Một lớp con có thể thay thế lớp cha 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 mở để mở rộng nhưng đóng để sửa đổi.
C. Các phụ thuộc nên được truyền vào thông qua constructor, setter hoặc phương thức.
D. Một lớp chỉ nên có một mối quan tâm (concern) hoặc một lý do để thay đổi.
61. Trong Agile, ‘Definition of Done’ (Định nghĩa Hoàn thành) là gì?
A. Một danh sách các tính năng ưu tiên cao nhất của dự án.
B. Một tập hợp các tiêu chí mà một công việc (ví dụ: một user story) phải đáp ứng để được coi là hoàn thành và sẵn sàng để bàn giao hoặc phát hành.
C. Thời hạn cuối cùng để hoàn thành tất cả các công việc trong một sprint.
D. Một bản kế hoạch chi tiết cho toàn bộ vòng đời phát triển phần mềm.
62. Trong quy trình CI/CD (Continuous Integration/Continuous Deployment), mục đích chính của ‘Continuous Integration’ là gì?
A. Tự động triển khai phần mềm lên môi trường production.
B. Tự động hóa quá trình kiểm thử sau mỗi lần tích hợp mã nguồn vào kho chung.
C. Tự động hóa việc thu thập yêu cầu từ khách hàng.
D. Tự động hóa việc thiết kế giao diện người dùng.
63. Khái niệm ‘Domain-Driven Design’ (DDD) tập trung vào việc gì?
A. Tối ưu hóa hiệu suất mạng.
B. Xây dựng mô hình phần mềm xoay quanh miền nghiệp vụ (domain) và ngôn ngữ chung (ubiquitous language) của miền đó, giúp giải quyết các vấn đề phức tạp.
C. Tự động hóa quá trình triển khai.
D. Sử dụng các công nghệ mới nhất để xây dựng ứng dụng.
64. Khi áp dụng nguyên tắc SOLID ‘Dependency Inversion Principle’ (Nguyên tắc Đảo ngược Phụ thuộc), điều gì được khuyến khích?
A. Các module cấp cao không nên phụ thuộc vào các module cấp thấp, mà cả hai nên phụ thuộc vào trừu tượng hóa.
B. Các lớp nên được mở để mở rộng nhưng đóng để sửa đổi.
C. Một lớp chỉ nên có một mối quan tâm (concern).
D. Các lớp cha nên có thể thay thế bằng các lớp con.
65. Trong mô hình Waterfall (Thác nước), giai đoạn nào chịu trách nhiệm thu thập và phân tích tất cả các yêu cầu của hệ thống từ khách hàng và các bên liên quan?
A. Design (Thiết kế)
B. Implementation (Triển khai)
C. Maintenance (Bảo trì)
D. Requirements (Yêu cầu)
66. Theo nguyên tắc SOLID, ‘Open/Closed Principle’ (Nguyên tắc Mở/Đóng) có nghĩa là gì?
A. Các thực thể phần mềm (lớp, module, hàm, v.v.) nên được mở để mở rộng, nhưng đóng để sửa đổi.
B. Các lớp nên có thể thay thế cho nhau mà không làm ảnh hưởng đến chương trình.
C. Phụ thuộc vào trừu tượng hóa, không phụ thuộc vào chi tiết cụ thể.
D. Một lớp chỉ nên có một lý do để thay đổi.
67. Công cụ nào thường được sử dụng để quản lý phiên bản mã nguồn trong các dự án phần mềm, cho phép theo dõi lịch sử thay đổi và cộng tác giữa nhiều nhà phát triển?
A. JIRA
B. Jenkins
C. Git
D. Docker
68. Trong mô hình ‘Rational Unified Process’ (RUP), giai đoạn nào tập trung vào việc xây dựng một phiên bản phần mềm khả dụng ban đầu với các chức năng cốt lõi?
A. Inception (Khởi tạo)
B. Elaboration (Làm rõ)
C. Construction (Xây dựng)
D. Transition (Chuyển đổi)
69. Trong kiểm thử phần mềm, ‘White-box testing’ (Kiểm thử hộp trắng) tập trung vào việc kiểm tra gì?
A. Chức năng và yêu cầu của phần mềm.
B. Cấu trúc nội bộ, thiết kế và mã nguồn của phần mềm.
C. Trải nghiệm người dùng và khả năng sử dụng.
D. Khả năng phục hồi của hệ thống.
70. Trong UML (Unified Modeling Language), sơ đồ nào được sử dụng phổ biến nhất để biểu diễn các hành vi và tương tác của hệ thống theo thời gian, bao gồm các trạng thái và sự chuyển đổi giữa chúng?
A. Use Case Diagram
B. Class Diagram
C. Sequence Diagram
D. State Machine Diagram
71. Trong kiến trúc Microservices, mỗi service nên có trách nhiệm gì?
A. Quản lý toàn bộ cơ sở dữ liệu của ứng dụng.
B. Chỉ tập trung vào một chức năng nghiệp vụ cụ thể và có thể được phát triển, triển khai và mở rộng một cách độc lập.
C. Chịu trách nhiệm về giao diện người dùng.
D. Quản lý tất cả các yêu cầu từ khách hàng.
72. Trong kiểm thử phần mềm, ‘Black-box testing’ (Kiểm thử hộp đen) là phương pháp kiểm tra dựa trên cơ sở nào?
A. Cấu trúc nội bộ và logic của mã nguồn.
B. Chức năng và yêu cầu của phần mềm mà không cần biết chi tiết bên trong.
C. Hiệu suất hoạt động của hệ thống dưới tải cao.
D. Mối quan hệ giữa các thành phần trong hệ thống.
73. Trong các kiểu kiểm thử phần mềm, ‘kiểm thử đơn vị’ (Unit Testing) chủ yếu tập trung vào việc kiểm tra gì?
A. Toàn bộ luồng nghiệp vụ của ứng dụng.
B. Các thành phần hoặc module nhỏ nhất của mã nguồn, thường là các hàm hoặc phương thức.
C. Giao diện người dùng và trải nghiệm người dùng.
D. Tích hợp giữa các module khác nhau.
74. Theo mô hình phát triển V-Model, giai đoạn nào tương ứng với giai đoạn ‘Kiểm thử tích hợp’ (Integration Testing)?
A. Xác định yêu cầu (Requirement Analysis)
B. Kiểm thử đơn vị (Unit Testing)
C. Kiểm thử hệ thống (System Testing)
D. Kiểm thử chấp nhận (Acceptance Testing)
75. Khi thiết kế giao diện người dùng, nguyên tắc ‘Consistency’ (Tính nhất quán) ám chỉ điều gì?
A. Sử dụng nhiều màu sắc và font chữ khác nhau để làm nổi bật.
B. Các yếu tố giao diện (như nút bấm, menu, cách bố trí) và hành vi của chúng nên giống nhau trên toàn bộ ứng dụng, giúp người dùng dễ dàng học và sử dụng.
C. Tập trung vào việc làm cho giao diện càng phức tạp càng tốt.
D. Sử dụng các yếu tố thiết kế hoàn toàn mới và độc đáo cho mỗi màn hình.
76. Khái niệm ‘refactoring’ trong công nghệ phần mềm đề cập đến hoạt động nào?
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 báo cáo bởi người dùng.
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 suất.
D. Viết tài liệu kỹ thuật chi tiết cho phần mềm.
77. Khái niệm ‘Test-Driven Development’ (TDD) là gì?
A. Viết mã nguồn trước, sau đó mới viết tài liệu.
B. Viết các bài kiểm thử tự động (test cases) trước khi viết mã nguồn thực tế, sau đó viết mã để các bài kiểm thử đó thành công, và cuối cùng là tái cấu trúc mã.
C. Tập trung vào việc kiểm thử hệ thống sau khi hoàn thành toàn bộ quá trình phát triển.
D. Tự động hóa quá trình triển khai phần mềm lên môi trường production.
78. Khi thực hiện kiểm thử hồi quy (Regression Testing), mục tiêu chính là gì?
A. Kiểm tra tất cả các chức năng của hệ thống mới được phát triển.
B. Đảm bảo rằng các thay đổi hoặc sửa lỗi gần đây không gây ra các vấn đề mới hoặc tái phát các lỗi cũ trong các phần khác của phần mềm.
C. Kiểm tra hiệu suất và độ tin cậy của hệ thống dưới tải trọng cao.
D. Xác minh rằng các yêu cầu của người dùng đã được đáp ứng đầy đủ.
79. Trong phát triển phần mềm hướng đối tượng, khái niệm ‘đóng gói’ (encapsulation) đề cập đến việc gì?
A. Khả năng một đối tượng có thể được coi là một kiểu dữ liệu của một lớp khác.
B. Việc nhóm dữ liệu (thuộc tính) và các phương thức (hành vi) hoạt động trên dữ liệu đó vào một đơn vị duy nhất là lớp, đồng thời ẩn đi chi tiết triển khai.
C. Khả năng một lớp có thể 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 đối tượng có thể có nhiều hình dạng hoặc biểu hiện khác nhau.
80. Khái niệm ‘Technical Debt’ (Nợ kỹ thuật) trong phát triển phần mềm thường đề cập đến điều gì?
A. Chi phí tài chính phát sinh do sử dụng các công nghệ cũ.
B. Những lựa chọn thiết kế hoặc triển khai không tối ưu, được thực hiện để đáp ứng thời hạn gấp rút, dẫn đến việc phải sửa chữa hoặc tái cấu trúc trong tương lai.
C. Số lượng lỗi được tìm thấy trong quá trình kiểm thử.
D. Khoản phí bản quyền phần mềm chưa thanh toán.
81. Mô hình nào thường được sử dụng để mô tả các trạng thái khác nhau của một đối tượng và các chuyển đổi giữa các trạng thái đó?
A. Biểu đồ lớp (Class Diagram)
B. Biểu đồ tuần tự (Sequence Diagram)
C. Biểu đồ trạng thái (Statechart Diagram)
D. Biểu đồ trường hợp sử dụng (Use Case Diagram)
82. Mục đích chính của việc sử dụng Hệ thống Quản lý Phiên bản (Version Control System – VCS) như Git là gì?
A. Tăng tốc độ biên dịch mã nguồn.
B. Quản lý sự thay đổi của mã nguồn theo thời gian và cộng tác hiệu quả giữa các lập trình viên.
C. Tự động hóa quá trình triển khai phần mềm.
D. Tạo giao diện người dùng cho ứng dụng.
83. Mô hình phát triển nào phù hợp cho các dự án lớn, phức tạp, có rủi ro cao và cần quản lý chặt chẽ các giai đoạn lặp lại?
A. Mô hình Thác nước (Waterfall Model)
B. Mô hình Nguyên mẫu (Prototyping Model)
C. Mô hình xoắn ốc (Spiral Model)
D. Mô hình phát triển theo nhóm nhỏ (Small Team Development Model)
84. Yêu cầu phi chức năng (Non-functional requirement) nào liên quan đến khả năng của hệ thống duy trì hoạt động ổn định và liên tục trong một khoảng thời gian nhất định?
A. Hiệu năng (Performance)
B. Khả năng sử dụng (Usability)
C. Độ tin cậy (Reliability)
D. Bảo mật (Security)
85. Trong quản lý dự án phần mềm, công cụ ‘Gantt Chart’ (Biểu đồ Gantt) chủ yếu được sử dụng để làm gì?
A. Theo dõi lỗi phần mềm.
B. Mô tả kiến trúc hệ thống.
C. Lập kế hoạch, sắp xếp và theo dõi tiến độ của các nhiệm vụ trong dự án.
D. Quản lý yêu cầu người dùng.
86. Trong mô hình Thác nước (Waterfall Model), việc quay lại giai đoạn trước để sửa đổi là rất khó khăn và tốn kém. Điều này phản ánh nhược điểm chính nào của mô hình?
A. Thiếu linh hoạt với sự thay đổi yêu cầu.
B. Tốn quá nhiều thời gian cho giai đoạn phân tích.
C. Khó khăn trong việc quản lý tài nguyên.
D. Thiếu sự tham gia của người dùng cuối.
87. Trong thiết kế phần mềm, nguyên tắc SOLID nào đề cập đến việc một lớp chỉ nên có một lý do để thay đổi?
A. Nguyên tắc Trách nhiệm Đơn lẻ (Single Responsibility Principle – SRP)
B. Nguyên tắc Đóng/Mở (Open/Closed Principle – OCP)
C. Nguyên tắc Thay thế Liskov (Liskov Substitution Principle – LSP)
D. Nguyên tắc Tách biệt Giao diện (Interface Segregation Principle – ISP)
88. Mô hình phát triển nào phù hợp nhất cho các dự án nhỏ, nơi yêu cầu có thể thay đổi nhanh chóng và cần có sản phẩm hoạt động sớm?
A. Mô hình Thác nước (Waterfall Model)
B. Mô hình xoắn ốc (Spiral Model)
C. Mô hình Agile (ví dụ: Scrum, Kanban)
D. Mô hình phát triển theo giai đoạn (Phased Development Model)
89. Nguyên tắc ‘Don’t Repeat Yourself’ (DRY) trong lập trình khuyến khích điều gì?
A. Viết mã nguồn càng ngắn càng tốt.
B. Tránh sao chép và dán các đoạn mã giống nhau; thay vào đó, hãy sử dụng các hàm, lớp hoặc module.
C. Sử dụng nhiều biến để lưu trữ dữ liệu.
D. Tập trung vào việc viết mã dễ đọc.
90. 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í phát sinh khi sử dụng các công cụ phát triển đắt tiền.
B. Hậu quả của việc đưa ra các quyết định thiết kế hoặc triển khai không tối ưu, dẫn đến việc phải sửa đổi hoặc tái cấu trúc trong tương lai.
C. Số lượng lỗi phần mềm chưa được sửa.
D. Chi phí bản quyền của các thư viện phần mềm bên thứ ba.
91. Mô hình ‘Prototyping Model’ (Mô hình Nguyên mẫu) trong phát triển phần mềm có ưu điểm chính là gì?
A. Đảm bảo chất lượng mã nguồn cao nhất ngay từ đầu.
B. Cho phép người dùng xem và tương tác với một phiên bản mô phỏng của hệ thống để đưa ra phản hồi sớm.
C. Giảm thiểu tối đa số lượng lỗi phát sinh.
D. Tự động hóa hoàn toàn quá trình kiểm thử.
92. Kiểm thử hiệu năng (Performance Testing) bao gồm các loại kiểm thử nào sau đây?
A. Kiểm thử đơn vị và kiểm thử tích hợp.
B. Kiểm thử tải (Load Testing) và kiểm thử sức chịu đựng (Stress Testing).
C. Kiểm thử giao diện người dùng và kiểm thử người dùng.
D. Kiểm thử bảo mật và kiểm thử khả năng sử dụng.
93. Khái niệm ‘fail-safe’ trong thiết kế hệ thống nhấn mạnh điều gì?
A. Hệ thống phải luôn hoạt động hoàn hảo.
B. Khi xảy ra lỗi, hệ thống sẽ chuyển về trạng thái an toàn nhất, giảm thiểu thiệt hại.
C. Người dùng phải luôn được thông báo khi có lỗi xảy ra.
D. Tất cả các chức năng phải được bật mặc định.
94. Khái niệm ‘Continuous Integration’ (Tích hợp liên tục) trong DevOps đề cập đến việc gì?
A. Việc phát hành phần mềm cuối cùng cho người dùng.
B. Quy trình tự động 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 đó chạy các bài kiểm tra tự động.
C. Việc triển khai phần mềm lên môi trường sản xuất.
D. Quản lý cơ sở dữ liệu của ứng dụng.
95. Trong thiết kế hệ thống, ‘scalability’ (khả năng mở rộng) đề cập đến khả năng của hệ thống:
A. Chống lại các cuộc tấn công mạng.
B. Hoạt động ổn định và hiệu quả khi khối lượng công việc hoặc số lượng người dùng tăng lên.
C. Dễ dàng được người dùng cuối sử dụng.
D. Được sửa đổi và cập nhật dễ dàng.
96. Trong quy trình phát triển phần mềm, ‘refactoring’ (tái cấu trúc) thường được thực hiện với mục đích gì?
A. Thêm các tính năng mới cho phần mềm.
B. Sửa lỗi chương trình.
C. Cải thiện cấu trúc nội tại của mã nguồn mà không làm thay đổi hành vi bên ngoài của nó.
D. Tăng tốc độ thực thi của ứng dụng.
97. Trong quản lý cấu hình phần mềm, ‘baseline’ đề cập đến điều gì?
A. Bản nháp đầu tiên của tài liệu yêu cầu.
B. Một phiên bản được phê duyệt chính thức của một sản phẩm hoặc thành phần phần mềm, được sử dụng làm cơ sở cho các hoạt động phát triển và kiểm thử tiếp theo.
C. Tất cả các lỗi đã được báo cáo trong một dự án.
D. Tài liệu mô tả kiến trúc hệ thống.
98. Nguyên tắc ‘Least Privilege’ (Quyền tối thiểu) trong bảo mật phần mềm có ý nghĩa gì?
A. Cấp cho người dùng hoặc quy trình quyền truy cập cao nhất có thể.
B. Cấp cho người dùng hoặc quy trình chỉ những quyền truy cập cần thiết để thực hiện nhiệm vụ của họ, không hơn.
C. Tắt bỏ tất cả các quyền truy cập không cần thiết.
D. Cho phép mọi người truy cập mọi thứ.
99. Trong kiểm thử phần mềm, loại kiểm thử nào tập trung vào việc kiểm tra từng thành phần riêng lẻ của ứng dụng để đảm bảo chúng hoạt động đúng chức năng?
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)
100. Trong kiểm thử phần mềm, kiểm thử khám phá (Exploratory Testing) là gì?
A. Một quy trình kiểm thử được lập kế hoạch và thực hiện chi tiết theo các trường hợp kiểm thử đã định sẵn.
B. Một phương pháp kiểm thử đồng thời trong đó người kiểm thử học hỏi, thiết kế và thực hiện kiểm thử dựa trên sự hiểu biết và khám phá về phần mềm.
C. Kiểm tra tự động các chức năng đã được viết sẵn.
D. Kiểm tra hiệu năng của hệ thống.
101. Nguyên tắc ‘Fail Fast’ (Thất bại nhanh) trong phát triển phần mềm khuyến khích điều gì?
A. Trì hoãn việc sửa lỗi cho đến khi sản phẩm hoàn thành.
B. Cố gắng ẩn các lỗi để người dùng không nhận thấy.
C. Phát hiện và báo cáo lỗi càng sớm càng tốt trong quá trình phát triển hoặc vận hành.
D. Chỉ sửa các lỗi nghiêm trọng.
102. Phương pháp phát triển phần mềm nào nhấn mạnh vào sự lặp lại, phát triển gia tăng và phản hồi liên tục từ khách hàng, thường được áp dụng cho các dự án có yêu cầu thay đổi thường xuyên?
A. Mô hình Thác nước (Waterfall Model)
B. Mô hình V (V-Model)
C. Phương pháp Agile (Agile Methodologies)
D. Mô hình Nguyên mẫu (Prototyping Model)
103. Trong mô hình phát triển theo tiến trình (Iterative Development), mỗi vòng lặp (iteration) thường kết thúc với:
A. Một sản phẩm hoàn chỉnh và sẵn sàng triển khai.
B. Một phiên bản sản phẩm có thể hoạt động được, có thể chưa đầy đủ tính năng.
C. Chỉ tài liệu thiết kế được cập nhật.
D. Một kế hoạch chi tiết cho các giai đoạn tiếp theo.
104. Kiểm thử bảo mật (Security Testing) tập trung vào việc đánh giá điều gì?
A. Tốc độ xử lý của ứng dụng.
B. Khả năng của hệ thống chống lại các cuộc tấn công và bảo vệ dữ liệu.
C. Tính dễ sử dụng của giao diện người dùng.
D. Độ tin cậy của hệ thống khi hoạt động liên tục.
105. Trong Scrum, ‘Sprint Review’ (Đánh giá Sprint) có mục đích gì?
A. Lập kế hoạch cho Sprint tiếp theo.
B. Kiểm tra nội bộ về chất lượng mã nguồn.
C. Kiểm tra và cung cấp phản hồi về Increment (sản phẩm tăng trưởng) đã hoàn thành trong Sprint.
D. Giải quyết các vấn đề kỹ thuật phát sinh trong Sprint.
106. Khái niệm ‘User Story’ (Câu chuyện người dùng) trong Agile thường bao gồm cấu trúc nào?
A. Mô tả kỹ thuật chi tiết về cách triển khai một tính 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 ‘As a [type of user], I want [some goal] so that [some reason]’.
C. Một danh sách các lỗi cần sửa trong sprint.
D. Một báo cáo về tiến độ công việc của nhóm.
107. Khái niệm ‘Continuous Delivery’ (Phân phối liên tục) khác với ‘Continuous Deployment’ (Triển khai liên tục) ở điểm nào?
A. Continuous Delivery tự động triển khai mọi thay đổi lên sản xuất.
B. Continuous Deployment yêu cầu sự phê duyệt thủ công trước khi triển khai lên sản xuất.
C. Continuous Delivery đảm bảo rằng mã nguồn luôn sẵn sàng để triển khai lên sản xuất, nhưng việc triển khai có thể cần sự phê duyệt thủ công; Continuous Deployment tự động triển khai mọi thay đổi đã qua kiểm thử lên sản xuất.
D. Continuous Delivery tập trung vào việc xây dựng và kiểm thử, còn Continuous Deployment tập trung vào việc phát hành tài liệu.
108. Khái niệm ‘Technical Feasibility Study’ (Nghiên cứu tính khả thi về kỹ thuật) nhằm mục đích gì?
A. Đánh giá chi phí tài chính của dự án.
B. Xác định xem các giải pháp kỹ thuật cần thiết cho dự án có khả thi về mặt công nghệ và tài nguyên hay không.
C. Lập kế hoạch marketing cho sản phẩm.
D. Đào tạo nhân viên về công nghệ mới.
109. Ai là người chịu trách nhiệm chính cho việc định nghĩa các yêu cầu của sản phẩm trong các dự án Agile?
A. Nhóm phát triển (Development Team)
B. Kiến trúc sư phần mềm (Software Architect)
C. Quản lý dự án (Project Manager)
D. Chủ sở hữu sản phẩm (Product Owner)
110. DevOps là gì?
A. Một ngôn ngữ lập trình mới.
B. Một framework quản lý dự án Agile.
C. Một tập hợp các thực hành nhằm tự động hóa và tích hợp các quy trình giữa phát triển phần mềm (Dev) và vận hành CNTT (Ops).
D. Một công cụ để thiết kế giao diện người dùng.
111. Trong thiết kế hướng đối tượng, tính đóng gói (Encapsulation) đề cập đến việc:
A. Cho phép một lớp kế thừa từ nhiều lớp cha.
B. Gói gọn dữ liệu (thuộc tính) và các phương thức (hành vi) xử lý dữ liệu đó vào trong một đơn vị duy nhất (lớp), đồng thời che giấu chi tiết triển khai.
C. Cho phép một đối tượng hoạt động như một đối tượng của lớp cha.
D. Tạo ra các đối tượng mà không cần biết lớp cụ thể của chúng.
112. Trong kiểm thử hộp trắng (White-box testing), người kiểm thử cần có hiểu biết về gì?
A. Chỉ yêu cầu và đặc tả chức năng của phần mềm.
B. Cấu trúc mã nguồn, thiết kế nội bộ và logic của chương trình.
C. Mục tiêu kinh doanh của sản phẩm.
D. Môi trường triển khai của ứng dụng.
113. Khái niệm ‘code review’ (xem xét mã nguồn) nhằm mục đích chính là gì?
A. Đảm bảo mã nguồn có định dạng nhất quán.
B. Tìm kiếm và sửa 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 lập trình.
C. Tăng tốc độ hoàn thành dự án.
D. Tạo tài liệu kỹ thuật chi tiết.
114. Kiểm thử hộp đen (Black-box testing) dựa trên cơ sở nào để thiết kế các trường hợp kiểm thử?
A. Cấu trúc mã nguồn và thiết kế nội bộ của chương trình.
B. Chỉ dựa trên yêu cầu và đặc tả chức năng của phần mềm, không xem xét mã nguồn.
C. Mô hình cơ sở dữ liệu được sử dụng.
D. Cấu hình phần cứng của hệ thống.
115. Trong thiết kế hướng đối tượng, tính đa hình (Polymorphism) cho phép:
A. Một đối tượng có thể có nhiều lớp cha.
B. Các đối tượng khác nhau phản ứng khác nhau với cùng một thông điệp (phương thức).
C. Che giấu chi tiết triển khai của một lớp.
D. Tái sử dụng mã nguồn thông qua kế thừa.
116. Trong kiểm thử hồi quy (Regression Testing), mục tiêu chính là gì?
A. Kiểm tra các tính năng mới được thêm vào.
B. Đảm bảo rằng các thay đổi hoặc sửa lỗi gần đây không gây ra các hành vi không mong muốn ở các phần khác của phần mềm.
C. Kiểm tra hiệu năng của hệ thống dưới tải cao.
D. Xác minh giao diện người dùng có thân thiện với người dùng không.
117. Trong Scrum, ai là người chịu trách nhiệm loại bỏ các ‘impediments’ (trở ngại) cản trở nhóm phát triển hoàn thành công việc của họ?
A. Chủ sở hữu sản phẩm (Product Owner)
B. Nhóm phát triển (Development Team)
C. Scrum Master
D. Quản lý dự án (Project Manager)
118. Trong các phương pháp Agile, ‘Velocity’ (Vận tốc) của nhóm phát triển thường được đo lường như thế nào?
A. Số lượng tính năng được hoàn thành trong một Sprint.
B. Tổng điểm công việc (ví dụ: story points) của các User Story đã hoàn thành trong một Sprint.
C. Thời gian trung bình để sửa một lỗi.
D. Số lượng bài kiểm thử tự động được viết.
119. Trong mô hình phát triển phần mềm theo vòng đời (SDLC), giai đoạn nào tập trung vào việc xác định các yêu cầu chức năng và phi chức năng của hệ thống?
A. Thiết kế (Design)
B. Lập trình (Coding)
C. Phân tích yêu cầu (Requirements Analysis)
D. Kiểm thử (Testing)
120. Khái niệm ‘Anti-pattern’ trong thiết kế phần mềm đề cập đến điều gì?
A. Một giải pháp thiết kế được chấp nhận rộng rãi và hiệu quả.
B. Một giải pháp thiết kế phổ biến nhưng không hiệu quả, thường dẫn đến các vấn đề tiêu cực.
C. Một kỹ thuật lập trình mới và sáng tạo.
D. Một công cụ tự động hóa quy trình phát triển.
121. Trong thiết kế hướng đối tượng, ‘Encapsulation’ (Đóng gói) có ý nghĩa gì?
A. Cho phép một lớp kế thừa từ nhiều lớp cha.
B. Gom 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 kiểm soát quyền truy cập vào dữ liệu.
C. Cho phép các đối tượng khác nhau phản ứng theo cùng một cách.
D. Tạo ra các đối tượng mới từ các đối tượng đã có.
122. Trong kiến trúc phần mềm, mẫu thiết kế ‘Model-View-Controller’ (MVC) phân chia ứng dụng thành ba phần chính. Phần ‘Controller’ có vai trò gì?
A. Quản lý dữ liệu và logic nghiệp vụ.
B. Hiển thị giao diện người dùng.
C. Xử lý các yêu cầu đầu vào từ người dùng, tương tác với Model và cập nhật View.
D. Lưu trữ dữ liệu của ứng dụng.
123. Trong ‘Object-Oriented Programming’ (OOP), khái niệm ‘Polymorphism’ (Đa hình) cho phép điều gì?
A. Một lớp kế thừa thuộc tính từ nhiều lớp cha.
B. Các đối tượng thuộc các lớp khác nhau có thể phản ứng theo cùng một cách khi nhận cùng một thông điệp (message).
C. Đóng gói dữ liệu và phương thức vào một đơn vị duy nhất.
D. Che giấu chi tiết triển khai của một lớp khỏi thế giới bên ngoài.
124. Trong các phương pháp quản lý dự án phần mềm, ‘Critical Path Method’ (CPM) dùng để xác định điều gì?
A. Chi phí dự kiến cho mỗi giai đoạn.
B. Chuỗi các hoạt động quan trọng nhất cần hoàn thành đúng hạn để dự án kết thúc đúng thời gian.
C. Mức độ rủi ro của từng tác vụ.
D. Yêu cầu về nguồn lực của dự án.
125. Trong kiểm thử phần mềm, ‘Black-box testing’ là gì?
A. Kiểm thử dựa trên việc hiểu biết sâu sắc về cấu trúc mã nguồn và logic bên trong.
B. Kiểm thử mà không cần biết về cấu trúc bên trong hoặc mã nguồn của hệ thống, chỉ tập trung vào đầu vào và đầu ra.
C. Kiểm thử tập trung vào việc tối ưu hóa hiệu năng.
D. Kiểm thử các thành phần riêng lẻ của hệ thống.
126. Mục tiêu chính của ‘Software Requirements Specification’ (SRS) là gì?
A. Mô tả chi tiết kiến trúc hệ thống và các thành phần.
B. Cung cấp một mô tả đầy đủ, chính xác và rõ ràng về các chức năng, hành vi và các ràng buộc của hệ thống phần mềm.
C. Lập kế hoạch chi tiết cho các hoạt động triển khai và bảo trì.
D. Định nghĩa các tiêu chuẩn về chất lượng mã nguồn.
127. Trong thiết kế kiến trúc phần mềm, ‘Client-Server Architecture’ là gì?
A. Kiến trúc mà mọi máy tính trong mạng đều có vai trò ngang nhau.
B. Kiến trúc phân chia trách nhiệm, trong đó một máy chủ (server) cung cấp tài nguyên và các máy khách (client) yêu cầu và sử dụng tài nguyên đó.
C. Kiến trúc mà mọi thành phần đều hoạt động độc lập và giao tiếp trực tiếp với nhau.
D. Kiến trúc tập trung toàn bộ xử lý vào một máy tính duy nhất.
128. Yếu tố nào sau đây KHÔNG phải là một nguyên tắc cốt lõi của phương pháp Scrum?
A. Sự minh bạch (Transparency).
B. Sự kiểm tra (Inspection).
C. Sự thích ứng (Adaptation).
D. Sự kế thừa (Inheritance).
129. Trong quản lý cấu hình phần mềm, ‘Baseline’ đề cập đến điều gì?
A. Yêu cầu ban đầu của dự án.
B. Phiên bản mã nguồn đã được phê duyệt và ổn định tại một thời điểm cụ thể, dùng làm cơ sở cho các hoạt động tiếp theo.
C. Tài liệu mô tả chi tiết các thuật toán được sử dụng.
D. Kế hoạch phát triển sản phẩm.
130. Trong kiểm thử phần mềm, ‘Regression Testing’ (Kiểm thử hồi quy) được thực hiện khi nào?
A. Khi bắt đầu một dự án mới.
B. Sau khi có những thay đổi về mã nguồn (sửa lỗi, thêm tính năng mới) để đảm bảo các chức năng cũ vẫn hoạt động đúng.
C. Để đánh giá hiệu năng của hệ thống.
D. Trước khi phát hành phiên bản beta.
131. Yếu tố nào sau đây là một thách thức lớn trong việc quản lý dự án phần mềm có phạm vi quốc tế (distributed teams)?
A. Sự tương đồng về văn hóa.
B. Sự khác biệt về múi giờ, văn hóa và rào cản ngôn ngữ.
C. Tính sẵn có của công nghệ.
D. Dễ dàng giao tiếp và phối hợp.
132. Yếu tố nào sau đây là quan trọng nhất trong việc đánh giá chất lượng của một module phần mềm độc lập?
A. Kích thước của mã nguồn.
B. Mức độ gắn kết (cohesion) và sự ràng buộc (coupling) giữa các thành phần.
C. Số lượng dòng code được viết.
D. Tốc độ xử lý của module.
133. Mục đích của ‘Code Review’ là gì?
A. Tăng tốc độ viết mã bằng cách loại bỏ các quy trình thủ công.
B. Đảm bảo mã nguồn tuân thủ các tiêu chuẩn, phát hiện lỗi sớm và chia sẻ kiến thức trong nhóm.
C. Tự động hóa quá trình triển khai phần mềm.
D. Đo lường hiệu suất làm việc của từng lập trình viên.
134. Trong quy trình phát triển Agile, khi nào việc đánh giá và điều chỉnh kế hoạch được thực hiện một cách thường xuyên nhất?
A. Chỉ sau khi hoàn thành toàn bộ dự án.
B. Trong các cuộc họp ‘daily stand-up’ và cuối mỗi ‘sprint’.
C. Khi có yêu cầu thay đổi đột xuất từ khách hàng.
D. Trong giai đoạn lập kế hoạch ban đầu.
135. Kỹ thuật ‘User Story Mapping’ được sử dụng để làm gì trong Agile?
A. Mô tả chi tiết kiến trúc kỹ thuật của hệ thống.
B. Tổ chức và trực quan hóa các ‘user stories’ theo luồng hoạt động của người dùng, giúp hiểu rõ bức tranh tổng thể và ưu tiên công việc.
C. Lập kế hoạch các chiến dịch tiếp thị cho sản phẩm.
D. Quản lý các công cụ CI/CD.
136. 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 yêu cầu phi chức năng như hiệu suất, khả năng sử dụng và bảo mật?
A. Unit Testing.
B. Integration Testing.
C. System Testing.
D. Non-functional Testing.
137. Khi phân tích yêu cầu, kỹ thuật ‘use case modeling’ được sử dụng để làm gì?
A. Mô tả chi tiết cấu trúc dữ liệu của hệ thống.
B. Xác định và mô tả chức năng của hệ thống dưới góc nhìn của người dùng.
C. Lập kế hoạch chi tiết cho các hoạt động kiểm thử.
D. Quản lý các phiên bản khác nhau của mã nguồn.
138. Kỹ thuật ‘Continuous Integration’ (CI) có vai trò gì trong quy trình phát triển phần mềm?
A. Tự động hóa việc phát hành phiên bản cuối cùng cho khách hàng.
B. Tự động hóa quá trình tích hợp mã nguồn từ nhiều lập trình viên vào một kho chung và chạy kiểm thử tự động.
C. Quản lý các yêu cầu thay đổi của khách hàng.
D. Thiết kế cơ sở dữ liệu cho ứng dụng.
139. Trong phương pháp phát triển phần mềm ‘Waterfall Model’, đặc điểm nào là nổi bật nhất?
A. Sự lặp lại và thích ứng linh hoạt với thay đổi.
B. Tính tuần tự, tuyến tính, mỗi giai đoạn phải hoàn thành trước khi chuyển sang giai đoạn tiếp theo.
C. Sự tham gia liên tục của khách hàng trong suốt quá trình.
D. Khả năng quay lại các giai đoạn trước để chỉnh sửa.
140. Yếu tố nào sau đây là cần thiết cho một ‘Sprint Backlog’ hiệu quả trong Scrum?
A. Tất cả các tính năng đã được yêu cầu bởi khách hàng.
B. Các mục công việc được chọn từ ‘Product Backlog’ mà nhóm phát triển cam kết hoàn thành trong một sprint, có thể điều chỉnh trong quá trình sprint.
C. Các nhiệm vụ được giao bởi quản lý dự án.
D. Các bài kiểm thử đã được viết sẵn.
141. 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 mà dự án phải bỏ ra để mua bản quyền phần mềm.
B. Hậu quả của việc lựa chọn giải pháp dễ dàng hoặc nhanh chóng trong quá trình phát triển, thay vì sử dụng các giải pháp tốt nhất và bền vững về lâu dài, dẫn đến công việc bảo trì và phát triển trong tương lai sẽ khó khăn hơn.
C. Số lượng lỗi còn tồn đọng trong mã nguồn.
D. Thời gian chậm trễ so với kế hoạch ban đầu.
142. Mục đích của ‘Acceptance Testing’ (Kiểm thử chấp nhận) là gì?
A. Kiểm tra từng thành phần mã nguồn.
B. Xác minh xem hệ thống có đáp ứng các yêu cầu kinh doanh và được người dùng cuối chấp nhận hay không.
C. Kiểm tra sự tương tác giữa các module.
D. Đảm bảo mã nguồn tuân thủ các quy tắc định dạng.
143. Trong thiết kế giao diện người dùng (UI Design), nguyên tắc ‘Consistency’ (Tính nhất quán) có ý nghĩa gì?
A. Mỗi màn hình phải có thiết kế hoàn toàn khác biệt.
B. Các yếu tố thiết kế, hành vi và cách trình bày thông tin nên giống nhau trên toàn bộ ứng dụng.
C. Giao diện phải sử dụng nhiều màu sắc và hiệu ứng để thu hút người dùng.
D. Chỉ tập trung vào chức năng mà bỏ qua yếu tố thẩm mỹ.
144. Yếu tố nào sau đây là quan trọng nhất để đảm bảo thành công của một dự án phần mềm theo phương pháp Agile?
A. Tuân thủ nghiêm ngặt kế hoạch ban đầu.
B. Sự tham gia và phản hồi thường xuyên của khách hàng.
C. Sử dụng công nghệ tiên tiến nhất.
D. Tài liệu hóa chi tiết mọi yêu cầu ngay từ đầu.
145. Mục tiêu của ‘Automated Testing’ là gì?
A. Giảm số lượng lập trình viên cần thiết.
B. Tăng tốc độ và độ tin cậy của các bài kiểm thử, giảm thiểu sai sót do con người và cho phép chạy kiểm thử thường xuyên.
C. Thay thế hoàn toàn vai trò của người kiểm thử.
D. Đảm bảo giao diện người dùng luôn mới lạ.
146. Trong quản lý dự án phần mềm, ‘Scope Creep’ (Sự leo thang phạm vi) là gì?
A. Việc giảm bớt các tính năng không cần thiết để tiết kiệm chi phí.
B. Sự gia tăng không kiểm soát của yêu cầu chức năng hoặc phạm vi dự án sau khi kế hoạch ban đầu đã được phê duyệt.
C. Việc hoàn thành dự án trước thời hạn.
D. Việc sử dụng các công nghệ mới nhất.
147. Mục đích chính của ‘DevOps’ là gì?
A. Tăng cường bảo mật cho ứng dụng.
B. Tự động hóa hoàn toàn quá trình phát triển phần mềm.
C. Kết hợp và tối ưu hóa quy trình phát triển (Dev) và vận hành (Ops) để tăng tốc độ, hiệu quả và độ tin cậy của việc cung cấp phần mềm.
D. Thiết kế giao diện người dùng hấp dẫn.
148. Yếu tố nào sau đây là quan trọng nhất trong việc xây dựng một ‘Product Backlog’ tốt trong Scrum?
A. Phải bao gồm tất cả các yêu cầu kỹ thuật chi tiết.
B. Phải được sắp xếp theo thứ tự ưu tiên, mô tả rõ ràng các giá trị kinh doanh và có thể điều chỉnh theo thời gian.
C. Phải được hoàn thành trước khi bắt đầu sprint đầu tiên.
D. Chỉ bao gồm các tính năng mà nhóm phát triển thích.
149. Mục đích của ‘System Testing’ là gì?
A. Kiểm tra từng chức năng nhỏ của hệ thống.
B. Kiểm tra sự tương tác giữa các module và xác minh hệ thống hoạt động như một thể thống nhất theo đúng yêu cầu.
C. Đảm bảo giao diện người dùng thân thiện và dễ sử dụng.
D. Kiểm tra khả năng chịu tải của hệ thống.
150. Trong kiểm thử phần mềm, ‘White-box testing’ là gì?
A. Kiểm thử dựa trên việc hiểu biết về cấu trúc mã nguồn, thiết kế và logic bên trong của phần mềm.
B. Kiểm thử mà không cần biết về cấu trúc bên trong của hệ thống.
C. Kiểm thử các chức năng của hệ thống từ góc độ người dùng.
D. Kiểm thử các yêu cầu phi chức năng.
151. Trong thiết kế phần mềm, ‘Loose Coupling’ (Sự ràng buộc lỏng lẻo) có ý nghĩa gì?
A. Các thành phần trong hệ thống phụ thuộc lẫn nhau rất nhiều.
B. Các thành phần trong hệ thống có sự phụ thuộc thấp với nhau, cho phép thay đổi một thành phần mà ít ảnh hưởng đến các thành phần khác.
C. Mỗi thành phần đều hoạt động độc lập hoàn toàn.
D. Các thành phần giao tiếp với nhau thông qua một giao diện chung duy nhất.
152. Trong kiểm thử phần mềm, mục đích chính của ‘unit testing’ là gì?
A. Kiểm tra toàn bộ hệ thống và sự tương tác giữa các module.
B. Xác minh từng đơn vị mã nguồn (hàm, phương thức, lớp) hoạt động đúng độc lập.
C. Đảm bảo giao diện người dùng thân thiện và dễ sử dụng.
D. Kiểm tra hiệu năng và khả năng chịu tải của ứng dụng.
153. Trong thiết kế phần mềm, nguyên tắc ‘Don’t Repeat Yourself’ (DRY) có ý nghĩa gì?
A. Mỗi chức năng chỉ nên được viết bằng một đoạn mã duy nhất.
B. Tránh việc lặp lại cùng một đoạn mã hoặc logic ở nhiều nơi trong hệ thống, thay vào đó nên sử dụng các hàm, lớp hoặc module tái sử dụng.
C. Không sử dụng lại mã nguồn từ các dự án khác.
D. Chỉ tập trung vào việc viết mã mới mà không xem xét lại mã cũ.
154. Trong mô hình phát triển V-Model, giai đoạn nào tương ứng với giai đoạn ‘Unit Testing’?
A. Giai đoạn kiểm thử hệ thống (System Testing).
B. Giai đoạn kiểm thử tích hợp (Integration Testing).
C. Giai đoạn kiểm thử chấp nhận (Acceptance Testing).
D. Giai đoạn thiết kế chi tiết (Detailed Design).
155. Mục đích của ‘Continuous Delivery’ (CD) là gì?
A. Tự động hóa hoàn toàn quá trình phát hành phần mềm ra môi trường sản xuất.
B. Đảm bảo mã nguồn luôn sẵn sàng để triển khai đến môi trường sản xuất 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à chuẩn bị cho việc phát hành.
C. Kiểm thử hiệu năng của ứng dụng.
D. Quản lý các yêu cầu thay đổi.
156. Trong quy trình phát triển phần mềm, ‘Deployment’ (Triển khai) đề cập đến giai đoạn nào?
A. Thu thập yêu cầu từ khách hàng.
B. Viết và kiểm thử mã nguồn.
C. Đưa phần mềm đã hoàn thành vào môi trường sản xuất để người dùng cuối có thể sử dụng.
D. Thiết kế giao diện người dùng.
157. Mục tiêu chính của ‘Refactoring’ trong phát triển phần mềm là gì?
A. Thêm các tính năng mới vào sản phẩm.
B. Sửa lỗi phát sinh trong quá trình sử dụng.
C. Cải thiện cấu trúc nội tại của mã nguồn mà không thay đổi hành vi bên ngoài.
D. Tăng cường bảo mật cho ứng dụng.
158. Kỹ thuật ‘Pair Programming’ trong phương pháp Agile nhấn mạnh vào yếu tố nào?
A. Làm việc độc lập để tối đa hóa năng suất cá nhân.
B. Hai lập trình viên cùng làm việc trên một máy tính, một người viết mã (driver) và một người xem xét (navigator).
C. Phân chia công việc cho nhiều nhóm nhỏ làm việc song song.
D. Sử dụng công cụ tự động hóa để thay thế con người.
159. Yếu tố nào sau đây là cốt lõi của ‘Sprint Planning’ trong Scrum?
A. Lập kế hoạch chi tiết cho toàn bộ dự án.
B. Nhóm phát triển cùng ‘Product Owner’ xác định ‘Sprint Goal’ và chọn các mục từ ‘Product Backlog’ để đưa vào ‘Sprint Backlog’.
C. Thảo luận về các vấn đề kỹ thuật phức tạp.
D. Đánh giá hiệu suất của các thành viên trong nhóm.
160. Theo mô hình phát triển phần mềm xoắn ốc (Spiral Model), giai đoạn nào là quan trọng nhất để quản lý rủi ro và đưa ra quyết định về việc tiếp tục dự án?
A. Giai đoạn lập kế hoạch và phân tích yêu cầu.
B. Giai đoạn thiết kế chi tiết và phát triển.
C. Giai đoạn đánh giá và kiểm soát.
D. Giai đoạn triển khai và bảo trì.
161. Yêu cầu phi chức năng (Non-functional requirement) mô tả điều gì về hệ thống phần mềm?
A. Các chức năng cụ thể mà hệ thống phải thực hiện.
B. Cách thức hệ thống hoạt động, ví dụ: hiệu năng, bảo mật, khả năng sử dụng.
C. Giao diện người dùng của hệ thống.
D. Cơ sở dữ liệu mà hệ thống sử dụng.
162. Khái niệm ‘Object-Oriented Programming’ (Lập trình hướng đối tượng – OOP) dựa trên những nguyên tắc cơ bản nào?
A. Tuyến tính, tuần tự, và lặp lại.
B. Đóng gói (Encapsulation), Kế thừa (Inheritance), Đa hình (Polymorphism) và Trừu tượng hóa (Abstraction).
C. Cấu trúc, điều kiện, và vòng lặp.
D. Hàm, biến, và mảng.
163. Khi nói về ‘API’ (Application Programming Interface), nó đóng vai trò gì trong phát triển phần mềm?
A. Một công cụ để thiết kế giao diện người dùng.
B. Một bộ 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à trao đổi dữ liệu với nhau.
C. Một phương pháp để kiểm tra lỗi trong mã nguồn.
D. Một loại cơ sở dữ liệu mới.
164. Mục tiêu chính của việc kiểm thử đơn vị (Unit Testing) là gì?
A. Kiểm tra sự tích hợp giữa các module lớn.
B. Đảm bảo toàn bộ hệ thống hoạt động đúng theo yêu cầu.
C. Xác minh rằng từng đơn vị mã (function, method) hoạt động chính xác.
D. Đánh giá trải nghiệm người dùng cuối.
165. Trong ngữ cảnh của Scrum, ‘Sprint’ là gì?
A. Một cuộc họp để lập kế hoạch cho toàn bộ dự án.
B. Một khoảng thời gian cố định, thường là từ 1 đến 4 tuần, trong đó đội phát triển làm việc để hoàn thành một tập hợp các công việc đã chọn.
C. Một bản demo sản phẩm cho khách hàng.
D. Một tài liệu mô tả chi tiết yêu cầu của dự án.
166. Khi thiết kế một kiến trúc phần mềm, nguyên tắc ‘Separation of Concerns’ (Tách biệt mối quan tâm) có ý nghĩa gì?
A. Tách biệt hoàn toàn các module để không phụ thuộc lẫn nhau.
B. Chia nhỏ hệ thống thành các phần sao cho mỗi phần chỉ giải quyết một vấn đề hoặc một chức năng cụ thể.
C. Tách biệt mã nguồn khỏi tài liệu thiết kế.
D. Phân chia công việc cho các thành viên khác nhau trong đội.
167. Khái niệm ‘Scalability’ (Khả năng mở rộng) trong phát triển phần mềm đề cập đến điều gì?
A. Khả năng của hệ thống xử lý một lượng công việc tăng lên bằng cách thêm tài nguyên.
B. Khả năng của hệ thống hoạt động ổn định trong thời gian dài.
C. Khả năng của hệ thống dễ dàng sửa lỗi.
D. Khả năng của hệ thống hoạt động trên nhiều nền tảng khác nhau.
168. Trong Scrum, ‘Product Backlog Refinement’ (Tinh chỉnh Product Backlog) là một hoạt động liên tục nhằm mục đích gì?
A. Thêm các tính năng mới không mong muốn vào Product Backlog.
B. Chi tiết hóa, ước lượng và sắp xếp thứ tự các mục trong Product Backlog để chuẩn bị cho các Sprint tiếp theo.
C. Loại bỏ hoàn toàn các mục đã hoàn thành khỏi Product Backlog.
D. Đưa ra quyết định cuối cùng về các tính năng sẽ được phát triển.
169. Mục tiêu của ‘Usability Testing’ (Kiểm thử khả năng sử dụng) là gì?
A. Đảm bảo hệ thống hoạt động hiệu quả về mặt tài nguyên.
B. Kiểm tra xem người dùng có thể dễ dàng, hiệu quả và hài lòng khi sử dụng sản phẩm hay không.
C. Xác định các lỗ hổng bảo mật trong ứng dụng.
D. Kiểm tra khả năng tích hợp của hệ thống với các phần mềm khác.
170. Mục tiêu của ‘Performance Testing’ (Kiểm thử hiệu năng) là gì?
A. Đảm bảo hệ thống hoạt động đúng các chức năng đã định nghĩa.
B. Kiểm tra xem hệ thống có đáp ứng các yêu cầu về tốc độ, khả năng mở rộng và ổn định dưới các tải khác nhau hay không.
C. Phát hiện lỗi cú pháp trong mã nguồn.
D. Đảm bảo giao diện người dùng thân thiện với người dùng.
171. Khái niệm ‘Continuous Delivery’ (CD) trong DevOps khác với ‘Continuous Deployment’ như thế nào?
A. Continuous Delivery tự động triển khai mọi thay đổi lên môi trường sản xuất, còn Continuous Deployment thì không.
B. Continuous Delivery chuẩn bị sẵn sàng các thay đổi để triển khai bất kỳ lúc nào bằng một nút bấm, còn Continuous Deployment thì tự động triển khai lên sản xuất mà không cần sự can thiệp thủ công.
C. Continuous Delivery chỉ tập trung vào kiểm thử, còn Continuous Deployment thì bao gồm cả triển khai.
D. Không có sự khác biệt đáng kể giữa hai khái niệm này.
172. Mục tiêu của ‘Security Testing’ (Kiểm thử bảo mật) là gì?
A. Đảm bảo hệ thống hoạt động nhanh chóng dưới tải nặng.
B. Kiểm tra xem hệ thống có dễ bị tấn công, có lỗ hổng bảo mật nào không và dữ liệu có được bảo vệ đúng cách hay không.
C. Xác minh rằng các chức năng của hệ thống hoạt động đúng theo yêu cầu.
D. Đảm bảo giao diện người dùng thân thiện và dễ sử dụng.
173. Trong quá trình thiết kế cơ sở dữ liệu, ‘Normalization’ (Chuẩn hóa) là gì?
A. Quá trình tạo ra các bảng dữ liệu lớn, chứa nhiều thông tin.
B. Quá trình tổ chức các cột và bảng trong cơ sở dữ liệu quan hệ để giảm thiểu sự dư thừa dữ liệu và cải thiện tính toàn vẹn dữ liệu.
C. Tăng cường bảo mật cho cơ sở dữ liệu bằng cách mã hóa.
D. Tối ưu hóa tốc độ truy vấn cơ sở dữ liệu.
174. Trong mô hình phát triển phần mềm, ‘Prototyping’ (Tạo mẫu) thường được sử dụng để làm gì?
A. Thay thế hoàn toàn giai đoạn thiết kế chi tiết.
B. Giúp làm rõ và xác nhận các yêu cầu của người dùng bằng cách cung cấp một phiên bản sơ khai của sản phẩm.
C. Tự động hóa quá trình kiểm thử.
D. Quản lý cấu hình mã nguồn.
175. Khái niệm ‘Modularity’ (Tính module hóa) trong thiết kế phần mềm đề cập đến việc gì?
A. Làm cho toàn bộ hệ thống hoạt động như một khối duy nhất.
B. Chia hệ thống thành các thành phần độc lập, có thể quản lý và thay thế được, mỗi thành phần thực hiện một chức năng cụ thể.
C. Tăng cường sự phụ thuộc giữa các module.
D. Giảm thiểu tài liệu cho từng phần của hệ thống.
176. Khái niệm ‘Pair Programming’ (Lập trình cặp đôi) trong phương pháp Agile đề cập đến việc gì?
A. Hai lập trình viên làm việc trên hai dự án khác nhau.
B. Hai lập trình viên cùng làm việc trên một máy tính, một người viết mã (driver) và người kia xem xét, định hướng (navigator).
C. Một lập trình viên viết mã và một người quản lý kiểm tra.
D. Hai lập trình viên làm việc độc lập và sau đó hợp nhất mã.
177. Mục tiêu của ‘Load Testing’ (Kiểm thử tải) là gì?
A. Kiểm tra xem hệ thống có hoạt động đúng như mong đợi trong điều kiện sử dụng thông thường hay không.
B. Xác định khả năng của hệ thống khi chịu tải đồng thời lớn hơn dự kiến, nhằm phát hiện các điểm nghẽn hoặc lỗi về hiệu năng.
C. Kiểm tra giao diện người dùng có dễ sử dụng hay không.
D. Đảm bảo tính bảo mật của dữ liệu người dùng.
178. Trong lĩnh vực DevOps, ‘Continuous Integration’ (CI) đề cập đến việc gì?
A. Tự động hóa quy trình triển khai phần mềm lên môi trường sản xuất.
B. Tự động hóa việc xây dựng và kiểm thử mã nguồn thường xuyên khi các thay đổi được commit vào kho lưu trữ.
C. Tự động hóa việc thu thập phản hồi từ người dùng.
D. Tự động hóa việc quản lý cơ sở dữ liệu.
179. Khái niệm ‘Source Code Management’ (SCM) hay ‘Version Control System’ (VCS) như Git, SVN đóng vai trò gì trong phát triển phần mềm?
A. Chỉ dùng để lưu trữ mã nguồn.
B. Quản lý các phiên bản của mã nguồn, cho phép theo dõi thay đổi, phục hồi các phiên bản cũ và cộng tác hiệu quả giữa các thành viên trong đội.
C. Tự động hóa quá trình kiểm thử.
D. Thiết kế giao diện người dùng.
180. Mục tiêu của ‘Stress Testing’ (Kiểm thử chịu tải khắc nghiệt) là gì?
A. Kiểm tra xem hệ thống có hoạt động chính xác dưới tải bình thường hay không.
B. Xác định điểm giới hạn của hệ thống bằng cách áp dụng tải vượt quá khả năng thông thường để xem nó hoạt động như thế nào khi vượt quá giới hạn.
C. Đảm bảo giao diện người dùng thân thiện với người dùng.
D. Kiểm tra tính năng bảo mật của hệ thống.
181. Trong quy trình phát triển phần mềm, ‘Configuration Management’ (Quản lý cấu hình) đề cập đến việc gì?
A. Quản lý tài chính và ngân sách của dự án.
B. Kiểm soát và theo dõi các phiên bản của mã nguồn, tài liệu, và các thành phần khác của hệ thống trong suốt vòng đời phát triển.
C. Thiết kế giao diện người dùng.
D. Lập kế hoạch và thực hiện các chiến dịch tiếp thị sản phẩm.
182. Trong mô hình Scrum, ‘Daily Scrum’ (Họp Scrum hàng ngày) có mục đích chính là gì?
A. Lập kế hoạch chi tiết cho toàn bộ dự án.
B. Thảo luận về các vấn đề kỹ thuật phức tạp cần giải quyết.
C. Giúp Development Team đồng bộ hóa hoạt động và lập kế hoạch cho 24 giờ tới, đồng thời xác định các trở ngại.
D. Trình bày kết quả công việc cho Product Owner.
183. Mục đích của ‘Code Review’ (Duyệt mã) 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ã và chia sẻ kiến thức giữa các thành viên.
C. Chỉ tập trung vào việc định dạng mã theo chuẩn.
D. Đánh giá năng suất cá nhân của lập trình viên.
184. Trong mô hình Scrum, ai là người chịu trách nhiệm tối đa hóa giá trị của sản phẩm được phát triển bằng cách quản lý Product Backlog?
A. Scrum Master
B. Development Team
C. Product Owner
D. Stakeholder
185. Lợi ích chính của việc sử dụng các phương pháp phát triển Agile so với mô hình Thác nước truyền thống là gì?
A. Cung cấp tài liệu chi tiết và đầy đủ ngay từ đầu.
B. Ít linh hoạt hơn với các thay đổi yêu cầu từ khách hàng.
C. Khả năng phản hồi nhanh chóng và thích ứng với thay đổi yêu cầu trong suốt quá trình phát triển.
D. Yêu cầu ít sự tham gia của khách hàng.
186. Khi đánh giá một yêu cầu phần mềm, tiêu chí SMART thường được áp dụng. ‘M’ trong SMART đại diện cho điều gì?
A. Manageable (Có thể quản lý)
B. Measurable (Đo lường được)
C. Maintainable (Dễ bảo trì)
D. Minimal (Tối thiểu)
187. Trong các loại kiểm thử phần mềm, ‘Kiểm thử hồi quy’ (Regression Testing) được thực hiện với mục đích gì?
A. Kiểm tra các chức năng mới được thêm vào.
B. Đảm bảo các thay đổi (sửa lỗi, thêm tính năng) không ảnh hưởng tiêu cực đến các chức năng hiện có.
C. Kiểm tra hiệu năng của hệ thống dưới tải nặng.
D. Đánh giá khả năng sử dụng của giao diện người dùng.
188. Khái niệm ‘Agile Manifesto’ (Tuyên ngôn Agile) nhấn mạnh giá trị nào hơn là quy trình và công cụ?
A. Tài liệu toàn diện.
B. Hợp đồng cứng nhắc.
C. Cá nhân và sự tương tác.
D. Lập kế hoạch chi tiết từ đầu.
189. Khái niệm ‘Refactoring’ (Tái cấu trúc mã) trong phát triển phần mềm ám chỉ hành động nào?
A. Thêm các chức năng mới cho phần mềm.
B. 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 đọc hiểu và bảo trì.
C. Viết lại toàn bộ mã nguồn từ đầu.
D. Sửa lỗi phát hiện trong quá trình kiểm thử.
190. Trong thiết kế giao diện người dùng (UI Design), nguyên tắc ‘Consistency’ (Tính nhất quán) đề cập đến việc gì?
A. Sử dụng nhiều màu sắc và font chữ khác nhau để làm nổi bật.
B. Đảm bảo các yếu tố giao diện (nút bấm, menu, layout) có cách thức hoạt động và hình thức tương tự nhau trên toàn bộ ứng dụng.
C. Chỉ sử dụng một màu sắc chủ đạo cho toàn bộ ứng dụng.
D. Tập trung vào việc làm cho giao diện trở nên phức tạp nhất có thể.
191. Mục tiêu chính của ‘User Acceptance Testing’ (UAT – Kiểm thử chấp nhận người dùng) là gì?
A. Kiểm tra tính bảo mật của hệ thống.
B. Xác nhận rằng phần mềm đáp ứng các yêu cầu kinh doanh và sẵn sàng được triển khai, do người dùng cuối hoặc đại diện của họ thực hiện.
C. Kiểm tra hiệu năng của ứng dụng.
D. Đảm bảo mã nguồn tuân thủ các tiêu chuẩn.
192. Trong phát triển phần mềm, ‘Traceability Matrix’ (Ma trận truy xuất) được sử dụng để làm gì?
A. Theo dõi tiến độ của các nhiệm vụ lập trình.
B. Liên kết các yêu cầu của hệ thống với các trường hợp kiểm thử, mã nguồn và các tài liệu khác để đảm bảo mọi yêu cầu đều được đáp ứng và kiểm thử.
C. Quản lý các phiên bản của phần mềm.
D. Đánh giá hiệu quả của chiến dịch tiếp thị.
193. Trong phương pháp Agile, ‘Burndown Chart’ (Biểu đồ giảm tải) thường được sử dụng để theo dõi điều gì?
A. Tổng số lỗi được tìm thấy trong mỗi Sprint.
B. Tiến độ hoàn thành công việc (ví dụ: User Stories, Tasks) so với thời gian còn lại trong một Sprint hoặc toàn bộ dự án.
C. Số lượng thành viên tham gia dự án.
D. Chi phí phát sinh của dự án.
194. Trong phương pháp Agile, ‘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 tính năng.
B. Một mô tả ngắn gọn về một tính năng phần mềm từ góc độ của người dùng cuối, thường có dạng ‘Là một [loại người dùng], tôi muốn [hành động] để [lợi ích]’.
C. Một kế hoạch kiểm thử chi tiết.
D. Một báo cáo về tiến độ dự án.
195. Trong kiến trúc Microservices, mỗi service thường có đặc điểm gì?
A. Rất lớn, chứa đựng nhiều chức năng và chia sẻ cơ sở dữ liệu chung.
B. Nhỏ, độc lập, tập trung vào một chức năng kinh doanh cụ thể và có thể có cơ sở dữ liệu riêng.
C. Phụ thuộc chặt chẽ vào tất cả các service khác để hoạt động.
D. Luôn được viết bằng cùng một ngôn ngữ lập trình và công nghệ.
196. Trong mô hình phát triển phần mềm, ‘Requirement Elicitation’ (Thu thập yêu cầu) là giai đoạn gì?
A. Giai đoạn viết mã nguồn.
B. Giai đoạn cuối cùng, khi sản phẩm đã hoàn thiện và sẵn sàng triển khai.
C. Giai đoạn ban đầu, nhằm tìm hiểu, thu thập và ghi lại nhu cầu, mong muốn của các bên liên quan đối với hệ thống.
D. Giai đoạn sửa lỗi và bảo trì sau khi sản phẩm đã được phát hành.
197. Mô hình RUP (Rational Unified Process) thuộc loại mô hình phát triển phần mềm nào?
A. Mô hình Thác nước (Waterfall Model)
B. Mô hình Lặp (Iterative Model)
C. Mô hình Agile
D. Mô hình V-Model
198. Khái niệm ‘Technical Debt’ (Nợ kỹ thuật) trong phát triển phần mềm thường ám chỉ điều gì?
A. Chi phí phát sinh do sử dụng công nghệ lỗi thời.
B. Hậu quả của việc lựa chọn các giải pháp nhanh chóng nhưng không tối ưu, dẫn đến chi phí bảo trì và phát triển cao hơn trong tương lai.
C. Khoản vay ngân hàng để mua công cụ phát triển phần mềm.
D. Chi phí đào tạo đội ngũ phát triển về công nghệ mới.
199. Mục tiêu của ‘Integration Testing’ (Kiểm thử tích hợp) là gì?
A. Kiểm tra từng chức năng độc lập.
B. Kiểm tra sự tương tác và giao tiếp giữa các module hoặc hệ thống con đã được tích hợp với nhau.
C. Đảm bảo hệ thống đáp ứng yêu cầu phi chức năng.
D. Xác nhận toàn bộ hệ thống hoạt động đúng theo yêu cầu kinh doanh.
200. Trong quy trình phát triển phần mềm theo mô hình Thác nước (Waterfall), giai đoạn nào đóng vai trò quan trọng nhất trong việc xác định yêu cầu và phạm vi của hệ thống?
A. Giai đoạn kiểm thử (Testing)
B. Giai đoạn thiết kế (Design)
C. Giai đoạn phân tích yêu cầu (Requirements Analysis)
D. Giai đoạn bảo trì (Maintenance)