Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Mạng - Đề 03 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 mô hình TCP/IP, tầng nào chịu trách nhiệm chính cho việc định tuyến gói tin giữa các mạng khác nhau?
- A. Tầng Vận chuyển (Transport Layer)
- B. Tầng Mạng (Network Layer)
- C. Tầng Liên kết dữ liệu (Data Link Layer)
- D. Tầng Ứng dụng (Application Layer)
Câu 2: Giao thức UDP phù hợp nhất cho loại ứng dụng nào sau đây do đặc tính không kết nối và không đảm bảo độ tin cậy?
- A. Truyền tải file văn bản lớn
- B. Gửi email
- C. Streaming video trực tuyến
- D. Truy cập website (HTTP)
Câu 3: Điều gì xảy ra khi một server TCP nhận được yêu cầu kết nối đồng thời từ nhiều client và server đang sử dụng mô hình concurrent server?
- A. Server sẽ từ chối tất cả các kết nối đến sau kết nối đầu tiên.
- B. Server tạo một tiến trình hoặc luồng mới để xử lý từng kết nối đồng thời.
- C. Server sẽ xếp hàng đợi các yêu cầu kết nối và xử lý lần lượt khi rảnh.
- D. Server chỉ xử lý yêu cầu kết nối từ client đầu tiên và bỏ qua các yêu cầu khác.
Câu 4: Xét đoạn mã giả lập trình socket server sau:
```
create_socket(TCP)
bind_socket(port=8080)
listen_socket(backlog=5)
while True:
client_socket = accept_connection()
handle_client(client_socket)
close_client_socket(client_socket)
```
Đoạn mã trên mô tả mô hình server nào?
- A. Concurrent server (đa tiến trình)
- B. Non-blocking server (bất đồng bộ)
- C. Iterative server (tuần tự)
- D. Event-driven server (hướng sự kiện)
Câu 5: Trong giao thức HTTP, phương thức nào được sử dụng để yêu cầu server gửi lại toàn bộ tài nguyên, bỏ qua cache cục bộ?
- A. GET với header `Cache-Control: no-cache`
- B. POST
- C. PUT
- D. DELETE
Câu 6: Khi lập trình socket, hàm `bind()` được sử dụng để làm gì?
- A. Thiết lập kết nối đến một server từ client.
- B. Gán địa chỉ IP và số cổng cho socket.
- C. Chấp nhận một kết nối đến từ client.
- D. Đóng kết nối socket.
Câu 7: Số cổng (port number) trong TCP và UDP là một số nguyên bao nhiêu bit?
- A. 8-bit
- B. 32-bit
- C. 16-bit
- D. 64-bit
Câu 8: Phương thức giao tiếp multicast hiệu quả nhất trong trường hợp nào?
- A. Gửi dữ liệu từ một server đến tất cả các client trong mạng LAN.
- B. Gửi dữ liệu điểm-điểm giữa hai máy tính.
- C. Gửi dữ liệu từ một client đến server.
- D. Gửi dữ liệu đồng thời đến một nhóm máy tính đã đăng ký nhận.
Câu 9: Trong lập trình socket bất đồng bộ (asynchronous), lợi ích chính so với lập trình đồng bộ (synchronous) là gì?
- A. Ứng dụng không bị treo (block) khi chờ thao tác I/O hoàn thành.
- B. Code dễ viết và dễ hiểu hơn.
- C. Hiệu suất truyền dữ liệu cao hơn.
- D. Đảm bảo dữ liệu được truyền đến đích tin cậy hơn.
Câu 10: Giao thức nào sau đây thường được sử dụng để phân giải tên miền (domain name) thành địa chỉ IP?
- A. HTTP
- B. DNS
- C. SMTP
- D. FTP
Câu 11: Khi thiết kế một ứng dụng client-server, lựa chọn giao thức TCP hay UDP phụ thuộc vào yếu tố nào quan trọng nhất?
- A. Tốc độ truyền dữ liệu tối đa.
- B. Kích thước dữ liệu cần truyền.
- C. Số lượng client đồng thời kết nối.
- D. Yêu cầu về độ tin cậy và thứ tự của dữ liệu.
Câu 12: Địa chỉ IP nào sau đây là địa chỉ loopback, thường dùng để kiểm tra kết nối mạng cục bộ trên máy tính?
- A. 192.168.1.1
- B. 10.0.0.1
- C. 127.0.0.1
- D. 0.0.0.0
Câu 13: Trong giao thức SMTP, lệnh nào được client sử dụng để bắt đầu phiên giao tiếp và xác định server?
- A. HELO/EHLO
- B. MAIL FROM
- C. RCPT TO
- D. DATA
Câu 14: Để xây dựng một ứng dụng chat trực tuyến thời gian thực, giao thức truyền tải nào sẽ phù hợp hơn: TCP hay UDP?
- A. TCP, vì đảm bảo tin nhắn đến đúng thứ tự và đầy đủ.
- B. UDP, vì độ trễ thấp quan trọng hơn độ tin cậy trong chat thời gian thực.
- C. Cả TCP và UDP đều phù hợp như nhau.
- D. Không giao thức nào phù hợp cho chat trực tuyến.
Câu 15: Khi sử dụng socket kiểu TCP, trước khi có thể truyền dữ liệu, cần phải thiết lập kết nối. Quá trình thiết lập kết nối này được gọi là gì?
- A. Đóng gói dữ liệu (Data encapsulation)
- B. Phân mảnh dữ liệu (Data fragmentation)
- C. Kiểm soát luồng (Flow control)
- D. Bắt tay ba bước (Three-way handshake)
Câu 16: Trong lập trình mạng với socket, lỗi "Address already in use" thường xảy ra khi nào?
- A. Cố gắng bind socket vào một địa chỉ và cổng đã được sử dụng.
- B. Client cố gắng kết nối đến server không tồn tại.
- C. Mất kết nối mạng đột ngột.
- D. Vượt quá giới hạn số lượng kết nối đồng thời.
Câu 17: Cho đoạn code Python socket server sau:
```python
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("localhost", 12345))
s.listen(5)
conn, addr = s.accept()
print("Connected by", addr)
```
Đoạn code này đang sử dụng giao thức nào?
- A. UDP
- B. TCP
- C. IP
- D. HTTP
Câu 18: Trong mô hình OSI, tầng nào tương đương với "Tầng Mạng" (Network Layer) của mô hình TCP/IP?
- A. Tầng Giao vận (Transport Layer)
- B. Tầng Liên kết Dữ liệu (Data Link Layer)
- C. Tầng Mạng (Network Layer)
- D. Tầng Vật lý (Physical Layer)
Câu 19: Chức năng chính của giao thức ARP (Address Resolution Protocol) là gì?
- A. Phân giải tên miền thành địa chỉ IP.
- B. Định tuyến gói tin giữa các mạng.
- C. Đảm bảo truyền dữ liệu tin cậy.
- D. Phân giải địa chỉ IP thành địa chỉ MAC.
Câu 20: Khi một client gửi yêu cầu HTTP đến server web, cổng mặc định mà server web lắng nghe thường là cổng nào?
Câu 21: Để gửi email bằng giao thức SMTP, client cần kết nối đến SMTP server trên cổng nào?
- A. 80
- B. 110
- C. 25
- D. 443
Câu 22: Trong lập trình socket, hàm `listen()` được sử dụng cho socket server với mục đích gì?
- A. Thiết lập kết nối đến một client cụ thể.
- B. Đặt socket vào trạng thái lắng nghe các kết nối đến.
- C. Gửi dữ liệu đến client.
- D. Nhận dữ liệu từ client.
Câu 23: Nếu bạn muốn triển khai một dịch vụ truyền video trực tiếp với yêu cầu độ trễ thấp và chấp nhận mất một vài khung hình, giao thức nào sẽ phù hợp hơn?
- A. TCP, vì đảm bảo chất lượng video tốt nhất.
- B. UDP, vì độ trễ thấp quan trọng hơn việc đảm bảo toàn vẹn dữ liệu.
- C. Cả TCP và UDP đều phù hợp như nhau.
- D. Không giao thức nào phù hợp cho video streaming.
Câu 24: Trong lập trình mạng, thuật ngữ "Network Byte Order" và "Host Byte Order" liên quan đến vấn đề gì?
- A. Mã hóa dữ liệu trước khi truyền.
- B. Kiểm soát lỗi trong quá trình truyền dữ liệu.
- C. Định tuyến gói tin trên mạng.
- D. Thứ tự byte (endianness) của dữ liệu khi truyền qua mạng.
Câu 25: Phương thức giao tiếp nào sau đây là one-to-one?
- A. Unicast
- B. Broadcast
- C. Multicast
- D. Anycast
Câu 26: Để nhận email từ server, giao thức POP3 sử dụng cổng nào theo mặc định?
- A. 25
- B. 110
- C. 143
- D. 443
Câu 27: Trong mô hình TCP/IP, tầng nào cung cấp các dịch vụ như HTTP, SMTP, và DNS?
- A. Tầng Giao vận (Transport Layer)
- B. Tầng Mạng (Network Layer)
- C. Tầng Liên kết Dữ liệu (Data Link Layer)
- D. Tầng Ứng dụng (Application Layer)
Câu 28: Khi sử dụng giao thức TCP, cơ chế kiểm soát lỗi và kiểm soát luồng giúp đảm bảo điều gì?
- A. Tốc độ truyền dữ liệu nhanh nhất có thể.
- B. Độ trễ truyền dữ liệu thấp nhất.
- C. Dữ liệu được truyền đến đích một cách tin cậy và hiệu quả, tránh nghẽn mạng.
- D. Bảo mật dữ liệu trong quá trình truyền.
Câu 29: Trong lập trình socket, hàm `accept()` trả về giá trị gì?
- A. Số byte đã nhận được.
- B. Một socket mới dùng để giao tiếp với client.
- C. Địa chỉ IP của client kết nối.
- D. Thông báo lỗi nếu kết nối không thành công.
Câu 30: Xét tình huống: Một ứng dụng cần gửi thông báo trạng thái nhỏ (vài byte) đến hàng triệu client một cách liên tục và nhanh chóng. Giao thức nào sẽ phù hợp nhất?
- A. TCP Unicast
- B. TCP Broadcast
- C. UDP Unicast
- D. UDP Broadcast/Multicast