You are on page 1of 2

Đề thi Java nâng cao

Thời gian 90 phút,đề gồm 2 trang

Câu 1 (1.5đ)
1. Nêu những đặc điểm chính của lập trình hướng đối tượng? Cho ví dụ minh họa thể hiện từng đặc điểm.
2. Interface và lớp Abstract có sự giống và khác nhau như thế nào? 

Câu 2 (1đ)
So sánh truyền tham chiếu và truyền tham trị? 

Câu 3 (1.5 đ)
1. Viết lớp Abstract Hinhhoc có các phương thức trừu tượng sau:
abs. + tinhdientich()
abs. + tinhchuvi()
2. Viết giao diện IKhonggian phương thức sau:
 + tinhthetich()
3. Viết lớp Hinhvuong kế thừa lớp Hinhhoc có thuộc tính sau:
#canh
4. Viết lớp Hinhchunhat kế thừa lớp Hinhhoc có thuộc tính sau:
#chieudai
#chieurong
5. Viết lớp Hinhlapphuong kế thừa lớp Hinhvuong và cài đặt giao diện IKhonggian 

Câu 4 (1.5 đ)
Cho hai interface sau:
public interface StringOperate {
       void initStringBase(String s);
}
public interface StringFunc{
    void replaceChar(char c1, char c2);
}

1. Viết 1 interface có tên StringIns kế thừa từ 2 interface trên và chứa thêm 1 phương phức chưa được định nghĩa
là int countWord(String s).
2. Viết 1 lớp tường minh có tên StringImp cài đặt interface StringIns có 1 biến thành viên str kiểu String.
3. Cài đặt tường minh void initStringBase(String s) trong lớp StringImp để khởi tạo biến str bằng s.
4. Cài đặt tường minh void replaceChar(char c1, char c2) trong lớp StringImp để chèn các ký tự c2 vào vị trí của
các ký tự c1 có trong biến str.
5. Cài đặt tường minh int countWord(String s) để đếm số lượng xâu con sinh ra từ xâu s thu được sau khi phân
tách xâu s bởi các kí tự ‘ ’ . , ; (dấu cách trắng, dấu chấm, dấu phẩy, dấu chấm phẩy)

Câu 5 (1đ)
Viết một hàm để trả về số lượng các phần tử là số chính phương (bình phương của một số nguyên khác 0 và 1)
trong một mảng A đầu vào:
    public int soptuchinhphuong(int[] A)
{…}

Câu 6 (1đ)

Garbage Collection là gì? Cho ví dụ.


Câu 7 (1.5đ)
Cần quản lý một danh sách bệnh nhân gồm 2 loại: bệnh nhân nội trú (BNNT) và bệnh nhân ngoại trú (BNNGT).
Thông tin chung gồm: họ tên: bằng chuỗi kí tự, tuổi: số nguyên, bệnh chuẩn đoán: bằng chuỗi kí tự.
Thông tin bệnh nhân ngoại trú (BNNGT): số lần đến khám: số nguyên, chi phí một lần khám: số thực.
Thông tin bệnh nhân nội trú (BNNT): 
• Hai loại bệnh nhân nội trú gồm: bệnh nhân nội trú ngắn hạn (NH) và bệnh nhân nội trú dài hạn (DH).
• Ngày nhập viện: bằng lớp Date, ngày ra viện dự kiến: bằng lớp Date, chi phí nằm viện 1 ngày: số thực
• Chi phí bệnh nhân nội trú ngắn hạn = số ngày nằm viện * chi phí nằm viện 1 ngày, chi phí bệnh nhân nội trú
dài hạn = số ngày nằm viện * chi phí nằm viện 1 ngày * 2.5.
a. Cài đặt 4 lớp: bệnh nhân, bệnh nhân nội trú, bệnh nhân ngoại trú, danh sách bệnh nhân.
b.Tạo lập và lưu 5 bệnh nhân với 2 bệnh nhân ngoại trú, 3 bệnh nhân nội trú trong đó có 1 người là dài hạn và 2
người là ngắn hạn.
c. Liệt kê toàn bộ các bệnh nhân.
d. Liệt kê danh sách bệnh nhân theo loại: BNNT, BNNGT.
e. Liệt kê danh sách bệnh nhân BNNT nằm viện dài hạn.
f. Tính tổng chi phí phải trả của toàn bộ bệnh nhân.

Câu 8 (1 đ)
Sudoku là một trò chơi câu đố sắp xếp chữ số dựa trên logic theo tổ hợp. Mục tiêu của trò chơi là điền các chữ số
vào một lưới 9×9 sao cho mỗi cột, mỗi hàng, và mỗi phần trong số chín lưới con 3×3 cấu tạo nên lưới chính đều
chứa tất cả các chữ số từ 1 tới 9.
Ví dụ:

Viết 1 hàm đầu vào là mảng hai chiều chứa các số nguyên int, để kiểm tra xem mảng này có thỏa mãn là một bảng
Sudoku 9x9 hay không? Nếu đúng trả về true, sai trả về false.
boolean CheckSudokuCondition(int a[][]) {….}

You might also like