1/92
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced | Call with Kai |
|---|
No analytics yet
Send a link to your students to track their progress
JDK
Bộ công cụ phát triển Java. [cite: 595]
JVM
Máy ảo chạy bytecode. [cite: 595]
Bytecode
Mã .class trung gian, chạy trên JVM. [cite: 595]
OOP
Encapsulation, Inheritance, Polymorphism, Abstraction. [cite: 595]
List
Có thứ tự, cho phép trùng. [cite: 595]
Set
Không chứa phần tử trùng. [cite: 595]
Map
Key-value, key không trùng. [cite: 595]
Generics
Type safety, giảm ép kiểu. [cite: 595]
Checked Exception
Compiler bắt buộc xử lý hoặc throws. [cite: 595]
Unchecked Exception
RuntimeException; compiler không bắt buộc xử lý. [cite: 595]
Stream
Pipeline xử lý dữ liệu; source -> intermediate -> terminal. [cite: 595]
ORM
Ánh xạ object với bảng quan hệ. [cite: 595]
JPA / Jakarta Persistence
Specification API ORM. [cite: 595]
Hibernate
Implementation ORM phổ biến. [cite: 595]
Entity
Object có identity được persistence quản lý. [cite: 595]
Persistence Context
Môi trường theo dõi managed entity. [cite: 595]
Dirty Checking
Tự phát hiện thay đổi managed entity. [cite: 595]
Flush
Đồng bộ thay đổi context xuống database. [cite: 595]
Owning Side
Phía quản lý foreign key, thường có @JoinColumn. [cite: 595]
N+1
1 query danh sách + N query quan hệ. [cite: 595]
IoC
Container kiểm soát việc tạo và lắp ráp object. [cite: 595]
DI
Truyền dependency từ bên ngoài. [cite: 595]
Bean
Object do Spring container quản lý. [cite: 595]
Spring Boot
Giúp tạo ứng dụng Spring standalone với cấu hình tối thiểu. [cite: 595]
Controller
Nhận HTTP request và trả response. [cite: 595]
Service
Xử lý nghiệp vụ và transaction. [cite: 595]
Repository
Truy cập dữ liệu. [cite: 595]
DTO
Contract dữ liệu request/response. [cite: 598]
@Valid
Kích hoạt validation input. [cite: 598]
@Transactional
Khai báo boundary transaction. [cite: 598]
JpaRepository
Repository abstraction có CRUD và pagination. [cite: 598]
Specification
Xây filter động bằng Criteria API. [cite: 598]
@RestControllerAdvice
Xử lý exception tập trung. [cite: 598]
Java được biên dịch và chạy như thế nào?
Source .java được javac biên dịch thành bytecode .class. JVM nạp class và thực thi bytecode, có thể tối ưu bằng JIT. [cite: 600]
JDK khác JVM như thế nào?
JDK là bộ công cụ phát triển; JVM là máy ảo thực thi bytecode. [cite: 600]
Primitive type khác reference type như thế nào?
Primitive lưu trực tiếp giá trị; reference type lưu tham chiếu tới object. [cite: 600]
Tại sao không dùng == để so sánh nội dung String?
== thường so sánh reference; equals() so sánh nội dung theo implementation của String. [cite: 600]
Overloading là gì?
Cùng tên method nhưng khác danh sách parameter. Return type không đủ để tạo overload. [cite: 600]
Overriding là gì?
Class con cung cấp implementation mới cho method kế thừa hoặc method interface với cùng signature phù hợp. [cite: 600]
Encapsulation là gì?
Che giấu dữ liệu nội bộ và kiểm soát thay đổi state qua API của object. [cite: 600]
Inheritance là gì?
Class con kế thừa field/method phù hợp từ class cha theo quan hệ is-a. [cite: 600]
Polymorphism là gì?
Một biến kiểu cha/interface có thể tham chiếu nhiều implementation; method override được chọn theo object thực tế. [cite: 600]
Abstraction là gì?
Chỉ biểu diễn hành vi cần cung cấp, ẩn chi tiết triển khai. [cite: 600]
Interface khác abstract class?
Interface phù hợp contract và multiple implementation; abstract class phù hợp chia sẻ state hoặc code nền. [cite: 602]
static nghĩa là gì?
Thành viên thuộc class thay vì từng object. [cite: 602]
final dùng khi nào?
Cố định biến sau lần gán đầu, cấm override method hoặc cấm kế thừa class. [cite: 602]
List, Set, Map khác nhau?
List có thứ tự và cho phép trùng; Set không trùng; Map lưu key-value với key không trùng. [cite: 602]
ArrayList khi nào phù hợp?
Là lựa chọn List mặc định khi cần truy cập theo index và duyệt tuần tự. [cite: 602]
Tại sao equals và hashCode phải nhất quán?
Hash-based collection dùng cả hai; nếu equals true mà hashCode khác nhau, tra cứu và loại trùng có thể sai. [cite: 602]
Generics giải quyết vấn đề gì?
Tăng type safety và giảm ép kiểu thủ công. [cite: 602]
Checked và unchecked exception khác nhau?
Checked exception phải xử lý hoặc throws ở compile-time; unchecked kế thừa RuntimeException. [cite: 602]
try-with-resources có lợi gì?
Tự đóng tài nguyên implements AutoCloseable, giảm leak resource. [cite: 602]
Functional interface là gì?
Interface có một abstract method, có thể dùng lambda làm implementation. [cite: 602]
Stream có phải collection không?
Không. Stream là pipeline xử lý dữ liệu từ source qua operation đến terminal result. [cite: 602]
Optional dùng để làm gì?
Biểu diễn giá trị có thể tồn tại hoặc không, ví dụ findById. [cite: 602]
ORM là gì?
Kỹ thuật ánh xạ object với dữ liệu quan hệ. [cite: 602]
JPA và Hibernate khác nhau?
Jakarta Persistence/JPA là specification; Hibernate là implementation ORM. [cite: 602]
Spring Data JPA khác Hibernate?
Spring Data JPA là repository abstraction giúp giảm boilerplate; Hibernate thường là provider thực thi ORM phía dưới. [cite: 602]
Entity cần tối thiểu gì?
Class được đánh dấu @Entity và có field định danh @Id. [cite: 602]
Persistence Context là gì?
Môi trường theo dõi entity managed và đồng bộ state với database. [cite: 602]
Dirty checking là gì?
Hibernate phát hiện thay đổi field của managed entity và tạo update phù hợp khi flush/commit. [cite: 602]
flush khác commit?
Flush đồng bộ SQL xuống database trong transaction; commit xác nhận transaction. [cite: 605]
Owning side trong quan hệ JPA là gì?
Phía quản lý foreign key; thường khai báo @JoinColumn. [cite: 605]
mappedBy dùng làm gì?
Chỉ ra field ở owning side quản lý quan hệ; tránh tạo mapping dư thừa. [cite: 605]
LAZY khác EAGER?
LAZY tải khi cần; EAGER tải sớm. Cần chọn theo use case. [cite: 605]
CascadeType.ALL có nên dùng luôn không?
Không. Chỉ dùng khi lifecycle entity con thực sự phụ thuộc entity cha. [cite: 605]
orphanRemoval là gì?
Xóa entity con khi nó bị tách khỏi collection quan hệ của cha theo rule mapping. [cite: 605]
N+1 query là gì?
Một query lấy danh sách, sau đó phát sinh thêm query cho từng entity để tải quan hệ. [cite: 605]
Giải pháp N+1?
JOIN FETCH, EntityGraph, DTO projection, batch fetching và thiết kế use case phù hợp. [cite: 605]
@Transactional nên đặt ở đâu?
Thông thường ở Service method để bao quanh use case nghiệp vụ. [cite: 605]
IoC là gì?
Container kiểm soát việc tạo và lắp ráp object. [cite: 605]
DI là gì?
Dependency được truyền từ bên ngoài, thường qua constructor. [cite: 605]
Bean là gì?
Object do Spring container quản lý. [cite: 605]
ApplicationContext làm gì?
Khởi tạo, cấu hình và lắp ráp bean. [cite: 605]
Tại sao ưu tiên constructor injection?
Dependency rõ, test dễ, hỗ trợ final field và tránh trạng thái thiếu dependency. [cite: 605]
@Component, @Service, @Repository khác gì?
Đều là stereotype bean; @Service và @Repository thể hiện vai trò tầng rõ hơn. [cite: 605]
Spring Boot giải quyết vấn đề gì?
Giảm cấu hình thủ công nhờ starter, auto-configuration và embedded server. [cite: 605]
@SpringBootApplication gồm ý nghĩa gì?
Là annotation tổng hợp phổ biến cho configuration, auto-configuration và component scanning. [cite: 605]
Controller có nên viết business logic?
Không. Controller nên mỏng và giao logic nghiệp vụ cho Service. [cite: 605]
DTO dùng để làm gì?
Tách contract API khỏi entity và kiểm soát dữ liệu vào/ra. [cite: 608]
@Valid có tác dụng gì?
Kích hoạt Bean Validation đối với request DTO. [cite: 608]
@RestControllerAdvice dùng làm gì?
Xử lý exception tập trung và chuẩn hóa response lỗi. [cite: 608]
JpaRepository cung cấp gì?
CRUD, pagination, sorting và extension point repository. [cite: 608]
Query method là gì?
Spring Data tạo query dựa trên tên method repository. [cite: 608]
Khi nào dùng Specification?
Khi cần ghép nhiều điều kiện filter động và tái sử dụng predicate. [cite: 608]
Tại sao không expose entity trực tiếp?
Entity có quan hệ, lifecycle và dữ liệu nội bộ; expose trực tiếp khó kiểm soát contract và có thể gây lazy/JSON issue. [cite: 608]
Business validation nên nằm đâu?
Service layer, vì đây là nơi xử lý use case nghiệp vụ. [cite: 608]
Lỗi quên kiểm tra Lecturer tồn tại khi tạo Project gây gì?
Có thể tạo lỗi foreign key hoặc exception khó hiểu; service phải kiểm tra và trả lỗi nghiệp vụ rõ ràng. [cite: 608]
Swagger/OpenAPI có ích gì?
Mô tả và thử REST API thuận tiện trong quá trình phát triển và đào tạo. [cite: 608]
Flyway/Liquibase dùng để làm gì?
Quản lý migration schema database theo phiên bản. [cite: 608]
Actuator health endpoint dùng làm gì?
Cung cấp thông tin health cơ bản để theo dõi ứng dụng. [cite: 608]
Log cần tránh dữ liệu nào?
Secret, password, token và dữ liệu nhạy cảm không cần thiết. [cite: 608]
Unit test Service thường mock gì?
Mock repository và dependency bên ngoài để tập trung kiểm tra business rule. [cite: 608]