Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Cơ Sở Lập Trình bao gồm nhiều câu hỏi hay, bám sát chương trình. Cùng làm bài tập trắc nghiệm ngay.
Câu 1: Trong lập trình hướng đối tượng, khái niệm nào cho phép một lớp con kế thừa các thuộc tính và phương thức từ lớp cha, đồng thời có thể mở rộng hoặc sửa đổi chúng?
- A. Tính đóng gói (Encapsulation)
- B. Tính kế thừa (Inheritance)
- C. Tính đa hình (Polymorphism)
- D. Tính trừu tượng (Abstraction)
Câu 2: Cho đoạn mã giả sau:
```
FUNCTION tinh_tong(a, b):
RETURN a + b
END FUNCTION
result = tinh_tong(5,
- A. Chương trình sẽ báo lỗi biên dịch do kiểu dữ liệu không tương thích.
- B. Chương trình sẽ in ra kết quả 15 vì
- C. Chương trình có thể in ra kết quả
- D. Chương trình sẽ thực hiện phép cộng số học và in ra kết quả 15.
Câu 3: Độ phức tạp thời gian O(log n) thường xuất hiện trong thuật toán nào dưới đây?
- A. Tìm kiếm tuyến tính (Linear Search)
- B. Tìm kiếm nhị phân (Binary Search)
- C. Sắp xếp nổi bọt (Bubble Sort)
- D. Duyệt danh sách liên kết (Linked List Traversal)
Câu 4: Phát biểu nào sau đây mô tả đúng nhất về ngôn ngữ lập trình biên dịch (compiled language)?
- A. Mã nguồn được dịch toàn bộ thành mã máy trước khi thực thi.
- B. Mã nguồn được dịch và thực thi từng dòng lệnh một.
- C. Chương trình cần một máy ảo (Virtual Machine) để thực thi.
- D. Ngôn ngữ này thường chậm hơn ngôn ngữ thông dịch.
Câu 5: Trong mô hình bộ nhớ máy tính, vùng nhớ Stack (ngăn xếp) thường được sử dụng để lưu trữ dữ liệu nào?
- A. Các biến toàn cục (Global variables)
- B. Bộ nhớ động được cấp phát (Dynamically allocated memory)
- C. Các biến cục bộ và thông tin lời gọi hàm (Local variables and function call information)
- D. Mã chương trình (Program code)
Câu 6: Kiểu dữ liệu trừu tượng (Abstract Data Type - ADT) là gì?
- A. Một kiểu dữ liệu cơ bản như số nguyên hoặc số thực.
- B. Một kiểu dữ liệu chỉ có thể được sử dụng trong lập trình hướng đối tượng.
- C. Một cách biểu diễn dữ liệu cụ thể trong bộ nhớ máy tính.
- D. Một mô hình toán học cho kiểu dữ liệu được định nghĩa bởi các thao tác và thuộc tính của nó.
Câu 7: Trong lập trình, thuật ngữ
- A. Viết lại toàn bộ chương trình từ đầu.
- B. Cải thiện cấu trúc mã nguồn mà không thay đổi chức năng bên ngoài.
- C. Sửa lỗi (debug) chương trình.
- D. Thêm chức năng mới vào chương trình.
Câu 8: Phương pháp lập trình
- A. Giải quyết vấn đề bằng cách thử tất cả các khả năng.
- B. Tìm kiếm giải pháp tối ưu bằng cách lặp qua các bước.
- C. Chia vấn đề lớn thành các vấn đề con nhỏ hơn, giải quyết chúng và kết hợp kết quả.
- D. Giải quyết vấn đề từ dưới lên, bắt đầu từ các trường hợp đơn giản nhất.
Câu 9: Trong biểu đồ UML (Unified Modeling Language), loại biểu đồ nào thường được sử dụng để mô tả luồng điều khiển của một thuật toán hoặc quy trình nghiệp vụ?
- A. Biểu đồ lớp (Class Diagram)
- B. Biểu đồ đối tượng (Object Diagram)
- C. Biểu đồ trình tự (Sequence Diagram)
- D. Biểu đồ hoạt động (Activity Diagram)
Câu 10: Trong lập trình web, giao thức HTTP (Hypertext Transfer Protocol) thuộc tầng nào trong mô hình OSI (Open Systems Interconnection)?
- A. Tầng ứng dụng (Application Layer)
- B. Tầng giao vận (Transport Layer)
- C. Tầng mạng (Network Layer)
- D. Tầng liên kết dữ liệu (Data Link Layer)
Câu 11: Kiểu dữ liệu Boolean (logic) thường có bao nhiêu giá trị?
Câu 12: Trong lập trình cơ sở dữ liệu, câu lệnh SQL `JOIN` được sử dụng để làm gì?
- A. Lọc dữ liệu từ một bảng.
- B. Sắp xếp dữ liệu trong một bảng.
- C. Kết hợp dữ liệu từ hai hoặc nhiều bảng.
- D. Cập nhật dữ liệu trong một bảng.
Câu 13: Trong lập trình hàm (Functional Programming), khái niệm
- A. Hàm chỉ được viết bằng một dòng mã.
- B. Hàm không được phép sử dụng biến toàn cục.
- C. Hàm phải được gọi đệ quy.
- D. Hàm luôn trả về cùng một kết quả cho cùng một đầu vào và không có tác dụng phụ.
Câu 14: Khi một chương trình gặp lỗi
- A. Thiếu bộ nhớ RAM.
- B. Đệ quy vô hạn hoặc đệ quy quá sâu.
- C. Lỗi cú pháp trong mã nguồn.
- D. Truy cập vào vùng nhớ không hợp lệ (segmentation fault).
Câu 15: Trong kiểm thử phần mềm,
- A. Các đơn vị nhỏ nhất của phần mềm (hàm, phương thức).
- B. Toàn bộ hệ thống phần mềm.
- C. Giao diện người dùng (User Interface).
- D. Hiệu năng của phần mềm.
Câu 16: Trong lập trình mạng, Socket (ổ cắm) đóng vai trò gì?
- A. Thiết bị phần cứng để kết nối mạng.
- B. Giao thức truyền dữ liệu trên mạng.
- C. Điểm cuối giao tiếp để gửi và nhận dữ liệu qua mạng.
- D. Địa chỉ IP của máy tính.
Câu 17: Thuật toán sắp xếp nào sau đây có độ phức tạp thời gian trung bình tốt nhất (O(n log n)) và thường được sử dụng trong thực tế?
- A. Sắp xếp nổi bọt (Bubble Sort)
- B. Sắp xếp nhanh (Quick Sort)
- C. Sắp xếp chèn (Insertion Sort)
- D. Sắp xếp chọn (Selection Sort)
Câu 18: Trong quản lý phiên bản (Version Control) với Git, lệnh `branch` được sử dụng để làm gì?
- A. Lưu trữ các thay đổi vào kho lưu trữ cục bộ.
- B. Tải mã nguồn từ kho lưu trữ từ xa.
- C. Hợp nhất các thay đổi từ nhánh khác.
- D. Tạo, liệt kê hoặc xóa nhánh.
Câu 19: Trong lập trình giao diện người dùng (UI), khái niệm
- A. Chương trình thực thi theo một luồng cố định từ đầu đến cuối.
- B. Chương trình được chia thành các module nhỏ và độc lập.
- C. Chương trình phản ứng với các sự kiện, thường là thao tác của người dùng.
- D. Chương trình tự động tạo giao diện người dùng dựa trên mã nguồn.
Câu 20: Trong bảo mật phần mềm, kỹ thuật
- A. Lỗi tràn bộ đệm (Buffer overflow).
- B. Lỗ hổng trong việc xử lý đầu vào khi truy vấn cơ sở dữ liệu.
- C. Lỗi xác thực người dùng yếu.
- D. Tấn công từ chối dịch vụ (Denial of Service).
Câu 21: Trong lập trình đa luồng (Multithreading),
- A. Nhiều luồng truy cập và thay đổi dữ liệu dùng chung đồng thời mà không có cơ chế đồng bộ hóa.
- B. Một luồng cố gắng truy cập vào vùng nhớ đã được giải phóng.
- C. Các luồng không thể giao tiếp với nhau.
- D. Chương trình chạy quá nhanh.
Câu 22: Trong thiết kế hướng đối tượng, nguyên tắc
- A. Các lớp nên được mở rộng để thêm chức năng mới, không sửa đổi mã hiện có.
- B. Các lớp con nên có thể thay thế cho lớp cha của chúng.
- C. Một lớp chỉ nên có một và chỉ một lý do để thay đổi.
- D. Nên ưu tiên tính tổng hợp (composition) hơn là kế thừa (inheritance).
Câu 23: Trong kiến trúc phần mềm,
- A. Một loại cơ sở dữ liệu NoSQL.
- B. Một framework phát triển web.
- C. Một phương pháp quản lý dự án phần mềm.
- D. Một kiến trúc phần mềm chia ứng dụng thành các dịch vụ nhỏ, độc lập.
Câu 24: Trong lập trình bất đồng bộ (Asynchronous Programming), từ khóa `async` và `await` thường được sử dụng để làm gì?
- A. Tăng tốc độ thực thi chương trình.
- B. Đơn giản hóa việc viết mã bất đồng bộ, làm cho nó dễ đọc và dễ bảo trì hơn.
- C. Quản lý bộ nhớ hiệu quả hơn.
- D. Kiểm soát luồng thực thi của chương trình.
Câu 25: Trong kiểm thử phần mềm,
- A. Trước khi phát hành phiên bản phần mềm đầu tiên.
- B. Trong giai đoạn phát triển tính năng mới.
- C. Sau khi có thay đổi mã nguồn (sửa lỗi, thêm tính năng).
- D. Khi phát hiện lỗi trong quá trình sử dụng thực tế.
Câu 26: Trong lập trình,
- A. Một hàm được truyền như một đối số cho hàm khác và được gọi lại sau.
- B. Một hàm được gọi đệ quy.
- C. Một hàm được gọi tự động khi chương trình khởi động.
- D. Một hàm luôn trả về một giá trị cố định.
Câu 27: Trong lập trình hướng đối tượng,
- A. Composition tạo ra mối quan hệ
- B. Inheritance cho phép tái sử dụng mã tốt hơn composition.
- C. Composition chỉ sử dụng được trong ngôn ngữ lập trình hàm.
- D. Composition tạo ra mối quan hệ
Câu 28: Trong ngữ cảnh của hệ điều hành,
- A. Process là một phần của thread.
- B. Process có không gian địa chỉ riêng, còn thread chia sẻ không gian địa chỉ trong process.
- C. Thread là khái niệm trừu tượng hơn process.
- D. Process chỉ tồn tại trong hệ điều hành Windows, còn thread chỉ tồn tại trong Linux.
Câu 29: Trong lập trình web frontend, thư viện hoặc framework JavaScript nào sau đây tập trung vào việc xây dựng giao diện người dùng phức tạp dựa trên các thành phần (component-based UI)?
- A. jQuery
- B. Lodash
- C. Underscore.js
- D. React, Angular, Vue.js
Câu 30: Cho đoạn mã giả sau:
```
x = 5
y = 10
FUNCTION modify_values(tham_tri, tham_chieu):
tham_tri = tham_tri + 1
tham_chieu = tham_chieu + 1
END FUNCTION
modify_values(x, y)
PRINT x, y
```
Nếu `tham_tri` là tham số truyền theo giá trị (pass-by-value) và `tham_chieu` là tham số truyền theo tham chiếu (pass-by-reference), kết quả in ra sẽ là gì?
- A. 6, 11
- B. 6, 10
- C. 5, 11
- D. 5, 10