Chuyên mục
Backend
APIs, databases and distributed systems.

Ngày 09 của 99 Ngày Java: vì sao String bất biến và mọi method đều trả chuỗi mới, String pool và bẫy kinh điển equals vs ==, hộp đồ nghề method hay dùng (length, substring, strip, split…), nối chuỗi bằng + và bẫy hiệu năng trong vòng lặp.

Ngày 08 của 99 Ngày Spring: vì sao cấu hình phải ra khỏi code, application.properties vs application.yml, @Value cho giá trị lẻ, @ConfigurationProperties + record cho nhóm type-safe, relaxed binding và ghi đè bằng biến môi trường ở production.

Ngày 08 của 99 Ngày Java: khai báo & khởi tạo mảng, chỉ số từ 0 và ArrayIndexOutOfBoundsException, duyệt bằng for/for-each, mảng 2 chiều & răng cưa, hộp đồ nghề java.util.Arrays — và bẫy tham chiếu: gán mảng không phải là copy.

Ngày 07 của 99 Ngày Java: for khi biết số lần, while/do-while khi lặp theo điều kiện, break & continue lái dòng chảy, label cho vòng lặp lồng nhau — và 3 cái bẫy: dấu chấm phẩy thừa, lặp vô hạn, off-by-one.

Ngày 07 của 99 Ngày Spring: singleton/prototype/request scope, vì sao singleton phải stateless (câu phỏng vấn thread-safe kinh điển), vòng đời bean với @PostConstruct & @PreDestroy, và @Lazy cho bean nặng hiếm dùng.

Ngày 06 của 99 Ngày Java: if–else if chạy nhánh đúng đầu tiên rồi dừng, guard clause dẹp if lồng nhau, switch cổ điển với bẫy fall-through và switch expression đời mới với ->, yield, exhaustiveness.

Ngày 06 của 99 Ngày Spring: đăng ký bean thủ công bằng @Configuration & @Bean — khi component scan không với tới (class thư viện ngoài), tiêm phụ thuộc giữa các @Bean, và CGLIB proxy giữ singleton khi gọi chéo method.

Ngày 05 của 99 Ngày Java: widening tự động vs narrowing phải cast tường minh, cast cắt chứ không làm tròn, char chỉ là mã Unicode, và 3 cái bẫy ép kiểu gặp hoài trong code thật.
