Ngân hàng câu hỏi của chương

Câu hỏi: CSI106 - Phần 12: Ngôn ngữ lập trình và kỹ nghệ phần mềm

49 câu trắc nghiệm kèm lời giải của môn Introduction to Computer Science - CSI106, xếp theo thứ tự nhập vào ngân hàng. Trang 3/3 — câu 41–49.

Danh sách câu hỏi

49/49 câuHết danh sách
AClass diagram
BSequence diagram
CActivity diagram
DState diagram
Lời giải
Đáp án đúng: "Activity diagram". Lược đồ hoạt động vẽ dòng điều khiển bằng các nút hành động nối nhau bởi mũi tên, có nút quyết định để rẽ nhánh theo điều kiện và cho phép mũi tên quay lại để diễn tả vòng lặp, nên nó là lược đồ phù hợp nhất để mô tả logic bên trong một thuật toán. Phương án "Class diagram" chỉ mô tả cấu trúc tĩnh gồm các lớp, thuộc tính, phương thức và quan hệ giữa chúng, không diễn tả trình tự thi hành. Phương án "Sequence diagram" nhắm vào việc các đối tượng gửi thông điệp cho nhau theo thời gian; nó biểu diễn tương tác chứ không phải dòng điều khiển, và muốn vẽ vòng lặp phải mượn thêm khung đặc biệt. Phương án "State diagram" mô tả các trạng thái của một đối tượng và chuyển trạng thái theo sự kiện, góc nhìn khác hẳn.
Mở trang câu hỏi này →
A12
B14
C8
D10
Lời giải
Đáp án đúng: "12". Mô hình thác nước cho các pha chạy nối tiếp, pha sau chỉ bắt đầu khi pha trước kết thúc, nên tổng thời gian bằng số pha nhân thời gian mỗi pha. Câu dẫn liệt kê sáu pha gồm phân tích yêu cầu, thiết kế, hiện thực, kiểm thử, lập tài liệu và đánh giá; sáu pha nhân hai tuần cho 12 tuần. Phương án "14" ứng với bảy pha, tức đếm thêm một pha không có trong danh sách. Phương án "8" ứng với bốn pha, bỏ sót hai pha, thường do quên lập tài liệu và đánh giá. Phương án "10" ứng với năm pha, bỏ sót một pha; con số này chỉ đúng nếu các pha được chồng lấn hay gộp lại, nhưng câu dẫn đã nói rõ là không có chồng lấn.
Mở trang câu hỏi này →
ASource code
BUser documentation
CSoftware architecture diagram
DRequirements specification document
Lời giải
Đáp án đúng: "Requirements specification document". Pha phân tích trong vòng đời phát triển hệ thống đi tìm hiểu hệ thống phải làm gì cho ai, nên kết quả chính của nó là tài liệu đặc tả yêu cầu: bản ghi đầy đủ các yêu cầu chức năng và phi chức năng, trở thành căn cứ ràng buộc cho mọi pha về sau và cho cả việc kiểm thử. Phương án "Source code" là sản phẩm của pha hiện thực, chỉ viết được sau khi đã thiết kế xong. Phương án "User documentation" là tài liệu hướng dẫn cho người dùng cuối, sinh ra ở giai đoạn cuối khi hệ thống đã chạy được. Phương án "Software architecture diagram" thuộc pha thiết kế, vì sơ đồ kiến trúc trả lời câu hỏi hệ thống được tổ chức thế nào, còn phân tích chỉ trả lời hệ thống cần làm gì.
Mở trang câu hỏi này →
AProcedure-oriented design organizes the system around data, while object-oriented design organizes it around procedures.
BProcedure-oriented design organizes the system around procedures, while object-oriented design organizes it around objects.
CProcedure-oriented design uses classes, while object-oriented design uses functions.
DProcedure-oriented design is used only in Agile methodologies.
Lời giải
Đáp án đúng: "Procedure-oriented design organizes the system around procedures, while object-oriented design organizes it around objects.". Thiết kế hướng thủ tục chia hệ thống thành các hàm xử lý, dữ liệu được truyền qua lại giữa chúng; thiết kế hướng đối tượng thì gom dữ liệu cùng những hành vi tác động lên chính dữ liệu đó vào một đối tượng, và hệ thống là tập các đối tượng trao đổi thông điệp. Phương án "Procedure-oriented design organizes the system around data, while object-oriented design organizes it around procedures." đảo ngược đúng hai cách tổ chức. Phương án "Procedure-oriented design uses classes, while object-oriented design uses functions." cũng sai chiều, vì lớp là khái niệm của hướng đối tượng. Phương án "Procedure-oriented design is used only in Agile methodologies." lẫn hai thứ khác loại: Agile là quy trình phát triển, không quy định kiểu thiết kế, và lối thiết kế hướng thủ tục có từ rất lâu trước Agile.
Mở trang câu hỏi này →
AAbstraction
BEncapsulation
CModularity
DInheritance
Lời giải
Đáp án đúng: "Modularity". Tính mô-đun là nguyên tắc chia hệ thống lớn thành các khối nhỏ, mỗi khối có nhiệm vụ rõ ràng và giao diện xác định, nhờ đó mỗi khối có thể được hiểu, viết, kiểm thử và bảo trì gần như độc lập với phần còn lại. Phương án "Abstraction" là trừu tượng hoá: che chi tiết bên trong và chỉ phơi ra những gì cần biết để dùng, nó làm giảm độ phức tạp khi nhìn một đơn vị chứ không phải việc chia hệ thống thành nhiều đơn vị. Phương án "Encapsulation" là đóng gói dữ liệu cùng phương thức và chặn truy cập trực tiếp vào trạng thái bên trong, đó là tính chất của một đơn vị đã có. Phương án "Inheritance" là kế thừa, cơ chế để lớp con dùng lại và mở rộng lớp cha, phục vụ tái dùng mã chứ không phải phân rã hệ thống.
Mở trang câu hỏi này →
AIt directly executes the high-level code
BIt translates high-level code into machine language all at once
CIt translates and executes the code line by line
DIt optimizes the code for better performance
Lời giải
Đáp án đúng: "It translates high-level code into machine language all at once". Trình biên dịch đọc toàn bộ chương trình nguồn, kiểm tra cú pháp và ngữ nghĩa, rồi sinh ra mã máy cho cả chương trình trong một lần dịch; sau đó tệp kết quả chạy độc lập mà không cần tới trình biên dịch nữa. Phương án "It directly executes the high-level code" mô tả việc chạy thẳng mã nguồn, đó là vai của trình thông dịch hoặc máy ảo, còn trình biên dịch chỉ dịch rồi dừng. Phương án "It translates and executes the code line by line" chính là cách làm việc của trình thông dịch: dịch và chạy từng câu lệnh, nên lỗi chỉ lộ ra khi chạy tới dòng đó. Phương án "It optimizes the code for better performance" nói về một pha tuỳ chọn bên trong quá trình dịch; tối ưu là việc kèm thêm, không phải chức năng định danh của trình biên dịch.
Mở trang câu hỏi này →
47What is the main role of a compiler?4 lựa chọn
ATranslate source code into machine code
BOptimize hardware performance
CTranslate binary code into assembly
DExecute source code directly
Lời giải
Đáp án đúng: "Translate source code into machine code". Nhiệm vụ cốt lõi của trình biên dịch là chuyển chương trình viết bằng ngôn ngữ con người đọc được thành các lệnh mà bộ xử lý thực hiện trực tiếp, đi qua các bước phân tích từ vựng, phân tích cú pháp, phân tích ngữ nghĩa rồi sinh mã. Phương án "Optimize hardware performance" nhắm vào phần cứng, trong khi trình biên dịch chỉ làm việc với mã; nó có thể sinh mã tốt hơn nhưng không điều chỉnh thiết bị. Phương án "Translate binary code into assembly" là chiều ngược lại, công việc của trình dịch ngược dùng khi phân tích mã đã biên dịch. Phương án "Execute source code directly" là việc của trình thông dịch; trình biên dịch tạo ra tệp mã máy rồi kết thúc, việc chạy tệp đó là chuyện của hệ điều hành.
Mở trang câu hỏi này →
AFunctions and data are separate entities with no direct relationship.
BFunctions operate directly on data passed to them as parameters.
CFunctions encapsulate both data and behavior.
DData and functions are globally shared without restrictions.
Lời giải
Đáp án đúng: "Functions operate directly on data passed to them as parameters.". Trong mô hình lập trình thủ tục, chương trình là tập các hàm thực hiện từng nhiệm vụ, còn dữ liệu nằm riêng và được đưa vào hàm qua tham số; hàm nhận dữ liệu, biến đổi nó rồi trả kết quả, nên quan hệ giữa hàm và dữ liệu là quan hệ xử lý trực tiếp. Phương án "Functions and data are separate entities with no direct relationship." đúng ở chỗ hai thứ tách rời, nhưng sai khi nói không có quan hệ trực tiếp, vì hàm chính là thứ tác động lên dữ liệu đó. Phương án "Functions encapsulate both data and behavior." mô tả đối tượng trong mô hình hướng đối tượng, nơi dữ liệu và phương thức nằm cùng một gói. Phương án "Data and functions are globally shared without restrictions." biến một kỹ thuật dễ gây lỗi thành đặc trưng của mô hình, trong khi lập trình thủ tục vẫn có biến cục bộ và truyền tham số để giới hạn phạm vi.
Mở trang câu hỏi này →
AWeb development
BWriting operating systems
CPerforming mathematical and data analysis tasks
DBuilding relational databases
Lời giải
Đáp án đúng: "Performing mathematical and data analysis tasks". Lập trình hàm coi việc tính toán là áp dụng hàm lên giá trị, tránh trạng thái thay đổi và tác dụng phụ, nên mã rất gần cách viết công thức toán, dễ suy luận đúng sai và dễ chạy song song; vì vậy nó mạnh ở các bài toán tính toán, biến đổi và phân tích dữ liệu. Phương án "Web development" là việc làm được nhưng không phải thế mạnh định danh, lĩnh vực này lâu nay do các ngôn ngữ thủ tục và hướng đối tượng cùng bộ khung của chúng chiếm phần lớn. Phương án "Writing operating systems" cần kiểm soát bộ nhớ, thanh ghi và thiết bị ở mức rất thấp, đó là đất của ngôn ngữ hệ thống như hợp ngữ hoặc C. Phương án "Building relational databases" thuộc về mô hình khai báo với ngôn ngữ truy vấn chuyên dụng, không phải điểm mạnh của lập trình hàm.
Mở trang câu hỏi này →