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

Ngày 10 của 99 Ngày Java: khai báo method với tham số và giá trị trả về, overloading — trùng tên khác chữ ký, sự thật đằng sau "Java luôn pass-by-value" (vì sao sửa mảng thì thấy mà gán lại thì không), và phạm vi biến local.

Không có 3 triệu kết nối nào chạm tới server gốc cả: ingest tách khỏi delivery, transcode một lần thành thang bitrate, HLS biến video live thành file tĩnh cache được, CDN nhân bản hình cây với request coalescing, trade-off độ trễ, và hệ chat biết "đếm xấp xỉ" — kèm góc trả lời phỏng vấn system design.

Ngày 09 của 99 Ngày Spring: vì sao cần profile, config theo môi trường với on-profile & application-{profile}.yml, chọn bean bằng @Profile (cả !prod, dev | test), ba cách kích hoạt spring.profiles.active, profile group và các lời khuyên thực chiến.

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.
