Java

Preview:

Citation preview

Đáp Án Lập Trình Mạng Java

Pnminh.it@gmail.com

PHẦN III: LẬP TRÌNH JAVA - TRẮC NGHIỆM

1. Nếu có cả 3 khai báo class, import, packageb trong cùng một tập tin mã nguồn thì chúng phải xuất hiện theo thứ tự nào là hợp lệ:

a. class, import, package

b. import, class, package

c. package, import, class

d. package, class, import

2. Cho đoạn chương trình:

int[] x = new int[25];

Chọn phát biểu đúng:

a. Giá trị của x[24] là null

b. x[24] không tồn tại

c. Giá trị của x[24] là 0

d. Tất cả câu trên đều sai

3. Chọn khai báo đúng cho phương thức main()

a. public static void main() b. public void main( String []arg) c. public static void main( String[] args) d. public static int main( String[] arg)

4. Cho đoạn chương trình sau:

1. class Q4 {

2. public static void main( String args[]){

3. Holder h = new Holder( );

4. h.held = 100;

5. h.bump(h);

6. System.out.println(h.held);

Đáp Án Lập Trình Mạng Java

Pnminh.it@gmail.com

7. }

8. }

9. class Holder{

10. public int held;

11. public void bump( Holder theHolder) {

12. theHolder.held++; }

13. }

14. }

Cho biết kết quả xuất ra ở dòng số 6 của đoạn chương trình trên:

a. 0 b. 1 c. 100 d. 101

5. Cho đoạn chương trình sau:

1. class Q5{

2. public static void main( String args[]){

3. double d = 12.3;

4. Decrementer dec = new Decrementer( );

5. dec.decrement(d);

6. System.out.println(d);

7. }

8. }

9. class Decrementer{

10. public void decrement( double decMe) {

11. decMe = decMe – 1.0;

12. }

Đáp Án Lập Trình Mạng Java

Pnminh.it@gmail.com

13. }

Cho biết kết quả xuất ra ở dòng số 6 của đoạn chương trình trên:

a. 0.0 b. -1.0 c. 12.3 d. 11.3

6. Lớp nào sau đây dùng để thực hiện các thao tác nhập xuất cơ bản console

a. System b. Math c. String d. StringBuffer

7. Cho đoạn chương trình sau:

1. class MyClass

2. {

3. void myMethod( int i ){ System.out.println(“int version”); }

4. void myMethod( String s) { System.out.println(“String version”); }

5. public static void main( String args[])

6. {

7. MyClass obj = new MyClass();

8. char ch = ‘c’;

9. obj.myMethod(ch);

10. }

11. }

Hãy chọn phát biểu đúng:

a. Dòng 4 không thể biên dịch vì không thể override các phương thức có kiểu trả về là void

b. Dòng số 9 sẽ phát sinh 1 biệt lệ

c. Dòng số 9 không thể biên dịch vì phương thức myMethod không nhận tham số kiểu char

Đáp Án Lập Trình Mạng Java

Pnminh.it@gmail.com

d. Đoạn chương trình thi hành và in ra kết quả là: int version

8. Cho biết kết quả của đoạn chương trình sau:

1. public class Test

2. {

3. public void method()

4. {

5. for(int i=0; i<3; i++)

6. {

7. System.out.print(i);

8. }

9. System.out.print(i);

10. }

11. }

a. 0122 b. 0123 c. Có lỗi khi biên dịch d. Tất cả các câu trên đều sai

9. Biểu thức nào sau đây là hợp lệ. Chọn câu trẻ lời thích hợp nhất:

a. int x = 6; x != x;

b. int x = 6; if (!(x>3)) {}

c. int x = 6; x = ~x;

d. Cả câu b) và câu c) đều đúng

10. Đoạn mã sau sai chỗ nào?

Public class Question

{ public static void main( String args[])

{ Boolean b = new Boolean(“TRUE”);

Đáp Án Lập Trình Mạng Java

Pnminh.it@gmail.com

if (b)

{ for( Integer i = 0; i<10 ; ++i)

System.out.println(i);

}

}

}

a. Đoạn mã không có lỗi

b. Điều kiện của câu lệnh if phải có kiểu boolean chứ không phải Boolean

c. Biến i trong câu lệnh for phải là int chứ không phải Integer

d. Cả câu b) và câu c) đều đúng

11. Chọn phát biểu thích hợp nhất:

a. Một lớp khai báo trừu tượng (abtract) không thể có những phương thức khai báo final

b. Một lớp khai báo final không thể có những phương thức khai báo trừu tượng (abstract)

c. Cả hai câu a, b đều đúng

d. Cả hai câu a,b đều sai

12. Cho biết thay đổi tối thiểu nào sẽ giúp cho đoạn chương trình bên dưới biên dịch thành công. Chọn câu trả lời thích hợp nhất.

1. final class A

2. {

3. int x;

4. void yMethod() { x = 1;}

5. }

6.

Đáp Án Lập Trình Mạng Java

Pnminh.it@gmail.com

7.

8. class B extends A

9. {

10. final A finalref = new A();

11.

12. final void yMethod()

13. {

14. System.out.println(“Phuong thuc yMethod”);

15. finalref.x = 12345;

16. }

17. }

18.

a. Loại bỏ từ khóa final trên dòng số 1

b. Loại bỏ từ khóa final trên dòng số 10

c. Loại bỏ dòng 15

d. Không cần thay đổi gì cả đoạn chương trình trên sẽ biên dịch thành công

13. Cho biết kết quả in ra của đoạn chương trình sau:

1. class Value

2. {

3. public int i = 15;

4. }

5. public class Test

6. {

Đáp Án Lập Trình Mạng Java

Pnminh.it@gmail.com

7. publci static void main( String argv[])

8. {

9. Test t = new Test();

10. t.first();

11. }

12. public void first()

13. {

14. int i = 5;

15. Value v = new Value(0;

16. v.i = 25;

17. second(v,i);

18. System.out.println(v.i);

19. }

20. public void second( Value v, int i)

21. {

22. i = 0;

23. v.i = 20;

24. Value val = new Value();

25. v = val;

26. System.out.println( v.i + “” + i );

27. }

28. }

a. 15 0 20 b. 15 0 15 c. 20 0 20 d. 0 15 20

Đáp Án Lập Trình Mạng Java

Pnminh.it@gmail.com

14. Cho đoạn chương trình bên dưới:

1. class A

2. {

3. void aMethod() {}

4. }

5.

6. class B extends A

7. {

8. void aMethod(){ }

9. }

Cho biết khai báo nào ( public, protected, private) là hợp lệ nếu đặt trước phương thức aMethod() trên dòng số 3.

a. public b. protected c. private d. Cả 3 câu a, b, c đều sai

15. Cho định nghĩa của một lớp Test như sau:

1. public class Test {

2. publci float aMethod( float a, float b ) {

3. }

4.

5. }

Phương thức nào bên dưới là không hợp lệ nếu ta thêm vào dòng số 4 của đoạn chương trình trên:

a. public int aMethod ( int a, int b ) { }

b. public float aMethod( float a, float b, float c ) throws Exception { }

c. private float aMethod( int a, int b, int c ) { }

Đáp Án Lập Trình Mạng Java

Pnminh.it@gmail.com

d. public int aMethod( float c, float d ) { }

16. Cho hai lớp Test1 và Test2 định nghĩa trong hai file khác nhau. Cụ thể như sau:

1. public class Test {

2. public float aMethod( float a, float b ) throws IOException

3. {

4. }

5. }

1. public class Test2 extends Test1 {

2.

3. }

Phương nào bên dưới là Không hợp lệ nếu ta thêm vào dòng số 2 của lớp có tên là Test2

a. public float aMethod( float p, float q) { }

b. public int aMethod( int a, int b ) throws Exception { }

c. float aMethod ( float a, float b) { }

d. public float aMethod( float a, float b) { }

17. Cho hai lớp Base và Sub định nghĩa trong 2 tập tin khác nhau:

1. public class Base{

2. public void method( int i) {

3. System.out.println(“Value is” + i);

4. }

5. }

6.

Đáp Án Lập Trình Mạng Java

Pnminh.it@gmail.com

1. public class Sub extends Base {

2. public void method( int j ) {

3. System.out.println(“This value is” + j);

4. }

5. public void method( String s) {

6. System.out.println(“I was passed” +s);

7. }

8. public static void main( String args[] ) {

9. Base b1 = new Base();

10. Base b2 = new Sub();

11. b1.method(5);

12. b2.method(6);

13. }

14. }

Hãy cho biết kết xuất chương trình khi thực hiện phương thức main của lớp Sub

a. Value is 5

Value is 6

b. This value is 5

This value is 6 c. Value is 5

This value is 6

d. This value is 5

Value is 6

18. Chọn phát biểu đúng cho hàm khởi tạo (constructor):

a. Một lớp con sẽ kế thừa các hàm khởi tạo từ lớp cha

b. Trình biên dịch sẽ tự động tạo hàm khởi tạo mặc định nếu lớp không định nghĩa hàm khởi tạo

Đáp Án Lập Trình Mạng Java

Pnminh.it@gmail.com

c. Tất cả các hàm khởi tạo có kiểu trả về là void

d. Tất cả các câu trên đều sai

19. Cho biết số byte mà đoạn chương trình sau ghi ra tập tin test.txt

import java.io.*;

public class TestIOApp {

public static void main( String ards[] ) throws IOException {

FileOutputStream outStream = new FileOutputStream(“test.txt”);

String s = “HelloWorld”;

for( int i = 0 ; i < s.length( ) ; i++)

outStream.write( s.chatAt(i));

outStream.close( );

}

}

Chú ý: các bạn để ý là s = “helloworld” có 10 ký tự => là 10bytes vì mỗi 1 ký tự là 1 bytes

a. 5 bytes b. 10 bytes c. 11 bytes d. 16 bytes

20. Chọn phát biểu đúng đối với đoạn chương trình bên dưới:

1. String s1 = “abc” + “def”;

2. String s2 = s1;

3. if ( s1 == s2 )

4. System.out.println(“ So sanh == thanh cong” );

5. if ( s1.equals( s2 ))

6. System.out.println(“ Phuong thuc equals co ket qua dung” );

Đáp Án Lập Trình Mạng Java

Pnminh.it@gmail.com

a. Cả dòng lệnh số 4 và số 6 đều thực hiện

b. Dòng lệnh số 4 thực hiện, còn dòng số 6 thì không

c. Dòng lệnh số 6 thực hiện, còn dòng số 4 thì không

d. Cả dòng lệnh số 4 và số 6 đều không thực hiện

21. Chọn câu trả lời thích hợp nhất:

a. Một thể hiện của lớp File có thể được dùng để truy cập các tập tin trong thư mục hiện hành

b. Khi một thể hiện của lớp File được tạo ra thì một tập tin tương ứng cũng được tạo ra trên đĩa

c. Các thể hiện của lớp File được dùng để truy cập đến các tập tin và thư mục trên đĩa

d. Cả hai câu a) và c) đều đúng

22. Hãy chọn câu lệnh dùng để tạo ra một thể hiện DataOutputStream dùng để ghi dữ liệu xuống tập tin

a. new DataOutputStream( “out.dat” ).

b. new DataOutputStream( new File(“out.dat”)).

c. new DataOutputStream( new OutputStream(“out.dat”)).

d. new DataOutputStream( new FileOutputStream(“out.dat”))

23. Hãy chọn câu trả lời đúng về giao diện (Interface)

a. Giao diện có thể được kế thừa bởi số lượng bất kỳ các giao diện khác

b. Giao diện có thể kế thừa số lượng bất kỳ các giao diện khác

c. Câu a) và b) đúng

d. Câu a) và b) sai

Chú ý: interface được tạo ra chỉ dung cho các lớp khác kế thừa , trong java không có khái niệm đa kế thừa , nhưng interface đã giải quyết trường hợp đa kế thừa

Đáp Án Lập Trình Mạng Java

Pnminh.it@gmail.com

24. Cho một thể hiện listener dùng để lắng nghe sự kiện ActionEvent và một thể hiện b của nút lệnh (Button). Chọn câu lệnh dùng để gắn listener vào b.

a. b.addActionListener(listener);

b. b.addWindowListener(listener);

c. b.addItemListener(listener);

d. Tất cả các câu trên đều sai

25. Cho đoạn chương trình khai báo như sau:

//Filename: MyClass.java

public class MyClass {

public static void main( String[] args){

C c = new C( );

System.out.println(c.max(13,29));

}

}

class A{

int max(int x, int y) { if (x>y) return x; else return y;}

}

class B extends A{

int max(int x, int y) { return super.max(y,x)-10; }

}

class C extends B {

int max(int x, int y) { return super.max(x+10,y+10); }

}

Hãy chọn phát biểu đúng:

Đáp Án Lập Trình Mạng Java

Pnminh.it@gmail.com

a. Chương trình không thể biên dịch vì phương thức max( ) trong lớp B truyền tham số khi gọi hàm super.max(y,x) sai vị trí

b. Chương trình biên dịch thành công và in ra giá trị 23 khi thi hành

c. Chương trình biên dịch thành công và in ra giá trị 29 khi thi hành

d. Chương trình biên dịch thành công và in ra giá trị 39 khi thi hành

26. Hãy chọn phát biểu đúng:

a. Một bộ lắng nghe sự kiện có thể được gỡ bỏ sau khi đã được gắn vào một thành phần (Component) của giao diện

b. Có thể gắn nhiều bộ lắng nghe sự kiện cho một thành phần (Component) của giao diện

c. Cả a) và b) đều sai

d. Cả a) và b) đều đúng

27. Cho đoạn chương trình sau:

1. import java.awt.*;

2. public class Test extends Frame{

3. public Test( )

4. this.add( new Label(“Hello”));

5. this.add(new TextField(“Hello”));

Câu 1:

hãy cho biết kết quả in ra màn hình khi thực thi đoạn chương trình sau và giải thích ngắn gọn tại sao có kết quả đó?

class C2{

public static void main(String arg[]){

Đáp Án Lập Trình Mạng Java

Pnminh.it@gmail.com

String s1=new String(“abc”);

String s2=new String(“abc”);

String s3=s2;

if(s1==s2)

System.out.print(“True”);

else

System.out.print(“False”);

if (s1==s3)

System.out.print(“True”);

else

System.out.print(“Flase”);

}

}

Trả Lời:

- kết quả in ra là : False False - Giải Thích : dữ liệu kiểu String không thể so sánh như

hàm toán học , mà phải sử dụng hàm equal

Câu 2: Tìm, mô tả và sửa lỗi biên dịch trong chương trình sau để chương trình có thể biên dịch và thực thi thành công. Cho biết kết quả thực thi của đoạn chương trình khi thực thi thành công và giải thích tại sao lại có kết quả đó.

abstract final class S1{

S1(){

System.out.print(“Class S1”);

}

Đáp Án Lập Trình Mạng Java

Pnminh.it@gmail.com

}

class S2 extends S1{

S2(){

System.out.print(“Class S2”);

}

public static void main(String arg[]){

new S2();

}

}

Trả Lời :

- lỗi Sai : final - Giải Thích : vì lớp sử dụng từ khóa Final thì không được phép cho lớp khác kế

thừa ở đây lớp S1 là Final mà lớp S2 lại extends là sai - Sửa Lỗi : xóa final trước class S1 đi - Kết quả Biên Dịch : Class S1 Class S2

Câu 3: Hãy viết một ứng dụng Client/Server, sử dụng socket, theo yêu cầu sau:

Chương trình Client:

- Cho phép người sử dụng nhập vào một chuỗi ký tự

- Gửi chuỗi ký tự nhận được đến Server

- Nhận dữ liệu trả về từ Server và in ra màn hình

- Kết thúc chương trình

Chương trình Server:

- Nhập kết nối từ Client

- Nhập chuỗi ký tự từ chương trình Client

- Đổi chuỗi ký tự sang chữ thường và gửi về cho Client

Đáp Án Lập Trình Mạng Java

Pnminh.it@gmail.com

- Kết thúc chương trình

* Không cần viết các chỉ thị import

Trả Lời : bài giải trong File đính kèm

Câu 1:

Hãy cho biết cú pháp và giải thích chi tiết công dụng của phương thức accept() trong lớp ServerSocket. Cho ví dụ minh họa cách sử dụng.

Trả Lời :

- Accept(): phương thức này thật sự dừng lại chờ đợi cho đến khi nhận được thông tin kết nối và sẽ trả về đối tượng Socket của máy khách nơi có yêu cầu nối vào máy chủ.

- VD : Viết Máy chủ chờ đợi kết nối tại cổng 2812 : import java.net.*; class MayChu { public static void main(String[] args) throws Exception { System.out.println("Server khoi dong tai cong 2812"); ServerSocket server = new ServerSocket(2812); Socket client = server.accept(); System.out.println("Ket noi may khach thanh cong."); client.close(); server.close(); } }

Câu 2:

Tìm và sửa lỗi trong chương trình sau để chương trình có thể biên dịch và thực thi thành công. Cho biết kết quả thực thi của chương trình sau khi đã sửa lỗi và giải thích ngắn gọn tại sao có kết quả đó:

Class C2{

final int t = 3;

public static main( String[] args) {

int t = 5;

Đáp Án Lập Trình Mạng Java

Pnminh.it@gmail.com

if ( C2.t > t)

System.out.println( “ True” );

Else

System.out.println( “False” );

}

}

Trả Lời :

- Lỗi Sai: o 1 : thiếu Void chỗ public static main o 2 : C2.t không thể gọi kiểu này o 3 : Else không viết hoa chữ E o 4 : Class chữ C không viết hoa

- Sửa Lỗi : o 1 : Thêm Void vào public static void main o 2 : khởi tạo C2 c = new C2(); sau đó chỗ if(C2.t > t) thay bằng if(c.t > t) o 3 : sửa E thành e o 4 : sửa C chỗ Class thành class o Code : class C2{ o final int t = 3; o public static void main( String[] args) { o int t = 5; o C2 c = new C2(); o if(c.t > t) o System.out.println("True"); o else o System.out.println("False"); o } o }

- Kết quả Khi thực thi : False - Giải Thích : c.t là biến toàn cục là final int t = 3

o Còn t là biến cục bộ trong hàm main : t = 5 o Vậy 3 không thể lớn hơn 5 được = False

Câu 3: Hãy viết một ứng dụng Client/Server, sử dụng socket, theo yêu cầu sau:

Chương trình Client:

- Cho phép người sử dụng nhập vào một chuỗi ký tự

Đáp Án Lập Trình Mạng Java

Pnminh.it@gmail.com

- Gửi chuỗi ký tự nhận được đến Server

- Nhận dữ liệu trả về từ Server và in ra màn hình

- Kết thúc chương trình

Chương trình Server:

- Nhập kết nối từ Client

- Nhập chuỗi ký tự từ chương trình Client

- Đổi chuỗi ký tự sang chữ thường và gửi về cho Client

- Kết thúc chương trình

* Không cần viết các chỉ thị import

Trả Lời : File đính kèm

Recommended