OOPs Concepts
Phần này thì toàn lý thuyết xoay quanh hướng đối tượng thôi. Làm Java thì ae tôi nghĩ không khó nếu đọc hiểu được câu hỏi là gì.
Question 1:
Which entity uses both data and code abstraction simultaneously?
Thực thể nào sử dụng cả trừu tượng hóa dữ liệu (data abstraction) và trừu tượng hóa hành vi/mã (code abstraction) cùng lúc?
Choose the correct option
A. Object
B. Class
C. Interface
D. Attribute
Đáp án là B.
A. Object là một thực thể cụ thể chứa cả dữ liệu và hành vi, nhưng nó là 1 instance (thể hiện) của Class.
B. Đáp án. Vì: Class là 1 bản thiết kế (blueprint) định nghĩa cả dữ liệu và hành vi của đối tượng. Nó thể hiện sự trừu tượng hóa toàn diện nhất:
- Data Abstraction: Định nghĩa các thuộc tính fields/attributes để lưu thông tin cần thiết mà không cần lộ ra chi tiết cách dữ liệu đó được lưu trữ bên trong
- Code Abstraction: Định nghĩa các phương thức methods để xử lý dữ liệu. NGười dùng chỉ cần gọi tên phương thức mà không cần quan tâm đến các thuật toán phức tạp bên trong.
C. Interface chủ yếu tập trung vào trừu tượng hóa hành vi
D. Attribute (thuộc tính). Đây chỉ là một thành phần con của Class
Question 2:
The complexity of ______ is reduced using abstraction in object-oriented programming.
Độ phức tạp của ______ được giảm bớt bằng cách sử dụng tính trừu tượng (abstraction) trong lập trình hướng đối tượng (OOP).
I. Design
II. Implementation
III. Development
A. I
B. II
C. III
D I and II
Đáp án D.
Trong lập trình hướng đối tượng, trừu tượng hóa (Abstraction) giúp giảm bớt sự phức tạp ở 2 khía cạnh chính:
- Design (thiết kế)
- Implementation (Triển khai)
Question 3:
Which abstraction level describes how data is stored in a database?
Mức độ trừu tượng nào mô tả cách dữ liệu được lưu trữ trong cơ sở dữ liệu?
A. Logical level
B. Physical level
C. View level
D. External level
Đáp án B: Đây là mức mô tả cách thức dữ liệu thực sự được lưu trữ trong các thiết bị lưu trữ (ổ cứng, SSD). Nó bao gồm các chi tiết kỹ thuật như cấu trúc file, chỉ mục (index), đường dẫn truy cập và cách cấp phát bộ nhớ.
Question 4:
Your employer wants you to add the messaging functionality to their product, but they haven't defined what kind of messages will be delivered. As a result, you must use all the Java types. Which kind of messages may be sent here?
Công ty của bạn muốn thêm chức năng messaging vào sản phẩm, nhưng chưa xác định rõ loại thông điệp sẽ được gửi. Vì vậy, bạn phải hỗ trợ tất cả các kiểu dữ liệu trong Java. Trong trường hợp này, những loại message nào có thể được gửi?
A. Text messages
B. Map messages
C. Object messages
D. All of the options
Đáp án D: Vì câu hỏi đưa ra "must use all the Java types
Còn nếu đưa ra 1 loại thì lưu bằng Object
Question 5:
The method m1 is overridden in a program for a particular feature. Which concept of object-oriented programming is always involved in runtime polymorphism?
Phương thức m1 được override trong chương trình cho một tính năng cụ thể. Khái niệm nào của lập trình hướng đối tượng luôn liên quan đến đa hình tại runtime (runtime polymorphism)?
A. Data hiding
B. Encapsulation
C. Inheritance
D. Abstraction
Đáp án C
Phân tích:
A. Nói đến private, getter/setter
B. Gom data + method lại
C. override method xảy ra class con kế thừa class cha và khi runtime sẽ quyết định.
D. Giúp thiết kế (interface/abstract class) không phải yếu tố bắt buộc.
Question 6:
In the context of the given code, which of the following entities cannot be declared as a friend of a class?
Thực thể nào sau đây KHÔNG THỂ được khai báo là "friend" (bạn) của một lớp?
Chẳng hiểu sao lại có C++ trong bài thi này:
#include <iostream>
class A {
private:
int a;
public:
A() { a = 10; } // Khởi tạo giá trị để dễ quan sát
friend class B; // Khai báo B là bạn của A
};
class B {
private:
int b;
public:
void showA(A& x) {
// Vì B là bạn của A nên có thể truy cập thuộc tính private 'a'
std::cout << "A::a = " << x.a << std::endl;
}
};
int main() {
A a;
B b;
b.showA(a);
return 0;
}
A. An object
B. A public data member
C. A private data member
D. All of the options
Hiểu nhanh về friend trong C++: friend cho phép class khác hoặc function khác truy cập private/protected
Đáp án D: Vì friend dùng cho class, function
Question 7:
Refer to the three given methods
met1 with int and float type parameters
met2 with float and float type parameters
met3 with float and double type parameters
Which method will be invoked if you call it with float- and int-type paramaters?
Xét 3 phương thức sau:
- met1 (int, float)
- met2 (float, float)
- met3 (float, double)
Khi gọi hàm với tham số kiểu (float, int) thì phương thức nào sẽ được gọi trong Java?
A. met1
B. met2
C. met3
D. Depends on the compiler
E. Error
Đây là tình huống điển hình về Method Overloading (Nạp chồng phương thức) và Type Promotion (Nân kiểu dữ liệu) trong Java
Trình biên dịch sẽ tìm kiếm phương thức phù hợp nhất theo các bước:
- Khớp chính xác (Exact Match): Không có phương thức nào nhận chính xác (float, int).
- Nâng kiểu ngầm định (Implicit Promotion): Trình biên dịch sẽ thử nâng kiểu dữ liệu của tham số để khốp với các phương thức hiện có.
- Tham số thứ nhất
float: Khớp met2 và met3 - Tham số thứ hai
int: Có thể tự động nâng cấp thành float hoặc double.
Hierarchy: byte → short/char → int → long → float → double
- Lựa chọn phương thức tối ưu nhất: Trình biên dịch luôn ưu tiên dữ liệu "gần nhất" hoặc nhỏ nhất" có thể khớp.
=> Đáp án B
All rights reserved