Bộ 7 - Trắc nghiệm Lập trình mạng online có đáp án
Thời gian còn lại: --:--
Kết quả của bạn:
Bạn đã đúng:
Bạn đã sai:
Tổng số câu:
Câu 1:
Trong lập trình Socket TCP, hàm 'bind()' có vai trò chính là gì?
💡 Lời giải chi tiết:
Theo cơ chế hoạt động của Socket API, hàm 'bind' được sử dụng để gán một định danh địa chỉ cục bộ bao gồm IP và Port cho Socket trước khi thực hiện các thao tác nghe hoặc kết nối. Kết luận Lý giải Liên kết Socket với một địa chỉ IP và số hiệu cổng (port) cụ thể trên máy cục bộ.
Câu 2:
Giao thức UDP (User Datagram Protocol) được phân loại là loại giao thức nào sau đây?
💡 Lời giải chi tiết:
UDP không thiết lập kết nối trước khi truyền dữ liệu và không đảm bảo thứ tự hay tính toàn vẹn của gói tin nên được gọi là giao thức không hướng kết nối. Kết luận Lý giải Giao thức không hướng kết nối (Connectionless).
Câu 3:
Thứ tự byte mạng (Network Byte Order) tiêu chuẩn được sử dụng trong giao tiếp TCP/IP là gì?
💡 Lời giải chi tiết:
Để đảm bảo tính nhất quán giữa các kiến trúc máy tính khác nhau, chuẩn TCP/IP quy định dữ liệu truyền trên mạng phải theo thứ tự Big-Endian. Kết luận Lý giải Big-Endian.
Câu 4:
Trong mô hình Client-Server, hàm 'accept()' trên Server thường trả về giá trị gì sau khi một kết nối được thiết lập?
💡 Lời giải chi tiết:
Khi có kết nối mới, hàm 'accept' sẽ tạo ra một Socket mới đại diện cho kết nối đó để Server có thể tiếp tục lắng nghe các Client khác trên Socket gốc. Kết luận Lý giải Một Socket mới được tạo riêng để giao tiếp với Client đó.
Câu 5:
Giao thức HTTP hoạt động chủ yếu ở tầng nào trong mô hình OSI?
💡 Lời giải chi tiết:
HTTP là giao thức cung cấp các dịch vụ truyền tải nội dung web trực tiếp cho người dùng cuối nên nó thuộc tầng Ứng dụng. Kết luận Lý giải Tầng Ứng dụng (Application Layer).
Câu 6:
Tiêu chuẩn độ dài của một địa chỉ IPv6 là bao nhiêu bit?
💡 Lời giải chi tiết:
Địa chỉ IPv6 được thiết kế với độ dài 128 bit để khắc phục tình trạng cạn kiệt không gian địa chỉ của IPv4 vốn chỉ có 32 bit. Kết luận Lý giải 128 bit.
Câu 7:
Trong lập trình mạng, mục đích chính của cơ chế 'Three-way Handshake' trong TCP là gì?
💡 Lời giải chi tiết:
Bắt tay ba bước (SYN, SYN-ACK, ACK) cho phép hai bên xác nhận khả năng truyền nhận và đồng bộ số thứ tự gói tin trước khi gửi dữ liệu thực. Kết luận Lý giải Thiết lập và đồng bộ hóa các thông số kết nối giữa Client và Server.
Câu 8:
Hàm 'select()' trong lập trình Socket được sử dụng để làm gì?
💡 Lời giải chi tiết:
Hàm 'select' là một cơ chế I/O multiplexing cho phép một luồng duy nhất quản lý nhiều kết nối mạng bằng cách kiểm tra trạng thái sẵn sàng của chúng. Kết luận Lý giải Theo dõi đồng thời nhiều Socket để biết Socket nào đã sẵn sàng cho việc đọc/ghi.
Câu 9:
Mã trạng thái HTTP '404 Not Found' có ý nghĩa gì?
💡 Lời giải chi tiết:
Mã 404 là lỗi phía Client cho biết địa chỉ URL được yêu cầu không tồn tại trên hệ thống lưu trữ của Server. Kết luận Lý giải Tài nguyên được yêu cầu không tìm thấy trên máy chủ.
Câu 10:
Trong lập trình Socket trên Java, lớp nào được sử dụng để tạo một máy chủ lắng nghe kết nối?
💡 Lời giải chi tiết:
Trong gói java.net, lớp 'ServerSocket' được thiết kế chuyên biệt để đợi các yêu cầu kết nối đến từ mạng và chấp nhận chúng. Kết luận Lý giải ServerSocket.
Câu 11:
Tham số 'backlog' trong hàm 'listen(sockfd, backlog)' có ý nghĩa gì?
💡 Lời giải chi tiết:
Tham số backlog quy định độ dài hàng đợi cho các kết nối đã hoàn tất bắt tay nhưng chưa được hàm 'accept' xử lý. Kết luận Lý giải Số lượng tối đa các kết nối đang chờ (pending) trong hàng đợi.
Câu 12:
Tại sao cần gọi hàm 'htons()' khi gán số hiệu cổng cho cấu trúc địa chỉ Socket?
💡 Lời giải chi tiết:
Hàm 'htons' (host to network short) đảm bảo giá trị cổng 16-bit được lưu trữ đúng định dạng Big-Endian mà mạng yêu cầu. Kết luận Lý giải Để chuyển đổi số cổng từ thứ tự byte của máy chủ (Host Byte Order) sang thứ tự byte mạng (Network Byte Order).
Câu 13:
Sự khác biệt chính giữa 'send()' và 'write()' khi làm việc với Socket là gì?
💡 Lời giải chi tiết:
Cú pháp của 'send' bao gồm một tham số flags cho phép cấu hình các tùy chọn như gửi dữ liệu khẩn cấp (OOB), trong khi 'write' là hàm ghi file thông thường. Kết luận Lý giải 'send()' cho phép truyền thêm các cờ (flags) điều khiển, còn 'write()' thì không.
Câu 14:
Trong giao thức TCP, trạng thái 'TIME_WAIT' có mục đích gì?
💡 Lời giải chi tiết:
Trạng thái TIME_WAIT giúp tránh việc các gói tin bị trễ của kết nối cũ bị nhận nhầm bởi một kết nối mới sử dụng cùng cặp IP/Port. Kết luận Lý giải Đảm bảo các gói tin cũ trên mạng đã biến mất hoàn toàn trước khi mở một kết nối mới với cùng Port.
Câu 15:
Dải cổng (Port) từ 0 đến 1023 được gọi là gì?
💡 Lời giải chi tiết:
Theo quy định của IANA, các cổng từ 0 đến 1023 dành cho các dịch vụ hệ thống quan trọng như HTTP (80), FTP (21) và được gọi là Well-known Ports. Kết luận Lý giải Well-known Ports (Cổng phổ biến/hệ thống).
Câu 16:
Hàm 'inet_addr()' thực hiện chức năng nào sau đây?
💡 Lời giải chi tiết:
Hàm này giúp lập trình viên chuyển đổi các địa chỉ dễ đọc như '192.168.1.1' sang định dạng mà cấu trúc struct sockaddr_in có thể hiểu được. Kết luận Lý giải Chuyển đổi một chuỗi ký tự chứa địa chỉ IPv4 (dạng dot-decimal) sang dạng số nguyên nhị phân theo thứ tự mạng.
Câu 17:
Ưu điểm lớn nhất của việc sử dụng Non-blocking Socket là gì?
💡 Lời giải chi tiết:
Trong chế độ Non-blocking, các hàm như 'recv' sẽ trả về ngay lập tức nếu không có dữ liệu, giúp luồng thực thi không bị chặn đứng. Kết luận Lý giải Cho phép chương trình tiếp tục thực hiện các tác vụ khác mà không bị treo khi chờ đợi dữ liệu mạng.
Câu 18:
Trong kiến trúc RESTful API, phương thức HTTP nào thường được dùng để cập nhật một tài nguyên đã tồn tại?
💡 Lời giải chi tiết:
Theo quy chuẩn REST, phương thức PUT được thiết kế để thay thế hoặc cập nhật toàn bộ nội dung của một tài nguyên tại một định danh cụ thể. Kết luận Lý giải PUT.
Câu 19:
Tiến trình 'Zombie' trong lập trình mạng Server trên Linux thường phát sinh khi nào?
💡 Lời giải chi tiết:
Khi tiến trình con (thường xử lý một Client) thoát, nó để lại một mục trong bảng tiến trình cho đến khi cha xác nhận, tạo ra trạng thái Zombie. Kết luận Lý giải Một tiến trình con kết thúc nhưng tiến trình cha chưa gọi hàm 'wait()' để thu dọn trạng thái thoát.
Câu 20:
Đặc điểm của 'Broadcasting' trong lập trình mạng là gì?
💡 Lời giải chi tiết:
Broadcasting sử dụng địa chỉ đặc biệt để đảm bảo mọi thiết bị trong mạng cục bộ đều nhận được gói tin. Kết luận Lý giải Gửi dữ liệu từ một máy đến tất cả các máy khác trong cùng một phân đoạn mạng (subnet).
Câu 21:
Giao thức nào sau đây được sử dụng để tự động cấp phát địa chỉ IP cho các thiết bị trong mạng?
💡 Lời giải chi tiết:
DHCP (Dynamic Host Configuration Protocol) là giao thức quản lý việc gán địa chỉ IP động và cấu hình mạng cho các máy trạm tự động. Kết luận Lý giải DHCP.
Câu 22:
Trong lập trình Socket, 'Serialization' (Tuần tự hóa) có vai trò gì?
💡 Lời giải chi tiết:
Vì mạng chỉ truyền các luồng byte, Serialization là bước bắt buộc để gửi các cấu trúc dữ liệu phức tạp từ máy này sang máy khác. Kết luận Lý giải Chuyển đổi một đối tượng trong bộ nhớ thành một chuỗi byte để có thể truyền qua mạng.
Câu 23:
Lệnh 'ping' sử dụng giao thức nào để kiểm tra kết nối giữa hai máy tính?
💡 Lời giải chi tiết:
Lệnh ping gửi các gói 'Echo Request' và nhận 'Echo Reply' thông qua giao thức ICMP thuộc tầng Mạng. Kết luận Lý giải ICMP.
Câu 24:
Tại sao UDP lại thường được sử dụng cho các ứng dụng Livestream hoặc VOIP?
💡 Lời giải chi tiết:
Trong truyền tải thời gian thực, việc nhận dữ liệu nhanh chóng quan trọng hơn việc truyền lại các gói tin cũ bị mất, làm cho UDP trở nên phù hợp. Kết luận Lý giải Vì nó có độ trễ thấp do không tốn thời gian cho việc bắt tay và truyền lại gói tin lỗi.
Câu 25:
Chức năng của tầng Giao vận (Transport Layer) trong mô hình OSI là gì?
💡 Lời giải chi tiết:
Tầng Giao vận (với TCP/UDP) chịu trách nhiệm quản lý việc giao tiếp giữa các tiến trình trên các máy chủ khác nhau. Kết luận Lý giải Cung cấp truyền tải dữ liệu đầu-cuối tin cậy hoặc không tin cậy và kiểm soát luồng.