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ủ đề
Thử sức tại chỗ

Trả lời ngay tại đây

Chưa trả lời câu nào
1CSI106 - Phần 12: Ngôn ngữ lập trình và kỹ nghệ phần mềm
When developing software, how would you describe the concept of modularity in software design?
2CSI106 - Phần 12: Ngôn ngữ lập trình và kỹ nghệ phần mềm
Which of the following is NOT a measure of software operability?
3CSI106 - Phần 12: Ngôn ngữ lập trình và kỹ nghệ phần mềm
What is the final stage of the four phases of the software life cycle?
Còn 3 câu nữa ở trên

Trả lời hết các câu trên để xem tổng kết, hoặc vào phiên học ngay.

Học từ ngân hàng câu hỏi

Bắt đầu một phiên học theo môn

Tiến độ của bạn luôn được tính và đồng bộ trực tiếp theo tổng số lượng câu hỏi mới nhất của môn học này.

359Ngân hàng hiện tại--Tiến độ môn

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

24/359 câuCòn 335
A20
B25
C15
D9
Lời giải
Đáp án đúng: "20". Một quan hệ trong mô hình dữ liệu quan hệ là một bảng chữ nhật: mỗi dòng là một bản ghi, mỗi cột là một thuộc tính, và mỗi ô giao giữa một dòng với một cột chứa đúng một giá trị. Vậy số giá trị được lưu bằng số dòng nhân số cột, tức 5 nhân 4 bằng 20. Con số "25" là kết quả của 5 nhân 5, tức đã lấy số dòng thay cho số cột. Con số "15" ứng với 5 nhân 3, tức đếm thiếu một cột. Con số "9" là 5 cộng 4, tức đã cộng hai chiều của bảng thay vì nhân; phép cộng không đếm được số ô vì mỗi dòng đều trải hết bốn cột.
Mở trang câu hỏi này →
ACPU, Memory, I/O devices, Network, Operating System
BHardware, Software, Data, Users, and Procedures
CApplication programs, End users, Database administrators, Data analysts, and System architects
DTables, Rows, Columns, Keys, and Indexes
Lời giải
Đáp án đúng: "Hardware, Software, Data, Users, and Procedures". Một hệ quản trị cơ sở dữ liệu không chỉ là phần mềm mà là một hệ thống gồm thiết bị lưu trữ và xử lý, phần mềm quản trị, bản thân dữ liệu, con người khai thác hoặc quản trị, cùng các thủ tục quy định cách dùng và cách sao lưu. Nhóm "CPU, Memory, I/O devices, Network, Operating System" chỉ kể chi tiết bên trong thành phần thiết bị và hệ thống, bỏ hẳn dữ liệu, con người và thủ tục. Nhóm "Application programs, End users, Database administrators, Data analysts, and System architects" chỉ chia nhỏ phần con người và chương trình ứng dụng. Nhóm "Tables, Rows, Columns, Keys, and Indexes" là các khái niệm cấu trúc bên trong một cơ sở dữ liệu quan hệ, tức chỉ nằm trong thành phần dữ liệu.
Mở trang câu hỏi này →
AIt does not support relationships between records.
BIt has a complex structure that makes it difficult to query.
CIt does not allow more than one parent for a record.
DIt only works for relational data.
Lời giải
Đáp án đúng: "It has a complex structure that makes it difficult to query." Trong mô hình mạng, mỗi bản ghi nối với nhiều bản ghi khác bằng con trỏ nên toàn bộ cơ sở dữ liệu thành một đồ thị dày; muốn lấy dữ liệu, người dùng phải biết trước đường đi qua các mối nối, và chính sự rối rắm đó là hạn chế khiến mô hình này bị mô hình quan hệ thay thế. Nhận định "It does not support relationships between records." trái với bản chất mô hình, vì nó ra đời chính để biểu diễn quan hệ nhiều-nhiều. Nhận định "It does not allow more than one parent for a record." là hạn chế của mô hình phân cấp, còn mô hình mạng thì cho phép một bản ghi có nhiều cha. Nhận định "It only works for relational data." nhầm lẫn hai mô hình khác nhau, vì dữ liệu quan hệ thuộc mô hình quan hệ ra sau.
Mở trang câu hỏi này →
ATo eliminate repeating groups of data in a relation
BTo ensure that all attributes depend on a composite key
CTo reduce the need for complex SQL queries
DTo establish relationships between multiple relations
Lời giải
Đáp án đúng: "To eliminate repeating groups of data in a relation". Dạng chuẩn một đòi mỗi ô của quan hệ chỉ chứa một giá trị nguyên tử, nên bước này nhằm phá các nhóm lặp và thuộc tính đa trị, chẳng hạn việc nhét nhiều số điện thoại vào cùng một ô; khi còn nhóm lặp thì không thể tìm, sắp hay cập nhật từng giá trị một cách tin cậy. Mục tiêu "To ensure that all attributes depend on a composite key" là chuyện của dạng chuẩn hai, vốn xử lý phụ thuộc bộ phận vào khoá phức. Mục tiêu "To reduce the need for complex SQL queries" đi ngược thực tế, vì chuẩn hoá tách bảng nên truy vấn thường phải nối nhiều bảng hơn. Mục tiêu "To establish relationships between multiple relations" do khoá ngoại đảm nhiệm, không phải việc của dạng chuẩn một.
Mở trang câu hỏi này →
AEncrype
BSelect
CProject
DJoin
Lời giải
Đáp án đúng: "Encrype". Ba phép thao tác quen thuộc trên quan hệ là chọn dòng, chọn cột và nối hai quan hệ; mã hoá dữ liệu thuộc lĩnh vực bảo mật, nó biến đổi cách lưu trữ chứ không sinh ra một quan hệ mới từ các quan hệ có sẵn, nên không nằm trong nhóm phép toán này, và chữ trong lựa chọn còn bị viết sai chính tả. Phép "Select" lấy ra những dòng thoả một điều kiện và giữ nguyên toàn bộ các cột. Phép "Project" lấy ra một số cột được chỉ định và giữ mọi dòng. Phép "Join" ghép hai quan hệ theo giá trị trùng nhau của thuộc tính chung để tạo ra một quan hệ rộng hơn.
Mở trang câu hỏi này →
AClassifying
BRe-structuring
CSearching
DSorting
Lời giải
Đáp án đúng: "Sorting". Sắp xếp là quá trình xếp lại dữ liệu theo giá trị của chúng, theo chiều tăng hay giảm, và nó phổ biến vì nhiều việc khác như tìm nhị phân, phát hiện trùng lặp hay trình bày báo cáo đều dựa trên dữ liệu đã có thứ tự. Việc "Classifying" là gán dữ liệu vào các nhóm theo tiêu chí, kết quả là các lớp chứ không phải một dãy có thứ tự theo giá trị. Việc "Re-structuring" đổi cách tổ chức hay định dạng dữ liệu, không nói gì tới việc so sánh giá trị để xếp chỗ. Việc "Searching" là dò tìm một phần tử theo khoá rồi trả về vị trí của nó, và nó không hề làm thay đổi thứ tự của dữ liệu.
Mở trang câu hỏi này →
Asequence
Bdecision
Crepetition
Dflow
Lời giải
Đáp án đúng: "decision". Cấu trúc quyết định đánh giá một biểu thức điều kiện rồi dựa vào kết quả đúng hoặc sai mà chọn một trong hai nhánh lệnh để thi hành, nên nó đúng là cấu trúc dùng để kiểm tra một điều kiện. Cấu trúc "sequence" chỉ thi hành các lệnh lần lượt từ trên xuống, không có chỗ nào rẽ nhánh. Cấu trúc "repetition" có dùng điều kiện, nhưng điều kiện ở đó dùng để quyết định còn lặp lại khối lệnh nữa hay dừng, khác với việc chọn giữa hai nhánh, và bản chất được định nghĩa của nó là sự lặp lại. Từ "flow" chỉ nói chung về dòng điều khiển của chương trình và không phải một trong ba cấu trúc cơ bản.
Mở trang câu hỏi này →
ABubble Sort
BQuick Sort
CMerge Sort
DSelection Sort
Lời giải
Đáp án đúng: "Bubble Sort". Sắp xếp nổi bọt đi dọc dãy, so sánh từng cặp phần tử nằm kề nhau và đổi chỗ chúng nếu sai thứ tự; sau mỗi lượt quét, phần tử lớn nhất trong phần chưa sắp nổi về cuối, đúng như tên gọi. Thuật toán "Quick Sort" chia dãy quanh một phần tử chốt, các phần tử bị đổi chỗ thường nằm xa nhau ở hai phía chốt chứ không kề nhau. Thuật toán "Merge Sort" chia dãy thành nửa, sắp từng nửa rồi trộn hai dãy đã sắp, nó sao chép phần tử sang vùng kết quả thay vì đổi chỗ hai phần tử kề nhau. Thuật toán "Selection Sort" mỗi lượt tìm phần tử nhỏ nhất trong phần còn lại rồi đưa nó về đầu, chỉ một lần đổi chỗ giữa hai vị trí có thể rất xa nhau.
Mở trang câu hỏi này →
ABubble Sort
BSelection Sort
CInsertion Sort
DThey all require the same amount of additional memory
Lời giải
Đáp án đúng: "They all require the same amount of additional memory". Ba thuật toán được nêu đều sắp xếp ngay trên dãy gốc và chỉ cần thêm vài biến phụ để so sánh và đổi chỗ, nên bộ nhớ phụ của cả ba đều là một lượng hằng số không phụ thuộc số phần tử; vì thế không thuật toán nào trong số đó tiết kiệm bộ nhớ hơn hai thuật toán kia. Chọn "Bubble Sort" là sai vì nó chỉ cần một biến tạm để đổi chỗ, đúng bằng mức của hai thuật toán còn lại. Chọn "Selection Sort" cũng sai vì nó chỉ giữ thêm chỉ số của phần tử nhỏ nhất, vẫn là lượng hằng số. Chọn "Insertion Sort" sai tương tự, vì biến giữ phần tử đang được chèn cũng chỉ chiếm một ô nhớ.
Mở trang câu hỏi này →
AA collection of functions
BA data structure that stores a list of data items in contiguous memory locations
CA sequence of characters
DA method for sorting data
Lời giải
Đáp án đúng: "A data structure that stores a list of data items in contiguous memory locations". Mảng là một dãy phần tử cùng kiểu nằm liên tiếp trong bộ nhớ, và nhờ tính liên tiếp đó địa chỉ của phần tử thứ i tính được ngay từ địa chỉ đầu, nên truy cập theo chỉ số mất thời gian như nhau với mọi phần tử. Mô tả "A collection of functions" ứng với thư viện hay lớp chứa các hàm, không phải nơi chứa dữ liệu theo chỉ số. Mô tả "A sequence of characters" là định nghĩa của chuỗi ký tự, một trường hợp riêng chứ không phải khái niệm mảng nói chung. Mô tả "A method for sorting data" nói về một thuật toán, trong khi mảng là một cấu trúc lưu trữ dữ liệu.
Mở trang câu hỏi này →
15Array traversal refers to_____4 lựa chọn
Aan operation that search a specific element of the array
Ban operation that search and edit a specific element of the array
Can operation that search and delete a specific element of the array
Dan operation that is applied to all elements of the array
Lời giải
Đáp án đúng: "an operation that is applied to all elements of the array". Duyệt mảng nghĩa là đi qua lần lượt từng phần tử từ đầu đến cuối và áp dụng cùng một xử lý lên mọi phần tử, chẳng hạn in ra, cộng dồn hay tăng giá trị; đặc trưng của nó là không bỏ sót phần tử nào và không nhằm vào một phần tử cụ thể. Mô tả "an operation that search a specific element of the array" là phép tìm kiếm, nó dừng ngay khi gặp phần tử cần tìm. Mô tả "an operation that search and edit a specific element of the array" là phép cập nhật một phần tử đã xác định. Mô tả "an operation that search and delete a specific element of the array" là phép xoá; cả hai phép sau chỉ tác động lên một phần tử chứ không lên toàn mảng.
Mở trang câu hỏi này →
ARemoves the item at the front of the queue.
BChecks if the queue is empty
CCreates a new empty queue
DInserts an item at the rear of the queue, making it the last item
Lời giải
Đáp án đúng: "Inserts an item at the rear of the queue, making it the last item". Hàng đợi hoạt động theo nguyên tắc vào trước ra trước, nên phần tử mới luôn được thêm vào đuôi và trở thành phần tử cuối cùng sẽ được lấy ra; phép thêm vào đuôi đó chính là enqueue. Mô tả "Removes the item at the front of the queue." là phép dequeue, phép lấy phần tử ở đầu hàng đợi ra. Mô tả "Checks if the queue is empty" là phép kiểm tra hàng đợi rỗng, nó chỉ trả về đúng hoặc sai và không làm thay đổi nội dung. Mô tả "Creates a new empty queue" là phép khởi tạo, chỉ chạy một lần lúc dựng cấu trúc chứ không phải phép thêm phần tử.
Mở trang câu hỏi này →
ARAM
BROM
CCache
DRegister
Lời giải
Đáp án đúng: "ROM". Bộ nhớ không khả biến là loại giữ được nội dung khi mất điện, và bộ nhớ chỉ đọc đúng như vậy: nội dung được ghi lúc chế tạo hoặc nạp sẵn, dùng để lưu chương trình khởi động nên máy mới có thứ để chạy ngay khi vừa bật. Loại "RAM" là bộ nhớ khả biến, các ô nhớ cần được nuôi điện liên tục nên nội dung mất sạch khi tắt máy. Loại "Cache" được xây bằng bộ nhớ bán dẫn tốc độ cao và cũng khả biến, nó chỉ giữ bản sao tạm của dữ liệu đang được dùng nhiều. Loại "Register" nằm ngay trong bộ xử lý, giữ toán hạng và kết quả trung gian trong lúc thi hành lệnh, và cũng mất nội dung khi ngắt điện.
Mở trang câu hỏi này →
AFaster searching.
BEasier random access to elements.
CMore efficient memory usage per node.
DMore efficient insertions and deletions.
Lời giải
Đáp án đúng: "More efficient insertions and deletions." Danh sách liên kết cấp phát từng nút rời rạc và nối chúng bằng con trỏ, nên thêm hay bớt một phần tử chỉ cần sửa vài con trỏ tại chỗ đó mà không phải dồn toàn bộ phần tử phía sau như mảng; bộ nhớ cũng được xin thêm hoặc trả lại theo từng nút thay vì phải định trước một vùng liên tiếp đủ lớn. Lợi thế "Faster searching." không có, vì muốn tới phần tử nào cũng phải đi lần theo con trỏ từ đầu, còn mảng đã sắp thì tìm nhị phân được. Lợi thế "Easier random access to elements." thuộc về mảng, nơi địa chỉ phần tử tính trực tiếp từ chỉ số. Lợi thế "More efficient memory usage per node." cũng không đúng, vì mỗi nút phải mang thêm con trỏ nên tốn hơn một ô mảng cùng kiểu dữ liệu.
Mở trang câu hỏi này →
AWhen a large number of insertions and deletions are expected after creation
BWhen data items are completely unrelated
CWhen the number of deletions and insertions is small, but a lot of searching and retrieval activities are expected.
DWhen elements need to be accessed non-sequentially only
Lời giải
Đáp án đúng: "When the number of deletions and insertions is small, but a lot of searching and retrieval activities are expected." Mảng mạnh ở chỗ các phần tử nằm liên tiếp nên lấy phần tử theo chỉ số rất nhanh, nhưng yếu ở chỗ chèn hay xoá buộc phải dồn phần tử và kích thước thường phải định trước; vậy nó thích hợp đúng với tình huống ít thay đổi cấu trúc mà tra cứu nhiều. Tình huống "When a large number of insertions and deletions are expected after creation" là lúc nên dùng danh sách liên kết. Tình huống "When data items are completely unrelated" không hợp, vì mảng dành cho tập phần tử cùng kiểu và cùng thuộc về một danh sách. Tình huống "When elements need to be accessed non-sequentially only" nêu một điểm mạnh của mảng nhưng không phải điều kiện chọn mảng, vì mảng dùng tốt cả cho truy cập tuần tự và mô tả này bỏ qua yếu tố quyết định là số lần chèn xoá.
Mở trang câu hỏi này →
AThere are two representations for zero.
BSimplifies addition and subtraction.
CIt uses floating-point numbers.
DIt uses more bits for the sign.
Lời giải
Đáp án đúng: "Simplifies addition and subtraction." Trong biểu diễn bù hai, phép trừ được đưa về phép cộng bằng cách cộng với bù hai của số bị trừ, và phép cộng thì làm giống nhau bất kể hai toán hạng âm hay dương, nên phần cứng chỉ cần một mạch cộng duy nhất và không phải so dấu hay so độ lớn trước khi tính. Nhận định "There are two representations for zero." là nhược điểm của biểu diễn dấu và độ lớn cùng biểu diễn bù một, còn bù hai chỉ có duy nhất một mẫu bit cho số không. Nhận định "It uses floating-point numbers." lẫn sang cách biểu diễn số thực, trong khi bù hai dùng cho số nguyên có dấu. Nhận định "It uses more bits for the sign." sai vì bù hai không thêm bit nào, dấu nằm sẵn trong bit trái cùng.
Mở trang câu hỏi này →
A8
B-0
C-7
D-8
Lời giải
Đáp án đúng: "-8". Với bốn bit bù hai, bit trái cùng mang trọng số âm nên mẫu 1000 có giá trị trừ 2 lũy thừa 3 cộng với 0, tức trừ 8; kiểm lại bằng quy tắc lấy bù hai cũng cho kết quả ấy, vì đảo bit của 1000 được 0111 rồi cộng 1 thành 1000, độ lớn là 8 và bit dấu cho biết đó là số âm. Giá trị "8" không biểu diễn được trên bốn bit bù hai, vì dải chỉ chạy từ trừ 8 đến 7 và mẫu lớn nhất 0111 đã là 7. Giá trị "-0" không tồn tại trong bù hai, số không chỉ có một mẫu duy nhất là 0000. Giá trị "-7" có mẫu 1001, khác mẫu đang được hỏi đúng một bit.
Mở trang câu hỏi này →
ATo fill the memory location to its full capacity
BTo indicate the number is negative
CTo align the decimal point for floating-point representation
DTo compress the data for storage efficiency
Lời giải
Đáp án đúng: "To fill the memory location to its full capacity". Số 12 ở hệ hai là 1100, chỉ chiếm bốn bit, nhưng ô nhớ 8 bit phải được điền đủ tám vị trí nên bốn chỗ trống bên trái được đặt bằng 0, cho mẫu 00001100; thêm số 0 vào bên trái không làm thay đổi giá trị nên đây chỉ là việc lấp cho đủ chỗ. Lý do "To indicate the number is negative" không thể đúng vì số nguyên không dấu không có bit dấu, và bit 0 ở đầu càng không biểu thị số âm. Lý do "To align the decimal point for floating-point representation" không liên quan, vì đây là số nguyên và không có phần lẻ nào cần căn. Lý do "To compress the data for storage efficiency" trái hẳn tác dụng, vì thêm bit là làm mẫu dài ra cho khớp kích thước ô nhớ chứ không nén.
Mở trang câu hỏi này →
AProcessing
BKilobyte
CBinary
DRepresentational
Lời giải
Đáp án đúng: "Binary". Máy tính được dựng từ các linh kiện chỉ phân biệt tin cậy hai trạng thái điện, có điện và không có điện, nên mọi dữ liệu dù là số, chữ, ảnh hay âm thanh đều phải mã về dãy bit 0 và 1 trước khi xử lý; đó là lý do hệ hai được gọi là ngôn ngữ của máy. Từ "Processing" chỉ hoạt động xử lý, nó không phải tên của một hệ biểu diễn hay một ngôn ngữ. Từ "Kilobyte" là đơn vị đo lượng dữ liệu, chỉ cho biết kích thước chứ không nói gì về cách mã hoá. Từ "Representational" không ứng với bất kỳ hệ biểu diễn nào trong máy tính, nó chỉ là một tính từ nói về việc biểu diễn.
Mở trang câu hỏi này →
ABase 2 (binary)
BBase 8 (octal)
CBase 10 (decimal)
DBase 16 (hexadecimal)
Lời giải
Đáp án đúng: "Base 2 (binary)". Mạch điện tử chỉ giữ ổn định hai mức tín hiệu nên cơ số dùng để lưu và xử lý mọi dữ liệu bên trong máy là cơ số hai, mỗi chữ số ứng với một bit. Hệ "Base 8 (octal)" chỉ là cách viết gọn cho người đọc, mỗi chữ số thay cho ba bit, nhưng máy không lưu dữ liệu theo hệ này. Hệ "Base 10 (decimal)" là hệ của con người, muốn dùng trực tiếp thì linh kiện phải phân biệt được mười mức điện khác nhau, điều vừa khó làm vừa dễ nhiễu. Hệ "Base 16 (hexadecimal)" cũng chỉ là ký hiệu thuận tiện cho con người, mỗi chữ số thay cho bốn bit, thường thấy khi viết địa chỉ hay mã màu, nhưng bên trong máy vẫn là các bit.
Mở trang câu hỏi này →