Link to original video by Magic Mike

Orient Software Technical Round – Duong Quang Hung – Fullstack NET Engineer Australian Project 2025

Outline Video Orient Software Technical Round – Duong Quang Hung – Fullstack  NET Engineer Australian Project 2025

Tóm tắt ngắn:

Tóm tắt chi tiết:

Buổi phỏng vấn được chia thành các phần chính:

Phần 1: Giới thiệu bản thân và dự án nổi bật: Ứng viên giới thiệu kinh nghiệm 4-5 năm làm việc với .NET, chủ yếu ở backend nhưng cũng có kinh nghiệm frontend. Dự án được nhấn mạnh là hệ thống phát hiện gian lận trong hoàn trả tiền tại Úc, sử dụng .NET, Kafka, PostgreSQL và AWS. Hệ thống này nhận yêu cầu hoàn trả từ CRM thông qua Kafka, xử lý logic phát hiện gian lận, và trả kết quả về CRM qua GraphQL API.

Phần 2: Kiến trúc hệ thống và xử lý sự kiện Kafka: Hệ thống kết nối với CRM thông qua Kafka và API GraphQL. Ứng viên giải thích cách hệ thống nhận sự kiện từ Kafka, xác thực (mặc dù chủ yếu dựa vào xác thực của CRM), xử lý lỗi và cơ chế retry (lên đến 3 lần với exponential backoff), và lưu dữ liệu lỗi vào dead-letter queue. New Relic được sử dụng để thông báo lỗi qua Slack. Một vấn đề gặp phải là sự khác biệt giữa event ID và item potency key trong schema của CRM.

Phần 3: Khả năng phục hồi (Resilience) và các pattern: Hệ thống được thiết kế với khả năng phục hồi cao thông qua việc lưu dữ liệu vào PostgreSQL trước khi xử lý, cho phép retry khi microservice bị lỗi. Ứng viên đề cập đến pattern event sourcing, mặc dù không chắc chắn về tên gọi chính xác. Hệ thống sử dụng horizontal scaling và timeout cho các kết nối cơ sở dữ liệu và API. Pattern outbox cũng được đề cập.

Phần 4: Xác thực, ủy quyền và bảo mật: Xác thực được thực hiện thông qua Azure AD, với danh sách trắng (whitelist) các user ID được phép truy cập UI quản lý. Các biện pháp bảo mật khác như phòng chống SQL injection được tích hợp sẵn trong framework. Do ứng dụng chỉ truy cập nội bộ qua VPN nên các biện pháp bảo mật bổ sung không được triển khai.

Phần 5: Cơ sở dữ liệu và tối ưu hóa truy vấn: Ứng viên sử dụng Entity Framework với LINQ, hạn chế sử dụng stored procedure trừ trường hợp tối ưu hóa hiệu năng truy vấn phức tạp trên cơ sở dữ liệu của CRM. Việc xử lý dữ liệu PII được thực hiện cẩn thận, chỉ lưu trữ tạm thời trong bộ nhớ.

Phần 6: Giám sát và Logging: New Relic được sử dụng để giám sát ứng dụng, bao gồm cả custom dashboard để theo dõi sự kiện và tính toán. Logging được thực hiện cả trong ứng dụng và thông qua New Relic, tích hợp với AWS.

Phần 7: Kiểm thử (Testing): Ứng viên thực hiện unit test, integration test và end-to-end test. XUnit và NUnit được sử dụng làm framework. Ứng viên nhấn mạnh việc tối giản việc sử dụng framework và ưu tiên các test case rõ ràng, dễ hiểu. Mock được sử dụng cho việc tạo dữ liệu test.

Phần 8: Frontend (React): Ứng viên có kinh nghiệm với React, nhưng không sử dụng RxJS cho quản lý trạng thái. Ứng viên ưu tiên các phương pháp đơn giản hơn và sử dụng async/await cho việc gọi API. Ứng viên tự tin có thể học Angular trong thời gian ngắn.

Lưu ý: Bản tóm tắt này cố gắng phản ánh chính xác nội dung video, tuy nhiên một số chi tiết kỹ thuật có thể bị bỏ sót hoặc được đơn giản hóa để dễ hiểu hơn.