Giải thích Spring Boot trôi chảy trong phỏng vấn — Thử thách thực chiến 4 tuần
Đây là thử thách thực chiến kéo dài 4 tuần, giúp bạn trực tiếp tái hiện luồng yêu cầu, cơ chế bean và proxy, cho đến ranh giới giao dịch của chính API mình đã xây dựng thông qua các bài test và log, từ đó tự tin trình bày trôi chảy trong mọi buổi phỏng vấn.
🚀 Từng làm việc tại Toss, tốt nghiệp POSTECH | Nhà phát triển Backend hiện tại (+9 năm) 🎥 Youtuber 20.000 sub | Sáng tạo nội dung lập trình 📚 Giảng viên Inflearn | Tổng số học viên 18.000+ 👥 Đang điều hành cộng đồng tuyển dụng lập trình viên (8.000+) 🧩 Contributor cho nhiều dự án mã nguồn mở (Gradle, Spring AI, v.v.) 📝 Kinh nghiệm đậu 38 bộ hồ sơ và hơn 100 lần chỉnh sửa CV trên Kmong (Đánh giá 5.0 sao)
Tôi truyền đạt những thông tin thực tế sống động từ ngành công nghiệp một cách dễ hiểu và có tính diễn dịch.
Thử thách Spring 4 tuần · Miễn phí · 100 suất đầu tiên · Đóng đăng ký lúc 23:59 ngày 8/9 (CN)
THỬ THÁCH DINGCO · 4 TUẦN
Spring Boot chỉ code cho chạy, tôi sẽ giải thích tường tận trong vòng 4 tuần.
Tái hiện trực tiếp luồng yêu cầu, bean và proxy, cũng như ranh giới giao dịch thông qua các bài test và log, đồng thời tạo một PR mỗi tuần. Sau 4 tuần, bạn sẽ nắm trong tay 18 câu trả lời phỏng vấn mà bạn có thể tự tin giải đáp bằng chính code của mình.
Miễn phí · 100 người đăng ký đầu tiên · Tuyển sinh đến 23:59 ngày 9/8 (CN)
Tổng số học viên trên Inflearn 18,000+ · Điểm hài lòng trung bình 4.9 · Do Dingcoding tạo ra với kinh nghiệm trúng tuyển vào 38 công ty
Thử thách này không cung cấp bài giảng hay giáo trình. Đây là lộ trình thực hành giúp bạn chứng minh những kiến thức đã nắm vững hoặc tự học thông qua các bài toán thực tế và GitHub PR. Chuẩn bị trước khi bắt đầu · Yêu cầu nắm vững cú pháp Java cơ bản và nền tảng về branch, commit trong Git.
Đây là lộ trình thực chiến 4 tuần chứng minh các khái niệm đã nắm vững thông qua code, thực nghiệm và giải thích.
NHỮNG GÌ BẠN HOÀN THÀNH
Những gì đọng lại sau khi hoàn thành
API User-Todo sẵn sàng vận hành và kiểm thử tích hợp
Mã kiểm tra và log minh họa hoạt động của Bean, Proxy và Transaction.
18 câu trả lời phỏng vấn Spring được minh chứng bằng code thực tế
TRƯỚC
Chỉ cần gắn annotation và khi có phản hồi trả về là hoàn tất việc triển khai.
SAU
Tái hiện luồng yêu cầu và ranh giới của proxy, bean và transaction thông qua các bài test và log, đồng thời giải thích lý do lựa chọn.
QUY TRÌNH LÀM VIỆC THỰC TẾ
Từ lúc đăng ký đến khi đánh giá, theo đúng thứ tự trên màn hình thực tế
Bạn không cần sao chép và gửi địa chỉ GitHub. Trang chủ Dingco sẽ dẫn dắt xuyên suốt từ khâu chuẩn bị kho lưu trữ cá nhân, tạo nhánh nhiệm vụ và PR, cho đến việc xem các đánh giá chi tiết.
1GitHub trước, Discord sauSau khi hoàn tất đăng nhập Kakao và kiểm tra sơ bộ, hãy chuẩn bị kho lưu trữ private cá nhân, và kết nối vai trò Discord cũng như kênh khóa học ở bước cuối cùng.2Thực hiện nhiệm vụ trên kho lưu trữ private của bạnTrang web sẽ hướng dẫn bạn tạo nhánh và PR cho 'Tạo API hiển thị luồng yêu cầu'. Không cần sao chép và dán địa chỉ PR.3Kiểm tra 92 điểm và lý do cụ thểHãy xem những điểm làm tốt và điểm cần cải thiện từ kiểm tra tự động và đánh giá AI trong phần đánh giá chi tiết của Dingo và bình luận trên PR của GitHub, sau đó chỉnh sửa cùng PR đó.4Kênh chung Spring Challenge khóa 1Điểm số và phản hồi chính được chia sẻ trên kênh chung của khóa, đồng thời phần đánh giá chi tiết có thể xem trên Dingco và GitHub.
Màn hình trên là ví dụ được tạo dựa trên giao diện vận hành thực tế cùng các quy tắc về kho lưu trữ và kênh. Tên kho lưu trữ, số khóa và điểm đánh giá sẽ thay đổi tùy theo người tham gia và khóa học.
LỘ TRÌNH 4 TUẦN
Nhiệm vụ hàng tuần biến những kiến thức đã biết thành thành quả thực tế
Hàng tuần, hãy nộp toàn bộ phần triển khai và thử nghiệm, kiểm thử và log, lý do lựa chọn cùng phần hỏi đáp trong cùng một PR. Câu hỏi không phải là bài tập để nộp những câu trả lời học thuộc lòng, mà phải được giải đáp bằng chính đoạn code vừa viết và các bằng chứng đi kèm.
W1
Từ yêu cầu web đến API đầu tiên
Quan sát HTTP và JSON, rồi kết nối với API Spring Boot có thể chạy trực tiếp.
PR tích hợp hàng tuầnTodo API thể hiện luồng request và câu trả lời dựa trên bằng chứng
Định nghĩa và triển khai hợp đồng yêu cầu và phản hồi cho POST /todos và GET /todos/{id}.
Các trường hợp tạo thành công, đầu vào không hợp lệ và truy vấn Todo không tồn tại sẽ được cố định thông qua kiểm thử tích hợp.
Giải thích luồng xử lý từ khi yêu cầu đến controller cho đến khi trả về phản hồi JSON, gắn liền với chính mã nguồn của bạn.
Minh chứng nộp bài · Mã API có thể thực thi · Kiểm thử tích hợp: thành công, lỗi xác thực, 404 · Giải thích luồng yêu cầu · Trả lời câu hỏi 1~5 có căn cứ
5 câu hỏi yêu cầu dẫn chứng cần cùng nhau trả lời
Yêu cầu HTTP trải qua quá trình nào để trở thành đối số của phương thức controller?
Ai là người chuyển đổi đối tượng Java thành phản hồi JSON, và bạn đã xác minh điều này như thế nào?
Tại sao không trực tiếp xử lý rẽ nhánh trong mã controller khi xác thực đầu vào thất bại?
Đâu là ranh giới bắt buộc phải xác minh bằng kiểm thử tích hợp thay vì kiểm thử đơn vị?
Trong hợp đồng API hiện tại, phần nào có nguy cơ bị phá vỡ cao nhất và phương pháp xác minh cho phần đó là gì?
W2
Spring Container dưới góc nhìn Proxy, Bean và DI
Kiểm chứng cơ chế tự động hóa của Spring thông qua proxy, vòng đời bean và mã nguồn tiêm phụ thuộc.
PR tổng hợp hàng tuầnMổ xẻ tự động hóa Spring Container và cách trả lời có căn cứ
Tạo hai bản triển khai của cùng một giao diện và áp dụng các tiêu chí chọn bean rõ ràng.
Minh họa sự khác biệt giữa đối tượng được tiêm qua hàm tạo và đối tượng được khởi tạo trực tiếp bằng new thông qua bài kiểm tra xác minh.
Ghi log thứ tự tạo bean và thứ tự gọi các phụ thuộc, đồng thời kiểm tra thông tin lớp thực tế nếu có điểm áp dụng proxy.
Bằng chứng nộp · Mã kiểm tra Bean/DI · Log thứ tự khởi tạo/gọi · Tài liệu so sánh với khởi tạo trực tiếp · Câu trả lời cho các câu hỏi yêu cầu dẫn chứng 6~10
5 câu hỏi yêu cầu lập luận cần cùng nhau trả lời
Điều gì xảy ra khi Spring không thể xác định được implementation cần inject và bạn đã giải quyết vấn đề này như thế nào?
Tại sao inject qua constructor lại có lợi hơn so với inject qua field về khả năng kiểm thử và tính bất biến?
Đâu là điểm khác biệt quan trọng nhất giữa đối tượng do container quản lý và đối tượng được khởi tạo trực tiếp?
Làm thế nào để kiểm tra trong mã xem đó là đối tượng proxy hay đối tượng gốc?
Nếu không có log thứ tự gọi trong thí nghiệm này, chúng ta đã không thể kiểm chứng được lời giải thích nào?
W3
Phân tách tầng và giao dịch
Kiểm chứng trách nhiệm của tầng dịch vụ và ranh giới giao dịch thông qua các kịch bản lỗi.
PR tích hợp hàng tuầnDịch vụ bảo toàn tính nhất quán ngay cả khi xảy ra lỗi và câu trả lời có căn cứ
Triển khai use case cập nhật đồng thời User và Todo trong tầng service.
Sau lần lưu đầu tiên, ném ra một ngoại lệ để tái hiện rủi ro lưu từng phần.
So sánh trước và sau khi áp dụng transaction, viết bài kiểm thử tích hợp trong đó cả hai thay đổi được rollback cùng nhau.
Minh chứng nộp bài · Mã nguồn phân tách tầng · Kiểm thử tích hợp tái hiện lỗi và rollback · Giải thích ranh giới giao dịch · Câu trả lời cho các câu hỏi yêu cầu lập luận 11~14
4 câu hỏi yêu cầu lập luận để cùng trả lời
Tại sao ranh giới giao dịch lại được đặt ở tầng Service thay vì Controller hay Repository?
Hành vi rollback mặc định đối với ngoại lệ checked và unchecked khác nhau như thế nào và bạn đã kiểm chứng điều đó ra sao?
Tại sao các lời gọi nội bộ trong cùng một lớp có thể bỏ qua proxy giao dịch?
Tại sao bài kiểm thử rollback cần phải xác minh cả trạng thái của cơ sở dữ liệu?
Tuần 4
Hoàn thiện API sẵn sàng vận hành
Hoàn thiện API để đưa vào portfolio bằng cách áp dụng xử lý ngoại lệ, xác thực, ghi log và phân trang.
PR tích hợp hàng tuầnAPI User-Todo sẵn sàng vận hành và package gốc cuối cùng
Hoàn thiện API Tạo và Truy xuất User-Todo thành một hợp đồng nhất quán.
Áp dụng các yêu cầu bắt buộc gồm xác thực đầu vào, phản hồi lỗi chung và phân trang, đồng thời viết các bài kiểm thử tích hợp.
Bổ sung định danh yêu cầu hoặc nhật ký có cấu trúc trong phạm vi tùy chọn, đồng thời giải thích việc này giúp giảm thiểu những vấn đề gì trong quá trình vận hành.
Minh chứng nộp · Mã API hoàn chỉnh · Kết quả kiểm thử tích hợp · Đặc tả phản hồi lỗi và phân trang · Câu trả lời cho các câu hỏi dựa trên căn cứ 15~18
4 câu hỏi yêu cầu lập luận để cùng trả lời
Việc chuẩn hóa định dạng phản hồi lỗi mang lại những lợi ích gì cho client và người vận hành?
Giữa phân trang theo số trang và phân trang theo con trỏ, tại sao bạn lại chọn phương thức phù hợp với API hiện tại?
Những thông tin nào bắt buộc phải ghi lại trong log và những thông tin nào không được phép ghi lại?
Trước khi đưa API này vào vận hành thực tế, chỉ số giám sát đầu tiên cần bổ sung và các bài kiểm tra sự cố là gì?
CHU TRÌNH HÀNG TUẦN
Hoàn thành bài thực hành cả tuần chỉ trong một PR duy nhất.
Xem bài tập thực hành hàng tuần
Thực hiện nhiệm vụ trên nhánh cá nhân
Nộp mã, bài kiểm tra và phần mô tả vào PR
Kiểm tra tự động và đánh giá AI
Chỉnh sửa cùng một PR và vượt qua.
Chỉ sử dụng GitHub PR để nộp bài. Từ khi tạo nhánh đến quá trình review, cho đến khi merge chính xác head SHA, giao diện thử thách và GitHub được kết nối với nhau. Hệ thống tự động kiểm tra xem các bằng chứng cần thiết có nằm trong PR hay không.
Phiên trực tiếp
Một buổi trực tiếp, cùng nhau thống nhất cách thức triển khai.
Trong suốt thời gian diễn ra thử thách, chúng tôi sẽ tổ chức một buổi livestream. Tại đây, chúng ta sẽ cùng thống nhất tiêu chí hoàn thành và trực tiếp kiểm tra quy trình nộp bài diễn ra như thế nào trên màn hình.
Link tham gia sẽ được đăng trên thông báo Discord trước khi bắt đầu. Ngay cả khi không thể tham gia buổi phát trực tiếp, bạn vẫn có thể kiểm tra tiêu chí hoàn thành và cách thức nộp bài trên trang chủ Dingco và thông báo Discord.
HỢP ĐỒNG THAM GIA THỬ THÁCH
Tự học khái niệm, thực hành và nhận phản hồi cùng nhau
Thử thách này không cung cấp bài giảng, giáo trình, Notion hay tài liệu bổ sung. Hãy áp dụng những gì bạn đã biết hoặc tự học vào các vấn đề thực tế và chứng minh điều đó qua GitHub PR.
Thử thách cung cấp
Bài tập thực hành hàng tuần · Kho lưu trữ thực hành riêng tư · Tiêu chí đạt yêu cầu rõ ràng · Kiểm tra tự động và đánh giá bởi AI · So sánh với bạn học và hồ sơ hoàn thành
Người tham gia cần chuẩn bị
Kiến thức cơ bản về lĩnh vực liên quan · Kinh nghiệm với Git và GitHub PR · Thời gian thực hành mỗi tuần · Tinh thần tự giác bổ sung những kiến thức còn thiếu
Học trước tùy chọn · Mua riêng · 9 giờ 58 phút
[Lv1] Spring Boot "Có Thể Giải Thích" Khi Phỏng Vấn
Bài giảng và tài liệu này không nằm trong thử thách và việc học cũng không bắt buộc. Chỉ chọn học khi bài đánh giá đầu vào cho thấy bạn còn thiếu hụt ở một số mảng hoặc cần củng cố thêm các khái niệm.
Sau khi đăng ký trên Inflearn, hãy truy cập liên kết tham gia công khai trong phần Tin tức. Bạn không cần nhập lại email hay đối chiếu với danh sách đăng ký. Chỉ cần đăng nhập Kakao, tư cách thành viên sẽ được tạo ngay lập tức.
Khi đăng nhập bằng Kakao qua liên kết tham gia Inflearn, tư cách thành viên Challenge sẽ được tạo ngay lập tức.
Sau khi vượt qua bài đánh giá sơ bộ theo từng khóa, bước kết nối GitHub sẽ được mở.
Nếu kết nối GitHub trước, việc kiểm tra quyền tổ chức và chuẩn bị kho lưu trữ riêng tư cá nhân sẽ được tự động lên lịch.
Khi kết nối Discord, danh mục Spring Challenge khóa 1 cùng các quyền truy cập thông báo, thảo luận, hỏi đáp và phòng chờ sẽ được thiết lập.
Trên trang web, tạo nhánh submit/<nhiệm vụ> và push code, sau đó gửi PR chỉ với một cú nhấp chuột.
Khi áp dụng kiểm tra tự động và đánh giá AI, chỉ những commit đạt yêu cầu mới được gộp, đồng thời kết quả này sẽ được hiển thị trên thông báo chung của Dingco, GitHub và Discord.
Quyền đọc của các thành viên cùng khóa Các thành viên cùng khóa có thể đọc và tham khảo kho lưu trữ, trong khi quyền ghi chỉ được cấp cho kho lưu trữ của chính mình.
Kiểm tra độ phù hợp
Phù hợp với những đối tượng này và không phù hợp với những đối tượng kia.
Khuyến nghị
Dành cho những ai đã từng xây dựng Spring Boot API nhưng vẫn gặp khó khăn khi giải thích cơ chế hoạt động bên trong.
Dành cho những ai muốn trình bày dựa trên chính mã nguồn và các bài test của mình thay vì học thuộc lòng câu trả lời phỏng vấn.
Những người chỉ có thể kiên trì hoàn thành đến cùng khi có các PR nhỏ và review tự động hàng tuần.
Không khuyến khích
Những ai chưa từng làm việc với cú pháp Java cũng như yêu cầu và phản hồi HTTP.
Những ai chỉ muốn xem qua nội dung mà không cần nộp mã nguồn và bài kiểm tra.
HOÀN THÀNH
Chúng tôi sẽ công bố tiêu chí hoàn thành trước khi bắt đầu.
Trong 4 tuần, nộp đầy đủ 4 PR nhiệm vụ tổng hợp theo từng tuần.
Trong mỗi PR, hãy để lại kèm theo phần triển khai, nhật ký kiểm tra, lý do lựa chọn và câu trả lời cho các câu hỏi yêu cầu nêu rõ lý do.
Trong cùng một PR, bổ sung các phần giải thích và khắc phục những thiếu sót trong xác minh mà hệ thống đánh giá tự động đã chỉ ra.
Chuẩn bị trước khi bắt đầu
Yêu cầu có kiến thức cơ bản về cú pháp Java và nền tảng về nhánh và commit trong Git.
Bạn cần dành khoảng 4 đến 6 giờ mỗi tuần để tham gia triển khai, chỉnh sửa mô tả và tiếp thu ý kiến đánh giá.
Câu hỏi thường gặp
Những câu hỏi thường gặp trước khi tham gia
Khóa học này có giống với chương trình bootcamp 10 tuần trước đây không?
Không. Thử thách này là một lộ trình riêng biệt, hoàn thành trọn vẹn một môn học trong vòng 4 tuần. Chỉ khi cần một khóa học tập trung vào dự án và việc làm dài hơn, bạn mới chuyển tiếp sang khóa bootcamp 10 tuần.
Bài giảng hay giáo trình có được cung cấp kèm theo không?
Không. Chương trình thử thách cung cấp các bài tập theo tuần, kho lưu trữ thực hành riêng tư, tiêu chí nộp bài và vòng lặp đánh giá. Các khóa học liên kết là phần học chuẩn bị tùy chọn có thể mua riêng, và việc tham gia các khóa học này không bắt buộc.
Có thể nộp bài qua trang chủ hoặc dán liên kết được không ạ?
Kết quả nộp bài chỉ được chấp nhận qua GitHub PR. Tuy nhiên, việc chuẩn bị kho lưu trữ, nhánh, PR và kiểm tra đánh giá có thể dễ dàng thực hiện thông qua nút trên trang chủ Dingco.
Những thông tin nào được công khai trên Discord?
Trong thông báo chung của khóa, điểm số và những phản hồi trọng tâm sẽ được hiển thị để mọi người có thể theo dõi tiến độ của nhau. Thay vì nhắn tin riêng, chúng ta sẽ cùng nhau theo dõi trên kênh chung của Spring Challenge khóa 1.
GHI CHÚ CỦA TÁC GIẢ
Kỷ nguyên AI, lập trình viên mới nên học những gì?
Bạn có thể xem trước trong video để biết cách triển khai và kiểm chứng bài toán này dựa trên những tiêu chí nào.