


















Preview text:
Câu 1: Khi lập trình, bạn thường khai báo các biến (variables). Tên biến (định danh) nào
sau đây không hợp lệ?
Đ: get-in T1: A92 T2: _ok T3: Ho_ten K: Dễ M: 20
Câu 2: Để khai báo một hằng (constant) trong Java, bạn sử dụng từ khóa nào?
Đ: final T1: const T2: define T3: constant K: Dễ M: 20
Câu 3: Khi tạo một lớp, thành phần nào không thể thiếu trong lớp?
Đ: Không có thành phần nào không thể thiếu T1: Data T2: Constructors T3: Methods K: Dễ M: 20
Câu 4: Khi tạo một lớp, phát biểu nào sau đây là đúng về constructor?
Đ: Bạn có thể không cần tạo bất kỳ constructor nào
T1: Bạn phải tạo 1 constructor
T2: Bạn phải tạo ít nhất 2 constructors mới đáp ứng nhu cầu
T3: Không thể không tạo constructor K: Dễ M: 20
Câu 5: Khi xây dựng xong một lớp, ta có thể khai báo các objects của lớp. Số lượng objects
tạo ra từ một lớp là bao nhiêu?
Đ: Rất nhiều T1: Từ 0 đến 20 objects T2: Từ 20 đến 50 objects
T3: Từ 50 đến 100 objects K: Dễ M: 20
Câu 6: Giả sử bạn đã tạo một lớp tên là ABC, lớp này không có constructor và bạn không
cho nó kế thừa bất kỳ lớp nào. Câu lệnh nào sau đây khai báo và tạo một đối tượng của lớp ABC?
Đ: ABC abc = new ABC(); T1: ABC ABC = new ABC(); T2: ABC abc new ABC; T3: ABC abc; K: Khó M: 70
Câu 7: Hãy chọn câu thích hợp nhất trong các câu sau về constructor?
Đ: Constructor không có kiểu trả về và có tên trùng với tên lớp
T1: Tên của constructor trùng với tên lớp
T2: Constructor không có kiểu trả về
T3: Constructor cũng tương tự như method K: Khó M: 70
Câu 8: Cho lớp được tạo như sau:
public class JavaExample { int x;
public java () {
x = doX(); }
int doX() { return x+=10; }
public static void main(String[] args) {
java jv = new java();
System.out.println("X= " + jv.doX()); } }
Cho biết kết quả biên dịch và chạy chương trình
Đ: Biên dịch và chạy ra kết quả: X=20 T1: Biên dịch bị lỗi
T2: Biên dịch không lỗi, chạy có lỗi
T3: Biên dịch và chạy ra kết quả: X=10 K: Rất khó M: 100
Câu 9: Phát biểu nào sau đây đúng về tính chất Overloading?
Đ: Trong 1 lớp có các methods giống tên nhưng khác nhau về danh sách tham số
T1: Trong 2 lớp có 2 methods giống tên nhưng khác nhau về danh sách tham số, mỗi method nằm trong 1 lớp
T2: Trong 2 lớp có 2 methods giống tên và giống cả danh sách tham số
T3: Là trường hợp lớp con có 1 method giống 1 method của lớp cha K: Khó M: 70
Câu 10: Giả sử bạn tạo 1 lớp tên FastClass trong 1 file source code, câu lệnh khai báo lớp
nào sau đây là sai?
Đ: public synchronized class FastClass {}
T1: protected class FastClass {}
T2: public abstract class FastClass {}
T3: class FastClass extends Object K: Rất khó M: 100
Câu 11: Cho khai báo lớp như sau:
public class Widget {
static final int maxX = 40;
public Widget(int mx) {
maxX = mx; }
public static void main(String[] args) {} }
Khi biên dịch có lỗi hay không? Nếu có lỗi thì lỗi xảy ra ở dòng lệnh nào?
Đ: Biên dịch bị lỗi. Lỗi xảy ra ở dòng 4
T1: Biên dịch không bị lỗi
T2: Biên dịch bị lỗi. Lỗi xảy ra ở dòng 2
T3: Biên dịch bị lỗi. Lỗi xảy ra ở dòng 6 K: Rất khó M: 100
Câu 12: Đóng gói dữ liệu của một lớp là kỹ thuật:
Đ: Không cho phép bên ngoài truy cập trực tiếp vào dữ liệu
T1: Có thể cho phép bên ngoài truy cập trực tiếp vào dữ liệu
T2: Chỉ cho phép bên ngoài truy cập trực tiếp vào dữ liệu khi được phép
T3: Làm tăng mức độ chuyên nghiệp của programmers K: Trung bình M: 50
Câu 13: Phát biểu nào sau đây về kỹ thuật đóng gói dữ liệu là đúng?
Đ: Cho phép truy cập gián tiếp vào dữ liệu thông qua các hàm có đặt lệnh kiểm soát
T1: Chỉ cho phép truy giản tiếp vào dữ liệu thông qua các hàm read-only
T2: Chỉ cho phép truy cập giản tiếp vào dữ liệu từ bên trong các lớp con của nó
T3: Chỉ cho phép truy gián tiếp vào dữ liệu từ bên trong lớp K: Trung bình M: 40
Câu 14: Method nào sau đây khai báo hợp lý?
Đ: public void setRange(int range) {} T1: public void getArrow() {} T2: public void setBow() {} T3: public object setBow() {} K: Rất khó M: 100
Câu 15: Một biến của một lớp mà giá trị của nó được sử dụng cho tất cả các objects
(instance) của lớp đó. Biến đó gọi là biến gì? Đ: static T1: public T2: local T3: instance K: Khó M: 70
Câu 16: Cho 1 lớp có 1 method được định nghĩa như sau:
public class Calculations {
public int findAverage(int sum) {return sum; } }
Bạn cần thêm vào lớp trên 1 method mà overloading với method đã có. Bạn chọn method
nào sau đây?
Đ: public long findAverage(int sum, int divisor) {}
T1: public long findAverage(int sum) {}
T2: public int average(int sum) {}
T3: private void findAverage(int sum) {} K: Rất khó M: 100
Câu 17: Phát biểu nào sau đây đúng về sự kế thừa?
Đ: Kế thừa là việc tạo lớp con dựa trên lớp cha, sử dụng lại các thành phần có sẵn của lớp cha.
T1: Kế thừa là kỹ thuật của tất cả ngôn ngữ lập trình
T2: Kế thừa là lớp con chọn lựa sử dụng lại một phần của lớp cha
T3: Kế thừa là lớp con giữ nguyên những gì đã có từ lớp cha K: Trung bình M: 50
Câu 18: Mục đích cụ thể của việc kế thừa là gì? Hãy chọn câu đúng.
Đ: Sử dụng lại mã nguồn
T1: Tăng khả năng chuyên nghiệp
T2: Theo xu hướng công nghệ
T3: Tối ưu hơn chương trình K: Trung bình M: 50
Câu 19: Trong kế thừa, (các) thành phần nào sau đây không thể kế thừa từ lớp cha?
Đ: Constructors T1: Data T2: Method T3: Hàm K: Trung bình M: 50
Câu 20: Trong ngôn ngữ Java sử dụng loại kiến trúc kế thừa nào?
Đ: Đơn kế thừa T1: Đa kế thừa
T2: Không ràng buộc gì về kế thừa
T3: Phải cài thêm gói phần mềm về kế thừa thì Java mới có thể có khả năng kế thừa K: Dễ M: 20
Câu 21: Trong Java, khi tạo lớp con kế thừa lớp cha, từ khóa nào cần được sử dụng? Đ: extends T1: implements T2: Inheritant K: Dễ M: 20
Câu 22: Để gọi constructor của lớp cha ta sử dụng lệnh gì? Đ: super(...)
T1: Gọi đúng tên constructor của lớp cha
T2: Ta không cần gọi, constructor sẽ tự động được gọi T3: parent(...) K: Trung bình M: 50
Câu 23: Giả sử ta dùng lệnh super(...) để gọi constructor của lớp cha; Khi đó lệnh super(...)
cần đặt ở đâu trong constructor của lớp con là thích hợp?
Đ: Ngay dòng đầu tiên
T1: Đặt bất kỳ đâu nếu cần thiết
T2: Dùng cấu trúc if (...) để gọi
T3: Đặt ở dòng cuối cùng K: Trung bình M: 50
Câu 24: Cho lớp B kế thừa lớp A. Trong lớp A có 1 constructor không tham số. Nếu trong
constructor của lớp con không chứa lời gọi tường minh đến constructor của lớp cha thì khi
biên dịch, điều gì sẽ xảy ra?
Đ: Compiler sẽ tự động thêm vào constructor của lớp con lệnh gọi constructor của lớp cha là super() T1: Báo lỗi biên dịch
T2: Không báo lỗi biên dịch nhưng chương trình không chạy
T3: Kết quả không đoán trước được K: Khó M: 80
Câu 25: Cho kiến trúc kế thừa với code như sau:
class Parent {
public Parent() {
System.out.println("Hello Dad!"); } }
class Child extends Parent { String name;
public Child(String childName) {
super(); // Call to the Parent constructor
System.out.println(childName); } }
public class TestDefaultConstructor {
public static void main(String[] args) {
Child child = new Child("Hello Son!"); } }
Output của chương trình trên là gì?
Đ: Hello Dad! Hello Son! T1: Hello Son! T2: Hello Son! Hello Dad! T3: Hello Dad! Hello Son! K: Rất khó M: 90
Câu 26: Cho kiến trúc kế thừa với code như sau:
class Parent {
public Parent(String str) {
System.out.println("Hello Dad!"); } }
class Child extends Parent { String name;
public Child(String childName) {
System.out.println(childName); } }
public class TestDefaultConstructor {
public static void main(String[] args) {
Child child = new Child("Hello Son!"); } }
Output của chương trình trên là gì?
Đ: Lỗi biên dịch T1: Hello Dad! Hello Son! T2: Hello Son! T3: Hello Dad! Hello Son! K: Rất khó M: 100
Câu 27: Cho kiến trúc kế thừa với code như sau:
class Parent {
public Parent(String str) {
System.out.println(str); } }
class Child extends Parent { String name;
public Child(String childName) {
super("Hello Dad!");
System.out.println(childName); } }
public class TestKeThua {
public static void main(String[] args) {
Child child = new Child("Hello Son!"); } }
Output của chương trình trên là gì?
Đ: Hello Dad! Hello Son! T1: Hello Dad! T2: Hello Dad! T3: Hello Son! K: Rất khó M: 100
Câu 28: Khai báo dữ liệu dạng nào của lớp cha không thể cho lớp con kế thừa?
Đ: Khai báo private T1: Khai báo public T2: Khai báo protected
T3: Không chỉ định access modifier K: Trung bình M: 40
Câu 29: Khai báo method dạng nào của lớp cha không thể cho lớp con kế thừa?
Đ: Khai báo private T1: Khai báo protected T2: Khai báo public
T3: Không chỉ định access modifier K: Trung bình M: 40
Câu 30: Từ khóa nào dùng để khai báo lớp trừu tượng? Đ: abstract T1: Abstract T2: Extends T3: Implements K: Dễ M: 30
Câu 31: Phát biểu nào sau đây là đúng về lớp trừu tượng?
Đ: Lớp trừu tượng có thể chứa các thành phần không trừu tượng
T1: Lớp trừu tượng chỉ chứa dữ liệu trừu tượng
T2: Lớp trừu tượng chỉ chứa method trừu tượng
T3: Lớp trừu tượng không thể chứa các thành phần không trừu tượng K: Trung bình M: 50
Câu 32: Lớp con của lớp trừu tượng nếu muốn là lớp cụ thể thì phải làm gì?
Đ: Phải định nghĩa lại tất cả abstract methods của lớp cha
T1: Phải định nghĩa lại tất cả abstract data của lớp cha
T2: Không bắt buộc phải định nghĩa lại tất cả abstract methods của lớp cha
T3: Chỉ cần định nghĩa lại 1 abstract methods của lớp cha K: Trung bình M: 60
Câu 33: Phát biểu nào sai về abstract method?
Đ: Abstract method có thể nằm trong một lớp cụ thể
T1: Abstract method là phương thức có dấu “;” cuối dòng khai báo phương thức
T2: Abstract method là phương thức được khai báo dùng từ khóa abstract
T3: Abstract method là phương thức không có thân (body) K: Trung bình M: 50
Câu 34: Overriding method là gì?
Đ: Là trường hợp lớp con thay đổi code trong phương thức kế thừa từ lớp cha
T1: Là trường hợp 2 methods khai báo giống nhau nhưng code có khác nhau
T2: Là trường hợp lớp con kế thừa method của lớp cha
T3: Là trường hợp bổ sung thân method cho abstract method K: Trung bình M: 50
Câu 35: Final class là loại class gì?
Đ: Là loại class không cho phép các classes khác kế thừa
T1: Là loại lớp hằng (không thay đổi), tương tự như khai báo biến
T2: Là loại lớp mà ta không thể thay đổi dữ liệu của nó
T3: Là loại lớp không có thân lớp, chỉ có dòng khai báo lớp K: Trung bình M: 50
Câu 36: Khi xây dựng lớp A có 2 dữ liệu số nguyên là num01 và num02. Nếu không cho các
lớp con của lớp A kế thừa dữ liệu num02 nhưng cho phép kế thừa dữ liệu num01, ta phải làm gì?
Đ: Khai báo dữ liệu num02 là private, dữ liệu num01 không khai báo private
T1: Khai báo lớp A là final
T2: Khai báo dữ liệu num01 và num02 là private
T3: Khai báo dữ liệu num01 là public K: Trung bình M: 50
Câu 37: Cho code như sau:
class Cinema {
private String name;
public Cinema(String name) {this.name = name;} }
public class Movie extends Cinema {
public Movie(String movie) { }
public static void main(String[] showing) {
System.out.print(new Movie("Another Trilogy").name); } }
Hãy cho biết code trên có lỗi hay không? Nếu có thì lỗi ở các dòng nào?
Đ: Có 2 lỗi, dòng 6 và dòng 8. T1: Không có lỗi T2: Có 1 lỗi, ở dòng 6
T3: Có 3 lỗi, ở các dòng: 2, 3, 6 K: Rất khó M: 100
Câu 38: Cho code như sau:
class A {
private int num;
public A(int n) { num = n; } }
public class B extends A {
public B() {}
public static void main(String[] args) {
System.out.print("Is it OK?"); } }
Code trên có lỗi hay không? Nếu có lỗi thì lỗi ở dòng nào?
Đ: Có lỗi. Lỗi ở dòng 6. T1: Không lỗi.
T2: Có lỗi. Lỗi ở dòng 2.
T3: Có lỗi. Lỗi ở dòng 8. K: Rất khó. M: 100.
Câu 39: Cho chương trình sau:
class Song {
public void playMusic() {
System.out.print("Play!"); }
private int playMusic() {
System.out.print("Music!"); }
public static void main(String[] tracks) {
new Song().playMusic(); } }
Output của chương trình trên khi biên dịch và chạy là gì?
Đ: Lỗi biên dịch. T1: Play! T2: Music! T3: Play! Music! K: Rất khó. M: 100.
Câu 40: Cho code khai báo lớp như sau:
class Song { public playMusic() { return this; } }
Dấu gạch dưới trong khai báo hàm playMusic là chỗ của kiểu trả về của hàm. Theo bạn,
chỗ gạch dưới này bạn nên điền vào nội dung gì dưới đây để cho hàm playMusic hợp lệ? Đ: Song T1: Music T2: void T3: String K: Rất khó. M: 100.
Document Outline
- T1: A92
- M: 20
- M: 20 (1)
- M: 70
- M: 100
- M: 100 (1)
- M: 100 (2)
- M: 100 (3)
- M: 20 (2)
- M: 90
- M: 100 (4)
- M: 100 (5)
- M: 40
- M: 40 (1)
- M: 30
- M: 50
- M: 50 (1)
- M: 100 (6)
- M: 100.