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

204/359 câuCòn 155
APython
BProlog
CSQL
DJava
Lời giải
Đáp án đúng: "Prolog". Mô thức khai báo dựa trên logic vị từ: người lập trình nêu các sự kiện và luật suy diễn, còn máy tự tìm cách trả lời truy vấn thay vì được chỉ dẫn từng bước, và Prolog là ngôn ngữ tiêu biểu của mô thức này. "SQL" cũng mang tinh thần khai báo vì ta mô tả kết quả muốn có chứ không mô tả cách lấy, nhưng nó là ngôn ngữ truy vấn chuyên dụng cho cơ sở dữ liệu, không phải ngôn ngữ lập trình đa dụng được xếp vào bảng bốn mô thức, nên trong cách phân loại này nó không được chọn. "Python" là ngôn ngữ mệnh lệnh đa mô thức, chủ yếu thủ tục và hướng đối tượng, chương trình là dãy lệnh làm thay đổi trạng thái. "Java" là ngôn ngữ hướng đối tượng thuần mệnh lệnh, mọi việc đều phải viết rõ từng bước trong thân phương thức.
Mở trang câu hỏi này →
ADividing memory into variable-sized partitions.
BKeeping only the essential parts of a program in the main memory to optimizing start time.
CDividing both memory and programs into fixed-size blocks.
DSwapping entire processes between memory and disk.
Lời giải
Đáp án đúng: "Dividing both memory and programs into fixed-size blocks.". Phân trang chia bộ nhớ chính thành các frame có kích thước bằng nhau và chia chương trình thành các page cùng kích thước đó, nhờ vậy page nào cũng nạp được vào frame trống bất kỳ và chương trình không cần một vùng nhớ liền mạch. "Dividing memory into variable-sized partitions." là mô tả của kỹ thuật phân vùng hay phân đoạn, nơi mỗi khối có kích thước riêng theo nhu cầu và sinh ra phân mảnh ngoài. "Keeping only the essential parts of a program in the main memory to optimizing start time." là mô tả của phân trang theo yêu cầu, một cải tiến dựng trên phân trang chứ không phải định nghĩa của chính phân trang. "Swapping entire processes between memory and disk." là cơ chế hoán chuyển toàn bộ tiến trình, đưa cả chương trình ra đĩa rồi nạp lại, trong khi phân trang làm việc ở mức từng khối nhỏ.
Mở trang câu hỏi này →
APascal
BPascaline
CABC
DEDVAC
Lời giải
Đáp án đúng: "EDVAC". EDVAC là máy tính đầu tiên được thiết kế theo nguyên lý chương trình lưu trữ mà von Neumann trình bày trong bản thảo năm 1945, tức lệnh và dữ liệu cùng nằm trong bộ nhớ. "Pascal" không phải máy tính mà là tên một ngôn ngữ lập trình, đặt theo tên nhà toán học Blaise Pascal. "Pascaline" là máy tính cơ khí cộng trừ do Pascal chế tạo ở thế kỷ mười bảy, nó không có bộ nhớ chương trình và chỉ làm được phép tính cố định. "ABC" là máy tính điện tử của Atanasoff cùng Berry, dùng để giải hệ phương trình, nhưng chương trình nằm trong cách đấu nối phần cứng nên nó không thuộc mô hình chương trình lưu trữ.
Mở trang câu hỏi này →
A(B6)₁₆
B(B5)₁₆
C(A6)₁₆
D(C5)₁₆
Lời giải
Đáp án đúng: "(B6)₁₆". Chuyển nhị phân sang hệ mười sáu chỉ cần tách dãy bit thành từng nhóm bốn bit tính từ phải sang, ở đây là 1011 và 0110. Nhóm 1011 có giá trị 11, ký hiệu hệ mười sáu của 11 là chữ B; nhóm 0110 có giá trị 6, nên ghép lại được chữ B rồi chữ số 6. "(B5)₁₆" sai ở nhóm thấp, vì chữ số 5 ứng với 0101 chứ không phải 0110. "(A6)₁₆" sai ở nhóm cao, vì chữ A ứng với 1010 trong khi dãy đã cho là 1011. "(C5)₁₆" sai cả hai nhóm, vì chữ C ứng với 1100 và chữ số 5 ứng với 0101, hoàn toàn khác mẫu bit ban đầu. Cách kiểm nhanh là tính giá trị thập phân: mẫu bit đã cho bằng 182, đúng bằng 11 nhân 16 cộng 6.
Mở trang câu hỏi này →
ATo encrypt the message for secure transmission
BTo verify the integrity and authenticity of the message
CTo compress the message for efficient storage
DTo generate a unique identifier for the message
Lời giải
Đáp án đúng: "To verify the integrity and authenticity of the message". Mã xác thực thông điệp được tính từ nội dung thông điệp cộng với một khoá bí mật mà hai bên cùng giữ; bên nhận tính lại giá trị đó rồi so sánh, trùng nhau nghĩa là thông điệp không bị sửa trên đường truyền và đúng do người giữ khoá tạo ra. "To encrypt the message for secure transmission" sai vì che giấu nội dung là việc của mã hoá; thông điệp đi kèm mã xác thực vẫn có thể ở dạng rõ, ai bắt được cũng đọc được. "To compress the message for efficient storage" sai vì tuy mã xác thực ngắn và có độ dài cố định, không cách nào khôi phục thông điệp gốc từ nó, nên nó không phải một dạng nén. "To generate a unique identifier for the message" sai vì mục đích ở đây không phải đặt tên hay định danh thông điệp; một hàm băm không khoá cũng tạo được dấu vân tay, nhưng khi đó kẻ sửa thông điệp sẽ tính lại được dấu vân tay mới, điều mà khoá bí mật ngăn lại.
Mở trang câu hỏi này →
AHard drive, monitor, keyboard, mouse
BMemory, ALU, control unit, I/O subsystem
CCompiler, operating system, application software, data
DProcessor, network card, graphics card, power supply
Lời giải
Đáp án đúng: "Memory, ALU, control unit, I/O subsystem". Mô hình von Neumann định nghĩa bốn khối chức năng: bộ nhớ lưu lệnh và dữ liệu, đơn vị số học và logic thực hiện phép tính, đơn vị điều khiển điều phối hoạt động, và phân hệ vào ra trao đổi dữ liệu với bên ngoài. "Hard drive, monitor, keyboard, mouse" chỉ là các thiết bị cụ thể của một máy thương mại; ổ cứng thuộc lưu trữ, còn màn hình, bàn phím và chuột đều nằm trong phân hệ vào ra. "Compiler, operating system, application software, data" liệt kê các thành phần phần mềm, trong khi mô hình này nói về tổ chức phần cứng của máy tính. "Processor, network card, graphics card, power supply" trộn linh kiện bán lẻ với bộ nguồn; nguồn điện chỉ cấp năng lượng, không tham gia xử lý hay lưu trữ thông tin nên không thể là một khối chức năng của mô hình.
Mở trang câu hỏi này →
AProcedural programming uses functions, while object-oriented programming uses loops.
BObject-oriented programming organizes code into objects, while procedural programming uses a linear sequence of instructions.
CProcedural programming supports inheritance, while object-oriented programming does not.
DObject-oriented programming does not allow code reuse, while procedural programming does.
Lời giải
Đáp án đúng: "Object-oriented programming organizes code into objects, while procedural programming uses a linear sequence of instructions.". Khác biệt cốt lõi nằm ở cách tổ chức mã: hướng đối tượng gom dữ liệu cùng các phép tác động lên dữ liệu đó vào trong đối tượng, còn thủ tục nhìn chương trình như một dãy lệnh và lời gọi hàm thi hành tuần tự trên dữ liệu rời bên ngoài. "Procedural programming uses functions, while object-oriented programming uses loops." sai vì vòng lặp là cấu trúc điều khiển có mặt ở mọi mô thức, và hướng đối tượng cũng dùng hàm dưới dạng phương thức. "Procedural programming supports inheritance, while object-oriented programming does not." sai vì nói ngược: kế thừa là đặc trưng riêng của hướng đối tượng, lập trình thủ tục không có cơ chế đó. "Object-oriented programming does not allow code reuse, while procedural programming does." sai vì hướng đối tượng tái dùng mã mạnh hơn nhờ kế thừa và đa hình.
Mở trang câu hỏi này →
AIt focuses on coding individual functions and procedures.
BIt defines the overall structure and organization of the software system.
CIt is a tool for project management.
DIt involves testing the software against user requirements.
Lời giải
Đáp án đúng: "It defines the overall structure and organization of the software system.". Kiến trúc phần mềm là bản mô tả ở mức cao về cấu trúc tổng thể của hệ thống: có những module hay thành phần nào, mỗi thành phần chịu trách nhiệm gì và chúng nối với nhau ra sao. Đây là loại quyết định rất khó sửa về sau nên phải chốt ngay trong pha thiết kế. "It focuses on coding individual functions and procedures." sai vì viết mã cho từng hàm, từng thủ tục là công việc ở mức chi tiết của pha cài đặt, nằm dưới mức kiến trúc. "It is a tool for project management." sai vì kiến trúc là sản phẩm thiết kế kỹ thuật, không phải công cụ lập kế hoạch hay theo dõi tiến độ dự án. "It involves testing the software against user requirements." sai vì đối chiếu sản phẩm với yêu cầu người dùng là việc của pha kiểm thử và nghiệm thu, diễn ra sau khi đã có mã chạy được.
Mở trang câu hỏi này →
AENIAC
BUNIVAC
CIBM PC
DApple I
Lời giải
Đáp án đúng: "ENIAC". ENIAC hoàn thành năm 1946 là máy tính điện tử đa dụng đầu tiên, dùng đèn điện tử thay cho cơ cấu cơ khí và lập trình được cho nhiều loại bài toán khác nhau, dù việc lập trình phải làm bằng cách cắm lại dây và đặt công tắc. "UNIVAC" ra sau, năm 1951, và điểm đáng nhớ của nó là máy tính thương mại đầu tiên được bán cho khách hàng chứ không phải máy điện tử đa dụng đầu tiên. "IBM PC" là máy vi tính cá nhân do hãng IBM đưa ra năm 1981, cách ENIAC ba mươi lăm năm. "Apple I" là máy vi tính do Steve Wozniak làm năm 1976, cũng thuộc thời kỳ vi xử lý nên không thể là máy đầu tiên.
Mở trang câu hỏi này →
AWhen the target is found or the end of the list is reached
BWhen the middle of the list is reached
CWhen largest element of the list is found
DNone of the other answers
Lời giải
Đáp án đúng: "When the target is found or the end of the list is reached". Tìm kiếm tuần tự so khoá cần tìm với từng phần tử theo thứ tự xuất hiện, nên chỉ có hai lý do để dừng: hoặc đã gặp phần tử trùng khoá, hoặc đã đi hết danh sách mà không gặp và khi đó kết luận khoá không tồn tại. "When the middle of the list is reached" sai vì mốc giữa danh sách là cách làm của tìm kiếm nhị phân, thuật toán chia đôi vùng tìm và chỉ áp dụng được trên danh sách đã sắp. "When largest element of the list is found" sai vì phần tử lớn nhất không có vai trò gì ở đây; danh sách tìm tuần tự có thể chưa sắp nên gặp phần tử lớn nhất cũng không cho biết phần còn lại không chứa khoá. "None of the other answers" sai vì đã có một mô tả đúng điều kiện dừng nên không thể chọn cách phủ định tất cả.
Mở trang câu hỏi này →
A32
B12
C20
D28
Lời giải
Đáp án đúng: "32". Bộ nhớ cần cấp bằng tổng kích thước các biến đã khai báo: năm biến nguyên, mỗi biến 4 byte, cho 20 byte; ba biến thực, mỗi biến 4 byte, cho 12 byte; cộng lại là 32 byte. "20" chỉ là phần của năm biến nguyên, bỏ sót toàn bộ các biến thực. "12" chỉ là phần của ba biến thực, bỏ sót các biến nguyên. "28" là kết quả khi đếm thiếu một biến, tức chỉ cộng bảy biến thay vì tám. Điều dễ gây nhầm ở đây là kiểu thực cũng chiếm 4 byte đúng như kiểu nguyên, nên không có biến nào được tính nhẹ hơn và tổng số byte đúng bằng tám lần 4.
Mở trang câu hỏi này →
A6D
BDB
CD6
DB6
Lời giải
Đáp án đúng: "DB". Mỗi chữ số hệ mười sáu ứng với đúng bốn bit, nên tách dãy từ phải sang trái thành 1101 và 1011. Nhóm bên trái 1101 có giá trị 13 nên viết là chữ D, nhóm bên phải 1011 có giá trị 11 nên viết là chữ B, ghép theo đúng thứ tự đó được kết quả. "6D" là kết quả khi đảo vị trí hai nhóm, như thể đọc dãy bit từ phải sang. "D6" sai ở chữ số cuối, vì 6 ứng với 0110 chứ không phải 1011. "B6" ứng với mẫu bit 10110110, khác dãy đã cho ngay ở bốn bit đầu. Thứ tự nhóm phải giữ nguyên như trong dãy nhị phân, nhóm bit cao luôn đứng trước.
Mở trang câu hỏi này →
AComputer networks, where vertices represent nodes/hubs and edges represent routes.
BStoring student records in a school.
CImplementing stacks and queues.
DDecimal to binary conversion
Lời giải
Đáp án đúng: "Computer networks, where vertices represent nodes/hubs and edges represent routes.". Đồ thị gồm các đỉnh và các cạnh nối chúng, rất tự nhiên để mô hình hoá mạng máy tính: mỗi nút hay bộ tập trung là một đỉnh, mỗi đường truyền là một cạnh, và bài toán tìm đường đi ngắn nhất cho gói tin trở thành bài toán trên đồ thị. "Storing student records in a school." sai vì hồ sơ học sinh là tập các bản ghi đồng dạng, phù hợp với bảng trong cơ sở dữ liệu hoặc với tệp, không cần quan hệ nối từng cặp đối tượng. "Implementing stacks and queues." sai vì ngăn xếp và hàng đợi được cài đặt bằng mảng hoặc danh sách liên kết, chúng là cấu trúc tuyến tính. "Decimal to binary conversion" sai vì đổi số thập phân sang nhị phân là thuật toán chia liên tiếp lấy số dư, không có đối tượng nào đóng vai trò đỉnh hay cạnh.
Mở trang câu hỏi này →
AIt may pose some risks and be used commercially, conflicting with privacy rights.
BIt might be too costly to store
CIt always leads to identity theft.
DIt slows down computer systems.
Lời giải
Đáp án đúng: "It may pose some risks and be used commercially, conflicting with privacy rights.". Mối lo chính là thông tin cá nhân khi đã được thu thập có thể bị dùng vào mục đích ngoài mục đích ban đầu, bị đem bán hoặc khai thác thương mại, và điều đó xung đột với quyền được giữ kín đời tư của người bị thu thập. "It might be too costly to store" sai vì chi phí lưu trữ là bài toán kỹ thuật và tài chính của bên thu thập, nó không liên quan tới quyền riêng tư của người dùng. "It always leads to identity theft." sai ở chữ luôn luôn: đánh cắp danh tính là một rủi ro có thể xảy ra khi dữ liệu bị lộ, chứ không phải hậu quả tất yếu của mọi lần thu thập. "It slows down computer systems." sai vì tốc độ hệ thống máy tính là chuyện hiệu năng, hoàn toàn nằm ngoài phạm trù quyền riêng tư đang bàn.
Mở trang câu hỏi này →
A640,000 bits per second
B40,016 bits per second
C16,000 bits per second
D256,000 bits per second
Lời giải
Đáp án đúng: "640,000 bits per second". Tốc độ bit bằng số mẫu lấy trong một giây nhân với số bit mã hoá mỗi mẫu: 40.000 nhân 16 cho 640.000 bit mỗi giây. Đây chính là công thức dùng khi số hoá tín hiệu tương tự qua hai bước lấy mẫu và lượng tử hoá. "40,016 bits per second" là kết quả của phép cộng hai số liệu thay vì phép nhân, mà cộng số mẫu với số bit mỗi mẫu thì không có nghĩa gì về đơn vị. "16,000 bits per second" ứng với trường hợp mỗi giây chỉ lấy 1.000 mẫu 16 bit, nhỏ hơn dữ kiện bốn mươi lần. "256,000 bits per second" ứng với tốc độ lấy mẫu 16.000 mẫu mỗi giây, cũng không khớp với 40.000 mẫu đã cho trong đề.
Mở trang câu hỏi này →
AUsing a separate bit for the sign
BBy changing the least significant bit
CBy using a floating-point standard
DThrough the use of parity bits
Lời giải
Đáp án đúng: "Using a separate bit for the sign". Trong định dạng dấu và độ lớn, người ta dành riêng bit bên trái nhất để ghi dấu, thường 0 cho số dương và 1 cho số âm, còn các bit còn lại ghi độ lớn tuyệt đối của số. Nhờ vậy đổi dấu một số chỉ cần đảo đúng bit đó, phần độ lớn không thay đổi. "By changing the least significant bit" sai vì bit thấp nhất quyết định số chẵn hay lẻ, sửa nó là sửa giá trị chứ không phải sửa dấu. "By using a floating-point standard" sai vì chuẩn dấu phẩy động là một cách biểu diễn khác dành cho số thực, nó cũng có bit dấu riêng nhưng câu hỏi đang nói về định dạng dấu và độ lớn. "Through the use of parity bits" sai vì bit chẵn lẻ chỉ phục vụ việc phát hiện lỗi khi truyền hoặc lưu, không mang thông tin về dấu.
Mở trang câu hỏi này →
AA job is a program in execution, while a process is stored on disk.
BA job is a program selected for execution, while a process is in execution.
CA job is a completed program, while a process is on disk.
DA job and a process are identical terms.
Lời giải
Đáp án đúng: "A job is a program selected for execution, while a process is in execution.". Một chương trình cùng dữ liệu của nó, khi còn chờ hệ điều hành chọn và cấp tài nguyên, được gọi là job; đến lúc đã được nạp vào bộ nhớ và thực sự đang chạy thì nó trở thành process. Cùng một thực thể nhưng khác giai đoạn trong vòng đời. "A job is a program in execution, while a process is stored on disk." sai vì nói ngược hoàn toàn: chương trình đang thi hành mới là process, còn thứ nằm chờ bên ngoài mới là job. "A job is a completed program, while a process is on disk." sai vì job không phải chương trình đã hoàn tất; khi kết thúc, tiến trình bị huỷ và tài nguyên được thu hồi. "A job and a process are identical terms." sai vì nếu hai khái niệm trùng nhau thì hệ điều hành không cần tách hai khâu quản lý: bộ phận xếp hàng chờ cho job và bộ định thời cấp bộ xử lý cho process.
Mở trang câu hỏi này →
AAll user input values
BAll independent paths in every module
CAll decision constructs on each branch.
DEach loop construct
Lời giải
Đáp án đúng: "All user input values". Kiểm thử hộp kính, tức hộp trắng, dựa trên cấu trúc bên trong của mã nguồn: phải phủ mọi đường đi độc lập, mọi nhánh của từng cấu trúc quyết định và mọi cấu trúc lặp. Thử hết mọi giá trị mà người dùng có thể nhập là bất khả thi về số lượng và thuộc hướng tiếp cận hộp đen, nên không nằm trong tiêu chí này. "All independent paths in every module" là tiêu chí bắt buộc, vì bỏ sót một đường đi là bỏ sót cả một khả năng chạy của chương trình. "All decision constructs on each branch." là tiêu chí bắt buộc, vì mỗi điều kiện phải được thử cả khi đúng lẫn khi sai. "Each loop construct" cũng bắt buộc, vì vòng lặp cần thử các trường hợp không chạy lần nào, chạy một lần và chạy nhiều lần để lộ lỗi biên.
Mở trang câu hỏi này →
AIt is easier for humans to read and understand.
BIt allows for a greater variety of symbols.
CComputers are made of electronic switches that can have only two states (on and off)
DBinary patterns are more efficient for complex arithmetic operations
Lời giải
Đáp án đúng: "Computers are made of electronic switches that can have only two states (on and off)". Lý do gốc nằm ở vật liệu: máy tính được dựng từ những linh kiện điện tử hoạt động như công tắc, chỉ có hai trạng thái đóng hoặc mở, nên mọi dữ liệu và chương trình đều phải mã hoá thành dãy gồm hai ký hiệu. "It is easier for humans to read and understand." sai vì người đọc dãy bit khó hơn đọc số thập phân nhiều; chính vì vậy mới sinh ra cách viết hệ mười sáu cho gọn. "It allows for a greater variety of symbols." sai vì nhị phân là hệ có ít ký hiệu nhất, chỉ hai, trái hẳn với điều nó khẳng định. "Binary patterns are more efficient for complex arithmetic operations" sai vì mạch số học nhị phân đơn giản chỉ là hệ quả dễ chịu của việc chọn hai trạng thái, không phải nguyên nhân; nếu chế tạo được linh kiện ổn định với mười trạng thái thì máy tính thập phân vẫn khả thi về mặt số học.
Mở trang câu hỏi này →
AINSERT
BDELETE
CUPDATE
DJOIN
Lời giải
Đáp án đúng: "JOIN". Trong đại số quan hệ, phép nhị phân là phép nhận hai quan hệ làm đầu vào. Phép ghép nối lấy hai bảng rồi tạo ra bảng mới gồm các cặp bộ thoả điều kiện so khớp, nên nó cần đúng hai toán hạng mới chạy được. "INSERT" sai vì thêm một bộ mới chỉ tác động lên một bảng duy nhất, đây là phép một ngôi. "DELETE" sai vì xoá các bộ thoả điều kiện cũng chỉ làm việc trên một bảng. "UPDATE" sai vì sửa giá trị thuộc tính của các bộ vẫn diễn ra trong phạm vi một bảng. Ba phép vừa nêu đều đổi nội dung một quan hệ tại chỗ chứ không kết hợp hai quan hệ với nhau để sinh ra quan hệ mới.
Mở trang câu hỏi này →