You are on page 1of 14

Vấn đáp OOP

1. Có mấy cách tạo và sử dụng lớp Vô danh? Cho 1 ví dụ minh hoạ cụ thể về cách tạo và
sử dụng của Lớp Vô Danh.
- Có 2 cách tạo lớp vô danh: implement interface và kế thừa từ 1 class và abstract class.

2. Code
3. Hãy cho biết những hiểu biết của bạn về "is-a" và "has-a".
- is-a: thể hiện mối quan hệ giữa child class và parent class (kế thừa). VD: car is a vehicle.
- has-a: dùng khi thuộc tính của class này được sử dụng trong một class khác (không kế thừa).
VD: house has a door.
4. final dùng như thế nào? Giải thích từng trường hợp?
- final + attribute = const
- final + method = not override
- final + class = not kế thừa
5. Có mấy cách thể hiện tính trừu tượng trong OOP:
- Có 2 cách thể hiện tính trừu tượng trong OOP:
+ Abstract class: 0  100%
+ Interface: 100%
VD: mua xe về biết nó chạy, không cần biết nó tạo như thế nào.
6. Trong abstract class có được phép khai báo từ khóa final khi cài đặt method hay
không?
- Có thể khai báo final. Vì khi khai báo final thì phương thức đó sẽ là phương thức non-abstract
và abstract.
7. Abstact class, Interface, Final Class.
8. Kể tên phương thức vừa có static vừa có non-static, chỉ có static, chỉ có non-static:
- String cả hai
- Math chỉ static
- Scanner chỉ non-static
9. ADT (Abstract Data Type): là kiểu dữ liệu trừu tượng, gồm toàn bộ attribute (data) và
các method (operation) thao tác lên các data đó trong một chương trình.
10. Khác biệt giữa ArrayList và Vector. Chọn Vector và ArrayList tại sao chọn
- Dữ liệu phát sinh trong lúc chạy và ước lượng được (kích thước thay đổi), nhưng thêm ít phần
tử hoặc biết từ đầu thì ArrayList.
- ArrayList hiệu suất cao hơn
// - Còn nếu dữ liệu thêm đột ngột trong lúc chạy thì dùng Vector.
11. Java có hỗ trợ các kiểu dữ liệu nào, hãy kể tên 1 vài kiểu dữ liệu mà em biết:
- double, int, float, boolean, String, long,….
12. Java có kiểu dữ liệu Boolean hay không ? Bạn biết gì về kiểu dữ liệu này:
- Có
- Boolean là một trong những wrapper class cho kiểu dữ liệu nguyên thủy
- Trả về 2 giá trị true hoặc false
13. API là gì? Bạn biết gì về API?
- API: Application Programming Interface – phương thức trung gian kết nối các ứng dụng và thư
viện khác nhau.
- API là câu lệnh hay hàm thông thường và được viết với nhiều ngôn ngữ lập trình
- API gồm class, interface, packages, methods, field, constructors.
14. Hãy cho biết cách khai báo Array trong Java. Cho ví dụ:
- dataType[] arrayName;
- dataType arrayName[];
- dataType[] arrayName = new dataType[arraySize];
- dataType[] arrayName = {value0, value1, ..., valueK};
- Ví dụ: int[] number,….
15. Có mấy cách để khai báo String trong Java? Cho ví dụ:
- Có 2 cách:
+ String literal: kí tự nằm giữa 2 dấu nháy (0 hoặc nhiều)
Sử dụng “=”
VD: String str = “Hello World”;
Khai báo trong dấu nháy kép
VD: System.out.println(“Hello World”);
+ String new: tạo đối tượng String
Sử dụng “new”
VD: String str = new String(“Hello World”);
16. Để so sánh 2 chuỗi do người dùng nhập vào, Java sẽ hỗ trợ thế nào?
- “==”, equals(), equalsIgnoreCase()  true, false
- compareTo()  Integer
17. Access-Control Modifiers là gì? Cho ví dụ?
- Là các từ khóa quy định phạm vi truy cập của một class, method, attribute,…
- VD: public, private, protected, default (trong cùng package).
18. static, non-static method? Cho biết cách sử dụng? Cho ví dụ minh họa khi định nghĩa
2 loại phương thức này trong một lớp và cách gọi đến các phương thức này?
- static method là phương thức truy cập không cần thông qua đối tượng
- non-static method là phương thức truy cập qua đối tượng
19. Trong 1 class, có thể vừa có static method vừa có non-static method được không? Nếu
có cho biết tên class?
- Có
- String class
20. Constructor là gì? Có mấy loại? Kể tên? Cho ví dụ 1 loại cụ thể?
- Constructor là phương thức khởi tạo
- Có 3 loại:
+ Khởi tạo mặc định: Person();
+ Khởi tạo có tham số: Person(String hoTen);
+ Copy Constructor: Person(Person person);
21. Abstract methods là gì ? Cho ví dụ?
- Abstract methods là những phương thức không được định nghĩa
- Ví dụ:

22. Overloading là gì? Cho biết ưu điểm của Overloading? Cho ví dụ minh họa?
- Overloading là cho phép 1 class có khả năng định nghĩa ra nhiều phương thức có cùng tên,
nhưng khác nhau về tham số truyền vào (số lượng, trật tự, kiểu dữ liệu), kiểu dữ liệu trả về.
- Ưu điểm:
+ Tăng tính sử dụng cho các phương thức bên trong 1 class
- Ví dụ:

23. Overriding là gì? Cho biết ưu điểm của Overriding? Cho ví dụ minh họa?
- Overriding là định nghĩa lại các phương thức trong class con đã tồn tại trong class cha.
- Ưu điểm:
+ Phương thức có nhiều implementations
- Ví dụ:
24. Object là gì? Class là gì? Có mấy loại class? Kể tên?
- Object là một thành phần gồm có đặc điểm, trạng thái, hành vi (thuộc tính và phương thức)
- Class là một khuôn mẫu của các object có chung thuộc tính và phương thức
- Có 2 loại class:
+ Client Class
+ Service Class
- Trong class, thuộc tính còn được gọi là các trường (fields)
25. Client Class và Service Class là gì?
- Client class (Driver class) là class có chứa main duy nhất.
- Service class là class không chứa main, cung cấp phương thức cho client class.
26. Inner class và Outer class là gì?
- Inner class là một non-static class được khai báo trong một class hay một interface khác
- Ưu điểm của inner class:
+ Có thể truy cập tất cả các thành viên (các thành viên dữ liệu và các phương thức) của
lớp ngoài bao gồm cả private
+ Code dễ đọc hơn và dễ bảo trì hơn
+ Code được tối ưu hóa
- Có 3 kiểu Inner class non-static:
+ Member inner class
+ Annomynuos inner class
+ Local inner class

- Ngoài ra còn có Static Nested Class (Inner class static):

- Outer class là class mà chứa các class khác bên trong nó


27. Nested class là gì? Local class là gì? Anonymous class là gì? Cho ví dụ?
- Nested class là mọi class nằm trong một class.
- Ví dụ:

- Local class là class nằm trong một method, không phải là member của outer class, không được
dùng modifier cho nó, truy cập được các member trong outerclass.
- Ví dụ:
- Anonymous class là class được khởi tạo để định nghĩa phương thức của abstract class khi tạo
đối tượng tên abstract class.
- Ví dụ:

28. Thuộc tính là gì? Phương thức là gì? Có mấy loại phương thức?
- Thuộc tính (Attribute) là thông tin đặc điểm, trạng thái (state) của object
- Phương thức (Methods) là hành vi của object
- Có 3 loại methods:
+ Constructors
+ Accessors
+ Mutators
29. Accessors và Mutators là gì? (get/set methods)
- Accessors là phương thức cho phép lấy giá trị của đối tượng (getter)
- Mutators là phương thức cho phép thay đổi giá trị của đối tượng (setter)
30. Từ khóa “this” có ý nghĩa như thế nào trong Java? Cho ví dụ minh họa?
- Từ khóa “this” là con trỏ chỉ đến đối tượng hiện tại trong một methods
- VD:

31. Trình bày tính kế thừa trong lập trình hướng đối tượng? Tính kế thừa giúp giải quyết
vấn đề gì? Cho ví dụ minh họa về tính kế thừa?
- Tính kế thừa (Inheritance) cho phép lớp con thừa hưởng thuộc tính và phương thức của lớp cha
- Trong Java, có 1 loại kế thừa: đơn kế thừa.
- Đa kế thừa được thể hiện qua class implements interface
- Tính kế thừa giúp:
+ Tăng khả năng tái sử dụng code
+ Giảm bớt chi phí phát triển bảo trì
+ Các lớp con tuân theo giao diện chuẩn của lớp cha
- Ví dụ:

32. Trình bày tính đa hình trong lập trình hướng đối tượng? Tính đa hình giúp giải quyết
vấn đề gì? Cho ví dụ minh họa về tính đa hình?
- Tính đa hình (Polymophyism) là khả năng một đối tượng có thể thực hiện một tác vụ theo
nhiều cách khác nhau.
- Tính đa hình giúp:
+ Tăng khả năng tái sử dụng code
+ Thay đổi phương thức một cách linh hoạt tùy theo đối tượng
- Ví dụ:
33. Trình bày tính trừu tượng trong lập trình hướng đối tượng? Tính trừu tượng giúp giải
quyết vấn đề gì? Cho ví dụ minh họa về tính trừu tượng?
- Tính trừu tượng (Abstraction) là chỉ nêu ra vấn đề mà không hiển thị cụ thể, chỉ hiển thị tính
năng thiết yếu đối với đối tượng người dùng mà không nói quy trình hoạt động.
- Ưu điểm:
+ Cho phép lập trình viên bỏ qua những phức tạp trong đối tượng
+ Tập trung cái cốt lõi đối tượng (bản chất)
- Ví dụ:
+ Tạo ra tính năng chiếc xe hơi, người dùng chỉ biết là xe chạy tốt và ổn định chứ không biết
cách nó hoạt động và quy trình tạo
+ Code:
34. Trình bày tính đóng gói trong lập trình hướng đối tượng? Tính đóng gói giúp giải
quyết vấn đề gì? Cho ví dụ minh họa về tính đóng gói?
- Tính đóng gói (Encapsulation) là việc đóng gói thuộc tính và phương thức vào trong một class
- Ưu điểm:
+ Ngăn chặn những lớp bên ngoài truy cập, thay đổi thuộc tính và phương thức của 1
class  Che giấu dữ liệu
+ Code rõ ràng và dễ đọc
- Ví dụ:
35. Có mấy loại Error? Kể tên? Cho ví dụ? Có mấy loại Exception? Kể tên? Cho ví dụ?
- Có 3 loại Error:
+ Syntax Error:

+ Runtime Error:

+ Logic Error:
- Có 3 loại Exception:
+ Check Exception: là ngoại lệ được phát hiện tại thời điểm biên dịch có khả năng khôi
phục được

+ Uncheck Exception: là ngoại lệ không được phát hiện khi biên dịch, runtime error,
không thể khôi phục được

You might also like