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

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

A
Admin
Đại họcTrắc nghiệm tổng hợp36 lượt thi
30 câu hỏi
1. 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.

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

}

}

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

10

11

10

10

11

11

Không in kết quả và báo lỗi

Xem đáp án

Chọn đáp án A

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(1) của đối tượng s => gọi đến phương thức getAge(int added) của lớp Man => in ra 11

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

Đoạn lệnh nào sẽ đưa ra lỗi biên dịch?

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

class A { public A(int x) {} }

class A {}

class B extends A { B() {}}

class A { A() {}}

class B { public B() {} }

class Z { public Z(int) {} }

class A extends Z { }

Xem đáp án

Chọn đáp án D

Vì:

Tham số truyền cho hàm tạo của lớp Z chưa xác định tên nên sinh lỗi.

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

1. class Super {

2. public float getNum() { return 3.0f; }

3. }

4.

5. public class Sub extends Super {

6.

7. }

Phương thức nào đưa vào dòng 6 sẽ sinh lỗi?

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

public getNum() { }

public float getNum(double d) { }

public float getNum() { return 4.0f; }

public double getNum(float d) { return 4.0d; }

Xem đáp án

Chọn đáp án A

Vì:

Phương thức này chưa xác định kiểu dữ liệu trả về.

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

Đâu là một khai báo lớp kế thừa từ hai giao điện đúng?

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

interface Summable {}

interface Eatable {}

class Math implements Summable;Eatable{}

interface Summable {}

interface Eatable {}

class Math implements Summable and Eatable{}

interface Summable {}

interface Eatable {}

class Math: Summable,Eatable{}

interface Summable {}

interface Eatable {}

class Math implements Summable,Eatable{}

Xem đáp án

Chọn đáp án D

Vì:

dấu phẩn(,) là dấu để cách ra các interface/class trong danh sách thừa kế hoặc triển khai.

Một lớp triển khai interface thì từ khóa implements được dùng.

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

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

Đoạn mã sau in ra màn hình xâu ký tự nào sau:

class Student {

public String sayHello(){

return "Student";

}

}

public class Man extends Student{

public String sayHello() {

return super.sayHello();

}

public static void main(String[] args) {

Student m = new Student();

System.out.println(m.sayHello());

}

}

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

Student

Man

Student Man

Man Student

Xem đáp án

Chọn đáp án A

Vì:

s là đối tượng của Student, nên phương thức được gọi là của Student.

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

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

int x = s.charAt(6);

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

102

104

h

Lỗi biên dịch

Xem đáp án

Chọn đáp án B

Vì:

s.charAt(6) truy xuất phần tử thứ 7 là kí tự 0, trong mã asscii thì kí tự 0 là 104.

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

Đâu là một khai báo interface đúng?

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

public interface MyInterface {}

public interface MyInterface {

default int x;

}

public interface MyInterface {

protected int sum(int x, int y);

}

public interface MyInterface {

private int sum(int x, int y);

}

Xem đáp án

Chọn đáp án A

Vì:

Trong đáp án B default là từ khóa dùng trong lệnh switch chứ không phải là một từ khóa truy xuất.

Trong đáp án C, D không thể mức truy xuất private hoặc protected cho thuộc tính cúng như phương thức.

Trong khai báo interface có thể không khai báo gì.

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

Cho các khai báo sau:

1: byte [] array1, array2[];

2: byte array3 [][];

3: byte[][] array4;

Nếu các mảng trên đều được khởi tạo thì lệnh nào sau sẽ gặp lỗi?

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

array2 = array1;

array2[0] = array3[0];

array2 = array4;

array1=array2;

Xem đáp án

Chọn đáp án C

Vì:

Không thể gán mảng một chiều cho mảng 2 chiều được.

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

Đọc đoạn mã sau

1: public class foo {

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

3: String s;

4: System.out.println ("s=" + s);

5: }

6: }

Kết quả in ra là gì?

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

s=NULL

s=null

Lỗi sẽ đưa ra dòng 3

Lỗi sẽ đưa ra dòng 4

Xem đáp án

Chọn đáp án D

Vì:

lỗi sẽ sinh ra ở dòng 4 yêu cầu biến s phải được khởi tạo thì mới được in ra giá trị.

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

Đọc đoạn mã sau:

11: int i =1,j =10;

12: do {

13: if(i++> --j) {

14: continue;

15: }

16: } while (i <5);

17: System.out.println("i = " +i+ "and j = "+j);

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

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

i = 6 and j = 6

i = 5 and j = 5

i = 6 and j = 5

i = 5 and j = 6

Xem đáp án

Chọn đáp án D

Khi thực hiện chương trình, mỗi lần lặp sẽ tăng i lên 1 và giảm j đi 1. Vòng lặp sẽ kết thúc khi i=5. Do vậy i=5, j=6

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

Có mấy cách để truyền tham số vào cho một phương thức?

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

2

1

3

4

Xem đáp án

Chọn đáp án A

Vì:

Khi truyền tham số vào cho phương thức có hai cách là: truyền theo kiểu tham trị và truyền theo kiểu tham biến.

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

Đọc đoạn mã sau:

1: public abstract class Test {

2: public abstract void methodA();

3:

4: public abstract void methodB()

5: {

6: System.out.printIn("Hello");

7: }

8: }

Làm thế nào để đoạn mã trên biên dịch thành công?

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

Cài đặt cụ thể phần thân cho phương thức methodA()

Thay thế từ khóa public ở dòng 2 thành private

Xóa từ khóa abstract ở dòng 4

Xóa từ khóa abstract ở dòng 2

Xem đáp án

Chọn đáp án C

Vì:

Đáp án “Xóa từ khóa abstract ở dòng 4” là đúng vì khi xóa từ khóa abstract thì phương thức methodB() sẽ trở thành phương thức thông thường, có phần thân.

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

Một lớp kế thừa từ lớp abstract thì từ khóa nào sau đây được sử dụng để cài đặt các phương thức của lớp kế thừa này?

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

static

public

private

abstract

Xem đáp án

Chọn đáp án D

Vì:

một lớp kế thừa từ lớp abstract sẽ phải cài đặt tất cả các phương thức abstract trong lớp mà nó kế thừa.

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

Chương trình sau in ra màn hình số mấy?

01: public class Main{

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

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

04: System.out.println(names.length);

05: }

06: }

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

4

5

10

undefined

Xem đáp án

Chọn đáp án B

Sai. Đáp án đúng là: 5

Vì:

+ Lệnh System.out.println(names.length); sẽ in ra chiều dài thực của mảng names (=5)

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

1. class Super {

2. public float getNum() { return 3.0f; }

3. }

4.

5. public class Sub extends Super {

6.

7. }

Phương thức nào đưa vào dòng 6 sẽ sinh lỗi?

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

public getNum() { }

public float getNum(double d) { }

public float getNum() { return 4.0f; }

public double getNum(float d) { return 4.0d; }

Xem đáp án

Chọn đáp án A

Vì:

Phương thức này chưa xác định kiểu dữ liệu trả về.

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

01: public class Test {

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

03: int i= 0;

04: while (true) {

05: if (i==4) break;

06: ++i;

07: System.out.println(i);

08: }

09: }

10: }

Giá trị cuối cùng của i tại dòng 7 là bao nhiêu?

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

0

Lỗi biên dịch

4

5

Xem đáp án

Chọn đáp án C

Vì:

khi thực thi đoạn mã giá trị của i sẽ lần lượt tăng lên và cuối cùng nhận giá trị 4.

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

1. public class Foo {

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

3. try {

4. return;

5. } finally {

6. System.out.println( "Finally" );

7. }

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

Finally

Lỗi biên dịch

Đoạn mã thực thi nhưng không in ra kết quả

Lỗi sinh ra trong quá trình chạy.

Xem đáp án

Chọn đáp án A

Vì:

Khi thực thi khối lệnh finally sẽ luôn được thực thi và in ra kết quả trong khối lệnh là Finally.

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

Đoạn mã nào có lỗi biên dich sau:

Horse is not abstract and does not override abstract method run() in Animal

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

abstract class Animal{

abstract void run();

}

public class Horse extends Animal{}

abstract class Animal{

abstract int run();

}

abstract class Horse extends Animal{}

abstract class Animal{

abstract void run();

}

abstract public class Horse {}

abstract class Animal{

abstract void run();

}

abstract class Horse {}

Xem đáp án

Chọn đáp án A

Vì:

Khi lớp Horse thừa kế Animal, nên nó có phương thức run chưa được triển khai, nên nó phải được khai báo là abstract hoặc phải triển khai phương thức run().

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

Đọc đoạn mã sau:

11: int x = 3;

12: int y = 1;

13: if (x = y) {

14: System.out.println("x = " + x);

15: }

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

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

x = 1

x = 3

Lỗi biên dịch

Chương trình chạy nhưng không in ra kết quả

Xem đáp án

Chọn đáp án C

Vì:

Sử dụng sai phép so sánh trong lệnh if, toán tử = là toán tử gán không sử dụng trong biểu thức của lệnh if.

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

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

public class Main

{

public static void main(String[] args) {

try {

String s = "John";

}

}

}

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:

try without catch or finally

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

add import String.

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

statement

String s="John";

never throws an exception

Xem đáp án

Chọn đáp án B

Vì:

Khi bạn dùng try thì cấu trúc sau đó phải dùng ít nhât catch hoặc (và)finally.

String tự động được import vào bất kỳ packge, nên đáp

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

add import String.”

là sai

Đán án

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

statement

String s="John";

never throws an exception”

là sai.

Vì cấu trúc của lênh try sai, nên trình biên dịch sẽ không đi xâu vào tìm hiểu các lỗi này.

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

1: int x = 10;

2: double y = 0.0;

3: System.out.println("Ket qua phep toan: " + (x/y));

Đoạn mã trên khi thực thi sẽ in ra kết quả gì?

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

Ket qua phep toan: 0

Lỗi biên dich

Ket qua phep toan: Infinity

Ket qua phep toan:

Xem đáp án

Chọn đáp án C

Vì:

Không xác định khi chia một số nguyên cho một số thực có giá trị là 0.0.

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

Để in ra màn hình thì ta dùng lệnh gì?

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

printf()

out.print();

System.out.println();

Printf();

Xem đáp án

Chọn đáp án C

Sai. Đáp án đúng là: System.out.println();

Vì:

Theo cú pháp à ý nghĩa của lệnh println()

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

Biểu thức sau trả về giá trị là bao nhiêu:

9.0/5>1

?

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

1

0

true

false

Xem đáp án

Chọn đáp án C

Vì:

+ Đây là biểu thức so sánh => Kết quả là kiểu logic (true/false)

+ 9.5/5=1.8 > 1

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

1: public class Foo {

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

3: String s;

4: System.out.println ("s=" + s);

5: }

6: }

Chương trình sẽ in ra kết quả gì?

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

s=

s=null

Lỗi biên dịch yêu cầu s phải được khởi tạo

Biên dịch không lỗi, nhưng khi chạy lỗi NullPointerException sẽ ném ra Đáp án

Xem đáp án

Chọn đáp án C

Vì:

Chuỗi s cần phải được khởi tạo trước khi truy xuất vào.

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

1. public class ArrayTest {

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

3. float fl[], f2[];

4. fl = new float[10];

5. f2 = f1;

6. System.out.println("f2[0]= " + f2[0]);

7. }

8. }

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

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

f2[0] = 0.0

f2[0] = NaN

Lỗi dòng 5

Lỗi dòng 6

Xem đáp án

Chọn đáp án A

Vì:

+ Lệnh 4 sẽ tạo ra mảng f1 gồm 10 số thực (khởi tạo là 0)

+ Lệnh 5 sẽ gán mảng f2 = f1;

+ Lệnh 6 sẽ in ra phần tử đầu tiên của mảng f2 => in ra số 0.

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

Đâu KHÔNG phải là một khai báo của abstract class?

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

public abstract class MyClass {}

abstract public class MyClass {}

abstract class MyClass {}

public class MyClass {}

Xem đáp án

Chọn đáp án D

Vì:

Đây là khai báo của một lớp bình thường.

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

Đâu KHÔNG phải là một khai báo của abstract class?

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

public abstract class MyClass {

}

abstract public class MyClass {

abstract public int sum(int x, int y);

}

abstract class MyClass {}

public class MyClass {}

Xem đáp án

Chọn đáp án D

Vì:

Đây là khai báo của một lớp bình thường.

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