1. Loại kiểm thử phần mềm nào đánh giá các thành phần riêng lẻ của phần mềm?
A. Kiểm thử hệ thống
B. Kiểm thử tích hợp
C. Kiểm thử chấp nhận
D. Kiểm thử đơn vị
2. Trong quản lý dự án phần mềm, ‘scope creep’ đề cập đến điều gì?
A. Sự chậm trễ trong lịch trình dự án
B. Việc thay đổi liên tục và không kiểm soát được các yêu cầu của dự án
C. Sự thiếu hụt ngân sách
D. Sự thiếu hụt nguồn lực
3. Đâu là một lợi ích chính của việc sử dụng Infrastructure as Code (IaC)?
A. Tăng cường tính bảo mật của dữ liệu
B. Tự động hóa việc cung cấp và quản lý cơ sở hạ tầng
C. Đơn giản hóa việc quản lý cơ sở dữ liệu
D. Tăng tốc độ phát triển phần mềm
4. Phương pháp luận phát triển phần mềm nào tập trung vào việc giảm thiểu lãng phí và tối ưu hóa quy trình làm việc?
A. Waterfall
B. Scrum
C. Kanban
D. RAD
5. Loại biểu đồ UML nào được sử dụng để mô tả sự tương tác giữa các đối tượng theo trình tự thời gian?
A. Biểu đồ lớp (Class Diagram)
B. Biểu đồ trạng thái (State Diagram)
C. Biểu đồ tuần tự (Sequence Diagram)
D. Biểu đồ hoạt động (Activity Diagram)
6. Đâu là một nguyên tắc chính của Extreme Programming (XP)?
A. Lập kế hoạch chi tiết trước khi bắt đầu viết mã
B. Phát triển theo tài liệu đặc tả yêu cầu đầy đủ
C. Phát triển theo cặp (pair programming)
D. Tập trung vào việc giảm thiểu rủi ro
7. Đâu là một lợi ích của việc sử dụng kiến trúc hướng dịch vụ (SOA)?
A. Giảm sự phụ thuộc giữa các hệ thống
B. Tăng cường tính bảo mật của dữ liệu
C. Đơn giản hóa việc quản lý cơ sở dữ liệu
D. Tăng tốc độ phát triển phần mềm
8. Mục tiêu chính của việc sử dụng Design Patterns là gì?
A. Tăng tốc độ thực thi của phần mềm
B. Cung cấp các giải pháp đã được chứng minh cho các vấn đề thiết kế phần mềm phổ biến
C. Giảm kích thước của mã nguồn
D. Tự động tạo mã nguồn
9. Trong kiểm thử phần mềm, ‘mutation testing’ (kiểm thử đột biến) được sử dụng để làm gì?
A. Đánh giá chất lượng của bộ kiểm thử bằng cách tạo ra các phiên bản đột biến của mã
B. Kiểm tra hiệu suất của phần mềm dưới tải cao
C. Tìm các lỗ hổng bảo mật trong phần mềm
D. Xác minh rằng phần mềm đáp ứng các yêu cầu của người dùng
10. Công cụ nào sau đây được sử dụng để quản lý các phụ thuộc (dependencies) trong một dự án phần mềm Java?
A. Eclipse
B. Maven
C. IntelliJ IDEA
D. NetBeans
11. Công cụ nào sau đây thường được sử dụng để tự động hóa quá trình xây dựng, kiểm thử và triển khai phần mềm?
A. Microsoft Word
B. Jenkins
C. Adobe Photoshop
D. Microsoft Excel
12. Đâu là một lợi ích chính của việc sử dụng kiểm soát phiên bản trong phát triển phần mềm?
A. Tăng tốc độ thực thi của phần mềm
B. Cải thiện giao diện người dùng
C. Cho phép nhiều nhà phát triển làm việc đồng thời trên cùng một codebase mà không gây xung đột
D. Giảm kích thước của tệp thực thi
13. Trong thiết kế hướng đối tượng, nguyên tắc ‘Liskov Substitution Principle’ (LSP) nói về điều gì?
A. Các lớp nên được mở rộng nhưng không được sửa đổi
B. Mỗi lớp nên có một và chỉ một lý do để thay đổi
C. Các lớp con nên thay thế các lớp cha của chúng mà không làm thay đổi tính đúng đắn của chương trình
D. Các lớp nên che giấu thông tin bên trong của chúng
14. Trong kiểm thử phần mềm, ‘black box testing’ (kiểm thử hộp đen) là gì?
A. Kiểm tra cấu trúc bên trong của mã
B. Kiểm tra chức năng của phần mềm mà không cần biết cấu trúc bên trong của nó
C. Kiểm tra hiệu suất của phần mềm
D. Kiểm tra khả năng sử dụng của phần mềm
15. Đâu là một thách thức chính của việc phát triển phần mềm phân tán?
A. Quản lý sự phức tạp của giao tiếp mạng và sự đồng bộ hóa dữ liệu
B. Sử dụng ít tài nguyên phần cứng hơn
C. Giảm yêu cầu về bảo mật
D. Đơn giản hóa quá trình kiểm thử
16. Trong kiến trúc phần mềm, ‘separation of concerns’ (SoC) là gì?
A. Một nguyên tắc thiết kế trong đó các phần khác nhau của một chương trình có trách nhiệm riêng biệt
B. Một kỹ thuật để tăng tốc độ thực thi của phần mềm
C. Một phương pháp để giảm kích thước của mã nguồn
D. Một cách để tự động tạo mã nguồn
17. Đâu là một mục tiêu chính của việc sử dụng Continuous Integration (CI)?
A. Giảm số lượng nhà phát triển cần thiết cho dự án
B. Tự động hóa quá trình tích hợp mã và kiểm tra lỗi thường xuyên
C. Tăng tốc độ thực thi của phần mềm
D. Giảm chi phí phần cứng
18. Phương pháp phát triển phần mềm Agile nào tập trung vào việc cung cấp phần mềm hoạt động thường xuyên, từ vài tuần đến vài tháng, với sự ưu tiên cho các khoảng thời gian ngắn hơn?
A. Waterfall
B. Spiral
C. Scrum
D. RAD
19. Phương pháp luận phát triển phần mềm nào nhấn mạnh sự tham gia liên tục của khách hàng và phản hồi thường xuyên trong suốt quá trình phát triển?
A. Mô hình thác nước
B. Mô hình chữ V
C. Agile
D. Mô hình xoắn ốc
20. Trong ngữ cảnh của thiết kế hướng đối tượng, nguyên tắc ‘Single Responsibility Principle’ (SRP) nói về điều gì?
A. Mỗi lớp nên có nhiều trách nhiệm
B. Mỗi lớp nên có một và chỉ một lý do để thay đổi
C. Các lớp nên được mở rộng nhưng không được sửa đổi
D. Các lớp con nên thay thế các lớp cha của chúng mà không làm thay đổi tính đúng đắn của chương trình
21. Trong mô hình thác nước, giai đoạn nào tập trung vào việc xác định và ghi lại yêu cầu của phần mềm?
A. Thiết kế
B. Kiểm thử
C. Bảo trì
D. Phân tích yêu cầu
22. Đâu là một lợi ích chính của việc sử dụng microservices architecture?
A. Giảm độ phức tạp của triển khai
B. Cho phép các nhóm phát triển làm việc độc lập trên các dịch vụ nhỏ
C. Tăng cường tính toàn vẹn dữ liệu
D. Đơn giản hóa việc quản lý cơ sở dữ liệu
23. Trong kiểm thử phần mềm, ‘regression testing’ (kiểm thử hồi quy) được sử dụng để làm gì?
A. Kiểm tra hiệu suất của phần mềm dưới tải cao
B. Đảm bảo rằng các thay đổi mới không gây ra lỗi cho các chức năng hiện có
C. Tìm các lỗ hổng bảo mật trong phần mềm
D. Xác minh rằng phần mềm đáp ứng các yêu cầu của người dùng
24. Đâu là một mục tiêu chính của việc sử dụng DevOps?
A. Tăng tốc độ phát triển phần mềm và cải thiện sự hợp tác giữa các nhóm phát triển và vận hành
B. Giảm số lượng nhà phát triển cần thiết cho dự án
C. Tăng tốc độ thực thi của phần mềm
D. Giảm chi phí phần cứng
25. Công cụ nào sau đây thường được sử dụng để theo dõi và quản lý các lỗi (bugs) trong một dự án phần mềm?
A. Jira
B. Slack
C. Trello
D. GitHub
26. Đâu là một thách thức chính của việc phát triển ứng dụng di động?
A. Sự đa dạng của các thiết bị và hệ điều hành
B. Sử dụng ít tài nguyên phần cứng hơn
C. Giảm yêu cầu về bảo mật
D. Đơn giản hóa quá trình kiểm thử
27. Mục tiêu chính của việc tái cấu trúc mã nguồn là gì?
A. Thêm chức năng mới vào phần mềm
B. Cải thiện hiệu suất của phần mềm
C. Cải thiện khả năng đọc, bảo trì và mở rộng của mã nguồn mà không thay đổi hành vi bên ngoài
D. Sửa tất cả các lỗi trong phần mềm
28. Trong bảo trì phần mềm, ‘perfective maintenance’ (bảo trì hoàn thiện) đề cập đến điều gì?
A. Sửa chữa các lỗi trong phần mềm
B. Cải thiện hiệu suất của phần mềm
C. Thêm chức năng mới hoặc sửa đổi chức năng hiện có để đáp ứng yêu cầu mới
D. Thích ứng phần mềm với môi trường mới
29. Trong kiểm thử phần mềm, ‘acceptance testing’ (kiểm thử chấp nhận) được thực hiện bởi ai?
A. Nhà phát triển
B. Người kiểm thử
C. Khách hàng hoặc người dùng cuối
D. Quản lý dự án
30. Trong kiểm thử phần mềm, ‘stress testing’ (kiểm thử chịu tải) được sử dụng để làm gì?
A. Kiểm tra chức năng của phần mềm
B. Đánh giá khả năng của phần mềm hoạt động dưới tải cao và trong điều kiện khắc nghiệt
C. Tìm các lỗ hổng bảo mật
D. Xác minh rằng phần mềm đáp ứng các yêu cầu của người dùng
31. Trong kiểm thử hiệu năng, ‘throughput’ thường được định nghĩa là gì?
A. Thời gian phản hồi trung bình của hệ thống
B. Số lượng yêu cầu mà hệ thống có thể xử lý trong một đơn vị thời gian
C. Lượng tài nguyên hệ thống (CPU, bộ nhớ) được sử dụng
D. Số lượng người dùng đồng thời mà hệ thống hỗ trợ
32. Công cụ nào sau đây thường được sử dụng để quản lý phiên bản mã nguồn?
A. JIRA
B. Confluence
C. Git
D. Slack
33. Trong kiểm thử phần mềm, ‘smoke testing’ (kiểm thử khói) được sử dụng để làm gì?
A. Để kiểm tra tất cả các chức năng của phần mềm
B. Để kiểm tra các chức năng quan trọng nhất của phần mềm sau khi xây dựng
C. Để kiểm tra hiệu suất của phần mềm dưới tải cao
D. Để kiểm tra tính bảo mật của phần mềm
34. Đâu là lợi ích chính của việc sử dụng Continuous Integration (CI) trong phát triển phần mềm?
A. Giảm chi phí phần cứng
B. Tăng tốc độ phát triển và giảm thiểu rủi ro tích hợp
C. Cải thiện giao tiếp giữa các thành viên trong nhóm
D. Tự động tạo tài liệu kỹ thuật
35. Trong mô hình xoắn ốc (Spiral), yếu tố nào được lặp lại trong mỗi vòng lặp của quy trình?
A. Xây dựng và kiểm thử
B. Phân tích rủi ro
C. Thiết kế
D. Tất cả các đáp án trên
36. Trong ngữ cảnh của DevOps, ‘Infrastructure as Code’ (IaC) là gì?
A. Viết mã để phát triển ứng dụng
B. Quản lý và cung cấp cơ sở hạ tầng thông qua mã
C. Sử dụng mã để kiểm thử phần mềm
D. Tự động tạo tài liệu kỹ thuật
37. Mục tiêu của việc sử dụng kỹ thuật ‘code review’ (đánh giá mã) là gì?
A. Để tự động sửa lỗi cú pháp
B. Để tìm 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. Để tăng tốc độ biên dịch mã
D. Để tạo tài liệu tự động cho mã
38. Đâu là một nguyên tắc quan trọng của phương pháp phát triển phần mềm Agile?
A. Ưu tiên tài liệu toàn diện hơn là phần mềm chạy tốt
B. Ưu tiên phản hồi của khách hàng và thích ứng với thay đổi
C. Tuân thủ nghiêm ngặt kế hoạch ban đầu
D. Ưu tiên quy trình và công cụ hơn là cá nhân và tương tác
39. Đâu là một mục tiêu chính của việc sử dụng kiến trúc hướng dịch vụ (SOA)?
A. Để tạo ra các ứng dụng monolithic lớn
B. Để cho phép các ứng dụng khác nhau giao tiếp và chia sẻ dữ liệu dễ dàng hơn
C. Để giảm sự phức tạp của việc phát triển phần mềm
D. Để tăng cường bảo mật cho ứng dụng
40. Mục đích chính của việc sử dụng Design Patterns trong phát triển phần mềm là gì?
A. Để tăng tính phức tạp của mã nguồn
B. Để giải quyết các vấn đề thiết kế lặp đi lặp lại một cách hiệu quả
C. Để giới hạn khả năng tái sử dụng mã
D. Để tạo ra các giải pháp thiết kế độc đáo cho mọi vấn đề
41. Đâu là mục tiêu chính của việc tái cấu trúc mã (code refactoring)?
A. Thêm chức năng mới vào phần mềm
B. Sửa tất cả các lỗi trong phần mềm
C. Cải thiện cấu trúc và khả năng đọc của mã mà không thay đổi chức năng
D. Tăng tốc độ thực thi của phần mềm
42. Đâu là một lợi ích chính của việc sử dụng hệ thống quản lý phiên bản (version control system)?
A. Tự động sửa lỗi cú pháp
B. Cho phép nhiều người làm việc trên cùng một dự án cùng một lúc mà không gây ra xung đột
C. Tăng tốc độ biên dịch mã
D. Tự động tạo tài liệu kỹ thuật
43. Đặc điểm nào sau đây KHÔNG phải là một đặc điểm của kiến trúc Microservices?
A. Tính tự trị cao của các dịch vụ
B. Liên kết chặt chẽ giữa các dịch vụ
C. Triển khai độc lập
D. Sử dụng công nghệ đa dạng
44. Trong mô hình phát triển Agile, ‘sprint’ là gì?
A. Một cuộc họp hàng ngày của nhóm phát triển
B. Một khoảng thời gian ngắn (thường từ 1 đến 4 tuần) trong đó nhóm phát triển hoàn thành một tập hợp công việc cụ thể
C. Một tài liệu mô tả yêu cầu của sản phẩm
D. Một công cụ để quản lý mã nguồn
45. Trong quy trình Scrum, ai chịu trách nhiệm đảm bảo rằng Scrum được hiểu và thực hiện đúng cách?
A. Product Owner
B. Scrum Master
C. Development Team
D. Stakeholder
46. Trong mô hình thác nước (Waterfall), giai đoạn nào tập trung vào việc xác định yêu cầu của khách hàng và tài liệu hóa chúng?
A. Thiết kế
B. Kiểm thử
C. Bảo trì
D. Phân tích yêu cầu
47. Phương pháp kiểm thử phần mềm nào thực hiện kiểm tra bằng cách cung cấp dữ liệu ngẫu nhiên hoặc không hợp lệ cho ứng dụng?
A. Kiểm thử hộp trắng
B. Kiểm thử hồi quy
C. Kiểm thử khói
D. Kiểm thử fuzzing
48. Trong 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 chức năng của phần mềm
B. Để kiểm tra khả năng của hệ thống khi chịu tải trọng dự kiến
C. Để kiểm tra tính bảo mật của hệ thống
D. Để kiểm tra khả năng phục hồi của hệ thống sau sự cố
49. Nguyên tắc DRY (Don’t Repeat Yourself) trong phát triển phần mềm có nghĩa là gì?
A. Không bao giờ viết tài liệu
B. Tránh lặp lại mã và logic
C. Luôn sử dụng các công nghệ mới nhất
D. Phát triển phần mềm nhanh nhất có thể
50. Trong kiểm thử hộp đen, kỹ thuật ‘equivalence partitioning’ (phân vùng tương đương) được sử dụng để làm gì?
A. Để kiểm tra tất cả các giá trị đầu vào có thể
B. Để chia dữ liệu đầu vào thành các phân vùng mà hệ thống xử lý tương tự nhau
C. Để kiểm tra hiệu suất của hệ thống dưới tải cao
D. Để kiểm tra tính bảo mật của hệ thống
51. Trong kiểm thử phần mềm, ‘boundary value analysis’ (phân tích giá trị biên) là gì?
A. Một kỹ thuật kiểm thử hộp trắng
B. Một kỹ thuật kiểm thử hộp đen tập trung vào các giá trị ở biên của các phân vùng đầu vào
C. Một kỹ thuật kiểm thử hiệu năng
D. Một kỹ thuật kiểm thử bảo mật
52. Trong ngữ cảnh kiểm thử phần mềm, thuật ngữ ‘regression testing’ (kiểm thử hồi quy) đề cập đến điều gì?
A. Kiểm tra các tính năng mới được thêm vào phần mềm
B. Kiểm tra để đảm bảo rằng các thay đổi mới không gây ra lỗi cho các chức năng hiện có
C. Kiểm tra hiệu suất của phần mềm dưới tải cao
D. Kiểm tra tính bảo mật của phần mềm
53. Nguyên tắc SOLID nào nói rằng một lớp (class) chỉ nên có một lý do để thay đổi?
A. Nguyên tắc thay thế Liskov (Liskov Substitution Principle)
B. Nguyên tắc duy nhất (Single Responsibility Principle)
C. Nguyên tắc đảo ngược phụ thuộc (Dependency Inversion Principle)
D. Nguyên tắc phân tách giao diện (Interface Segregation Principle)
54. Loại biểu đồ UML nào được sử dụng để mô hình hóa hành vi động của hệ thống, đặc biệt là trình tự tương tác giữa các đối tượng?
A. Biểu đồ lớp (Class Diagram)
B. Biểu đồ trạng thái (State Diagram)
C. Biểu đồ hoạt động (Activity Diagram)
D. Biểu đồ trình tự (Sequence Diagram)
55. Kỹ thuật nào sau đây giúp cải thiện khả năng đọc và bảo trì mã bằng cách giảm sự phức tạp và tăng tính mô-đun?
A. Code obfuscation
B. Code refactoring
C. Code duplication
D. Code optimization
56. Đâu là một lợi ích của việc sử dụng kiểm thử tự động (automated testing)?
A. Loại bỏ hoàn toàn nhu cầu kiểm thử thủ công
B. Tăng tốc độ kiểm thử và giảm thiểu lỗi do con người
C. Đảm bảo 100% không có lỗi trong phần mềm
D. Giảm chi phí phần cứng
57. Đâu là một thách thức chính khi áp dụng kiến trúc Microservices?
A. Dễ dàng quản lý cơ sở dữ liệu duy nhất
B. Phức tạp trong việc quản lý và triển khai nhiều dịch vụ độc lập
C. Giảm sự phụ thuộc giữa các nhóm phát triển
D. Đơn giản hóa việc kiểm thử tích hợp
58. Kỹ thuật kiểm thử nào tập trung vào việc kiểm tra các đường dẫn thực thi cụ thể trong mã nguồn?
A. Kiểm thử hộp đen
B. Kiểm thử hộp trắng
C. Kiểm thử tích hợp
D. Kiểm thử chấp nhận
59. Công cụ nào sau đây được sử dụng để theo dõi và quản lý các lỗi (bugs) trong quá trình phát triển phần mềm?
A. Jenkins
B. JIRA
C. Docker
D. Selenium
60. Vai trò của ‘Product Owner’ trong Scrum là gì?
A. Quản lý nhóm phát triển
B. Đảm bảo chất lượng mã
C. Xác định và ưu tiên các yêu cầu của sản phẩm
D. Giải quyết các vấn đề kỹ thuật
61. Đâu là một ví dụ về kiểm thử phi chức năng?
A. Kiểm tra xem một nút có hoạt động đúng không
B. Kiểm tra xem hệ thống có thể xử lý bao nhiêu người dùng đồng thời
C. Kiểm tra xem một trường nhập liệu có chấp nhận dữ liệu đúng định dạng không
D. Kiểm tra xem một báo cáo có hiển thị đúng dữ liệu không
62. Đâu là mục tiêu chính của kiểm thử bảo mật phần mềm?
A. Đảm bảo phần mềm chạy nhanh
B. Tìm lỗ hổng bảo mật
C. Đảm bảo phần mềm dễ sử dụng
D. Đảm bảo phần mềm tuân thủ các tiêu chuẩn
63. Loại tấn công bảo mật nào lợi dụng các lỗ hổng trong mã nguồn để chèn code độc hại vào ứng dụng?
A. DDoS (Distributed Denial of Service)
B. SQL injection
C. Phishing
D. Ransomware
64. Kiến trúc phần mềm nào tập trung vào việc phân tách các mối quan tâm khác nhau của ứng dụng thành các lớp riêng biệt (ví dụ: presentation, business logic, data access)?
A. Microservices
B. Monolithic
C. Layered
D. Event-driven
65. Điều gì KHÔNG phải là một hoạt động trong quy trình quản lý cấu hình phần mềm?
A. Xác định cấu hình
B. Kiểm soát thay đổi
C. Kiểm thử hiệu năng
D. Kiểm toán cấu hình
66. Công cụ nào sau đây thường được sử dụng để tự động hóa việc xây dựng, kiểm thử và triển khai phần mềm?
A. IDE (Integrated Development Environment)
B. CI/CD (Continuous Integration/Continuous Deployment)
C. UML (Unified Modeling Language)
D. DBMS (Database Management System)
67. Đâu là một lợi ích của việc sử dụng kiểm thử tự động?
A. Giảm chi phí kiểm thử
B. Loại bỏ nhu cầu kiểm thử thủ công
C. Tăng tốc độ kiểm thử và cung cấp phản hồi nhanh hơn
D. Đảm bảo không có lỗi trong phần mềm
68. Phương pháp kiểm thử hộp đen tập trung vào điều gì?
A. Cấu trúc code bên trong của ứng dụng
B. Đường dẫn thực thi của code
C. Chức năng và đầu ra của phần mềm
D. Độ phức tạp của code
69. Trong ngữ cảnh của thiết kế hướng đối tượng, nguyên tắc ‘Single Responsibility Principle’ (SRP) có nghĩa là gì?
A. Mỗi lớp chỉ nên có một trách nhiệm
B. Mỗi lớp nên có nhiều trách nhiệm
C. Mỗi phương thức chỉ nên có một tham số
D. Mỗi phương thức nên có nhiều tham số
70. Đâu là một thách thức chính khi làm việc với các hệ thống kế thừa (legacy systems)?
A. Dễ dàng tích hợp với công nghệ mới
B. Thiếu tài liệu và hiểu biết về hệ thống
C. Chi phí bảo trì thấp
D. Dễ dàng mở rộng quy mô
71. Đâu là một công cụ phổ biến để quản lý dự án phần mềm Agile?
A. Microsoft Word
B. Microsoft Excel
C. Jira
D. PowerPoint
72. Điều gì KHÔNG phải là một giai đoạn của quy trình kiểm thử phần mềm?
A. Phân tích yêu cầu
B. Thiết kế kiểm thử
C. Thực hiện kiểm thử
D. Phân tích code
73. Đâu là một công cụ phổ biến để phân tích code tĩnh (static code analysis)?
A. JUnit
B. SonarQube
C. Selenium
D. Jenkins
74. Nguyên tắc ‘You Ain’t Gonna Need It’ (YAGNI) trong lập trình Agile có nghĩa là gì?
A. Chỉ viết code khi bạn thực sự cần nó
B. Luôn viết code phức tạp
C. Không bao giờ viết kiểm thử đơn vị
D. Luôn sử dụng các công nghệ mới nhất
75. SOLID là một tập hợp các nguyên tắc thiết kế hướng đối tượng. Chữ ‘L’ trong SOLID đại diện cho nguyên tắc nào?
A. Liskov Substitution Principle
B. Law of Demeter
C. Least Astonishment
D. Loose Coupling
76. Trong mô hình thác nước, giai đoạn nào tập trung vào việc chuyển đổi các yêu cầu thành các thành phần phần mềm có thể thực thi được?
A. Kiểm thử
B. Thiết kế
C. Triển khai
D. Bảo trì
77. Phương pháp nào sau đây giúp xác định và quản lý các yêu cầu chức năng và phi chức năng của một hệ thống phần mềm?
A. Quản lý cấu hình
B. Quản lý yêu cầu
C. Quản lý dự án
D. Quản lý rủi ro
78. Trong kiểm thử phần mềm, ‘regression testing’ (kiểm thử hồi quy) được sử dụng để làm gì?
A. Kiểm tra các chức năng mới
B. Đảm bảo rằng các thay đổi mới không gây ra lỗi cho các chức năng hiện có
C. Tìm lỗi bảo mật
D. Đo hiệu suất của phần mềm
79. Mục tiêu chính của việc lập kế hoạch dự phòng trong quản lý rủi ro dự án phần mềm là gì?
A. Loại bỏ tất cả các rủi ro
B. Giảm thiểu tác động của các rủi ro đã xác định
C. Chuyển rủi ro cho bên thứ ba
D. Bỏ qua các rủi ro nhỏ
80. Đâu là một loại kiểm thử hiệu suất phần mềm?
A. Kiểm thử đơn vị
B. Kiểm thử tích hợp
C. Kiểm thử tải
D. Kiểm thử chấp nhận
81. Phương pháp luận phát triển phần mềm nào ưu tiên giao tiếp trực tiếp giữa các thành viên trong nhóm và khách hàng hơn là tài liệu toàn diện?
A. Waterfall
B. Agile
C. Spiral
D. V-Model
82. Đâu là lợi ích chính của việc sử dụng hệ thống kiểm soát phiên bản (VCS)?
A. Tự động tạo tài liệu
B. Giúp quản lý và theo dõi các thay đổi của code
C. Cải thiện hiệu suất của ứng dụng
D. Tự động triển khai phần mềm
83. Đâu là một lợi ích của việc sử dụng microservices architecture?
A. Triển khai nhanh hơn
B. Độ phức tạp cao hơn
C. Khó bảo trì hơn
D. Ít khả năng mở rộng hơn
84. Chỉ số nào sau đây được sử dụng để đo lường mức độ liên kết giữa các module trong một hệ thống phần mềm?
A. Coupling
B. Cohesion
C. Complexity
D. Maintainability
85. Trong ngữ cảnh của phát triển phần mềm Agile, Scrum Master chịu trách nhiệm chính cho điều gì?
A. Viết code
B. Quản lý backlog sản phẩm
C. Loại bỏ các rào cản cho nhóm phát triển
D. Thiết kế kiến trúc phần mềm
86. Đâu là một ví dụ về ‘code smell’ (mùi code)?
A. Code được viết rõ ràng và dễ hiểu
B. Code có nhiều dòng trùng lặp
C. Code có kiểm thử đơn vị
D. Code tuân thủ các tiêu chuẩn
87. Loại biểu đồ UML nào được sử dụng để mô tả tương tác giữa các đối tượng theo trình tự thời gian?
A. Biểu đồ lớp
B. Biểu đồ trạng thái
C. Biểu đồ tuần tự
D. Biểu đồ hoạt động
88. Đâu là một ví dụ về nợ kỹ thuật?
A. Sử dụng thư viện bên ngoài
B. Viết code nhanh chóng mà không tuân theo các tiêu chuẩn thiết kế tốt
C. Thực hiện kiểm thử đơn vị
D. Sử dụng hệ thống kiểm soát phiên bản
89. Mục tiêu chính của việc tái cấu trúc code là gì?
A. Thêm chức năng mới
B. Sửa lỗi
C. Cải thiện khả năng đọc và bảo trì code
D. Tăng hiệu suất của phần mềm
90. Trong mô hình xoắn ốc (spiral model), điều gì được thực hiện sau mỗi vòng lặp?
A. Viết code
B. Phân tích rủi ro
C. Triển khai phần mềm
D. Thu thập yêu cầu
91. Đâu là một trong những lợi ích chính của việc sử dụng Microservices architecture?
A. Đơn giản hóa việc triển khai
B. Khả năng mở rộng và độc lập triển khai
C. Giảm chi phí phát triển
D. Tăng tính bảo mật
92. Mục tiêu chính của việc sử dụng Dependency Injection (DI) là gì?
A. Tăng tốc độ biên dịch code
B. Giảm sự phụ thuộc giữa các thành phần
C. Cải thiện giao diện người dùng
D. Tăng tính bảo mật
93. Đâu là một trong những vai trò chính trong Scrum?
A. Project Manager
B. Scrum Master
C. Business Analyst
D. System Architect
94. Điều gì là quan trọng nhất khi viết test case (trường hợp kiểm thử)?
A. Sử dụng công cụ kiểm thử phức tạp
B. Độ bao phủ và tính rõ ràng
C. Viết nhanh chóng để tiết kiệm thời gian
D. Số lượng test case lớn
95. Trong kiểm thử phần mềm, ‘stress testing’ (kiểm thử chịu tải) được sử dụng để làm gì?
A. Tìm lỗi cú pháp
B. Đánh giá hiệu suất dưới tải cao
C. Kiểm tra giao diện người dùng
D. Đảm bảo tính bảo mật
96. Trong ngữ cảnh bảo trì phần mềm, ‘perfective maintenance’ (bảo trì hoàn thiện) đề cập đến điều gì?
A. Sửa lỗi
B. Cải thiện hiệu suất
C. Thêm chức năng mới
D. Điều chỉnh để phù hợp với môi trường mới
97. Phương pháp kiểm thử hộp đen (Black Box Testing) tập trung vào điều gì?
A. Cấu trúc code bên trong
B. Luồng dữ liệu
C. Yêu cầu và chức năng
D. Độ phức tạp của thuật toán
98. Đâu là một trong những nguyên tắc chính của kiểm thử phần mềm?
A. Kiểm thử toàn bộ là khả thi
B. Kiểm thử sớm
C. Kiểm thử chỉ cần thực hiện một lần
D. Kiểm thử không cần tài liệu
99. Trong phát triển phần mềm, thuật ngữ ‘technical debt’ (nợ kỹ thuật) thường liên quan đến điều gì?
A. Chi phí bản quyền phần mềm
B. Hậu quả của các quyết định thiết kế không tối ưu
C. Số lượng nhân viên trong dự án
D. Thời gian cần thiết để kiểm thử phần mềm
100. Trong ngữ cảnh phát triển phần mềm, ‘technical debt’ (nợ kỹ thuật) đề cập đến điều gì?
A. Chi phí bảo trì phần cứng
B. Hậu quả của các quyết định thiết kế vội vàng
C. Số lượng dòng code trong dự án
D. Thời gian cần thiết để kiểm thử phần mềm
101. Trong kiểm thử phần mềm, ‘acceptance testing’ (kiểm thử chấp nhận) được thực hiện bởi ai?
A. Nhà phát triển
B. Khách hàng hoặc người dùng cuối
C. Nhóm kiểm thử
D. Quản lý dự án
102. Phương pháp phát triển phần mềm nào coi trọng việc giao tiếp trực tiếp giữa các thành viên trong nhóm và khách hàng hơn là tài liệu chi tiết?
A. Mô hình thác nước
B. Agile
C. Mô hình chữ V
D. Mô hình xoắn ốc
103. Agile Manifesto ưu tiên điều gì hơn là tuân thủ một kế hoạch toàn diện?
A. Tài liệu đầy đủ
B. Phản hồi với thay đổi
C. Hợp đồng và đàm phán
D. Quy trình và công cụ
104. Trong kiểm thử phần mềm, ‘white box testing’ (kiểm thử hộp trắng) tập trung vào điều gì?
A. Yêu cầu và chức năng
B. Cấu trúc code bên trong
C. Giao diện người dùng
D. Hiệu suất hệ thống
105. Trong mô hình thác nước (Waterfall), giai đoạn nào tập trung vào việc chuyển đổi các yêu cầu thành một thiết kế hệ thống?
A. Kiểm thử
B. Bảo trì
C. Thiết kế
D. Phân tích yêu cầu
106. SOLID là một tập hợp các nguyên tắc thiết kế hướng đối tượng, trong đó chữ ‘L’ đại diện cho nguyên tắc nào?
A. Liskov Substitution Principle
B. Law of Demeter
C. Least Astonishment
D. Lazy Loading
107. Đâu là một trong những thách thức chính khi phát triển phần mềm theo mô hình Agile cho các dự án lớn?
A. Thiếu tài liệu
B. Khó khăn trong việc phối hợp giữa các nhóm
C. Khách hàng không tham gia
D. Công nghệ không phù hợp
108. Mục tiêu chính của việc sử dụng Design Patterns (mẫu thiết kế) là gì?
A. Tăng tốc độ phát triển phần mềm
B. Giải quyết các vấn đề thiết kế phổ biến
C. Giảm chi phí phần cứng
D. Cải thiện giao diện người dùng
109. Trong ngữ cảnh phát triển phần mềm, ‘legacy system’ (hệ thống kế thừa) đề cập đến điều gì?
A. Hệ thống mới nhất
B. Hệ thống cũ và khó bảo trì
C. Hệ thống mã nguồn mở
D. Hệ thống được phát triển bằng công nghệ hiện đại
110. Mục đích của Continuous Integration (CI) trong DevOps là gì?
A. Tự động hóa việc tích hợp code từ nhiều nguồn
B. Giám sát hiệu suất hệ thống
C. Quản lý cơ sở dữ liệu
D. Thiết kế giao diện người dùng
111. 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. Trước khi viết code
B. Sau khi sửa lỗi hoặc thêm chức năng mới
C. Chỉ khi có yêu cầu từ khách hàng
D. Trong giai đoạn phân tích yêu cầu
112. Trong ngữ cảnh phát triển phần mềm, ‘code smell’ (mùi code) đề cập đến điều gì?
A. Vấn đề về hiệu suất
B. Dấu hiệu của vấn đề tiềm ẩn trong code
C. Lỗi cú pháp
D. Thiếu tài liệu
113. Component diagram (biểu đồ thành phần) trong UML được sử dụng để mô tả điều gì?
A. Luồng dữ liệu
B. Kiến trúc phần mềm
C. Tương tác người dùng
D. Cấu trúc cơ sở dữ liệu
114. Đâu là lợi ích chính của việc sử dụng hệ thống kiểm soát phiên bản (Version Control System) như Git?
A. Tăng tốc độ biên dịch code
B. Quản lý thay đổi và cộng tác
C. Tự động sửa lỗi code
D. Cải thiện hiệu suất phần cứng
115. Trong mô hình xoắn ốc (Spiral), rủi ro được đánh giá ở giai đoạn nào?
A. Lập kế hoạch
B. Phân tích rủi ro
C. Thiết kế
D. Đánh giá khách hàng
116. Đâu là một trong những lý do chính khiến dự án phần mềm thất bại?
A. Sử dụng công nghệ mới nhất
B. Yêu cầu không rõ ràng hoặc thay đổi liên tục
C. Đội ngũ phát triển quá lớn
D. Thiếu kiểm thử
117. Mục tiêu chính của việc tái cấu trúc code (Code Refactoring) là gì?
A. Thêm chức năng mới
B. Cải thiện cấu trúc và khả năng đọc code
C. Sửa lỗi bảo mật
D. Tăng tốc độ thực thi
118. Use case diagram (biểu đồ ca sử dụng) được sử dụng để mô tả điều gì?
A. Kiến trúc phần cứng
B. Tương tác giữa người dùng và hệ thống
C. Cấu trúc cơ sở dữ liệu
D. Luồng dữ liệu trong hệ thống
119. Mục đích chính của việc sử dụng code review là gì?
A. Tăng tốc độ viết code
B. Tìm lỗi và cải thiện chất lượng code
C. Giảm chi phí phần cứng
D. Cải thiện giao diện người dùng
120. Mục tiêu của việc sử dụng UML (Unified Modeling Language) là gì?
A. Viết code nhanh hơn
B. Chuẩn hóa việc mô hình hóa hệ thống
C. Tự động sửa lỗi code
D. Quản lý tài chính dự án
121. Trong ngữ cảnh của quản lý dự án phần mềm, ‘scope creep’ (phạm vi leo thang) đề cập đến điều gì?
A. Sự chậm trễ trong lịch trình dự án
B. Sự gia tăng chi phí dự án
C. Sự thay đổi không kiểm soát hoặc mở rộng phạm vi của dự án
D. Sự thiếu giao tiếp giữa các thành viên trong nhóm
122. Trong ngữ cảnh của bảo mật phần mềm, ‘SQL injection’ là gì?
A. Một loại tấn công từ chối dịch vụ (DoS)
B. Một kỹ thuật để vượt qua xác thực
C. Một lỗ hổng cho phép kẻ tấn công chèn mã SQL độc hại vào các truy vấn cơ sở dữ liệu
D. Một phương pháp để đánh cắp dữ liệu từ cơ sở dữ liệu
123. Mục tiêu chính của việc tái cấu trúc mã (code refactoring) là gì?
A. Thêm chức năng mới vào phần mềm
B. Sửa tất cả các lỗi trong phần mềm
C. Cải thiện cấu trúc bên trong của mã mà không thay đổi hành vi bên ngoài của nó
D. Tối ưu hóa hiệu suất của phần mềm
124. Nguyên tắc ‘DRY’ (Don’t Repeat Yourself) trong phát triển phần mềm khuyến khích điều gì?
A. Viết mã rõ ràng và dễ đọc
B. Tránh lặp lại mã bằng cách sử dụng các hàm hoặc lớp dùng chung
C. Kiểm thử phần mềm thường xuyên
D. Sử dụng các công cụ tự động hóa để xây dựng và triển khai phần mềm
125. Trong ngữ cảnh của kiểm thử phần mềm, ‘regression testing’ (kiểm thử hồi quy) có nghĩa là gì?
A. Kiểm thử phần mềm để đảm bảo rằng các thay đổi mới không gây ra lỗi cho các chức năng hiện có
B. Kiểm thử phần mềm để tìm ra các lỗi bảo mật
C. Kiểm thử phần mềm để đo hiệu suất của nó
D. Kiểm thử phần mềm để đảm bảo nó tuân thủ các tiêu chuẩn ngành
126. Phương pháp luận phát triển phần mềm nào sau đây phù hợp nhất cho một dự án có yêu cầu không rõ ràng và có khả năng thay đổi thường xuyên?
A. Waterfall
B. Spiral
C. Agile
D. V-Model
127. Phương pháp kiểm thử hộp đen tập trung vào yếu tố nào?
A. Cấu trúc code bên trong của phần mềm
B. Luồng dữ liệu trong chương trình
C. Chức năng và hành vi của phần mềm
D. Độ phức tạp của thuật toán
128. Trong ngữ cảnh của kiến trúc phần mềm, ‘separation of concerns’ (SoC) là gì?
A. Một nguyên tắc thiết kế khuyến khích chia ứng dụng thành các phần riêng biệt, mỗi phần giải quyết một mối quan tâm cụ thể
B. Một phương pháp để tăng hiệu suất của ứng dụng
C. Một kỹ thuật để bảo mật ứng dụng
D. Một cách để giảm chi phí phát triển ứng dụng
129. Đâu là một lợi ích chính của việc sử dụng ‘cloud computing’ (điện toán đám mây) trong phát triển và triển khai phần mềm?
A. Tăng cường bảo mật cho phần mềm
B. Giảm chi phí cơ sở hạ tầng
C. Tăng tốc độ phát triển phần mềm
D. Giảm sự phụ thuộc vào các nhà cung cấp phần cứng
130. Trong mô hình xoắn ốc (Spiral), yếu tố nào được lặp đi lặp lại qua mỗi vòng xoắn?
A. Lập kế hoạch
B. Phân tích rủi ro
C. Thiết kế
D. Đánh giá khách hàng
131. Loại biểu đồ UML nào thường được sử dụng để mô hình hóa các tương tác giữa các đối tượng trong một hệ thống?
A. Use case diagram
B. Class diagram
C. Sequence diagram
D. State diagram
132. SOLID là một tập hợp các nguyên tắc thiết kế hướng đối tượng. Chữ ‘L’ trong SOLID đại diện cho nguyên tắc nào?
A. Liskov Substitution Principle
B. Law of Demeter
C. Least Astonishment
D. Loose Coupling
133. Trong mô hình Scrum, ‘Sprint Retrospective’ (họp đánh giá Sprint) được sử dụng để làm gì?
A. Lập kế hoạch cho Sprint tiếp theo
B. Đánh giá hiệu suất của các thành viên trong nhóm
C. Thảo luận về những gì đã diễn ra tốt đẹp, những gì có thể được cải thiện và cách thực hiện những cải tiến đó
D. Trình bày công việc đã hoàn thành cho khách hàng
134. Mục tiêu chính của việc sử dụng ‘code reviews’ (đánh giá mã) là gì?
A. Tìm ra các lỗi trong mã
B. Đảm bảo rằng mã tuân thủ các tiêu chuẩn mã hóa
C. Chia sẻ kiến thức giữa các thành viên trong nhóm
D. Tất cả các đáp án trên
135. Công cụ nào sau đây thường được sử dụng để tự động hóa quá trình xây dựng, kiểm thử và triển khai phần mềm (CI/CD)?
A. Microsoft Word
B. Jenkins
C. Adobe Photoshop
D. Microsoft Excel
136. Trong ngữ cảnh của kiểm thử hiệu suất, ‘load testing’ (kiểm thử tải) được sử dụng để làm gì?
A. Xác định số lượng người dùng tối đa mà hệ thống có thể hỗ trợ
B. Đo thời gian phản hồi của hệ thống dưới các điều kiện tải khác nhau
C. Tìm ra các lỗi bảo mật trong hệ thống
D. Đảm bảo rằng hệ thống tuân thủ các tiêu chuẩn ngành
137. Đâu là một thách thức chính trong việc phát triển phần mềm cho các thiết bị di động?
A. Sự đa dạng của các thiết bị và hệ điều hành
B. Sự thiếu hụt các công cụ phát triển phần mềm
C. Chi phí phát triển phần mềm cao
D. Sự thiếu hụt các nhà phát triển phần mềm có kinh nghiệm
138. Mục tiêu chính của việc sử dụng ‘agile testing’ (kiểm thử agile) là gì?
A. Tìm ra càng nhiều lỗi càng tốt
B. Tích hợp kiểm thử vào quy trình phát triển phần mềm
C. Tự động hóa tất cả các kiểm thử
D. Giảm chi phí kiểm thử
139. Trong ngữ cảnh của bảo mật phần mềm, ‘cross-site scripting’ (XSS) là gì?
A. Một loại tấn công từ chối dịch vụ (DoS)
B. Một kỹ thuật để vượt qua xác thực
C. Một lỗ hổng cho phép kẻ tấn công chèn mã độc hại vào các trang web được xem bởi người dùng khác
D. Một phương pháp để đánh cắp dữ liệu từ cơ sở dữ liệu
140. Công cụ nào sau đây được sử dụng để quản lý phiên bản mã nguồn?
A. Jira
B. Slack
C. Git
D. Trello
141. Mục đích của việc sử dụng ‘design patterns’ (mẫu thiết kế) trong phát triển phần mềm là gì?
A. Tăng tốc độ phát triển phần mềm
B. Cung cấp các giải pháp đã được chứng minh cho các vấn đề thiết kế thường gặp
C. Giảm số lượng mã cần viết
D. Cải thiện hiệu suất của phần mềm
142. Đâu là lợi ích chính của việc sử dụng ‘version control’ (kiểm soát phiên bản) trong phát triển phần mềm?
A. Cải thiện hiệu suất của phần mềm
B. Cho phép nhiều nhà phát triển làm việc trên cùng một codebase cùng một lúc mà không gây ra xung đột
C. Giảm chi phí phát triển phần mềm
D. Tự động hóa quá trình kiểm thử phần mềm
143. Trong kiểm thử phần mềm, ‘acceptance testing’ (kiểm thử chấp nhận) thường được thực hiện bởi ai?
A. Nhà phát triển
B. Người kiểm thử (tester)
C. Khách hàng hoặc người dùng cuối
D. Quản lý dự án
144. Loại kiến trúc phần mềm nào tập trung vào việc chia ứng dụng thành các thành phần nhỏ, độc lập có thể được triển khai và mở rộng quy mô một cách độc lập?
A. Monolithic architecture
B. Client-server architecture
C. Microservices architecture
D. Layered architecture
145. Điểm khác biệt chính giữa kiểm thử ‘unit testing’ (kiểm thử đơn vị) và ‘integration testing’ (kiểm thử tích hợp) là gì?
A. Unit testing được thực hiện bởi nhà phát triển, trong khi integration testing được thực hiện bởi người kiểm thử
B. Unit testing kiểm tra các thành phần riêng lẻ, trong khi integration testing kiểm tra sự tương tác giữa các thành phần
C. Unit testing tập trung vào chức năng, trong khi integration testing tập trung vào hiệu suất
D. Unit testing được thực hiện trước integration testing
146. Trong phát triển phần mềm, thuật ngữ ‘technical debt’ (nợ kỹ thuật) dùng để chỉ điều gì?
A. Chi phí bảo trì phần mềm theo thời gian
B. Các quyết định thiết kế hoặc mã hóa mà hiện tại có vẻ dễ dàng nhưng có thể gây ra vấn đề trong tương lai
C. Số lượng lỗi còn tồn tại trong phần mềm
D. Thời gian cần thiết để hoàn thành một dự án phần mềm
147. Chức năng nào sau đây KHÔNG phải là một phần của một hệ thống quản lý yêu cầu (Requirements Management System)?
A. Theo dõi các thay đổi đối với yêu cầu
B. Quản lý các mối quan hệ giữa các yêu cầu
C. Tự động tạo mã từ yêu cầu
D. Ưu tiên các yêu cầu
148. Đặc điểm nào sau đây KHÔNG phải là một phần của Agile Manifesto?
A. Ưu tiên cá nhân và tương tác hơn quy trình và công cụ
B. Ưu tiên tài liệu toàn diện hơn phần mềm chạy tốt
C. Ưu tiên cộng tác với khách hàng hơn đàm phán hợp đồng
D. Ưu tiên phản hồi với thay đổi hơn tuân theo kế hoạch
149. Trong mô hình thác nước, giai đoạn nào tập trung vào việc chuyển đổi các yêu cầu thành các thành phần phần mềm có thể thực thi?
A. Kiểm thử
B. Thiết kế
C. Bảo trì
D. Triển khai
150. Trong kiến trúc hướng dịch vụ (SOA), ‘service orchestration’ (điều phối dịch vụ) đề cập đến điều gì?
A. Việc tạo ra các dịch vụ mới
B. Việc quản lý các dịch vụ hiện có
C. Việc sắp xếp và phối hợp các dịch vụ để thực hiện một quy trình nghiệp vụ
D. Việc giám sát hiệu suất của các dịch vụ