CSI106Chưa đoKỳ 1Cơ sở ngành Cập nhật 2 ngày trước

Introduction to Computer Science - CSI106

Khoa học máy tính bắt đầu từ một câu hỏi đơn giản đến bất ngờ: làm sao một cỗ máy chỉ phân biệt được hai trạng thái lại xử lý nổi văn bản, hình ảnh, âm thanh và cả những suy luận phức tạp? CSI106 trả lời bằng cách đi dọc chiều sâu của một hệ máy tính, từ tầng bit lên tới tầng ứng dụng, để thấy rõ mỗi tầng được dựng trên tầng dưới nó ra sao. Chặng đầu là chuyện biểu diễn: quy số, chữ, ảnh và âm thanh về những dãy bit, các quy ước xử lý số âm và số có phần lẻ, rồi những phép toán logic tác động lên từng bit một. Chặng giữa bước vào cỗ máy thật — bộ xử lý, phân cấp bộ nhớ, đường truyền nối chúng — và vào lớp phần mềm điều phối tất cả, nơi hệ điều hành chia bộ nhớ, sắp lịch cho tiến trình và tạo ra ảo giác rằng nhiều chương trình đang chạy cùng lúc. Chặng sau mở ra ngoài phạm vi một máy đơn lẻ: nhiều máy nối nhau thành mạng theo lối phân tầng, khối dữ liệu lớn được tổ chức thành cơ sở dữ liệu quan hệ, và thông tin trên đường truyền được che bằng mã hoá. Xen giữa là bộ công cụ để viết phần mềm: cấu trúc dữ liệu, giải thuật cùng cách ước lượng chi phí chạy, các hệ hình ngôn ngữ lập trình, và quy trình làm phần mềm như một nghề có kỷ luật. Chặng cuối chạm tới trí tuệ nhân tạo cùng những ràng buộc pháp lý và đạo đức đi kèm. Cái môn này để lại là một tấm bản đồ, có trước khi người học đi sâu vào bất kỳ hướng nào. Sau đó, một dãy bit lạ, một thông báo lỗi mạng, một truy vấn chạy ì ạch hay một đoạn mã khó sửa đều thôi còn là hộp đen: người học biết hiện tượng nằm ở tầng nào, chịu ràng buộc gì, và nên tra tiếp ở đâu. Đó cũng là nền để bước tiếp vào những môn hẹp hơn về lập trình, hệ thống, mạng hay dữ liệu mà không phải quay lại học lại các khái niệm gốc.

359Câu hỏi
8Bộ đề
13Chủ đề

Câu hỏi của môn

324/359 câuCòn 35
ATo ensure each tuple can be uniquely identified
BTo allow multiple tuples to have identical values for all attributes
CTo reduce the number of attributes in a relation
DTo link the relation to the conceptual schema
Lời giải
Đáp án đúng: "To ensure each tuple can be uniquely identified". Khoá chính là thuộc tính hoặc tập thuộc tính mà giá trị của nó không trùng nhau và không rỗng, nên mỗi bộ trong quan hệ được chỉ đích danh bằng đúng một giá trị khoá; đây cũng là điều kiện để các quan hệ khác tham chiếu tới nó qua khoá ngoại. Phương án "To allow multiple tuples to have identical values for all attributes" ngược hẳn mục đích: khoá chính tồn tại để chặn hai bộ trùng nhau. Phương án "To reduce the number of attributes in a relation" không đúng vì số thuộc tính do thiết kế lược đồ quyết định, đặt khoá không bỏ đi thuộc tính nào. Phương án "To link the relation to the conceptual schema" lẫn sang kiến trúc nhiều mức: việc ánh xạ giữa các mức lược đồ do hệ quản trị đảm nhiệm, còn nối các quan hệ với nhau là việc của khoá ngoại.
Mở trang câu hỏi này →
ASQL
BJava
CPython
DC++
Lời giải
Đáp án đúng: "SQL". SQL là ngôn ngữ truy vấn có cấu trúc dành riêng cho cơ sở dữ liệu quan hệ, được ANSI và ISO chuẩn hoá, nên các hệ quản trị khác nhau vẫn hiểu một tập lệnh nền chung để định nghĩa lược đồ và thao tác dữ liệu. Phương án "Java" là ngôn ngữ lập trình đa dụng chạy trên máy ảo; nó nói chuyện với cơ sở dữ liệu bằng cách gửi câu lệnh SQL qua thư viện kết nối, chứ bản thân không phải ngôn ngữ truy vấn. Phương án "Python" cũng vậy: một ngôn ngữ lập trình thông dịch, truy cập dữ liệu thông qua thư viện. Phương án "C++" là ngôn ngữ hệ thống có chuẩn ISO, nhưng chuẩn đó dành cho ngôn ngữ lập trình, không liên quan tới việc mô tả và truy vấn dữ liệu quan hệ.
Mở trang câu hỏi này →
AHardware
BSoftware
CNetwork
DData
Lời giải
Đáp án đúng: "Network". Một hệ quản trị cơ sở dữ liệu được mô tả gồm phần cứng, phần mềm, dữ liệu, người dùng và các thủ tục vận hành; mạng chỉ là hạ tầng truyền tải khi muốn truy cập từ xa, và một hệ quản trị chạy trên đúng một máy vẫn đầy đủ chức năng mà không cần mạng. Phương án "Hardware" là thành phần thật: máy và thiết bị lưu trữ nơi dữ liệu nằm và được xử lý. Phương án "Software" cũng là thành phần: bản thân hệ quản trị cùng các tiện ích định nghĩa lược đồ, truy vấn, sao lưu. Phương án "Data" là thành phần trung tâm, gồm cả dữ liệu nghiệp vụ và siêu dữ liệu mô tả lược đồ, vì chính nó là thứ mà cả hệ thống được dựng lên để quản lý.
Mở trang câu hỏi này →
A2
B3
C4
D5
Lời giải
Đáp án đúng: "3". Kiến trúc ANSI/SPARC chia cách nhìn cơ sở dữ liệu thành ba mức: mức trong mô tả dữ liệu được lưu trữ vật lý thế nào, mức khái niệm mô tả toàn bộ lược đồ logic của tổ chức, mức ngoài là các khung nhìn riêng của từng nhóm người dùng. Ba mức này tạo ra tính độc lập dữ liệu: đổi cách lưu ở mức trong không buộc phải sửa ứng dụng ở mức ngoài. Phương án "2" thiếu mức khái niệm, tức bỏ mất lớp đệm làm nên tính độc lập dữ liệu. Phương án "4" thêm một mức không có trong mô hình này. Phương án "5" càng xa, vì không có mức thứ tư hay thứ năm nào được định nghĩa trong kiến trúc ba mức.
Mở trang câu hỏi này →
AA construct
BA recursion
CAn iteration
DAn algorithm
Lời giải
Đáp án đúng: "An algorithm". Định nghĩa của giải thuật gồm đúng những điều kiện nêu trong câu: một dãy hữu hạn các bước có thứ tự, mỗi bước rõ ràng không gây hiểu hai nghĩa, cho ra kết quả và kết thúc sau thời gian hữu hạn. Phương án "A construct" chỉ là cấu trúc điều khiển như tuần tự, rẽ nhánh, lặp; đó là viên gạch để xây giải thuật chứ không phải cả lời giải. Phương án "A recursion" là đệ quy, một cách định nghĩa lời giải bằng cách gọi lại chính nó; nó là kỹ thuật, và nếu thiếu điều kiện dừng thì còn chẳng kết thúc. Phương án "An iteration" là một vòng lặp hoặc một lần lặp, bản thân nó không bảo đảm sinh ra kết quả và dừng, nên không thể là định nghĩa của giải thuật.
Mở trang câu hỏi này →
Đề bài
{
if (score ≥ 70)
grade ← “pass”
else
grade ← “nopass”
return grade
}
APseudocode
BFlowchart
CDecision Table
DData Structure Diagram
Lời giải
Đáp án đúng: "Pseudocode". Đoạn đã cho viết bằng chữ theo khuôn mẫu giải thuật quen thuộc: có tên, mục đích, điều kiện trước, điều kiện sau, giá trị trả về, rồi thân chứa cấu trúc rẽ nhánh if và else với phép gán bằng mũi tên. Đó chính là mã giả: diễn đạt giải thuật bằng ngôn ngữ gần tiếng người nhưng có cấu trúc như mã, không ràng buộc cú pháp của ngôn ngữ lập trình nào. Phương án "Flowchart" là lưu đồ, biểu diễn bằng các khối hình học nối bằng mũi tên, trong đoạn trên không có hình vẽ nào. Phương án "Decision Table" là bảng quyết định, liệt kê các tổ hợp điều kiện theo cột và hành động tương ứng theo dòng. Phương án "Data Structure Diagram" mô tả tổ chức của dữ liệu và quan hệ giữa các thành phần dữ liệu, không mô tả trình tự xử lý.
Mở trang câu hỏi này →
ATo encode and decode data
BTo deliver data end-to-end and provide error control
CTo assign IP addresses
DTo handle physical transmission media
Lời giải
Đáp án đúng: "To deliver data end-to-end and provide error control". Tầng vận chuyển trong mô hình TCP/IP làm việc giữa hai tiến trình ở hai đầu: nó gắn số hiệu cổng để giao đúng ứng dụng, chia và ghép dữ liệu, và với TCP thì bảo đảm tin cậy bằng đánh số thứ tự, báo nhận, phát lại khi mất và kiểm soát luồng. Phương án "To encode and decode data" nói về chuyển đổi cách biểu diễn dữ liệu, việc này do ứng dụng lo, tương ứng tầng trình diễn trong mô hình OSI. Phương án "To assign IP addresses" thuộc tầng Internet về mặt đánh địa chỉ, còn việc cấp phát địa chỉ là nhiệm vụ của dịch vụ cấu hình như DHCP. Phương án "To handle physical transmission media" là chuyện đường truyền và tín hiệu, thuộc tầng truy nhập mạng ở dưới cùng.
Mở trang câu hỏi này →
AFOR loop
BWHILE loop
CIF statement
DSWITCH statement
Lời giải
Đáp án đúng: "WHILE loop". Vòng lặp while kiểm tra một điều kiện trước mỗi lần lặp và còn lặp lại thân của nó chừng nào điều kiện còn thoả, nên nó là cấu trúc dành cho trường hợp không biết trước số lần lặp mà chỉ biết khi nào thì phải dừng. Phương án "FOR loop" cũng lặp, nhưng được dùng khi số lần lặp xác định được qua một biến đếm chạy trên khoảng đã biết, chứ không phải lặp cho tới khi một điều kiện xảy ra. Phương án "IF statement" chỉ rẽ nhánh một lần, chọn chạy khối này hay khối kia, hoàn toàn không quay lại. Phương án "SWITCH statement" chọn một trong nhiều nhánh theo giá trị của một biểu thức, cũng là cấu trúc rẽ nhánh nên không tạo ra sự lặp lại nào.
Mở trang câu hỏi này →
AProcess Left subtree → Right subtree → Root
BProcess Root → Left subtree → Right subtree
CProcess Root → Right subtree → Left subtree
DProcess Right subtree → Root → Left subtree
Lời giải
Đáp án đúng: "Process Left subtree → Right subtree → Root". Trong ba cách duyệt theo chiều sâu, tên gọi được đặt theo vị trí của gốc: duyệt sau nghĩa là gốc được xử lý sau cùng, nên trình tự là đi hết cây con trái, rồi cây con phải, cuối cùng mới tới gốc. Cách này hữu ích khi phải xử lý các con trước cha, chẳng hạn giải phóng cây hoặc tính giá trị một cây biểu thức. Phương án "Process Root → Left subtree → Right subtree" là duyệt trước, vì gốc được xử lý đầu tiên. Phương án "Process Root → Right subtree → Left subtree" là duyệt trước theo chiều đảo, gốc vẫn đi đầu nên không phải duyệt sau. Phương án "Process Right subtree → Root → Left subtree" đặt gốc ở giữa, đó là duyệt giữa theo chiều đảo, cho dãy giảm dần trên cây tìm kiếm nhị phân.
Mở trang câu hỏi này →
A7
B4
C8
D10
Lời giải
Đáp án đúng: "7". Trong cây nhị phân, mỗi nút có nhiều nhất hai con, nên mức thứ nhất chứa tối đa một nút, mức thứ hai tối đa hai nút, mức thứ ba tối đa bốn nút; tổng cộng là 1 cộng 2 cộng 4 bằng 7. Tổng quát, cây đầy có n mức chứa tối đa 2 lũy thừa n trừ 1 nút, với n bằng 3 thì ra 8 trừ 1 bằng 7. Phương án "4" chỉ là số nút tối đa của riêng mức thứ ba, bỏ quên gốc và mức giữa. Phương án "8" là 2 lũy thừa 3, tức số nút tối đa của mức thứ tư nếu cây có thêm một mức, hoặc do dùng công thức mà quên trừ một. Phương án "10" không ứng với tổng nào trong cây nhị phân ba mức, nó chỉ là một số lớn hơn giới hạn thật.
Mở trang câu hỏi này →
AEach node has at most two subtrees, called left and right.
BEvery node must have exactly two children and each must be a prime number.
CA binary tree is only used in graphical user interfaces for drawing.
DEvery leaf connects to every other node via hidden arcs.
Lời giải
Đáp án đúng: "Each node has at most two subtrees, called left and right.". Theo định nghĩa kiểu dữ liệu trừu tượng, cây nhị phân là cây mà mỗi nút có nhiều nhất hai cây con, và hai cây con đó được phân biệt rõ thành cây con trái và cây con phải; chính việc phân biệt trái phải làm cây nhị phân khác với cây tổng quát có hai con. Phương án "Every node must have exactly two children and each must be a prime number." sai hai chỗ: nút được phép có không, một hoặc hai con, và giá trị chứa trong nút không hề bị buộc phải là số nguyên tố. Phương án "A binary tree is only used in graphical user interfaces for drawing." sai về công dụng, vì cây nhị phân là cấu trúc dữ liệu dùng cho tìm kiếm, sắp xếp, biểu diễn biểu thức, mã nén. Phương án "Every leaf connects to every other node via hidden arcs." mô tả một đồ thị dày cung, trong khi cây chỉ có đúng một đường đi từ gốc tới mỗi nút và không có cung ẩn nào.
Mở trang câu hỏi này →
Alink
Bnode
Carray
Ddata
Lời giải
Đáp án đúng: "link". Mỗi phần tử của danh sách liên kết gồm hai phần: phần dữ liệu giữ giá trị, và phần liên kết giữ địa chỉ của phần tử kế tiếp; nhờ phần liên kết này mà các phần tử nằm rải rác trong bộ nhớ vẫn xâu được thành một chuỗi theo thứ tự logic. Phương án "node" là nút, tức cả gói gồm dữ liệu cộng liên kết, nên nó là vật chứa con trỏ chứ không phải bản thân con trỏ. Phương án "array" là mảng, cấu trúc lưu các phần tử liền kề nhau và định vị bằng chỉ số, chính là lựa chọn đối lập với danh sách liên kết nên không thể là thành phần của nó. Phương án "data" là phần dữ liệu trong nút, nơi giữ nội dung của phần tử, hoàn toàn không mang thông tin về vị trí phần tử sau.
Mở trang câu hỏi này →
APre-order traversal
BIn-order traversal
CPost-order traversal
DLevel-order traversal
Lời giải
Đáp án đúng: "In-order traversal". Duyệt giữa đi cây con trái trước, rồi xử lý gốc, rồi đi cây con phải. Trên cây tìm kiếm nhị phân, mọi khoá ở cây con trái nhỏ hơn khoá ở gốc và mọi khoá ở cây con phải lớn hơn, nên trình tự này lấy ra các khoá theo đúng thứ tự tăng dần. Phương án "Pre-order traversal" xử lý gốc trước khi xuống con, nên dãy thu được bám theo hình dạng cây và dùng để sao chép hay lưu lại cấu trúc, không hề được sắp. Phương án "Post-order traversal" để gốc sau cùng, phù hợp khi cần xong việc với các con trước, như giải phóng bộ nhớ hoặc tính cây biểu thức. Phương án "Level-order traversal" đi theo từng mức bằng hàng đợi, cho thứ tự theo độ sâu của nút chứ không theo quan hệ lớn nhỏ giữa các khoá.
Mở trang câu hỏi này →
A1
B2
C3
DAny number of children
Lời giải
Đáp án đúng: "2". Giới hạn hai con là chính điều làm nên tên gọi cây nhị phân: mỗi nút được phép có không con, một con hoặc nhiều nhất hai con, và nếu có hai thì phân biệt thành con trái và con phải. Phương án "1" là một trường hợp được phép xảy ra chứ không phải mức tối đa; cây mà mọi nút chỉ có một con thì suy biến thành một chuỗi giống danh sách liên kết. Phương án "3" ứng với cây tam phân, một dạng cây nhiều nhánh khác, không còn là cây nhị phân. Phương án "Any number of children" mô tả cây tổng quát, nơi số con của mỗi nút không bị chặn; cây nhị phân chính là trường hợp riêng được đặt thêm ràng buộc để các giải thuật duyệt và tìm kiếm trở nên đơn giản và hiệu quả.
Mở trang câu hỏi này →
AAs text strings: sequences of characters representing the numerical value
BUsing ASCII codes: numerical representations of characters, not the integers themselves
CAs binary patterns: sequences of 0s and 1s corresponding to the binary representation of the integer
DAs hexadecimal values: a compact representation of binary patterns using base-16 notation
Lời giải
Đáp án đúng: "As binary patterns: sequences of 0s and 1s corresponding to the binary representation of the integer". Bộ nhớ máy tính chỉ chứa các bit, nên một số nguyên được lưu bằng chính mẫu bit biểu diễn giá trị của nó trong hệ hai, thường trên một số bit cố định và dùng cách biểu diễn bù hai nếu cần dấu; nhờ vậy mạch số học cộng trừ trực tiếp trên mẫu bit đó. Phương án "As text strings: sequences of characters representing the numerical value" là cách lưu văn bản, mỗi chữ số chiếm một mã ký tự riêng và không tính toán số học được ngay. Phương án "Using ASCII codes: numerical representations of characters, not the integers themselves" tự nói ra điểm sai của nó: mã ASCII là mã của ký tự, không phải giá trị số. Phương án "As hexadecimal values: a compact representation of binary patterns using base-16 notation" chỉ là cách con người viết gọn mẫu bit cho dễ đọc, bên trong máy vẫn là các bit không và một.
Mở trang câu hỏi này →
A1110 0000
B0001 1111
C1110 0111
D0000 0111
Lời giải
Đáp án đúng: "1110 0000". Muốn bật ba bit ngoài cùng bên trái lên 1 mà không làm xáo trộn các bit còn lại, ta lấy mẫu gốc OR với một mặt nạ có đúng ba bit cao bằng 1 và năm bit thấp bằng 0, vì OR với 1 luôn cho 1 còn OR với 0 giữ nguyên bit cũ. Áp dụng với 1010 0111 thì kết quả là 1110 0111, đúng như mong muốn. Phương án "0001 1111" làm ngược: ba bit cao bằng 0 nên không bật được chúng, trong khi năm bit thấp lại bị ép thành 1. Phương án "1110 0111" có ba bit cao đúng nhưng ba bit thấp bằng 1 sẽ bật thêm những bit đáng ra phải để nguyên, nên nó là kết quả chứ không phải mặt nạ. Phương án "0000 0111" chỉ tác động vào ba bit thấp và không chạm tới ba bit cao cần bật.
Mở trang câu hỏi này →
Abitmap
Bvector
Cquantized
Dbinary
Lời giải
Đáp án đúng: "bitmap". Ảnh dạng bitmap được lưu thành một lưới điểm ảnh với màu của từng điểm, nên số điểm là cố định; khi phóng to, máy phải nhân bản hoặc nội suy điểm ảnh, làm mép hình thành bậc răng cưa và chi tiết trông vỡ hạt. Phương án "vector" ngược lại: ảnh được mô tả bằng các đối tượng hình học cùng tham số, nên phóng ở tỉ lệ nào cũng vẽ lại mịn mà không mất nét. Phương án "quantized" không phải một phương pháp biểu diễn ảnh; lượng tử hoá là bước làm tròn giá trị mẫu thành một tập mức hữu hạn trong quá trình số hoá tín hiệu. Phương án "binary" nói về dạng mã hoá chung của mọi dữ liệu trong máy, cả ảnh bitmap lẫn ảnh vector đều được lưu dưới dạng nhị phân, nên nó không phân biệt được hai cách biểu diễn.
Mở trang câu hỏi này →
A3072 kbps
B3072 bps
C12 kbps
D12 bps
Lời giải
Đáp án đúng: "3072 kbps". Tốc độ bit của âm thanh số hoá bằng tần số lấy mẫu nhân với số bit mỗi mẫu. Ở đây tần số lấy mẫu là 192 kHz, tức 192 000 mẫu mỗi giây, mỗi mẫu dùng 16 bit, nên mỗi giây sinh ra 192 000 nhân 16 bằng 3 072 000 bit, viết gọn là 3072 kbps. Phương án "3072 bps" đúng con số nhưng sai đơn vị một nghìn lần: 3072 bit mỗi giây còn chưa đủ cho một kênh thoại chất lượng thấp. Phương án "12 kbps" là kết quả của phép chia 192 cho 16 thay vì nhân, tức làm sai bản chất công thức. Phương án "12 bps" sai cả phép tính lẫn đơn vị, cho ra một tốc độ nhỏ đến mức vô nghĩa với âm thanh.
Mở trang câu hỏi này →
AOperations that change the data type of a bit pattern.
BOperations that apply the same basic operation on individual bits of a pattern, or on two corresponding bits in two patterns.
COperations that physically move bit patterns between memory locations.
DOperations that perform mathematical calculations on entire bit patterns as a whole
Lời giải
Đáp án đúng: "Operations that apply the same basic operation on individual bits of a pattern, or on two corresponding bits in two patterns.". Các phép logic như NOT, AND, OR, XOR làm việc ở mức từng bit: NOT đảo mỗi bit của một mẫu, còn AND, OR, XOR ghép từng cặp bit cùng vị trí của hai mẫu, và kết quả tại một vị trí không phụ thuộc các vị trí khác. Phương án "Operations that change the data type of a bit pattern." nói về việc diễn giải lại mẫu bit ở mức ngôn ngữ lập trình, không phải một phép tính trên bit. Phương án "Operations that physically move bit patterns between memory locations." mô tả các lệnh nạp và chuyển dữ liệu, chúng dịch chuyển nội dung chứ không biến đổi nó. Phương án "Operations that perform mathematical calculations on entire bit patterns as a whole" là phép số học: nó coi mẫu bit như một con số và có nhớ lan từ bit thấp lên bit cao, khác hẳn tính độc lập theo từng bit của phép logic.
Mở trang câu hỏi này →
AThe left shift operation is used to divide an integer by two
BThe right shift operation is used to multiply an integer by two
CThe left shift operation is used to multiply an integer by two
DNone of the other options are correct
Lời giải
Đáp án đúng: "The left shift operation is used to multiply an integer by two". Trong biểu diễn nhị phân, trọng số của mỗi vị trí là một lũy thừa của hai, nên dịch toàn bộ mẫu bit sang trái một vị trí và thêm 0 vào bên phải sẽ làm mỗi bit mang trọng số gấp đôi, tức giá trị của số nhân hai, miễn là không bị tràn. Phương án "The left shift operation is used to divide an integer by two" nhận đúng phép dịch nhưng gán sai tác dụng, vì dịch trái làm số lớn lên chứ không nhỏ đi. Phương án "The right shift operation is used to multiply an integer by two" cũng lộn chiều: dịch phải hạ trọng số của từng bit, nên tương ứng với phép chia hai, và bit bị đẩy ra ngoài chính là phần dư bị bỏ. Phương án "None of the other options are correct" không thể chọn, vì đã có một phát biểu nêu đúng quan hệ giữa dịch trái và phép nhân hai.
Mở trang câu hỏi này →