Tải bản đầy đủ (.docx) (44 trang)

Tổng hợp câu hỏi trắc nghiệm java core

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (115.59 KB, 44 trang )

TỔNG HỢP TRẮC NGHIỆM JAVA
Câu 1: Trong Java, phạm vi (range) của kiểu dữ liệu short là gì?
A. -128 đến 127
B. -32768 đến 32767
C. -2147483648 đến 2147483647
D. Khơng có trong các lựa chọn
Đáp án: B
Giải thích: Kiểu dữ liệu short chiếm 16 bit trong bộ nhớ. Phạm vi của nó là từ -32768 đến
32767.

Câu 2: Phạm vi của kiểu dữ liệu byte trong Java là gì?
A. -128 đến 127
B. -32768 đến 32767
C. -2147483648 đến 2147483647
D. Khơng có trong các lựa chọn
Đáp án: A
Giải thích: Kiểu dữ liệu byte chiếm 8 bit trong bộ nhớ. Phạm vi của nó là từ -128 đến
127.

Câu 3: Các dòng mã Java nào sau đây là hợp lệ?

int w = (int)888.8;
byte x = (byte)100L;
long y = (byte)100;
byte z = (byte)100L;
A. 1 và 2
B. 2 và 3


C. 3 và 4
D. Tất cả các câu lệnh đều đúng


Đáp án: D
Giải thích: Cả các câu lệnh (1), (2), (3) và (4) đều đúng. (1) là đúng vì khi một số dấu
chấm động (double trong trường hợp này) được ép kiểu thành một số nguyên (int trong
trường hợp này), nó chỉ mất đi các chữ số sau dấu thập phân. (2) và (4) đúng vì một long
có thể được ép kiểu thành byte. Nếu long lớn hơn 127, nó mất đi các bit có ý nghĩa cao
nhất. (3) thực sự hoạt động, mặc dù không cần phải ép kiểu, vì một long có thể lưu trữ
một byte.

Câu 4: Một biểu thức liên quan đến byte, int và các số nguyên được thăng cấp thành kiểu
dữ liệu nào?
A. int
B. long
C. byte
D. float
Đáp án: A
Giải thích: Một biểu thức liên quan đến byte, int, short, số nguyên literal được thăng cấp
thành int trước khi thực hiện bất kỳ tính tốn nào.

Câu 5: Kiểu dữ liệu nào có thể chứa các giá trị dưới đây khi được sử dụng làm biến float?
A. -1.7e+308
B. -3.4e+038
C. +1.7e+308
D. -3.4e+050
Đáp án: B
Giải thích: Phạm vi của kiểu dữ liệu float là từ -(3.4e38) đến +(3.4e38).

Câu 6: Các hàm toán học siêu việt (transcendental) trả về giá trị của kiểu dữ liệu nào?


A. int

B. float
C. double
D. long
Đáp án: C
Giải thích: Chỉ có kiểu dữ liệu double được trả về bởi tất cả các hàm tốn học siêu việt.
Các hàm này khơng trả về int hoặc long. Chúng trả về double thay vì float vì double có
phạm vi lớn hơn.

Câu 7: Đoạn mã Java sau đây sẽ in ra kết quả gì?
class average {
public static void main(String args[]) {
double num[] = {5.5, 10.1, 11, 12.8, 56.9, 2.5};
double result;
result = 0;
for (int i = 0; i < 6; ++i)
result = result + num[i];
System.out.print(result/6);
}
}
A. 16.34
B. 16.566666644
C. 16.46666666666667
D. 16.46666666666666
Đáp án: C
Giải thích: Khơng có giải thích.


Kết quả:
$ javac average.java
$ java average

16.46666666666667
Câu 8: Đoạn mã Java sau đây sẽ in ra kết quả gì?
class output {
public static void main(String args[]) {
double a, b, c;
a = 3.0/0;
b = 0/4.0;
c=0/0.0;
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
A. Infinity
B. 0.0
C. NaN
D. Tất cả đều đúng
Đáp án: D
Giải thích: Đối với các hằng số số thực, chúng ta có giá trị hằng số để biểu diễn vơ cực
(infinity) cho cả số thực dương và âm (10/0.0), và cũng có giá trị NaN (not a number) cho
trường hợp không xác định như 0/0.0. Tuy nhiên, đối với kiểu ngun, chúng ta khơng có
hằng số nào, đó là lý do chúng ta nhận được một ngoại lệ số học.

Câu 9: Đoạn mã Java sau đây sẽ in ra kết quả gì?


class increment {
public static void main(String args[]) {
int g = 3;
System.out.print(++g * 8);

}
}
A. 25
B. 24
C. 32
D. 33
Đáp án: C
Giải thích: Tốn tử ++ có độ ưu tiên cao hơn *, do đó g trở thành 4 và khi nhân với 8, ta
được 32.

Kết quả:
$ javac increment.java
$ java increment
32
Câu 10: Đoạn mã Java sau đây sẽ in ra kết quả gì?
class area {
public static void main(String args[]) {
double r, pi, a;
r = 9.8;
pi = 3.14;
a = pi * r * r;
System.out.println(a);
}


}
A. 301.5656
B. 301
C. 301.56
D. 301.56560000

Đáp án: A
Giải thích: Khơng có giải thích.

Kết quả:
$ javac area.java
$ java area
301.5656

Câu 11: Phạm vi số của kiểu dữ liệu char trong Java là gì?
A. -128 đến 127
B. 0 đến 256
C. 0 đến 32767
D. 0 đến 65535
Đáp án: D
Giải thích: Kiểu dữ liệu char chiếm 16 bit trong bộ nhớ, nên nó hỗ trợ 216, tức là từ 0 đến
65535.

Câu 12: Loại mã hóa nào được sử dụng cho kiểu dữ liệu ký tự trong Java?
A. ASCII
B. ISO-LATIN-1
C. UNICODE
D. Khơng có trong các lựa chọn


Đáp án: C
Giải thích: Unicode định nghĩa một bảng ký tự tồn cầu có thể biểu diễn tất cả các ký tự
được tìm thấy trong tất cả các ngơn ngữ trên thế giới. Phạm vi của nó là từ 0 đến 65536.

Câu 13: Biến boolean có thể chứa giá trị nào sau đây?
A. True & False

B. 0 & 1
C. Bất kỳ giá trị nguyên nào
D. true
Đáp án: A
Giải thích: Biến boolean chỉ có thể chứa một trong hai giá trị có thể có, true và false.

Câu 14: Kiểu dữ liệu nào chiếm giữ các giá trị từ 0 đến 127 trong bảng ký tự Unicode
được sử dụng cho ký tự trong Java?
A. ASCII
B. ISO-LATIN-1
C. Khơng có trong các lựa chọn
D. ASCII và ISO-LATIN1
Đáp án: D
Giải thích: Tập ký tự 0 đến 127 đầu tiên trong Unicode giống như tập ký tự của ISOLATIN-1 và ASCII.

Câu 15: Khai báo nào sau đây là hợp lệ cho một biến boolean?
A. boolean b1 = 1;
B. boolean b2 = ‘false’;
C. boolean b3 = false;
D. boolean b4 = ‘true’
Đáp án: C


Giải thích: Biến boolean chỉ có thể được gán giá trị true hoặc false.

Câu 16: Chương trình Java sau đây sẽ in ra kết quả gì?
class array_output {
public static void main(String args[]) {
char array_variable [] = new char[10];
for (int i = 0; i < 10; ++i) {

array_variable[i] = 'i';
System.out.print(array_variable[i] + "" );
i++;
}
}
}
A. i i i i i
B. 0 1 2 3 4
C. i j k l m
D. Khơng có trong các lựa chọn
Đáp án: A
Giải thích: Khơng có giải thích.

Kết quả:
$ javac array_output.java
$ java array_output
iiiii
Câu 17: Chương trình Java sau đây sẽ in ra kết quả gì?
class mainclass {
public static void main(String args[]) {


char a = 'A';
a++;
System.out.print((int)a);
}
}
A. 66
B. 67
C. 65

D. 64
Đáp án: A
Giải thích: Giá trị ASCII của 'A' là 65, khi sử dụng toán tử ++ giá trị của ký tự tăng lên
một.

Kết quả:
$ javac mainclass.java
$ java mainclass
66
Câu 18: Chương trình Java sau đây sẽ in ra kết quả gì?
class mainclass {
public static void main(String args[]) {
boolean var1 = true;
boolean var2 = false;
if (var1)
System.out.println(var1);
else
System.out.println(var2);
}


}
A. 0
B. 1
C. true
D. false
Đáp án: C
Giải thích: Khơng có giải thích.

Kết quả:

$ javac mainclass.java
$ java mainclass
true
Câu 19: Chương trình Java sau đây sẽ in ra kết quả gì?
class booloperators {
public static void main(String args[]) {
boolean var1 = true;
boolean var2 = false;
System.out.println((var1 & var2));
}
}
A. 0
B. 1
C. true
D. false
Đáp án: D


Giải thích: Tốn tử boolean ‘&’ ln trả về true hoặc false. Nó trả về true khi cả hai giá
trị đều là true và ngược lại. Vì var1 được định nghĩa là true và var2 được định nghĩa là
false nên kết quả của toán tử ‘&’ là false.

Kết quả:
$ javac booloperators.java
$ java booloperators
false
Câu 20: Chương trình Java sau đây sẽ in ra kết quả gì?
class asciicodes {
public static void main(String args[]) {
char var1 = 'A';

char var2 = 'a';
System.out.println((int)var1 + " " + (int)var2);
}
}
A. 162
B. 65 97
C. 67 95
D. 66 98
Đáp án: B
Giải thích: Mã ASCII của 'A' là 65 và của 'a' là 97.

Kết quả:
$ javac asciicodes.java
$ java asciicodes
65 97


Câu 21: Trong Enum, thứ tự của các biến là gì?
A. Tăng dần
B. Giảm dần
C. Thứ tự ngẫu nhiên
D. Phụ thuộc vào phương thức order()
Đáp án: D
Giải thích: Thứ tự xuất hiện của các biến trong Enum là thứ tự tự nhiên của chúng (tự
nhiên có nghĩa là thứ tự mà chúng được khai báo trong kiểu Enum). Tuy nhiên, phương
thức compareTo() được triển khai để sắp xếp các biến theo thứ tự tăng dần.

Câu 22: Chúng ta có thể tạo một đối tượng của Enum ở ngồi Enum chính nó khơng?
A. Đúng
B. Sai

Đáp án: B
Giải thích: Khơng, các đối tượng của Enum khơng thể được tạo ở bên ngồi ranh giới của
Enum, vì Enum khơng có một hàm tạo công cộng.

Câu 23: Đoạn mã Java sau đây sẽ in ra kết quả gì?
enum Season
{
WINTER, SPRING, SUMMER, FALL
};
System.out.println(Season.WINTER.ordinal());
A. 0
B. 1
C. 2
D. 3
Đáp án: A


Giải thích: Phương thức ordinal() cung cấp số cho các biến được định nghĩa trong Enum.

Câu 24: Nếu chúng ta cố gắng thêm các hằng số Enum vào TreeSet, thứ tự sắp xếp nó sẽ
sử dụng là gì?
A. Sắp xếp theo thứ tự khai báo của Enums
B. Sắp xếp theo thứ tự chữ cái của Enums
C. Sắp xếp dựa trên phương thức order()
D. Sắp xếp theo thứ tự giảm dần của tên của Enums
Đáp án: A
Giải thích: TreeSet sẽ sắp xếp các giá trị theo thứ tự mà các hằng số Enum được khai báo.

Câu 25: Đoạn mã Java sau đây sẽ in ra kết quả gì?
class A

{

}

enum Enums extends A
{
ABC, BCD, CDE, DEF;
}
A. Lỗi thời gian chạy (Runtime Error)
B. Lỗi biên dịch (Compilation Error)
C. Nó chạy thành cơng
D. Ngoại lệ EnumNotDefined
Đáp án: B
Giải thích: Các loại Enum khơng thể mở rộng từ một lớp.


Câu 26: Đoạn mã Java sau đây sẽ in ra kết quả gì?
enum Levels
{
private TOP,

public MEDIUM,

protected BOTTOM;
}
A. Lỗi thời gian chạy (Runtime Error)
B. Ngoại lệ EnumNotDefined
C. Nó chạy thành cơng
D. Lỗi biên dịch (Compilation Error)
Đáp án: D

Giải thích: Enum khơng thể có bất kỳ bộ điều chỉnh nào. Chúng là public, static và final
theo mặc định.

Câu 27: Đoạn mã Java sau đây sẽ in ra kết quả gì?
enum Enums
{
A, B, C;

private Enums()
{
System.out.println(10);
}


}

public class MainClass
{
public static void main(String[] args)
{
Enum en = Enums.B;
}
}
A.
10
10
10
B. Lỗi biên dịch (Compilation Error)
C.
10

10
D. Ngoại lệ Runtime (Runtime Exception)
Đáp án: A
Giải thích: Hàm tạo của Enums được gọi và in ra 10.

Câu 28: Phương thức nào trả về các phần tử của lớp Enum?
A. getEnums()
B. getEnumConstants()
C. getEnumList()
D. getEnum()
Đáp án: B


Giải thích: Phương thức getEnumConstants() trả về các phần tử của lớp Enum hoặc null
nếu đối tượng Class này không biểu diễn một kiểu Enum.

Câu 29: Tất cả các Enum đều mở rộng từ lớp nào?
A. Object
B. Enums
C. Enum
D. EnumClass
Đáp án: C
Giải thích: Tất cả các enums mặc định đều mở rộng từ java.lang.Enum. Vì Java khơng hỗ
trợ kế thừa nhiều, một enum không thể mở rộng bất cứ thứ gì khác.

Câu 30: Enum có an tồn với kiểu dữ liệu khơng?
A. Đúng
B. Sai
Đáp án: A
Giải thích: Enums an tồn với kiểu dữ liệu vì chúng có khơng gian tên riêng của mình.

Câu 31: Lợi ích chính của BigDecimal so với double là gì?
A. Cú pháp
B. Sử dụng bộ nhớ
C. Tạo rác
D. Độ chính xác
Đáp án: D
Giải thích: BigDecimal có cú pháp không tự nhiên, cần nhiều bộ nhớ và tạo ra lượng lớn
rác. Nhưng nó có độ chính xác cao, thích hợp cho một số phép tốn như tính toán tiền tệ.

Câu 32: Kiểu dữ liệu nào dưới đây không hỗ trợ các phương thức quá tải cho +, -, *, và /?
A. int


B. float
C. double
D. BigDecimal
Đáp án: D
Giải thích: int, float, double cung cấp các phương thức quá tải cho +, -, *, và /.
BigDecimal không cung cấp các phương thức quá tải này.

Câu 33: Đoạn mã Java sau đây sẽ in ra kết quả gì?
double a = 0.02;
double b = 0.03;
double c = b - a;
System.out.println(c);

BigDecimal _a = new BigDecimal("0.02");
BigDecimal _b = new BigDecimal("0.03");
BigDecimal _c = b.subtract(_a);
System.out.println(_c);

A.
0.009999999999999998
0.01
B.
0.01
0.009999999999999998
C.
0.01
0.01
D.


0.009999999999999998
0.009999999999999998
Đáp án: A
Giải thích: BigDecimal cung cấp độ chính xác cao hơn so với double. Double nhanh hơn
về mặt hiệu suất so với BigDecimal.

Câu 34: Cơ sở của kiểu dữ liệu BigDecimal là gì?
A. Cơ số 2
B. Cơ số 8
C. Cơ số 10
D. Cơ số e
Đáp án: C
Giải thích: Một BigDecimal là n*10^scale, trong đó n là một số nguyên lớn có dấu tùy ý.
Scale có thể được coi là số chữ số để di chuyển dấu chấm thập phân sang trái hoặc phải.

Câu 35: Hạn chế của phương thức toString() của BigDecimal là gì?
A. Khơng có hạn chế
B. toString trả về null

C. toString trả về số ở dạng mở rộng
D. toString sử dụng ký hiệu quy tắc
Đáp án: D
Giải thích: toString() của BigDecimal sử dụng ký hiệu quy tắc để biểu diễn số gọi là biểu
diễn canon. Chúng ta phải sử dụng toPlainString() để tránh ký hiệu quy tắc.

Câu 36: Điều gì khơng được cung cấp bởi BigDecimal?
A. Quản lý scale
B. Tốn tử +
C. Làm trịn


D. Hashing
Đáp án: B
Giải thích: toBigInteger() chuyển đổi BigDecimal thành BigInteger. toBigIntegerExact()
chuyển đổi BigDecimal thành BigInteger và kiểm tra xem có mất thơng tin nào khơng.

Câu 37: BigDecimal là một phần của gói nào?
A. java.lang
B. java.math
C. java.util
D. java.io
Đáp án: B
Giải thích: BigDecimal là một phần của java.math. Gói này cung cấp các lớp khác nhau
để lưu trữ số và thực hiện các phép tốn tốn học.

Câu 38: BigDecimal.ONE là gì?
A. Tuyên bố sai
B. Tuyên bố được xác định tùy chỉnh
C. Biến tĩnh với giá trị 1 với scale 10

D. Biến tĩnh với giá trị 1 với scale 0
Đáp án: D
Giải thích: BigDecimal.ONE là biến tĩnh của lớp BigDecimal với giá trị 1 và scale 0.

Câu 39: Lớp nào là thư viện của các hàm thực hiện các phép toán số nguyên và số thập
phân?
A. MathContext
B. MathLib
C. BigLib
D. BigContext


Đáp án: A
Giải thích: Lớp MathContext là một thư viện các hàm thực hiện các phép toán số nguyên
và số thập phân với BigInteger và BigDecimal.

Câu 40: Đoạn mã Java sau đây sẽ in ra kết quả gì?
public class AddDemo
{
public static void main(String args[])
{
BigDecimal b = new BigDecimal("23.43");
BigDecimal br = new BigDecimal("24");
BigDecimal bres = b.add(new BigDecimal("450.23"));
System.out.println("Add: " + bres);

MathContext mc = new MathContext(2, RoundingMode.DOWN);
BigDecimal bdecMath = b.add(new BigDecimal("450.23"), mc);
System.out.println("Add using MathContext: " + bdecMath);
}

}
A. Lỗi biên dịch
B.
Add: 473.66
Add using MathContext: 4.7E+2
C.
Add 4.7E+2
Add using MathContext: 473.66
D. Ngoại lệ thời gian chạy



×