Hay bị nhầm lẫn
Biết định nghĩa từng cái là một chuyện. Biết khi nào dùng cái nào lại là chuyện khác. Mỗi bảng dưới đây trả lời thẳng trong một câu, rồi mới đi vào chi tiết.
Kiểm thử
- Mock và Stub khác nhau thế nào?Stub trả sẵn một câu cố định. Mock cũng trả sẵn, nhưng còn nhớ nó đã bị gọi mấy lần và với tham số gì — để test kiểm tra được đúng điều đó.
- Smoke Test và Sanity Test khác nhau thế nào?Smoke hỏi “bản build này còn sống không?” — rộng và nông. Sanity hỏi “chỗ vừa sửa đã đúng chưa?” — hẹp và sâu.
- Unit Test, Integration Test và E2E Test khác nhau thế nào?Ba tầng từ dưới lên: càng lên cao càng giống thật, càng chậm, và càng khó biết hỏng ở đâu. Nên viết nhiều ở dưới, ít ở trên.
- Selenium, Playwright và Cypress — chọn cái nào?Dự án mới dùng JS hoặc Python → Playwright. Đội đã có sẵn Selenium, hoặc cần Java/C# → Selenium. Đội frontend muốn tự test, ứng dụng gói trong một tên miền → Cypress.
- TDD và BDD khác nhau thế nào?TDD viết test trước cho chính người code. BDD viết kịch bản trước cho cả đội cùng hiểu giống nhau — dev, tester và người làm nghiệp vụ.
Nền tảng
- Frontend và Backend khác nhau thế nào?Frontend chạy trong máy người dùng nên ai cũng sửa được bằng F12. Backend chạy trên server nên là nơi duy nhất kiểm tra được thật.
- git add, commit và push khác nhau thế nào?Ba bước, ba nơi khác nhau. add chọn thay đổi nào sẽ được lưu. commit lưu thật, nhưng chỉ trên máy bạn. push mới đưa lên GitHub để người khác và CI nhìn thấy. Thiếu bước nào thì bước sau không có gì để làm.
AI
- RAG và Fine-tuning — chọn cái nào?Cần model biết thêm dữ liệu của bạn → RAG. Cần model cư xử khác, đúng giọng và đúng định dạng → fine-tuning.
- AI, Machine Learning và Deep Learning khác nhau thế nào?Ba vòng tròn lồng nhau: AI là mục tiêu lớn nhất, Machine Learning là cách phổ biến nhất để đạt nó, Deep Learning là một nhánh của Machine Learning dùng mạng nơ-ron nhiều tầng.