Thi lại · SWD392 · Summer 2026

Ôn tập thi lại SWD392 Summer 2026

119 câu gom từ 2 đề ôn của kỳ Summer 2026.

2 đề gốc

Bấm để làm trọn một đề thay vì tra từng câu

119 câu hỏi

Trang 4 / 6
AAggregation
BGeneralization
CAssociation
DDependency
Lời giải
Đáp án đúng: B. Tổng quát hoá (Generalization) là quan hệ kế thừa trong UML, biểu diễn phân cấp "là một" (is-a): lớp con là một dạng cụ thể của lớp cha và thừa hưởng thuộc tính, thao tác của lớp cha. Ký pháp là mũi tên đầu tam giác rỗng trỏ về lớp cha. A sai vì kết tập (Aggregation) biểu diễn quan hệ "có một / gồm có" (has-a), tức toàn thể/bộ phận. C sai vì liên kết (Association) chỉ là quan hệ cấu trúc chung giữa các lớp, không hàm ý kế thừa. D sai vì phụ thuộc (Dependency) chỉ nói lớp này dùng tới lớp kia, quan hệ yếu nhất trong nhóm.
Mở trang câu hỏi này →
AA rounded rectangle
BA small black circle
CA small black circle inside a larger white circle (bull's-eye)
DA diamond shape
Lời giải
Đáp án đúng: B. Trạng thái khởi đầu (initial state) trong sơ đồ máy trạng thái UML được vẽ bằng một chấm tròn đen đặc, với một mũi tên đi ra trỏ tới trạng thái đầu tiên thật sự của máy. C sai vì chấm đen nằm trong vòng tròn trắng lớn hơn (hình mắt bò) là ký hiệu trạng thái KẾT THÚC — rất dễ nhầm với trạng thái khởi đầu, đây chính là bẫy của câu này. A sai vì hình chữ nhật bo góc là ký hiệu của một trạng thái thường. D sai vì hình thoi là điểm rẽ nhánh theo điều kiện (choice/decision).
Mở trang câu hỏi này →
AObservable
BNon-observable
CAll of the mentioned
DNone of the mentioned
Lời giải
Đáp án đúng: C. Thuộc tính chất lượng được chia làm hai nhóm theo cách đo: nhóm quan sát được khi hệ thống chạy (observable — hiệu năng, tính sẵn sàng, bảo mật, khả dụng) và nhóm không quan sát được khi chạy (non-observable — khả năng bảo trì, khả chuyển, khả kiểm thử, tái sử dụng). Muốn tính đủ các thuộc tính chất lượng thì phải dùng cả hai nhóm độ đo. A và B đều sai vì mỗi phương án chỉ lấy một nửa: chỉ đo lúc chạy thì không đánh giá được khả năng bảo trì hay khả chuyển; chỉ đo tĩnh thì không biết hệ thống chạy nhanh chậm ra sao. D sai vì rõ ràng có độ đo dùng được, không phải là "không cái nào".
Mở trang câu hỏi này →
AUsing global variables extensively
BImplementing locks and synchronization mechanisms
CAvoiding thread creation
DUtilizing single-threaded execution only
Lời giải
Đáp án đúng: B. Cách xử lý tương tranh phổ biến và chuẩn mực là dùng khoá (lock) cùng các cơ chế đồng bộ như semaphore, monitor, biến điều kiện — để bảo vệ vùng tranh chấp, bảo đảm chỉ một luồng thao tác lên dữ liệu dùng chung tại một thời điểm. A sai vì lạm dụng biến toàn cục làm tăng vùng tranh chấp, khiến tình hình tệ hơn. C và D đều sai vì né tránh chứ không quản lý: không tạo luồng hoặc chỉ chạy đơn luồng thì đúng là không còn tương tranh, nhưng cũng mất luôn khả năng xử lý đồng thời mà hệ thống cần.
Mở trang câu hỏi này →
AIncreased agility
BReduced complexity
CHigh coupling between services
DImproved service granularity
Lời giải
Đáp án đúng: C. Khi đặt việc tái sử dụng lên hàng đầu trong SOA, các dịch vụ có xu hướng bị nhiều bên gọi và phải gánh nhiều tình huống sử dụng khác nhau; hệ quả là chúng dính chặt vào nhau — sửa một dịch vụ dùng chung thì kéo theo rủi ro cho mọi bên tiêu thụ. Đây chính là đánh đổi cổ điển giữa reuse và loose coupling. A, B, D đều là điều mong muốn chứ không phải nhược điểm: tăng tính linh hoạt, giảm độ phức tạp và cải thiện độ mịn của dịch vụ đều là lợi ích được kỳ vọng, nên không thể là đáp án cho câu hỏi tìm nhược điểm.
Mở trang câu hỏi này →
ARefining each model independently without cross-checking
BSynchronizing refinements between analysis, design, and architecture models
CPostponing model updates until after implementation
DRelying only on component-level testing
Lời giải
Đáp án đúng: B. Khi hệ thống tiến hoá, mô hình phân tích, mô hình thiết kế và mô hình kiến trúc phải được tinh chỉnh đồng bộ với nhau. Chỉ khi mọi tinh chỉnh được đồng bộ chéo thì các mô hình mới còn nói cùng một câu chuyện về hệ thống. A sai vì tinh chỉnh từng mô hình độc lập, không đối chiếu chéo, chính là nguyên nhân sinh ra mâu thuẫn giữa các mô hình. C sai vì hoãn cập nhật mô hình tới sau khi hiện thực xong biến mô hình thành tài liệu chết, không còn phản ánh hệ thống thật. D sai vì kiểm thử mức thành phần chỉ bắt lỗi hiện thực, không phát hiện được mâu thuẫn giữa các mô hình.
Mở trang câu hỏi này →
AA component that cannot be reused
BA component that is composed of several smaller, reusable components
CA component that is monolithic and cannot be divided
DA component designed for a single, specific task
Lời giải
Đáp án đúng: B. Thành phần ghép (composite component) là thành phần được cấu tạo từ nhiều thành phần nhỏ hơn, mỗi thành phần con vẫn tái sử dụng được; bên ngoài chỉ nhìn thấy giao diện của thành phần ghép, còn cấu trúc bên trong được che giấu. A sai vì "không tái sử dụng được" đi ngược đúng tinh thần của thiết kế theo thành phần. C sai vì "nguyên khối, không chia được" là định nghĩa trái ngược hẳn với "ghép". D sai vì thành phần chỉ làm một nhiệm vụ đơn lẻ là thành phần đơn (simple component), không phải thành phần ghép.
Mở trang câu hỏi này →
AThe part class becomes a foreign key in the whole class.
BThe whole class becomes part of the primary key in the part class.
CEach part class is designed as its own relational table.
DIn relational databases, the flat (nonhierarchical) norm is broken by the creation of a hierarchy.
Lời giải
Đáp án đúng: B. Với quan hệ toàn thể/bộ phận (whole/part), bộ phận phụ thuộc sự tồn tại vào toàn thể. Khi ánh xạ sang cơ sở dữ liệu quan hệ, khoá chính của bảng toàn thể được đưa vào bảng bộ phận và trở thành một phần của khoá chính bảng bộ phận — tạo ra khoá chính ghép (concatenated primary key), thể hiện đúng rằng bộ phận không tự định danh được nếu không có toàn thể. A sai vì đảo ngược chiều phụ thuộc: khoá ngoại nằm ở phía bộ phận, không nằm ở phía toàn thể. C nói đúng một nửa (bộ phận thường có bảng riêng) nhưng không trả lời được câu hỏi cốt lõi là quan hệ được biểu diễn thế nào. D sai vì mô hình quan hệ vẫn giữ dạng phẳng — phân cấp được diễn đạt bằng khoá, không phải bằng việc phá vỡ chuẩn phẳng.
Mở trang câu hỏi này →
ALifelines
BMessages
CEntities
DActivation bars
Lời giải
Đáp án đúng: C. Sơ đồ tuần tự (sequence diagram) mô tả tương tác theo thời gian giữa các đối tượng, gồm đường đời (lifeline), thông điệp (message) và thanh kích hoạt (activation bar). "Entities" không phải một phần tử ký pháp của sơ đồ tuần tự — thực thể là một loại đối tượng (stereotype), và trên sơ đồ nó vẫn xuất hiện dưới dạng một đường đời như mọi đối tượng khác. A, B, D đều là phần tử chuẩn của sơ đồ tuần tự: lifeline là trục dọc biểu diễn đối tượng theo thời gian, message là mũi tên trao đổi giữa các lifeline, activation bar là khối chữ nhật mảnh cho biết đối tượng đang thực thi.
Mở trang câu hỏi này →
AControl
BBoundary
CApplication logic
DEntity
Lời giải
Đáp án đúng: C. Trong phân loại đối tượng của COMET, đối tượng logic ứng dụng (application logic object) gồm ba nhánh: đối tượng logic nghiệp vụ, đối tượng thuật toán và đối tượng dịch vụ. Đối tượng logic nghiệp vụ tồn tại chính là để gói riêng các quy tắc nghiệp vụ, tách khỏi dữ liệu và khỏi giao diện, để khi quy tắc nghiệp vụ đổi thì chỉ sửa một chỗ. A sai vì đối tượng điều khiển lo việc điều phối trình tự và trạng thái, không phải nơi chứa quy tắc nghiệp vụ. B sai vì đối tượng biên chỉ lo giao tiếp với môi trường bên ngoài. D sai vì đối tượng thực thể chỉ lưu trữ dữ liệu bền vững; nhét quy tắc nghiệp vụ vào đó là làm mất tính độc lập mà câu hỏi đang nhắm tới.
Mở trang câu hỏi này →
AA client sends a request and waits synchronously for a direct reply from a specific server.
BComponents receive messages by polling a central queue rather than being notified.
CComponents subscribe to a group and automatically receive multicast messages sent to that group.
DEach component must be individually addressed to receive updates from the sender.
Lời giải
Đáp án đúng: C. Mẫu Subscription/Notification hoạt động theo kiểu đăng ký nhận tin: thành phần quan tâm đăng ký vào một nhóm (hoặc chủ đề), và mọi thông điệp gửi tới nhóm đó sẽ tự động được phát tới toàn bộ thành viên đã đăng ký — bên gửi không cần biết ai đang nghe. A sai vì gửi rồi chờ hồi đáp trực tiếp từ một máy chủ cụ thể là mẫu Synchronous Message Communication with Reply. B sai vì tự đi hỏi hàng đợi (polling) là cơ chế kéo, ngược hẳn với "được thông báo" (đẩy) trong tên mẫu. D sai vì phải gọi tên từng thành phần một là gửi đơn hướng (unicast), làm mất chính lợi ích tách rời bên gửi và bên nhận mà mẫu này đem lại.
Mở trang câu hỏi này →
ATo replace the operating system on each node in the network
BTo directly manage hardware resources across distributed systems
CTo provide a uniform platform that abstracts heterogeneous operating systems for distributed applications
DTo serve as a graphical interface for user interaction in distributed environments
Lời giải
Đáp án đúng: C. Middleware nằm giữa hệ điều hành và ứng dụng phân tán, cung cấp một nền tảng đồng nhất che đi sự khác biệt giữa các hệ điều hành, ngôn ngữ và giao thức mạng bên dưới. Nhờ đó ứng dụng viết một lần vẫn chạy được trên các nút không đồng nhất. A sai vì middleware chạy TRÊN hệ điều hành, không thay thế nó. B sai vì việc quản lý tài nguyên phần cứng vẫn thuộc về hệ điều hành từng nút; middleware không đụng trực tiếp phần cứng. D sai vì middleware không phải tầng giao diện người dùng — nó nằm hoàn toàn phía dưới, người dùng không thấy nó.
Mở trang câu hỏi này →
ABoundary object
BEntity object
CControl object
DUser interface object
Lời giải
Đáp án đúng: C. Trong mô hình hoá tương tác phụ thuộc trạng thái, đối tượng thực thi máy trạng thái là đối tượng điều khiển (control object) — cụ thể là đối tượng điều khiển phụ thuộc trạng thái. Nó nhận thông điệp đến, tra bảng chuyển trạng thái, đổi trạng thái và phát ra các hành động tương ứng. A sai vì đối tượng biên chỉ nhận sự kiện từ bên ngoài rồi chuyển tiếp vào cho đối tượng điều khiển, bản thân nó không giữ máy trạng thái. B sai vì đối tượng thực thể chỉ lưu dữ liệu. D sai vì đối tượng giao diện người dùng cũng chỉ là một dạng đối tượng biên.
Mở trang câu hỏi này →
AWith conditional frames (alt)
BWith optional frames (opt)
CWith loops (loop)
DWith concurrent regions (par)
Lời giải
Đáp án đúng: A. Đường đi thay thế trong sơ đồ tuần tự được biểu diễn bằng khung điều kiện 'alt': khung được chia thành nhiều ngăn, mỗi ngăn có một điều kiện canh, và lúc chạy chỉ ngăn khớp điều kiện được thực hiện — đúng nghĩa "hoặc nhánh này, hoặc nhánh kia". B sai vì 'opt' chỉ diễn tả một đoạn CÓ THỂ xảy ra hoặc không, tức chỉ một nhánh có điều kiện, không phải nhiều đường đi thay thế nhau. C sai vì 'loop' diễn tả lặp. D sai vì 'par' diễn tả các đoạn chạy song song, tức xảy ra ĐỒNG THỜI chứ không phải loại trừ nhau.
Mở trang câu hỏi này →
ATo divide a system into smaller, manageable components for design and development
BTo create testing frameworks for software applications
CTo simplify the use of UML diagrams
DTo centralize data storage
Lời giải
Đáp án đúng: A. Kiến trúc hệ thống con tồn tại để chia một hệ thống lớn thành các phần nhỏ, quản lý được, mỗi phần có ranh giới và giao diện rõ ràng để có thể thiết kế, phát triển, kiểm thử và triển khai tương đối độc lập. B sai vì khung kiểm thử là công cụ hỗ trợ, không phải mục đích của việc phân rã kiến trúc. C sai vì sơ đồ UML là phương tiện diễn đạt kiến trúc, không phải mục tiêu của kiến trúc. D sai vì tập trung hoá lưu trữ dữ liệu là một quyết định thiết kế cụ thể, thậm chí thường đi ngược lại tinh thần phân rã.
Mở trang câu hỏi này →
AOnly the main sequence of the use case
BThe main sequence and every alternative sequence of the use case
CThe main sequence and a representative alternative sequence of the use case
DThe alternative sequences of the use case
Lời giải
Đáp án đúng: B. Một use case gồm chuỗi chính (main sequence) và các chuỗi thay thế (alternative sequence). Sơ đồ tương tác phải phủ cả chuỗi chính lẫn từng chuỗi thay thế, vì mỗi chuỗi thay thế là một đường đi khác nhau qua hệ thống với tập thông điệp khác nhau — bỏ sót chuỗi nào là bỏ sót đúng phần hành vi đó khi thiết kế. A và D đều sai vì chỉ phủ được một nửa: chỉ chuỗi chính thì mất hết nhánh ngoại lệ, chỉ chuỗi thay thế thì mất luôn luồng nghiệp vụ chính. C sai vì lấy "một chuỗi thay thế đại diện" là lấy mẫu — các chuỗi thay thế khác nhau về bản chất (lỗi nhập liệu, hết hàng, hết hạn…), không có chuỗi nào đại diện được cho các chuỗi còn lại.
Mở trang câu hỏi này →
ASingleton Pattern
BFactory Pattern
CMVC Pattern
DObserver Pattern
Lời giải
Đáp án đúng: A. Singleton Pattern bảo đảm một lớp chỉ có duy nhất một thể hiện trong toàn chương trình và cung cấp một điểm truy cập toàn cục tới thể hiện đó — đúng nguyên văn yêu cầu của câu hỏi. B sai vì Factory lo việc tạo đối tượng mà không lộ lớp cụ thể, không giới hạn số lượng thể hiện. C sai vì MVC là mẫu kiến trúc tách giao diện, dữ liệu và điều khiển. D sai vì Observer lo việc thông báo thay đổi tới nhiều đối tượng theo dõi.
Mở trang câu hỏi này →
ACall/Return pattern
BLayers of Abstraction pattern
CAsynchronous Message Communication pattern
DSynchronous Message Communication with Reply pattern
Lời giải
Đáp án đúng: B. Các mẫu kiến trúc được chia hai nhóm: mẫu CẤU TRÚC (architectural structure pattern) mô tả cách tổ chức các thành phần, và mẫu GIAO TIẾP (architectural communication pattern) mô tả cách các thành phần trao đổi thông điệp. Layers of Abstraction là mẫu cấu trúc — nó quy định hệ thống được tổ chức thành các tầng, tầng trên chỉ dùng dịch vụ của tầng dưới. A, C, D đều thuộc nhóm mẫu GIAO TIẾP: Call/Return là gọi hàm đồng bộ trong tiến trình, Asynchronous Message Communication là gửi thông điệp bất đồng bộ không chờ, Synchronous Message Communication with Reply là gửi thông điệp rồi chờ hồi đáp. Chúng nói về cách nói chuyện, không nói về cách xếp đặt cấu trúc.
Mở trang câu hỏi này →
AObserver Pattern
BStrategy Pattern
CState Pattern
DSingleton Pattern
Lời giải
Đáp án đúng: C. State Pattern sinh ra đúng cho tình huống này: hành vi của đối tượng thay đổi theo trạng thái nội tại, mỗi trạng thái được tách thành một lớp riêng, và đối tượng ngữ cảnh uỷ quyền lời gọi cho đối tượng trạng thái hiện hành — nên khi trạng thái đổi thì hành vi đổi theo ngay lúc chạy. B sai vì Strategy cũng hoán đổi hành vi lúc chạy nhưng do bên ngoài chọn thuật toán, không do trạng thái nội tại của đối tượng quyết định. A sai vì Observer giải quyết việc thông báo thay đổi cho nhiều bên quan tâm. D sai vì Singleton chỉ kiểm soát số lượng thể hiện của lớp, không liên quan tới hành vi thay đổi theo trạng thái.
Mở trang câu hỏi này →
AOnly the business layer can access the database.
BServices must communicate using REST.
CDevelopment teams should use asynchronous messaging between services to increase performance.
DThe system must be deployed on Linux servers.
Lời giải
Đáp án đúng: C. Nguyên tắc thiết kế (design principle) là hướng dẫn — nó định hướng đội phát triển nhưng vẫn để chỗ cho phán đoán trong từng tình huống. Câu "đội phát triển NÊN dùng nhắn tin bất đồng bộ giữa các dịch vụ để tăng hiệu năng" đúng dạng đó: một khuyến nghị có lý do, không phải mệnh lệnh tuyệt đối. A, B, D đều là QUYẾT ĐỊNH kiến trúc hoặc ràng buộc, không phải nguyên tắc: "chỉ tầng nghiệp vụ được truy cập cơ sở dữ liệu", "dịch vụ phải giao tiếp bằng REST", "hệ thống phải triển khai trên máy chủ Linux" đều là luật cứng, buộc phải tuân thủ, không có chỗ cho phán đoán. Dấu hiệu phân biệt nằm ở chữ "nên" so với "phải/chỉ".
Mở trang câu hỏi này →
Đi tiếp từ đây