200+ câu trắc nghiệm Java cơ bản có đáp án - Phần 5
Đề thi

200+ câu trắc nghiệm Java cơ bản có đáp án - Phần 5

A
Admin
Đại họcTrắc nghiệm tổng hợp18 lượt thi
31 câu hỏi
1. Trắc nghiệm
1 điểm

StringBuffer s = new StringBuffer("hello how are you how?");

int x = s.indexOf("ow");

System.out.println(x);

Trong đoạn mã trên x nhận giá trị bao nhiêu?

Chọn một Câu trả lời

7

6

5

Lỗi biên dịch

Xem đáp án

Chọn đáp án A

Vì:

Hàm indexOf trả về vị trí đầu tiên xuất hiện của chuỗi ow trong chuỗi s(là ở vị trí thứ 7).

2. Trắc nghiệm
1 điểm

1: int index = 1;

2: boolean[] test = new boolean[3];

3: boolean foo= test [index];

Kết quả mà foo nhận được sau phép gán là?

Chọn một Câu trả lời

foo có giá trị là 0.

foo có giá trị là null.

foo có giá trị là true.

foo có giá trị là false.

Xem đáp án

Chọn đáp án D

Vì:

Theo ngầm định khi tạo mảng dữ liệu kiểu logic thì tất cả các phần tử đều nhận giá trị false

3. Trắc nghiệm
1 điểm

Lệnh nào SAI?

Chọn một Câu trả lời

float f2[] = new float[];

float[] f1 = new float[3];

float f3[] = new float[3];

float f5[] = { 1.0f, 2.0f, 2.0f };

Xem đáp án

Chọn đáp án A

Vì:

khi khởi tạo mảng, số phần tử phải xác định

4. Trắc nghiệm
1 điểm

Đoạn mã sau có lỗi biên dịch nào?

class Student {

}

public class Man extends Student{

public static void main(String[] args) {

Man m = new Student();

}

}

Chọn một Câu trả lời

Không có lỗi biên dịch.

Có lỗi biên dịch: Incompatible type, required Man, found Student.

Có lỗi biên dịch:Incompatible type, required Student, found Man.

Do not use extends to make subclass..

Xem đáp án

Chọn đáp án B

Vì:

m thuộc kiểu Man, nên có thể chứa pointer tới đối tượng của lớp Man. Không chứa được pointer tới đối tượng của lớp Student.

5. Trắc nghiệm
1 điểm

G/s đã khai báo lớp Student như sau:

Class Student

{

Public String name;

}

Đâu là cách tạo lớp Man là lớp con của Student?

Chọn một Câu trả lời

public class Man extends Student{ }

public class Man extend Student{ }

public class Man :Student{ }

public class Man => Student{ }

Xem đáp án

Chọn đáp án A

Vì:

Theo cú pháp khai báo lớp kế thừa trong java, từ khóa extends được dùng để mô tả một lớp là lớp con của lớp khác.

6. Trắc nghiệm
1 điểm

1. class Super {

2. public int getLenght() { return 4; }

3. }

4.

5. public class Sub extends Super {

6. public long getLenght() { return 5; }

7.

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

9. Super sooper = new Super();

10. Sub sub = new Sub();

11. System.out.println(

12. sooper.getLenght() + "," + sub.getLenght() );

13. }

14. }

Chương trình sẽ in ra cái gì?

Chọn một Câu trả lời

4,4

4,5

5,4

Lỗi biên dịch

Xem đáp án

Chọn đáp án D

Vì:

Phương thức getLenght() trong lớp cha kiểu int, lớp con không thể thực hiện ghi đè phương thức này với kiểu long.

7. Trắc nghiệm
1 điểm

1. class TestSuper {

2. TestSuper(int i) { }

3. }

4. class TestSub extends TestSuper{ }

5. class TestAll {

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

7. new TestSub();

8. }

9. }

Kết quả in ra của đoạn mã trên là gì?

Chọn một Câu trả lời

Lỗi biên dịch

Đoạn mã chạy không sinh lỗi

Lỗi đưa ra dòng 7

Lỗi đưa ra dòng 2

Xem đáp án

Chọn đáp án A

Vì:

+ Lớp con kế thừa TestSub chưa triển khai hàm constructor của lớp cha

8. Trắc nghiệm
1 điểm

Đọc đoạn mã sau:

1.0: package pac02;

1.1: public class ClassA {

1.2: protected int xA;

1.3: public String yA;

1.4:}

---------

2.0: package pac01;

2.1: import pac02.ClassA;

2.2: public class Test {

2.3: public static void main(String[] args) {

2.4: ClassA a = new ClassA();

2.5: a.xA = 12;

2.6: a.yA = "Hello";

2.7: System.out.println("a.xA = " + a.xA + "; a.yA = " + a.yA);

2.8: }

2.9: }

Chương trình sẽ in ra kết quả gì khi thực thi?

Chọn một Câu trả lời

Lỗi biên dịch dòng 2.7

Lỗi biên dịch dòng 2.5

Lỗi biên dịch dòng 2.5, 2.7

xA = 12; a.yA = Hello

Xem đáp án

Chọn đáp án C

Vì:

thuộc tính xA của lớp ClassA được khai báo với từ khóa protected nên không được truy xuất từ ngoài gói pac02.

9. Trắc nghiệm
1 điểm

Đoạn mã sau có lỗi biên dịch gì?

class Person {

protected String name;

public int age;

};

public class Main {

public static void main(String[] args) {

Person p = new Person();

p.name="Tom";

}

}

Chọn một Câu trả lời

Không có lỗi biên dịch.

name has protected access.

age has protected access.

name has public access.

Xem đáp án

Chọn đáp án B

Vì:

+ name là thành phần protected do đó không thể truy xuất từ bên ngoài lớp (chỉ có thể truy xuất từ bên trong lớp và các lớp con).

10. Trắc nghiệm
1 điểm

Bạn đang viết một đoạn mã cho 1 lớp, lớp này nằm trong package test và sử dụng các thành phần trong gói java.util. Lựa chọn đoạn mã để khởi đầu cho file dữ liệu nguồn.

Chọn một Câu trả lời

import java.util.*;

package test;

import java.util.*;

import java.util.*;

package test;

package test;

Xem đáp án

Chọn đáp án B

Vì:

Lớp thuộc package test và sử dụng lớp nằm trong gói java.util thì phải thực hiện

package test;

import java.util.*;

11. Trắc nghiệm
1 điểm

Chương trình sau in ra mà hình xâu nào ?

01: public class Main{

02: public static void main(String[] args) {

03: String names[] = {"John","Anna","Peter","Victor","David"};

04: names = new String[5];

05: System.out.println(names[2]);

06: }

07: }

Chọn một Câu trả lời

Có lỗi biên dịch: use new keyword to create object

Peter

Anna

null

Xem đáp án

Chọn đáp án D

Vì:

+ Lệnh 3 sẽ khai báo một mảng names và khởi tạo các giá trị cho mảng lần lượt là “John”, “Anna”,….

+ Tuy nhiên lệnh sau (4) lại tạo lại mảng names và không gán giá trị cho các phần tử mảng => các phần tử sẽ có giá trị null

12. Trắc nghiệm
1 điểm

1: int index = 1;

2: boolean[] test = new boolean[3];

3: boolean foo= test [index];

Kết quả mà foo nhận được sau phép gán là?

Chọn một Câu trả lời

foo có giá trị là 0.

foo có giá trị là null.

foo có giá trị là true.

foo có giá trị là false.

Xem đáp án

Chọn đáp án D

Vì:

Theo ngầm định khi tạo mảng dữ liệu kiểu logic thì tất cả các phần tử đều nhận giá trị false

13. Trắc nghiệm
1 điểm

String s = "cabcab";

StringTokenizer sten = new StringTokenizer(s, "ab");

int x = sten.countTokens(); System.out.println(x);

Trong đoạn mã trên x nhận giá trị bao nhiêu?

Chọn một Câu trả lời

1

0

2

Biên dịch lỗi

Xem đáp án

Chọn đáp án C

Vì:

Đối tượng StringTokenizer chia chuỗi "cabcab" thành các token theo chuỗi "ab" thì được 2 token là cab, cab.

14. Trắc nghiệm
1 điểm

Đoạn mã sau có lỗi biên dịch nào?

class Student {

public int getAge(){

return 10;

}

}

public class Man extends Student{

public int getAge(int added) {

return super.getAge()+added;

}

}

Không có lỗi biên dịch.

Có lỗi biên dịch: getAge() in Student and Man can not have the same access modifier.

Có lỗi biên dịch:call to super, must be the first in constructor in class Man.

Có lỗi biên dịch: getAge() in Student and Man can not have the same access arguments.

Xem đáp án

Chọn đáp án A

Vì:

getAge() ở Student và Man có arguments khác nhau, nên chúng là các phương thức khác nhau.

15. Trắc nghiệm
1 điểm

Hãy cho biết kết quả khi chạy đoạn chương trình sau?

class Student {

public int getAge(){

return 10;

}

}

public class Man extends Student{

public int getAge(int added) {

return super.getAge()+added;

}

public static void main(String[] args) {

Man s = new Man();

System.out.println(s.getAge()); System.out.println(s.getAge());

}

}

10

11

10

10

11

11

Không in gì và báo lỗi

Xem đáp án

Chọn đáp án B

Vì:

+ Lệnh đầu tiên trong hàm main() sẽ sinh ra đối tượng s từ lớp Man.

+ Lệnh thứ 2 của hàm main sẽ gọi phương thức getAge() của đối tượng s, tuy nhiên s kế thừa từ lớp Student do đó sẽ triệu gọi phương thức getAge của lớp Student => in ra 10

+ Lệnh thứ 3 của hàm main() sẽ gọi phương thức getAge() của đối tượng s => gọi đến phương thức getAge() của lớp Student => in ra 10

16. Trắc nghiệm
1 điểm

Đoạn mã sau có lỗi biên dịch nào?

class Student {

}

public class Man extends Student{

public static void main(String[] args) {

Man m = new Student();

}

}

Chọn một Câu trả lời

Không có lỗi biên dịch.

Có lỗi biên dịch: Incompatible type, required Man, found Student.

Có lỗi biên dịch:Incompatible type, required Student, found Man.

Do not use extends to make subclass..

Xem đáp án

Chọn đáp án B

Vì:

m thuộc kiểu Man, nên có thể chứa pointer tới đối tượng của lớp Man. Không chứa được pointer tới đối tượng của lớp Student.

17. Trắc nghiệm
1 điểm

Cho hai lớp Student và Main như sau:

package java.school;

public class Student {}

--

package java.test;

public class Main {

public static void main(String[] args) { java.school.Student s = new Student();

}

}

Khi biên dịch lớp Main có lỗi biên dịch không? Nếu có là lỗi nào sau:

Chọn một Câu trả lời

Có lỗi biên dịch:

can not find symbol test.Student

Không có lỗi biên dịch.

Có lỗi biên dịch:

Add import java.school.Student

Có lỗi biên dịch:

can not find constructor Student() for Student.

Xem đáp án

Chọn đáp án A

Vì:

Lớp Student không ở package java.test mà ở java.school, và bạn lại không import vào gói java.test, nên trình biên dịch tìm lớp Student ở cùng package java.test khi bạn không chỉ rõ lớp Student thuộc package nào. Nên khi khai báo biến s thuộc lớp java.school.Student thì đúng, nhưng khi gọi phương thức khởi tạo thì bạn lại không chỉ rõ, nên trình biên dịch sẽ tìm ở java.test. Nhưng không có.

Add import java.school.Student : là một gợi ý, chứ không phải lỗi biên dịch.

18. Trắc nghiệm
1 điểm

Đoạn mã sau có lỗi biên dịch gì? public class Person { private String name; protected int age; public static void main(String[] args) { Person p = new Person(); p.name="Tom"; System.out.println(p.name); } }

Chọn một Câu trả lời

Không có lỗi biên dịch.

name has private access.

age has protected access.

name has public access.

Xem đáp án

Chọn đáp án A

Vì:

hàm main ở trong cùng lớp Person, nên có thể truy xuất tới tất cả các trường của Person.

19. Trắc nghiệm
1 điểm

Cho lớp Student như sau:

public class Student {

private String mark;

public String getMark() {

return mark;

}

public void setMark(String mark) {

this.mark = mark;

}

}

và s là đối tường s của Student.

Đoạn mã nào sau cho phép thay đổi điểm của s thành "10"?

Chọn một Câu trả lời

s.setMark("10");

s.setMark(10);

s.mark=10;

s.mark="10"

Xem đáp án

Chọn đáp án A

Vì:

Phương thức này nhận xâu "10" và thay đổi thuộc tính mark của s.

Đáp án s.setMark(10); sai vì truyền số 10 thuộc int vào phương thức setMark, mà setMark yêu cầu đầu vào là String.

Đáp án s.mark=10 và s.mark="10"

là sai vì mark có mức truy xuất là private.

20. Trắc nghiệm
1 điểm

G/s ta cần xây dựng hàm printArray để in ra dãy số nguyên gồm N phần tử. Đâu là cách mô tả đúng về hàm printArray?

Chọn một Câu trả lời

void printArray(int a[], int size){}

void printArray(int a[size], int size){}

void printArray(int a[], int){}

void printArray(int a[size]){}

Xem đáp án

Chọn đáp án A

Vì:

khi truyền tham số mảng cho hàm không cần xác định kích thước mảng.

21. Trắc nghiệm
1 điểm

Đoạn chương trình sau sẽ in ra thông tin gì trên màn hình?

11: String a = "ABCD";

12: String b = a.toLowerCase();

13: b.replace(‘a’, ‘d’);

14: b.replace(‘b’, ‘c’);

15: System.out.println(b);

Chọn một Câu trả lời

abcd

ABCD

dccd

dcba

Xem đáp án

Chọn đáp án A

Vì:

+ Lệnh 11 sẽ tạo xâu a ="ABCD"

+ Lệnh 12 tạo ra xâu b ="abcd"

+ Lệnh 13 sẽ sinh ra xâu mới và thay thế ký tự a bởi d (xâu b không thay đổi)

+ Lệnh 14 sẽ sinh ra xâu mới và thay thế ký tự b bởi c (xâu b không thay đổi)

=> In ra abcd.

22. Trắc nghiệm
1 điểm

Chương trình sau in ra màn hình xâu nào?

01: public class Main{

02: public static void main(String[] args) {

03: String names[] = {"John","Anna","Peter","Victor","David"};

04: System.out.println(names[2]);

05: }

06:}

Chọn một Câu trả lời

Có lỗi biên dịch: use new keyword to create object

Peter

Anna

Victor

Xem đáp án

Chọn đáp án B

Vì:

+ Lệnh System.out.println(names[2]);sẽ in ra phần tử đứng thứ 3 trong mảng names (chỉ số mảng từ 0 => in ra Peter)

23. Trắc nghiệm
1 điểm

Đoạn mã sau có lỗi biên dịch nào sau?

class Student {

protected String name;

}

public class Man extends Student{

public static void main(String[] args) {

Man m = new Man();

m.name="John";

}

}

name has protected access in Student.

Không có lỗi biên dịch.

class Man has no attribute name.

class Man has no attribute or method name.

Xem đáp án

Chọn đáp án B

Vì:

thuộc tính name ở Student là protected, nên không lớp con Man được thừa kế.

24. Trắc nghiệm
1 điểm

Đoạn mã sau có lỗi biên dịch KHÔNG? Nếu có là lỗi nào sau?

class Student {}

public class Man extends Student{

public boolean isMan(){

return true;

}

}

Chọn một Câu trả lời

Không có lỗi biên dịch.

Có lỗi biên dịch:class Student is empty.

Có lỗi biên dịch:class Man has no constructor.

Có lỗi biên dịch:class Student is empty, class Man has no constructor.

Xem đáp án

Chọn đáp án A

Vì:

Chúng ta có thể khai báo các lớp không có thuộc tính và phương thức trống(empty).

Khi một lớp không có constructor, trình biên dịch sẽ tự động thêm vào một constructor mặc định.Vậy đoạn mã đã cho không có lỗi biên dịch nào.

25. Trắc nghiệm
1 điểm

Đoạn mã sau có lỗi biên dịch gì?

class Person {

protected String name;

public int age;

};

public class Main {

public static void main(String[] args) {

Person p = new Person();

p.name="Tom";

}

}

Chọn một Câu trả lời

Không có lỗi biên dịch.

name has protected access.

age has protected access.

name has public access.

Xem đáp án

Chọn đáp án B

Vì:

+ name là thành phần protected do đó không thể truy xuất từ bên ngoài lớp (chỉ có thể truy xuất từ bên trong lớp và các lớp con).

26. Trắc nghiệm
1 điểm

(1) Một thành viên protected của một lớp có thể được truy xuất từ bất kỳ lớp nào trong cùng một gói và từ một lớp con nằm bên ngoài gói nếu lớp bên ngoài đó là lớp con.

(2) Một thành viên của một lớp được khai báo là private không những không thể được truy xuất từ bên trong lớp mà còn không nơi nào bên ngoài lớp.

Chọn một Câu trả lời

(1) sai, (2) đúng

(1) đúng, (2) sai

Cả 2 Câu cùng đúng

Cả 2 Câu cùng sai

Xem đáp án

Chọn đáp án B

Vì:

+ Các thành phần Protected có thể truy xuất từ lớp đó và các lớp con của lớp đó

+ Thành phần private chỉ có thể truy xuất từ trong lớp đó.

(1) đúng, (2) sai

27. Trắc nghiệm
1 điểm

Đoạn mã sau có lỗi biên dịch gì? public class Person { private String name; protected int age; public static void main(String[] args) { Person p = new Person(); p.name="Tom"; System.out.println(p.name); } }

Chọn một Câu trả lời

Không có lỗi biên dịch.

name has private access.

age has protected access.

name has public access.

Xem đáp án

Chọn đáp án A

Vì:

hàm main ở trong cùng lớp Person, nên có thể truy xuất tới tất cả các trường của Person.

28. Trắc nghiệm
1 điểm

Bạn đang viết một đoạn mã cho 1 lớp, lớp này nằm trong package test và sử dụng các thành phần trong gói java.util. Lựa chọn đoạn mã để khởi đầu cho file dữ liệu nguồn.

Chọn một Câu trả lời

import java.util.*;

package test;

import java.util.*;

import java.util.*;

package test;

package test;

Xem đáp án

Chọn đáp án B

import java.util.*;

Vì:

Lớp thuộc package test và sử dụng lớp nằm trong gói java.util thì phải thực hiện

package test;

import java.util.*;

29. Tự luận
1 điểm

Câu 1: Trong khi tạo một gói, mã nguồn phải được đặt trong cùng một thư mục với tên của gói.

30. Trắc nghiệm
1 điểm

Scanner là lớp thuộc gói java.util

Chọn một Câu trả lời

Cả hai Câu đều đúng

Cả hai Câu đều sai

(1) đúng, (2) sai

(2) đúng, (1) sai

Xem đáp án

Chọn đáp án A

Đúng. Đáp án đúng là: "Cả 2 Câu đều đúng"

Vì:

+ Mã nguồn và tên gói phải đặt trong cùng một thư mục

+ Sanner thuộc gói java.util.

Tham khảo: Giáo trình: [1] mục 3.2

31. Trắc nghiệm
1 điểm

Đoạn mã sau có lỗi biên dịch gì?

public class Person {

private String name;

private int age;

public static void main(String[] args) {

Person p = new Person();

p.name="Tom";

System.out.println(p.name);

}

}

Chọn một Câu trả lời

Không có lỗi biên dịch.

name has private access.

age has private access.

name has public access.

Xem đáp án

Chọn đáp án A

Vì:

hàm main ở trong cùng lớp Person, nên có thể truy xuất tới tất cả các trường của Person.