Biểu thức nào sau đây hợp lệ?
A. Tất cả các phương án đều đúng.
B. String x = “Hello”; int y = 9; x = x + y;
C. String x = null; int y = (x != null) && (x.length() > 0) ? x.length() : 0;
D. String x = “Hello”; int y = 9; x +=y;
Có báo nhiêu loại lớp lồng (nested class)?
A. 3 loại
B. 1 loại
C. 2 loại
D. 4 loại
Lời gọi constructor của lớp cha (super class) được đặt ở đâu trong constructor?
A. Ở dòng đầu tiên
B. Ở dòng cuối cùng
C. Không thể gọi constructor của super class
D. Bất kỳ đâu
Các method nào dưới đây không phải là của một đối tượng String?
A. toString()
B. trim()
C. equals(String)
D. round()
Chọn phát biểu đúng:
A. Ta có thể sử dụng giá trị trả về của hàm để phân biệt sự khác nhau giữa hai phương thức nạp chồng.
B. Hàm tạo có thể có đối số như các phương thức thông thường khác.
C. Hàm tạo không bắt buộc phải có tên trùng với tên của lớp.
D. Trong một lớp chỉ có thể có nhiều nhất 1 hàm tạo.
Kiểu dữ liệu byte có phạm vi trong khoảng nào?
A. 0 đến 65535
B. (-256) đến 255
C. (-32,768) đến 32,767
D. (-128) đến 127
Trong một lớp (class) bất kỳ, ta có thể định nghĩa bao nhiều hàm tạo?
A. 2 hàm tao (không đối và có đối)
B. 1 hàm tạo
C. Nhiều hàm tạo
Ta sử dụng từ khóa nào cho khai báo phương thứ của lớp nếu không muốn nó bị ghi đè ở lớp dẫn xuất?
A. Từ khóa void
B. Từ khóa abstract
C. Từ khóa final
D. Từ khóa native
Cho đoạn code sau:
public class Test {
…
}
Lựa chọn nào sau đây có thể dùng để định nghĩa một hàm tạo (constructor) cho lớp trên?
A. public static void Test() {…}
B. public static Test() {…}
C. public void Test() {…}
D. public Test() {…}
Khi ta truyền một biến đối tượng lớp (trong lời gọi phương thức), java áp dụng cơ chế truyền gì?
A. Tất cả các phương án đều đúng
B. Truyền tham chiếu.
C. Truyền tham trị.
Cho các câu lệnh java theo thứ tự sau:
Dòng 1: StringBuffer sb = new StringBuffer("abc");
Dòng 2: String s = new String("abc");
Dòng 3: sb.append("def");
Dòng 4: s.append("def");
Dòng 5: sb.insert(1, "zzz");
Dòng 6: s.trim();
Lựa chọn phát biểu đúng:
A. Lỗi biên dịch tại dòng 5.
B. Lỗi biên dịch tại dòng 3.
C. Lỗi biên dịch tại dòng 6.
D. Lỗi biên dịch tại dòng 4.
Khai báo nào là không hợp lệ?
A. float f = 45.0;
B. String s="";
C. double d = 45.0;
D. int i = 32;
Một lớp lồng (nested class) có thể truy cập đến các thành viên của lớp bao bên ngoài hay không?
A. Chỉ có thể với các thành viên public
B. Không thể
C. Có thể
D. Chỉ có thể với các thành viên protect
Cho biết kết quả của chương trình sau:
public class Test {
static int age;
public static void main (String args []) {
age = age + 1;
System.out.println("The age is " + age);
}
}
A. Lỗi khi chạy (runtime)
B. The age is 1
C. Lỗi biên dịch
D. Không xuất ra gì màn hình
Cho phương thức như sau:
public void add(int a) {…}
Các phương thức overrload phương thức trên có thể trả về kiểu nào sau đây?
A. void
B. int
C. double
D. Kiểu bất kỳ
Các phát biểu nào sau đây đúng?
A. 128 >> 1 bằng –64
B. 128 >> 1 bằng 64
C. 128 >>> 1 bằng 32
D. 128 >>> 1 bằng –64
Kết quả khi thực hiện đoạn mã sau là gì?
public class Vidu1 {
public Vidu1( )
{
System.out.print(“\n Xin chao ban!”);
}
public Vidu1( String x)
{
System.out.print(“\n Xin chao ban:” + x);
}
public static void main(String arg[])
{
Vidu1 x = new Vidu1( );
}
}
A. Le Hang
B. Xin chao ban: Le Hang
C. Xin chao ban!
D. Không in gì ra màn hình
Chọn khai báo đúng cho phương thức main()?
A. public static void main

B. public void main(String[] arg)
C. public static void main(String[] args)
D. public static int main(String[] arg)
Cho phương thức sau:
public void add(int a) {…}
Phát biểu nào sau đây đúng về phương thức overriding phương thức trên.
A. Phương thức overriding phải trả về kiểu int.
B. Phương thức overriding có thể trả về bất kỳ kiểu gì.
C. Phương thức overriding phải trả về kiểu float.
D. Phương thức overriding phải trả về kiểu void.
Chọn phát biểu đúng cho hàm khởi tạo?
A. Tất cả các hàm khởi tạo có kiểu trả về là void.
B. Trình biên dịch sẽ tự động tạo hàm khởi tạo mặc định nếu lớp không định nghĩa hàm khởi tạo.
C. Một lớp sẽ kết thừa các hàm khởi tạo từ lớp cha.
D. Tất cả các phương án đều sai.