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

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

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

(1) Phương thức được khai báo với từ khóa abstract được sử dụng khi bạn muốn viết các đoạn code đầy đủ trong nó.

(2) Phương thức được khai báo với từ khóa final được sử dụng khi bạn muốn viết các đoạn code đầy đủ trong nó.

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

(1) đúng, (2) sai

(1) sai, (2) đúng

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

Cả 2 Câu đều sai

Xem đáp án

Chọn đáp án D

Vì:

Phương thức abstract là phương thức chưa được cài đặt phần thân.

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

Đọc đoạn code sau

1: public class ReturnIt {

2: public <return_Type> methodA(int x, double y) {

3: return x / y * 2;

4: }

5: }

Kiểu dữ liệu trả về cho methodA (return_type) ở dòng 2 có thể là kiểu nào?

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

int

byte

float

double

Xem đáp án

Chọn đáp án D

Vì:

Kết quả của phép chia:x/y*2 trả về là một số thực kiểu double nên giá trị trả về của phương thức chỉ có thể là kiểu double

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

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

Khi sử dụng từ khóa new để tạo một đối tượng, nó được tạo ra ở đâu?

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

Heap

Garbage collector

Queue

Stack

Xem đáp án

Chọn đáp án A

Vì: Theo qui định về cấp phát bộ nhớ của java

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

Đọc đoạn code sau

1: int x = 30;

2: int y = 10;

3: if (x = y) {

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

5: }

Kết quả là gì?

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

x = 10

x = 30

Biên dịch lỗi.

Đoạn code không có lỗi nhưng không đưa ra kết quả gì.

Xem đáp án

Chọn đáp án C

Vì:

+ Không thể đặt lệnh gán x=y vào làm biểu thức kiểm tra điều kiện của lệnh if

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

1:public class foo {

2: public static void stringReplace (String text) {

3: text = text.replace ('j' , 'i');

4: }

5: public static void bufferReplace (StringBuffer text) {

6: text = text.append ("C");

7: }

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

9: String textString = new String ("java");

10: StringBuffer textBuffer = new StringBuffer ("java");

11: stringReplace (textString);

12: bufferReplace (textBuffer);

13: System.out.println (textString + textBuffer);

14: }

15:}

Kết quả chương trình trên:

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

javajavaC

iavaiava

Chương trình biên dịch thành công, nhưng lỗi trong quá trình chạy.

Lỗi biên dịch

Xem đáp án

Chọn đáp án A

Vì:

+ Lệnh 9 sinh ra xâu textString có giá trị là "java"

+ Lệnh 10 sinh ra xâu textBuffer có giá trị là "java"

+ Lệnh 11 gọi hàm stringReplace(textString), hàm này sẽ thay thế kí tự j bởi kí tự I tuy nhiên không làm thay đổi giá trị của xâu gốc => textString ="java"

+ Lệnh 12 sẽ gọi hàm bufferReplace (textBuffer), hàm này sẽ thêm vào cuối xâu textBuffer kí tự C => Xâu textBuffer="javaC"

+ Lệnh 13 sẽ in ra "javajavaC"

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

Đoạn mã nào sau đây in ra màn hình 2 chữ Hello trên hai dòng?

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

System.out.println("\t Hello \n Hello");

System.out.println("\t Hello \t Hello");

System.out.println("\n Hello \t Hello");

System.out.println("\n Hello Hello");

Xem đáp án

Chọn đáp án A

Vì:

Để in ra màn hình ở dòng mới ta phải dùng ký tự đặc biệt \n, nên chỉ có ở đáp án A đúng. Đáp án C kí tự xuống dòng (\n) ở ngay đầu dòng do đó 2 chữ Hello vẫn in trên một dòng.

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

Đầu ra của chương trình sau là gì?

1: class TestString {

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

3: String a = "abc";

4: String b = "abcd";

5: if(a = b) b = "xyz";

6: System.out.println("b = " + b + "a = " + a);

7: }

8: }

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

b = null, a = abc

b = abcd, a = abc

b = xyz , a = abc

Lỗi biên dịch

Xem đáp án

Chọn đáp án D

Vì:

Lỗi dòng lệnh 5, không thể đưa phép gán vào biểu thức điều kiện của lệnh if

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

Đâu KHÔNG phải là một kiểu dữ liệu nguyên thủy trong Java?

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

byte

int

long

big int

Xem đáp án

Chọn đáp án D

Vì:

byte, int, long ở các đáp án byte, int, long là các kiểu dữ liệu nguyên thủy trong Java. Trong Java không có kiểu dữ liệu dẫn xuất big int.

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

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

public class Main

{

public static void main(String[] args) {

try {

System.out.println("Trying");

}catch(ArithmeticException e){

System.out.println("ArithmeticException");

}catch (Exception ioe){

System.out.println("Exception");

}finally{

System.out.println("Finally");

}

}

}

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

Trying

Trying Exception

Trying Final

Trying Exception Final

Xem đáp án

Chọn đáp án C

Vì:

Đoạn chương trình trên không bao giờ có lỗi, nên sẽ chạy qua khối lệnh trong try(System.out.println("Trying")) rồi sau đó bỏ qua khối lệnh ở mọi catch(System.out.println("Exception"); và System.out.println("ArithmeticException"); ) và cuối cùng là thực hiện khối lệnh ở finally(System.out.println("Finally");).

Nên sẽ in ra màn hình Trying Final

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

Đọc các tình huống sau

(1) Theo sau khối lệnh try bắt buộc phải là khối catch

(2) Theo sau khối lệnh try có thể là một hoặc nhiều khối catch hoặc khối finally

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 D

Vì:

Trong (1) Theo sau khối lệnh try không nhất thiết phải là khối catch.

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

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

Chọn cách tạo exception mới đúng trong các khai báo sau:

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

public class MyException {}

public class MyException extends Exception{}

public interface MyException extends Exception{}

class MyException

Xem đáp án

Chọn đáp án B

Vì:

Exception mới phải là lớp con của Exception, nên đáp án A, D sai và B đúng. Đáp án C sai vì exception mới phải là một lớp(class) chứ không phải interface.

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

Đọc đoạn mã lệnh sau

1:public class Test {

2: int x;

3: public void Test() {

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

5: }

6: public Test(int x) {

7: this.x = x;

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

9: }

10:}

Sau khi thực hiện lệnh new Test(2) chương trình sẽ in ra kết quả gì?

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

-1

0

2

Lỗi biên dịch

Xem đáp án

Chọn đáp án C

Vì:

+ gọi new Test(2) sẽ gọi tới hàm Test(int x) => thực hiện gán cho x giá trị là 2 và in ra 2 bởi lệnh System.out.println

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

1. public class Delta {

2. static boolean foo(char c) {

3. System.out.print(c);

4. return true;

5. }

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

7. int i =0;

8. for ( foo(‘A’);

foo(‘B’)&&(i<2); foo(‘C’)){

9. i++ ;

10. foo(‘D’); 12. }

13. }

14. }

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

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

ABDCBDCB

ABCDABCD

Lỗi biên dịch

Chương trình không lỗi, nhưng khi chạy sẽ sinh lỗi

Xem đáp án

Chọn đáp án A

Vì:

+ Bắt đầu vòng lặp sẽ gọi foo(‘A’) => In ra chữ A

+ Thực hiện lệnh foo(‘B’) && i<2 => in ra B

+ Thực hiện foo(‘D’) => in ra D

+ Thực hiện foo(‘C’) => in ra C

Tiếp theo tăng i lên 1 và thực hiện lần lượt các lệnh foo(‘B’), foo(‘D’), foo(‘C’) => in ra BDC

Và cuối cùng tăng i=2 rồi thực hiện lệnh foo(‘B’)&i<2 => in ra B và kết thúc vòng lặp

ð In ra là: ABDCBDCB

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

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

(1) Lớp con là lớp có thể kế thừa một hoặc nhiều lớp khác nhau

(2) Lớp cha là lớp cho phép một hoặc nhiều lớp khác kế thừa từ nó.

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

(1) đúng, (2) sai

(1) sai, (2) đúng

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

Cả 2 Câu đều sai

Xem đáp án

Chọn đáp án B

Vì:

Theo khái niệm về kế thừa

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

Phương thức next() của lớp Scanner dùng để làm gì?

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

Nhập một số nguyên

Nhập một ký tự

Nhập một chuỗi

Không có phương thức này

Xem đáp án

Chọn đáp án C

Vì:

Phương thức next() của lớp Scanner sử dụng để nhập một chuỗi ký tự bao gồm cả khoảng trắng.

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

Đoạn mã nào sau đây KHÔNG có lỗi biên dịch?

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

interface Eatable {}

interface Runnable {}

public interface Animal extends Eatable,Runnable{}

interface Eatable {}

interface Runnable {}

public interface Animal implements Eatable,Runnable{}

interface Eatable {}

interface Runnable {}

public interface Animal implement Eatable,Runnable{}

interface Eatable {}

interface Runnable {}

public interface Animal extends Eatable and Runnable{}

Xem đáp án

Chọn đáp án A

Vì:

Từ khóa dùng để một interface thừa kế, mở rộng một hoặc nhiều interface là extends.

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

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

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

public interface Summable {

int sum();

}

public interface Summable {

public int sum();

}

public interface Summable {

public static double PI=3.14;

public int getArea();

}

public interface Summable {

public static double PI=3.14;

public int getArea(){

return (int)0*PI;

}

}

Xem đáp án

Chọn đáp án D

Vì:

Không thể triển khai các phương thức ngay bên trong giao diện.

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

Để khởi tạo giá trị cho thuộc tính của lớp, không được khởi tạo ở đâu?

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

Trong khối lệnh bất kỳ

Trong hàm tạo

Trong phương thức

Tại thời điểm khai báo thuộc tính

Xem đáp án

Chọn đáp án A

Vì:

Tính bao đóng của lập trình HĐT

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

Đâu là chú thích SAI trong java?

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

int x; //a comment

/* a comment */

/**a comment*/

<!--a comment--!>

Xem đáp án

Chọn đáp án D

Vì:

Trong java có 2 cách viết chú thích

Chú thích 1 dòng: //chú thích một dòng

Chú thích nhiều dòng: /*chú thích nhiều dòng*/

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

Toán tử nào thực hiện phép chia lấy phần dư?

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

/

//

%%

%

Xem đáp án

Chọn đáp án D

Vì:

Theo qui định về kí hiệu các phép toán trong java

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