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

84/359 câuCòn 275
AAn interface between hardware and users
BA specific application program
CA document outlining system policies
DA type of computer hardware
ENone of the others
Lời giải
Đáp án đúng: "An interface between hardware and users". Hệ điều hành là phần mềm nằm giữa phần cứng và người dùng: nó quản lý CPU, bộ nhớ, tệp và thiết bị, đồng thời cung cấp giao diện cùng các lời gọi hệ thống để người dùng và chương trình khai thác phần cứng mà không phải điều khiển trực tiếp. Mục "A specific application program" hiểu sai vai trò, hệ điều hành không phải một ứng dụng cụ thể mà là nền để mọi ứng dụng chạy trên đó. Mục "A document outlining system policies" biến phần mềm thành tài liệu, trong khi hệ điều hành là mã thực thi được. Mục "A type of computer hardware" xếp nó vào phần cứng, trái với bản chất phần mềm. Mục "None of the others" không dùng được vì đã có một mô tả đúng trong danh sách.
Mở trang câu hỏi này →
ATo store data permanently
BTo supply power to the computer
CTo connect all the parts of the computer together
DTo cool down the components
Lời giải
Đáp án đúng: "To connect all the parts of the computer together". Bo mạch chủ là tấm mạch mang socket CPU, khe cắm RAM, các khe mở rộng và hệ thống bus cùng đầu nối, nhờ đó mọi thành phần trao đổi được dữ liệu và tín hiệu điều khiển với nhau. Mục "To store data permanently" là việc của bộ nhớ phụ như ổ cứng hay SSD, bo mạch chủ không giữ dữ liệu người dùng. Mục "To supply power to the computer" thuộc bộ nguồn, bo mạch chủ chỉ phân phối lại điện đã được bộ nguồn chuyển đổi. Mục "To cool down the components" là nhiệm vụ của quạt, tản nhiệt và vỏ máy. Những chi tiết đó có thể gắn trên bo mạch chủ, nhưng chức năng chính của bo mạch vẫn là liên kết các bộ phận thành một hệ thống hoạt động được.
Mở trang câu hỏi này →
AConfidentiality
BIntegrity
CAvailability
DAuthentication
Lời giải
Đáp án đúng: "Confidentiality". Tính bí mật đúng nghĩa là thông tin chỉ người có quyền mới đọc được, nên nó là nguyên tắc chống tiết lộ, thực thi bằng mã hoá và kiểm soát truy cập. Mục "Integrity" lo chuyện khác: bảo đảm dữ liệu không bị sửa đổi hay xoá trái phép, một tệp có thể bị người ngoài đọc mất mà vẫn còn nguyên vẹn. Mục "Availability" bảo đảm hệ thống và dữ liệu dùng được khi cần, nó bị phá khi có tấn công từ chối dịch vụ, chẳng dính đến việc giữ kín nội dung. Mục "Authentication" là cơ chế xác minh danh tính của người hay tiến trình, nó hỗ trợ việc giữ bí mật nhưng bản thân không phải mục tiêu không tiết lộ thông tin.
Mở trang câu hỏi này →
A300
B100
C200
D400
Lời giải
Đáp án đúng: "300". Bộ nhớ ảo là toàn bộ không gian mà hệ thống cho phép các chương trình chiếm, gồm phần đang nằm trong bộ nhớ chính cộng phần đang để trên đĩa: 100 MB cộng 200 MB bằng 300 MB, đúng bằng tổng mười chương trình nhân 30 MB. Mục "100" chỉ là dung lượng bộ nhớ vật lý thật có, nó là giới hạn phần cứng chứ không phải không gian mà chương trình thấy. Mục "200" chỉ lấy phần đang gửi trên đĩa, bỏ mất phần đang chạy trong bộ nhớ. Mục "400" cộng thêm 100 MB không tồn tại, nghĩa là tính hai lần phần bộ nhớ chính. Chính kỹ thuật phân trang và phân đoạn theo yêu cầu cho phép mỗi lúc chỉ nạp phần đang cần, nhờ vậy 300 MB chương trình chạy được trên 100 MB bộ nhớ thật.
Mở trang câu hỏi này →
AThe completed code for the software.
BA specification document outlining what the software will do, not how
CA detailed architecture diagram of the system
DA plan for software testing and deployment
Lời giải
Đáp án đúng: "A specification document outlining what the software will do, not how". Pha phân tích trả lời câu hỏi hệ thống phải làm gì, kết quả là tài liệu đặc tả mô tả chức năng, dữ liệu vào ra và yêu cầu của người dùng, cố ý chưa chạm tới cách hiện thực. Mục "The completed code for the software." là sản phẩm của pha cài đặt, nằm sau hai pha nữa. Mục "A detailed architecture diagram of the system" trả lời câu hỏi làm thế nào, đó là đầu ra của pha thiết kế, nơi mới chia mô-đun và chọn cấu trúc. Mục "A plan for software testing and deployment" thuộc công việc kiểm thử và triển khai về sau; nếu để pha phân tích lo chuyện đó thì đặc tả chưa xong đã phải chốt cách làm, trái với trình tự của vòng đời phần mềm.
Mở trang câu hỏi này →
AIntegrity
BConfidentiality
CAvailability
DAuthentication
Lời giải
Đáp án đúng: "Integrity". Hàm băm biến một khối dữ liệu dài thành giá trị rút gọn có độ dài cố định, và chỉ cần đổi một bit trong dữ liệu thì giá trị băm đã khác hẳn, nên người nhận so lại hai giá trị băm là phát hiện được dữ liệu có bị sửa trên đường truyền hay khi lưu. Mục "Confidentiality" không đạt được, vì dữ liệu gốc vẫn đi kèm ở dạng rõ, muốn giữ kín nội dung phải mã hoá. Mục "Availability" nói về việc dịch vụ luôn dùng được, hàm băm không ngăn được gián đoạn hay quá tải. Mục "Authentication" cần thêm khoá bí mật như trong mã xác thực bản tin hoặc chữ ký số; giá trị băm trần không gắn với danh tính nào nên không chứng minh được ai là người gửi.
Mở trang câu hỏi này →
AArithmetic logic unit (ALU)
BInput/Output (I/O)
CControl unit (CU)
DPower supply unit (PSU)
Lời giải
Đáp án đúng: "Power supply unit (PSU)". Mô hình von Neumann chia máy tính thành bốn hệ con: bộ nhớ, đơn vị số học và logic, đơn vị điều khiển, cùng khối vào ra. Bộ nguồn chỉ chuyển đổi và cấp điện, nó không lưu, không xử lý, không chuyển dữ liệu, nên không nằm trong mô hình xử lý này. Mục "Arithmetic logic unit (ALU)" là nơi thực hiện các phép tính số học và phép logic trên dữ liệu. Mục "Input/Output (I/O)" là hệ con nhận dữ liệu từ ngoài, xuất kết quả và nối với bộ nhớ phụ. Mục "Control unit (CU)" là hệ con giải mã lệnh rồi phát tín hiệu điều khiển cho ba hệ con còn lại phối hợp với nhau. Cả ba đều thuộc mô hình nên không thể là lựa chọn bị loại.
Mở trang câu hỏi này →
ATo perform arithmetic and logical operations.
BTo store data and program instructions.
CCoordinate memory, ALU, and I/O operations.
DTo connect the CPU to external networks.
Lời giải
Đáp án đúng: "Coordinate memory, ALU, and I/O operations." Đơn vị điều khiển lấy lệnh từ bộ nhớ, giải mã rồi phát tín hiệu điều khiển theo chu kỳ lấy lệnh, giải mã, thực hiện, nhờ đó bộ nhớ, khối tính toán và các thiết bị vào ra hoạt động đúng thứ tự và đúng lúc; nó chỉ huy chứ không tự tính. Mục "To perform arithmetic and logical operations." là việc của đơn vị số học và logic. Mục "To store data and program instructions." thuộc bộ nhớ chính và các thanh ghi, nơi giữ lệnh cùng dữ liệu đang dùng. Mục "To connect the CPU to external networks." là chuyện của card mạng và khối vào ra, nằm ngoài bộ xử lý. Thiếu đơn vị điều khiển thì các bộ phận này vẫn đủ nhưng không ai điều phối nên lệnh không chạy được.
Mở trang câu hỏi này →
73Which of these is not a loop?4 lựa chọn
AFor
BWhile
CSwitch
DDo-While
Lời giải
Đáp án đúng: "Switch". Cấu trúc này là rẽ nhánh nhiều lựa chọn: máy xét giá trị biểu thức, nhảy vào nhánh khớp rồi chạy một lần và đi ra, không có cơ chế quay lại kiểm điều kiện để lặp. Mục "For" là vòng lặp dùng khi biết trước số lần, có biến đếm, điều kiện dừng và bước nhảy. Mục "While" là vòng lặp kiểm điều kiện trước mỗi lần chạy thân, nên thân có thể không chạy lần nào. Mục "Do-While" cũng là vòng lặp nhưng kiểm điều kiện sau khi chạy thân, bảo đảm thân chạy ít nhất một lần. Ba cấu trúc đó đều có thể quay lại điểm đầu nhiều lần, điểm mà cấu trúc rẽ nhánh nhiều lựa chọn không có.
Mở trang câu hỏi này →
AA physical path used for data transmission between components
BA type of memory
CA backup storage system
DA processor's internal clock
Lời giải
Đáp án đúng: "A physical path used for data transmission between components". Bus là tập các đường dẫn vật lý nối các bộ phận để truyền tín hiệu: bus dữ liệu chở dữ liệu, bus địa chỉ chở địa chỉ ô nhớ hay thiết bị, bus điều khiển chở tín hiệu chỉ huy giữa bộ xử lý, bộ nhớ và các khối vào ra. Mục "A type of memory" hiểu sai bản chất, bus chỉ dẫn dữ liệu đi qua chứ không giữ lại gì. Mục "A backup storage system" nói về thiết bị lưu dự phòng, hoàn toàn khác một đường truyền. Mục "A processor's internal clock" là xung nhịp dùng để đồng bộ thời gian trong máy; nhịp này có thể quy định tốc độ truyền trên bus, nhưng bản thân bus vẫn là đường dây chứ không phải cái đồng hồ đó.
Mở trang câu hỏi này →
ASampling
BQuantization
CEncryption
DEncoding
Lời giải
Đáp án đúng: "Encryption". Số hoá âm thanh gồm ba bước: lấy mẫu biên độ tín hiệu tại các thời điểm cách nhau đều đặn, lượng tử hoá để làm tròn mỗi mẫu về một mức giá trị, rồi mã hoá các mức đó thành dãy bit. Việc mã hoá bảo mật là bước bảo vệ thêm, dùng khi cần giữ kín tệp, chứ không cần cho việc biểu diễn âm thanh. Mục "Sampling" là bước đầu, quyết định tần số lấy mẫu. Mục "Quantization" là bước gán mỗi mẫu một giá trị trong tập hữu hạn, chỗ sinh ra sai số lượng tử. Mục "Encoding" là bước ghi kết quả thành số nhị phân với số bit cho mỗi mẫu. Bỏ bất kỳ bước nào trong ba bước đó thì không còn tệp âm thanh, còn bỏ việc mã hoá bảo mật thì tệp vẫn phát được.
Mở trang câu hỏi này →
AThe edges have no direction
BIt has one-way connections between nodes.
CThe edges have a specific starting and ending point
DA node only has one parent
Lời giải
Đáp án đúng: "The edges have no direction". Trong đồ thị vô hướng, một cạnh chỉ nói hai đỉnh có liên hệ với nhau mà không chỉ chiều, nên đi được từ đỉnh này sang đỉnh kia và ngược lại. Mục "It has one-way connections between nodes." mô tả đồ thị có hướng, nơi mỗi cung chỉ cho đi một chiều. Mục "The edges have a specific starting and ending point" cũng là đặc trưng của đồ thị có hướng, vì chỉ ở đó cạnh mới có đỉnh đầu và đỉnh cuối phân biệt. Mục "A node only has one parent" dùng khái niệm cha con của cây; đồ thị vô hướng không có gốc nên không có quan hệ cha con, hơn nữa một đỉnh có thể kề với bao nhiêu đỉnh khác cũng được.
Mở trang câu hỏi này →
AThe degree of dependency between modules.
BThe number of lines of code in a module.
CThe speed of program execution.
DThe total number of coupled modules in a system.
Lời giải
Đáp án đúng: "The degree of dependency between modules." Coupling đo mức ràng buộc giữa các mô-đun: hai mô-đun càng phải biết nhiều về nhau, càng dùng chung nhiều dữ liệu hay gọi sâu vào nhau thì càng khó sửa và khó dùng lại, nên thiết kế tốt hướng tới coupling thấp đi kèm cohesion cao. Mục "The number of lines of code in a module." chỉ là thước đo kích thước, một mô-đun ngắn vẫn có thể bị ràng buộc chặt. Mục "The speed of program execution." nói về hiệu năng khi chạy, không phải tính chất của cấu trúc thiết kế. Mục "The total number of coupled modules in a system." chỉ đếm số lượng, trong khi coupling là mức độ phụ thuộc của từng liên kết, hai hệ thống có cùng số mô-đun liên quan vẫn có thể khác nhau rất xa về mức ràng buộc.
Mở trang câu hỏi này →
AN(N-1)/2
BN
CN+1
D2N
ENone of the others
Lời giải
Đáp án đúng: "N(N-1)/2". Mỗi cặp đỉnh phân biệt chỉ nối được nhiều nhất một cạnh và cạnh không có hướng, nên số cạnh tối đa đúng bằng số cặp chọn được từ N đỉnh, tức N nhân với N trừ 1 rồi chia 2; đó là trường hợp đồ thị đầy đủ. Thử với bốn đỉnh thì công thức cho 6 cạnh, khớp với hình vẽ. Mục "N" quá nhỏ, bốn đỉnh nối đủ đã có 6 cạnh chứ không phải 4. Mục "N+1" cũng chỉ tăng theo đường thẳng nên không theo kịp mức tăng bình phương của số cặp đỉnh. Mục "2N" với bốn đỉnh cho 8 cạnh, vượt quá số cặp đỉnh thật có nên không thể vẽ được. Mục "None of the others" không dùng được vì công thức đúng đã nằm trong danh sách.
Mở trang câu hỏi này →
AStar
BMesh
CRing
DSwitch
Lời giải
Đáp án đúng: "Switch". Topology là cách bố trí và nối các nút trong mạng, bốn dạng thường gặp là bus, hình sao, vòng và lưới. Thiết bị chuyển mạch chỉ là một phần cứng dùng để nối các nút, nó không phải một cách bố trí; mạng dùng thiết bị này thường chính là mạng hình sao. Mục "Star" là dạng mọi nút nối về một điểm trung tâm, hỏng một nhánh thì chỉ mất nút đó. Mục "Mesh" là dạng mỗi nút nối trực tiếp tới nhiều nút khác, tốn đường dây nhưng rất bền. Mục "Ring" là dạng các nút nối thành vòng kín, dữ liệu đi theo vòng từ nút này sang nút kế tiếp. Ba lựa chọn đó đều mô tả hình trạng nên không thể là cái bị loại.
Mở trang câu hỏi này →
AMemory
BArithmetic Logic Unit (ALU)
CControl Unit
DInput/Output
Lời giải
Đáp án đúng: "Memory". Điểm cốt lõi của kiến trúc von Neumann là chương trình được lưu trữ: cả lệnh và dữ liệu cùng nằm trong bộ nhớ chính dưới dạng nhị phân, bộ xử lý lần lượt lấy lệnh từ đó ra mà chạy. Mục "Arithmetic Logic Unit (ALU)" chỉ tính toán trên các toán hạng được đưa tới và trả kết quả, nó không giữ chương trình. Mục "Control Unit" chỉ giải mã lệnh và phát tín hiệu điều khiển, cũng không phải nơi lưu. Mục "Input/Output" là cửa giao tiếp với bên ngoài và với bộ nhớ phụ; dữ liệu có thể nằm trên ổ đĩa, nhưng muốn xử lý thì phải nạp vào bộ nhớ chính trước. Vài thanh ghi trong bộ xử lý cũng giữ dữ liệu, nhưng chỉ tạm thời cho lệnh đang chạy.
Mở trang câu hỏi này →
AElements stored in contiguous memory locations
BEach element containing a data part and a link (pointer) to the next element.
CDirect access to any element using an integer index
DElements always being of the same data type
Lời giải
Đáp án đúng: "Each element containing a data part and a link (pointer) to the next element." Danh sách liên kết gồm các nút rời nhau, mỗi nút chứa phần dữ liệu và một con trỏ chỉ tới nút kế tiếp, nhờ vậy thêm hay xoá chỉ cần sửa con trỏ mà không phải dồn dịch cả dãy. Mục "Elements stored in contiguous memory locations" mô tả mảng, nơi các phần tử nằm liền nhau trong bộ nhớ; danh sách liên kết thì các nút có thể nằm rải rác. Mục "Direct access to any element using an integer index" cũng là tính chất của mảng, vì địa chỉ tính được từ chỉ số; muốn đến nút thứ k của danh sách liên kết thì phải đi lần lượt từ nút đầu. Mục "Elements always being of the same data type" đúng với nhiều cấu trúc dữ liệu khác nên không phân biệt được gì, và nó không nói lên cách các nút nối với nhau.
Mở trang câu hỏi này →
A2 phases: implementation and testing
B3 phases: design, implementation and testing
C4 phases: analysis, design, implementation and testing
D5 phases: planning, analysis, design, implementation and testing
Lời giải
Đáp án đúng: "4 phases: analysis, design, implementation and testing". Quá trình phát triển trong vòng đời phần mềm gồm bốn pha nối tiếp: phân tích để xác định phần mềm phải làm gì, thiết kế để quyết định làm thế nào và chia mô-đun, cài đặt để viết mã, kiểm thử để tìm lỗi so với đặc tả. Mục "2 phases: implementation and testing" bỏ mất cả phân tích và thiết kế, tức viết mã khi chưa biết yêu cầu. Mục "3 phases: design, implementation and testing" thiếu pha phân tích, trong khi chính pha này sinh ra tài liệu đặc tả làm căn cứ cho thiết kế và cho việc kiểm thử sau cùng. Mục "5 phases: planning, analysis, design, implementation and testing" thêm việc lập kế hoạch, thứ thuộc quản lý dự án và nằm trước quá trình phát triển, không phải một pha của nó.
Mở trang câu hỏi này →
AQueue
BStack
CLinked List
DBinary Tree
Lời giải
Đáp án đúng: "Stack". Ngăn xếp chỉ cho thêm và lấy ở một đầu gọi là đỉnh, nên phần tử vào sau cùng lại là phần tử ra đầu tiên; đó đúng là nguyên tắc vào sau ra trước, thấy rõ trong việc lưu địa chỉ trở về khi gọi hàm. Mục "Queue" chạy theo nguyên tắc ngược lại là vào trước ra trước, thêm ở một đầu và lấy ở đầu kia. Mục "Linked List" chỉ là cách tổ chức lưu trữ bằng các nút nối bởi con trỏ, nó không áp đặt luật truy cập nào, thậm chí người ta dùng nó để hiện thực cả ngăn xếp lẫn hàng đợi. Mục "Binary Tree" là cấu trúc phân cấp, việc truy cập đi theo đường từ gốc xuống các nút con nên không có khái niệm vào sau ra trước.
Mở trang câu hỏi này →
AAssembly language
BHigh-level language
CMachine language
DObject-oriented language
Lời giải
Đáp án đúng: "Machine language". Thời kỳ đầu, muốn máy chạy thì phải nạp trực tiếp các mẫu bit mà bộ xử lý hiểu được, nghĩa là viết bằng chính ngôn ngữ máy của phần cứng đó, không có lớp dịch nào ở giữa. Mục "Assembly language" ra đời sau để thay mẫu bit bằng các từ gợi nhớ, nhưng vẫn cần một chương trình dịch hợp ngữ chuyển về mã máy, nên nó không thể có trước. Mục "High-level language" xuất hiện muộn hơn nữa, dùng câu lệnh gần ngôn ngữ tự nhiên và cần trình biên dịch. Mục "Object-oriented language" là một dòng của ngôn ngữ bậc cao, ra đời sau cùng trong bốn lựa chọn, khi người ta đã cần tổ chức chương trình lớn theo lớp và đối tượng.
Mở trang câu hỏi này →