NEW
Font size
WorksheetsTN LTM code
Total questions: 28
Worksheet time: 14mins
Đoạn code sau làm gì?
PipedInputStream in = new PipedInputStream();
PipedOutputStream out = new PipedOutputStream();
in.connect(out);
out.write("Hello".getBytes());
byte[] buffer = new byte[5];
in.read(buffer);
System.out.println(new String(buffer));
In ra "Hello"
Gây lỗi IOException
Không in gì do chưa đóng ống dẫn
In ra ký tự rỗng
Lỗi trong đoạn code sau là gì?
try {
PipedOutputStream out = new PipedOutputStream();
out.write("Test".getBytes()); }
catch (IOException e) {
System.out.println("Lỗi I/O");
}
Thiếu import java.io.*
Chưa kết nối PipedOutputStream với PipedInputStream
Sai phương thức write()
Không có lỗi
Kết quả của đoạn code sau là gì?
Thread thread = new Thread(() -> { System.out.print("X"); });
thread.start();
System.out.print("Y");
Luôn in "XY"
Luôn in "YX"
Có thể in "XY" hoặc "YX" tùy lần chạy
Lỗi biên dịch
Đoạn code sau thiếu gì để đọc dữ liệu từ bàn phím?
BufferedReader reader = new BufferedReader(new InputStreamReader(_______));
String input = reader.readLine();
System.out
System.in
FileInputStream
PipedInputStream
Phương thức nào sau đây đóng cả PipedInputStream và PipedOutputStream?
void closePipe(PipedInputStream in, PipedOutputStream out)
{ // Chọn phương thức phù hợp }
in.close(); out.close();
try (in; out) { ... } (Java 9+)
Pipe.closeAll(in, out);
Không cần đóng
Đoạn code sau có gì sai?
PipedInputStream in = new PipedInputStream();
PipedOutputStream out = new PipedOutputStream();
out.connect(in);
// Dòng này out.write(65);
Sai thứ tự kết nối (phải là in.connect(out))
Thiếu import
Không bắt IOException
Không có lỗi
Kết quả của đoạn code sau?
try {
int x = 10 / 0;
} catch (ArithmeticException e) {
System.out.print("A");
} catch (Exception e) {
System.out.print("B");
} finally {
System.out.print("C");
}
AC
BC
A
Lỗi biên dịch
Đâu là cách đúng để khởi tạo một luồng?
new Thread().run();
new Thread(() -> {}).start();
Thread.execute(() -> {});
Thread.start();
Code sau in ra gì nếu nhập "5" từ bàn phím? BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); int num = Integer.parseInt(reader.readLine()); System.out.print(num * 2);
10
55
Lỗi nếu nhập không phải số
Không in gì
Lớp nào dùng để ghi dữ liệu dạng văn bản vào file?
FileOutputStream
PrintWriter
DataOutputStream
PipedOutputStream
PipedInputStream in = new PipedInputStream(); PipedOutputStream out = new PipedOutputStream(in); out.write("ABC".getBytes()); int x = in.read(); System.out.println((char)x);
x sẽ là:
A
B
C
Lỗi
Socket socket = new Socket("localhost", 9090); OutputStream os = socket.getOutputStream(); os.write(72); socket.close();
Gửi ký tự 'H' qua TCP
In 'H'
Lỗi
Không gửi gì
ServerSocket server = new ServerSocket(9000); Socket client = server.accept(); BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream())); System.out.println(br.readLine());
Đoạn code này thực hiện việc gì ?
Đọc dữ liệu từ client TCP
Đọc từ bàn phím
Lỗi kết nối
Không làm gì
DatagramSocket socket = new DatagramSocket(); byte[] buf = "UDP".getBytes(); DatagramPacket p = new DatagramPacket(buf, buf.length, InetAddress.getLocalHost(), 1234); socket.send(p);
Doạn code này thực hiện việc gì?
Gửi gói UDP
Gửi TCP
Lỗi runtime
Không làm gì
PipedOutputStream out = new PipedOutputStream(); PipedInputStream in = new PipedInputStream(out); new Thread(() -> { try {
out.write("X".getBytes());
} catch (Exception e) {} }
).start();
System.out.println((char)in.read());
Kết quả của đoạn code:
X
Lỗi
Không in gì
null
Socket s = new Socket("localhost", 8000); PrintWriter pw = new PrintWriter(s.getOutputStream()); pw.print("Hello"); pw.flush();
Kết quả của đoạn code:
Gửi "Hello" qua TCP
In "Hello"
Lỗi biên dịch
Không gửi gì
DatagramSocket s = new DatagramSocket(9999);
byte[] buf = new byte[10];
DatagramPacket p = new DatagramPacket(buf, buf.length);
s.receive(p);
System.out.println(new String(p.getData()).trim());
Đoạn code này dùng để làm gì?
Nhận dữ liệu từ UDP
Gửi dữ liệu
Đọc từ file
In lỗi
Socket s = new Socket("localhost", 5000); ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream()); oos.writeObject("Java");
Kết quả của đoạn code:
Gửi chuỗi "Java" dạng object qua TCP
Lỗi vì không serializable
Không gửi gì
Gửi byte
ServerSocket ss = new ServerSocket(4000);
Socket s = ss.accept();
ObjectInputStream ois = new ObjectInputStream(s.getInputStream());
String msg = (String) ois.readObject();
System.out.println(msg);
Kết quả của đoạn code:
Nhận object qua TCP
Lỗi runtime
Nhận text UDP
Không in gì
Registry registry = LocateRegistry.createRegistry(1099); registry.rebind("echo", new RemoteImpl());
Đoạn code này dùng để làm gì ?
Đăng ký RMI object
Tạo pipe
Gửi TCP
Lỗi
Socket s = new Socket("localhost", 3000); BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream())); System.out.println(br.readLine());
Đoạn code này dùng để:
Nhận dòng từ TCP
Gửi dữ liệu
Đọc file
Lỗi socket
PipedInputStream in = new PipedInputStream(); PipedOutputStream out = new PipedOutputStream(in); new Thread(() -> { try { out.write("Data".getBytes()); out.close(); } catch (Exception e) {} }).start(); int b; while ((b = in.read()) != -1) System.out.print((char) b);
In ra dữ liệu
Không có gì xảy ra
Lỗi runtime
Gửi dữ liệu
DatagramSocket ds = new DatagramSocket(); byte[] buf = new byte[0]; DatagramPacket dp = new DatagramPacket(buf, 0, InetAddress.getByName("127.0.0.1"), 1234); ds.send(dp);
Gửi gói rỗng UDP
Lỗi kích thước
Không thể nối kết UDP
Không gửi
DatagramSocket ds = new DatagramSocket(8888); byte[] b = new byte[100]; DatagramPacket p = new DatagramPacket(b, b.length); ds.receive(p); System.out.println(new String(b).trim());
Nhận và in nội dung UDP
Gửi TCP
In IP người gửi
Lỗi
Socket s = new Socket("localhost", 2222); DataInputStream dis = new DataInputStream(s.getInputStream()); int x = dis.readInt(); System.out.println(x);
Nhận số nguyên qua TCP
Lỗi vì readInt
Không in gì
Gửi dữ liệu
DatagramSocket socket = new DatagramSocket();
byte[] data = new byte[1024];
DatagramPacket packet = new DatagramPacket(data, data.length);
socket.receive(packet);
// Lỗi ở đây?
Thiếu khai báo cổng
Chưa chỉ định địa chỉ/port của Server trước khi nhận
Sai kiểu dữ liệu byte[]
Không có lỗi
MulticastSocket socket = new MulticastSocket(9876);
socket.joinGroup(InetAddress.getByName("230.0.0.1"));
byte[] buffer = new byte[1024];
while (true) {
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
socket.receive(packet); // Điểm chậm
String message = new String(packet.getData(), 0, packet.getLength());
System.out.println(message);
}
Đoạn code Multicast trên tại sao lại chậm ?
Không dùng bộ đệm (buffer) tái sử dụng
Thiếu setSoTimeout()
Không kiểm tra NullPointerException
Lỗi do joinGroup()
byte[] largeData = new byte[65507]; // Kích thước tối đa
DatagramPacket packet = new DatagramPacket(largeData, largeData.length);
socket.send(packet);
Làm sao để hạn chế việc bị mất gói tin khi gửi qua UDP ?
Chia nhỏ dữ liệu thành các packet < 1500 byte
Dùng TCP thay UDP
Tăng kích thước buffer
Dùng hàm khác xử lý
