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

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

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

Đâu KHÔNG phải là cách thức để khởi tạo giá trị cho thuộc tính name có kiểu chuỗi của lớp Cat?

class Cat {String name = "noname";}

public class Cat{String name; public Cat(){name = "noname";}}

public class Cat{String name; public Cat(String x){name = x;}}

public class Cat{String name; public Cat(){ String name = "noname"; }}

Xem đáp án

Chọn đáp án D

Vì: Sai về cách thức khởi tạo thuộc tính name của lớp Cat sai về cách thức khởi tạo thuộc tính name của lớp Cat

Biến name trong hàm tạo là biến cục bộ, không phải là thuộc tính name.

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

Đọc đoạn mã sau:

1.0: package pac02;

1.1: public class ClassA {

1.2: public 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.5, 2.6, 2.7

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

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

xA = 12; a.yA = Hello

Xem đáp án

Chọn đáp án D

Vì:

Thuộc tính xA, yA của lớp ClassA được khai báo với từ khóa public nên được truy xuất và in ra kết quả chương trình là xA = 12, yA = Hello.

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

Đoạn mã sau có lỗi biên dịch gì? public class Person { protected 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 protected 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.

4. 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 đó.

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

Trong các khai báo sau đâu là khai báo không hợp lệ?

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

int a1[][] = new int[][3];

int a2[][] = new int[2][3];

int a3[][] = new int[2][];

int a4[][] = {{}, {}, {}};

Xem đáp án

Chọn đáp án A

Vì:

+ Bắt buộc phải xác định số dòng trong khai báo mảng hai chiều.

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

Phát biểu nào sau đây là đúng:

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

Mảng có thể lưu giữ các phần tử thuộc nhiều kiểu dữ liệu khác nhau

Chỉ số của mảng có thể sử dụng kiểu số thực (float, double)

Biểu thức array.length được sử dụng để trả về số phần tử trong mảng

Một phần tử của mảng không thể truyền vào trong một phương thức.

Xem đáp án

Chọn đáp án C

Vì: biểu thức array.length trả về số phần tử trong mảng.

7. 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)

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

Nếu phương thức của bạn ghi đè một trong số các phương thức của lớp cha, bạn có thể gọi phương thức bị ghi đè thông qua từ khóa nào?

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

parent

super

this

static

Xem đáp án

Chọn đáp án B

Vì:

Từ khóa super được sử dụng trong lớp con để gọi phương thức của lớp cha.

9. 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());

}

}

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

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

10. 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.

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

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

class Student {

public String sayHello(){

return "Student";

}

}

public class Man extends Student{

public int sayHello() {

return 0;

}

}

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

Có lỗi biên dịch:sayHello() in Man cannot override sayHello() in Student return type int is not compatible with java.lang.String

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

Có lỗi biên dịch:sayHello() in Man cannot override sayHello() in Student because it is final

Có lỗi biên dịch:sayHello() in Man and in Student has the same access modifier

Xem đáp án

Chọn đáp án A

Vì:

Lớp Man định viết đè sayHello() được viết ở Student, nhưng có kiểu dữ liệu trả về là int không thể chuyển thành String được.

Và sayHello() không được đánh dấu là final, nên có thể được ghi đè.

sayHello() ở cả hai lớp đều có cùng access modifier, điều này là hợp lệ.

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

Đọc đoạn mã sau:

1.0: package pac02;

1.1: public class ClassA {

1.2: public 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.5, 2.6, 2.7

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

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

xA = 12; a.yA = Hello

Xem đáp án

Chọn đáp án D

Vì:

Thuộc tính xA, yA của lớp ClassA được khai báo với từ khóa public nên được truy xuất và in ra kết quả chương trình là xA = 12, yA = Hello.

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

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

public class Person { protected 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 protected 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.

14. 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

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

Trong các khai báo sau đâu là khai báo không hợp lệ?

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

int a1[][] = new int[][3];

int a2[][] = new int[2][3];

int a3[][] = new int[2][];

int a4[][] = {{}, {}, {}};

Xem đáp án

Chọn đáp án A

Vì:

+ Bắt buộc phải xác định số dòng trong khai báo mảng hai chiều.

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

Phát biểu nào sau đây là đúng:

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

Mảng có thể lưu giữ các phần tử thuộc nhiều kiểu dữ liệu khác nhau

Chỉ số của mảng có thể sử dụng kiểu số thực (float, double)

Biểu thức array.length được sử dụng để trả về số phần tử trong mảng

Một phần tử của mảng không thể truyền vào trong một phương thức.

Xem đáp án

Chọn đáp án C

Vì:

biểu thức array.length trả về số phần tử trong mảng.

17. 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)

18. 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());

}

}

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

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

19. 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.

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

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

class Student {

public String sayHello(){

return "Student";

}

}

public class Man extends Student{

public int sayHello() {

return 0;

}

}

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

Có lỗi biên dịch:sayHello() in Man cannot override sayHello() in Student return type int is not compatible with java.lang.String

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

Có lỗi biên dịch:sayHello() in Man cannot override sayHello() in Student because it is final

Có lỗi biên dịch:sayHello() in Man and in Student has the same access modifier

Xem đáp án

Chọn đáp án A

Vì:

Lớp Man định viết đè sayHello() được viết ở Student, nhưng có kiểu dữ liệu trả về là int không thể chuyển thành String được.

Và sayHello() không được đánh dấu là final, nên có thể được ghi đè.

sayHello() ở cả hai lớp đều có cùng access modifier, điều này là hợp lệ.

21. 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.

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

(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.

(2) 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

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.

23. 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.

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

Cho khai báo mảng sau:

1: String[][] str = {"lap", "trinh", "java"};

2: System.out.println(str[1][1]);

Lệnh trên in ra cái gì?

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

trinh

java

Lỗi biên dịch ở dòng 1

Không in ra gì

Xem đáp án

Chọn đáp án C

+ Lỗi ở dòng lệnh 1, sai cú pháp khai báo mảng 2 chiều

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

Trong các khai báo sau đâu là khai báo không hợp lệ?

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

int a1[][] = new int[][3];

int a2[][] = new int[2][3];

int a3[][] = new int[2][];

int a4[][] = {{}, {}, {}};

Xem đáp án

Chọn đáp án A

Vì:

+ Bắt buộc phải xác định số dòng trong khai báo mảng hai chiều.

26. 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)

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

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

class Student {

public String name;

}

public class Man extends Student{

private String name;

}

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

Có lỗi biên dịch:name has private access in Man.

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

Có lỗi biên dịch:for name access modifier in Man for name is weaker in Student.

Có lỗi biên dịch:name has public access in Student.

Xem đáp án

Chọn đáp án B

Vì:

Thuộc tính không có ràng buộc về access modifier ở lớp con và lớp cha.Và thuộc tính ở mỗi lớp có thể nhận default, protected, private, public là access modified.

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

1: class A {private int x;}

2: class B extends A{

3: public void method(){

4: x = 5;

5: System.out.println(x)

6: }

7:}

Đoạn mã trên x nhận giá trị gì ?

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

x = 5

x = 0

Lỗi biên dịch

x = -1

Xem đáp án

Chọn đáp án C

Vì:

Biến x được khai báo với từ khóa private mà lại được truy xuất từ bên ngoài lớp nên sinh lỗi.

29. 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 {

private String name;

public Student(String name) {

this.name=name;

}

}

public class Man extends 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: can not find symbol constructor Student()

Có lỗi biên dịch:variable name in Student can not be private.

Có lỗi biên dịch:variable name in Student is private;can not find symbol constructor Student()

Xem đáp án

Chọn đáp án B

Vì: lớp Man là lớp con của Student. Do lớp Man không có constructor nên trình biên dịch tự động thêm vào một constructor mặc định không có tham số và cũng gọi đến constructor mặc định của lớp cha. Nhưng lớp Student lại không có trình biên dịch mặc định. Nên có lỗi biên dịch là không tìm thấy constructor mặc định ở lớp Student. Và thuộc tính có thể là private.

30. 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.