messenger

Chat Mess

zalo

Chat Zalo

phone

Phone

Gọi ngay: 097.6666.799
messenger

Facebook

messenger

TikTok

Hỗ trợ tư vấn: 097.6666.799
VPBank

CVCC Phát triển giải pháp CNTT/ Senior Java Developer

Khối Công nghệ thông tin
CMNV

Mô tả công việc

Các trách nhiệm chính 1
•            Analyze business requirement and identify scope of work related to Micro-service and API

•            Define Micro-service and API solution to support for business requirement

•            Create detail design for identified Micro-service

•            Create specification for identified API

•            Support to deploy Micro-service and API into production

•            Support to resolve incident/problem on production

•            Review and accept Micro-services design documents and source code delivered by partners.

•            Research and improve the Micro-service and API development framework/standard

•            Training for other team members

Kiến thức/ Chuyên môn cần có
•            Experience with AWS database services, including:

+ Relational Databases: RDS (MySQL, PostgreSQL).

+ NoSQL Databases: DynamoDB or ElastiCache (Redis/Memcached).

•            At least 3 years design and develop Java-based application using Spring, Spring Boot

•            Experience with containerization technologies like Docker and orchestration tools such as Kubernetes (EKS on AWS is a plus).

•            Knowledge of DevOps tools and practices, including CI/CD pipelines using tools like Jenkins, GitLab CI, or AWS Code Pipeline.

•            Experience with design and develop Micro-service/API using Domain-driven design pattern.

•            Experience with designing and developing event-driven and message-driven applications, including the use of messaging systems like Kafka, RabbitMQ, and AWS SQS…, event orchestration tools, and patterns such as CQRS and Event Sourcing.

•            Experience in designing and deploying AWS-based solutions with a focus on efficiency, security, and cost optimization

•            Minimum 2 years of experience working with Amazon Web Services (AWS).

•            AWS certifications (e.g., AWS Certified Solutions Architect, AWS Certified Developer) are preferred.

Kinh nghiệm liên quan khác
•            Banking Domain experience

•            Agile/Scrum experience

Contact: lynd3@vpbank.com.vn

Yêu cầu ứng viên

Trình độ đào tạo
Đại học in Công nghệ thông tin or Khoa học máy tính

Kỹ năng
•            Ability in English reading and writing (mandatory), and speaking, listening (preferable).

•            Teamwork, careful, attention to detail, logical thinking

•            Self-development.

•            Communication, negotiation and problem solving

Phân tích kỹ năng cần có

1. Đánh giá tổng quan vị trí

Đây là vị trí Senior Java Developer định hướng kiến trúc giải pháp CNTT trong ngân hàng, không chỉ tập trung viết mã nguồn. Ứng viên cần thể hiện đồng thời năm năng lực:

1. Lập trình Java và Spring Boot chất lượng cao.
2. Phân tích yêu cầu nghiệp vụ và thiết kế dịch vụ, API.
3. Thiết kế giải pháp trên nền tảng AWS.
4. Xử lý sự cố và đảm bảo vận hành trên môi trường thực tế.
5. Review thiết kế, mã nguồn của đối tác và truyền đạt kinh nghiệm cho thành viên khác.

Tin tuyển dụng ghi kinh nghiệm là `N/A`, nhưng các yêu cầu chi tiết vẫn đặt ra hai mốc rõ ràng: ít nhất 3 năm phát triển ứng dụng Java bằng Spring/Spring Boot và ít nhất 2 năm kinh nghiệm AWS. Vì vậy, ứng viên cần xem hai mốc này là điều kiện sàng lọc quan trọng, trừ khi thực tế công việc đã đạt yêu cầu dưới hình thức dự án, thực tập hoặc sản phẩm cá nhân đã vận hành.

2. Bảng phân tích năng lực

Nhóm năng lực Mức độ Nội dung cần chứng minh
Java và Spring Boot Rất cao Tối thiểu 3 năm thiết kế và phát triển ứng dụng Java, Spring, Spring Boot
AWS Rất cao Tối thiểu 2 năm sử dụng AWS; thành thạo RDS, DynamoDB, ElastiCache và các dịch vụ triển khai
Thiết kế microservice và API Rất cao Phân tích phạm vi, đặc tả API, thiết kế dịch vụ, tương thích ngược và quản trị vòng đời
DDD Cao Hiểu bounded context, aggregate, domain event và ranh giới trách nhiệm giữa các dịch vụ
Kiến trúc event-driven Cao Kafka, RabbitMQ, AWS SQS; outbox/inbox, saga, xử lý lặp, thứ tự sự kiện và nhất quán cuối cùng
Docker và Kubernetes Cao Container hóa, triển khai và vận hành dịch vụ; EKS là điểm cộng
CI/CD và DevOps Cao Jenkins, GitLab CI, AWS CodePipeline; kiểm thử, đóng gói, triển khai và rollback
Vận hành production Cao Giải quyết sự cố, quan sát hệ thống, phân tích nguyên nhân gốc và cải thiện sau sự cố
Ngân hàng và Agile Trung bình Được ưu tiên; cần hiểu nghiệp vụ giao dịch, tính nhất quán, kiểm toán và quy trình Scrum
Tiếng Anh và kỹ năng mềm Bắt buộc Đọc và viết tiếng Anh bắt buộc; nói và nghe là điểm cộng; làm việc nhóm, tư duy logic, chú ý chi tiết

3. Kỹ năng cứng trọng tâm

Java và Spring Boot

Ứng viên cần sẵn sàng thảo luận về:

  • Cấu trúc dữ liệu, thuật toán, xử lý lỗi và quản lý bộ nhớ.
  • Lập trình đa luồng, concurrency, thread pool, lock và tác nội bộ của JVM.
  • Dependency Injection, cấu hình ứng dụng, Spring Security và xử lý ngoại lệ.
  • Quản lý giao dịch, mức độ cô lập, lỗi trùng lặp và rollback trong Spring Transaction.
  • Truy vấn SQL, thiết kế chỉ mục, phân trang, xử lý N+1 và tối ưu truy vấn.
  • Kiểm thử với JUnit, Mockito, Testcontainers và kiểm thử tích hợp API.
AWS và thiết kế cloud

Không nên chỉ biết cách tạo tài nguyên trên AWS. Hình ảnh mong muốn là một kỹ sư có thể thiết kế, bảo mật, vận hành và tối ưu chi phí cho giải pháp ngân hàng. Cần nắm:

  • RDS với MySQL và PostgreSQL: high availability, read replica, backup, parameter tuning và quản lý kết nối.
  • DynamoDB: access pattern, partition key, eventual consistency, provisioned hay on-demand capacity.
  • ElastiCache với Redis/Memcached: caching, invalidation và xử lý cache穿透 hoặc cache avalanche.
  • IAM, VPC, subnet, security group, KMS, Secrets Manager và CloudWatch.
  • EKS hoặc dịch vụ điều phối tương đương; ALB, autoscaling và rolling deployment.
  • AWS Well-Architected, AWS Cost Explorer và AWS Pricing Calculator.
Microservice, API và DDD

Đây là nội dung trọng tâm nhất vì mô tả công việc yêu cầu trực tiếp việc phân tích yêu cầu, xác định phạm vi, lập thiết kế chi tiết và đặc tả API. Ứng viên cần biết:

  • Phân tích yêu cầu nghiệp vụ, làm rõ giả định, điều kiện biên và ngoại lệ.
  • Phân tách bounded context, aggregate, entity, value object, repository và domain event.
  • Đặc tả REST API bằng OpenAPI, gồm mã lỗi, phân trang, validation, versioning và tương thích ngược.
  • Xác thực và phân quyền bằng OAuth2, JWT, mTLS hoặc cơ chế tương đương.
  • Idempotency, rate limit, timeout, retry, circuit breaker và bulkhead.
  • Kiểm thử hợp đồng API để phát hiện lỗi trước khi triển khai.

Nên tránh hù học DDD theo hình thức tạo nhiều lớp mà không giải quyết vấn đề. Điều phỏng vấn đánh giá là ứng viên hiểu khi nào nên và không nên áp dụng DDD.

Event-driven và message-driven

Cần giải thích được:

  • Phân biệt event, command và message.
  • Kafka partition, consumer group, offset, ordering và retry.
  • RabbitMQ exchange, queue, routing key và acknowledgement.
  • AWS SQS standard, FIFO, visibility timeout và dead-letter queue.
  • Outbox pattern để tránh mất event khi cập nhật cơ sở dữ liệu.
  • Inbox pattern và idempotent consumer để xử lý trùng lặp.
  • Saga, compensating transaction và eventual consistency.
  • CQRS và Event Sourcing, ưu điểm, chi phí và trường hợp không nên sử dụng.
DevOps và vận hành
  • Docker: image nhỏ, multi-stage build, non-root user, health check và quản lý cấu hình.
  • Kubernetes: Deployment, Service, Ingress, ConfigMap, Secret, probe, resource limit và autoscaling.
  • CI/CD: kiểm thử, kiểm tra bảo mật, xây dựng artifact, triển khai blue-green hoặc canary và rollback.
  • Infrastructure as Code bằng Terraform, CloudFormation hoặc Crossplane là lợi thế.
  • Observability: log có cấu trúc, metric, trace, cảnh báo, dashboard và runbook.
  • Quản lý sự cố theo nguyên tắc ưu tiên giảm thiểu tác động, sau đó phân tích nguyên nhân gốc và phòng ngừa tái diễn.

4. Kỹ năng mềm và ngôn ngữ

  • Tiếng Anh: cần đọc tài liệu kỹ thuật, viết thiết kế và trả lời câu hỏi phỏng vấn bằng tiếng Anh. Nên chuẩn bị thuật ngữ về transaction, consistency, latency, availability, deployment và incident.
  • Làm việc nhóm: chia sẻ triển khai theo vai trò, review chất lượng và hỗ trợ đối tác giao tiếp.
  • Tư duy logic và chú ý chi tiết: rà soát impact analysis, edge case, security, chi phí và khả năng rollback.
  • Giao tiếp và thương lượng: làm rõ yêu cầu mâu thuẫn, thống nhất giả định và trình bày quyết định kiến trúc.
  • Giải quyết vấn đề: phản ứng bình tĩnh khi production có sự cố, không đổ lỗi và luôn đề xuất hành động khắc phục.
  • Tự phát triển: cập nhật dịch vụ AWS, học chứng chỉ, chia sẻ tri thức và cải thiện framework/standard của đội.

5. Chứng chỉ gợi ý

Thứ tự ưu tiên hợp lý:

1. AWS Certified Developer – Associate: phù hợp nhất với phần phát triển, triển khai và vận hành trên AWS.
2. AWS Certified Solutions Architect – Associate: thể hiện khả năng thiết kế, bảo mật và tối ưu kiến trúc.
3. Certified Kubernetes Administrator: hữu ích nếu vai trò trực tiếp vận hành EKS.
4. Chứng chỉ Spring, Terraform hoặc kiểm thử chỉ nên bổ sung khi đã có kinh nghiệm thực tế.

Chứng chỉ là điểm cộng, không thay thế kinh nghiệm thiết kế và vận hành hệ thống thực tế.

6. Hồ sơ nên thể hiện

Hãy chuẩn bị:

  • Một trang kiến trúc cho dự án mạnh nhất, có thành phần, luồng API/event, cơ sở dữ liệu và AWS resources.
  • Một tài liệu API bằng OpenAPI.
  • Một sơ đồ luồng sự kiện và cách xử lý trùng lặp, lỗi và retry.
  • Một pipeline CI/CD và cách rollback.
  • Dashboard giám sát, cảnh báo và runbook xử lý sự cố.
  • Ước tính chi phí vận hành và một số tối ưu đã thực hiện.
  • Các bullet CV theo cấu trúc: Vấn đề – Hành động – Kết quả, có số liệu thật như số dịch vụ, lưu lượng, độ trễ, tính khả dụng, thời gian triển khai hoặc mức giảm chi phí.

7. Bài tự đánh giá trước khi nộp hồ sơ

Ứng viên nên trả lời được các câu hỏi sau:

  • Tôi đã thiết kế và vận hành bao nhiêu dịch vụ thực tế? Đã trực tiếp chịu trách nhiệm đến đâu?
  • Tôi có thể giải thích một quyết định kiến trúc đã bị đổi vì chi phí, bảo mật hoặc độ trễ không?
  • Tôi đã xử lý sự cố production nào và cách phòng ngừa tái diễn ra sao?
  • Tôi đã dùng AWS trong ít nhất hai năm theo những nhiệm vụ cụ thể nào?
  • Tôi có thể trình bày một hệ thống event-driven với outbox, idempotency, retry và dead-letter queue không?
  • Tôi đã review mã nguồn hoặc thiết kế của đối tác như thế nào?

Nếu thiếu rõ ràngng một mục, nên dành thời gian bù lỗ thay vì che giấu bằng thuật ngữ. Tính trung thực và khả năng giải thích sẽ là điểm cộng lớn nhất trong phỏng vấn kỹ thuật.

Chuẩn bị phỏng vấn

1. Quy trình phỏng vấn dự kiến

Tin tuyển dụng không công bố quy trình chính thức, vì vậy các vòng dưới đây là kịch bản thông thường đối với vị trí Senior Backend/Cloud trong ngân hàng. Thực tế có thể gộp hoặc tách các vòng:

1. Sàng lọc hồ sơ và phỏng vấn tuyển dụng: 15–30 phút.
2. Screening tiếng Anh và kỹ thuật: 30–45 phút.
3. Phỏng vấn chuyên môn: 60–90 phút, có thể có bài lập trình hoặc nhận xét thiết kế.
4. Phỏng vấn kiến trúc/system design: 60–90 phút.
5. Phỏng vấn hành vi và xử lý sự cố: 45–60 phút.
6. Phỏng vấn cuối cùng với trưởng nhóm/đơn vị tuyển dụng: 30–60 phút.

2. Câu hỏi thường gặp theo từng vòng

Vòng sàng lọc
  • Vì sao bạn quan tâm đến vị trí Senior Java Developer tại Khối Công nghệ thông tin?
  • Mô tả ba dự án hoặc hệ thống bạn tự hào nhất và vai trò cá nhân của bạn.
  • Trong ba năm qua, tỷ lệ thời gian của bạn đi vào phát triển, thiết kế, vận hành và làm việc với đối tác như thế nào?
  • Bạn đã sử dụng AWS liên tục trong hai năm chưa? Hãy nêu các dịch vụ và trách nhiệm cụ thể.
  • Bạn có chứng chỉ AWS, Kubernetes hoặc chứng chỉ liên quan không?
  • Bạn có kinh nghiệm trực tiếp với nghiệp vụ ngân hàng không? Nếu chưa, bạn sẽ tiếp cận lĩnh vực này như thế nào?
  • Thời gian có thể nhận việc, địa điểm làm việc, chế độ làm việc và ngôn ngữ làm việc mong muốn của bạn ra sao?

Cách trả lời tốt là nêu theo chuứn: bối cảnh – quyết định – hành động – kết quả – bài học. Không chỉ liệt kê công nghệ.

Vòng screening kỹ thuật và tiếng Anh

Các câu hỏi có thể gồm:

  • Hãy giải thích sự khác nhau giữa `equals` và `hashCode`, khi nào cần cả hai?
  • Điều gì xảy ra khi hai request thanh toán đến đồng thời? Làm thế nào tránh ghi trùng?
  • Spring transaction rollback trong những trường hợp nào? Nêu một lỗi thường gặp khi dùng `@Transactional`.
  • API nên xử lý idempotency như thế nào?
  • Phân biệt eventual consistency với strong consistency. Khi nào không thể chấp nhận eventual consistency?
  • Kafka đảm bảo thứ tự message trong những trường hợp nào?
  • Sự khác nhau giữa Docker và Kubernetes là gì? Kubernetes có tự động tối ưu chi phí không?
  • IAM, secret và encryption trong AWS cần được xử lý như thế nào?
  • Làm thế nào để điều tra một API tăng độ trễ trong production?

Nếu được yêu cầu làm việc bằng tiếng Anh, hãy dùng cấu trúc: Requirement – Assumption – Design – Trade-off – Risk – Monitoring. Tránh nói quá nhanh và mơ hồ; ưu tiên đúng thuật ngữ kỹ thuật.

Vòng chuyên môn và lập trình

Bài lập trình thực tế có thể yêu cầu xây dựng một API Spring Boot đơn giản, chẳng hạn tạo giao dịch chuyển tiền, có:

  • Validation đầu vào và xử lý lỗi.
  • Phân trang và truy vấn cơ sở dữ liệu.
  • Transaction.
  • Idempotency key.
  • Unit test và integration test.
  • Logging có cấu trúc.

Không cần tối ưu thuật toán quá mức nếu vị trí không yêu cầu, nhưng cần viết code dễ đọc, an toàn và có kiểm thử. Ứng viên nên nói rõ suy nghĩ, hỏi lại yêu cầu mơ hồ và kiểm thử các trường hợp biên.

Vòng kiến trúc và system design

Một câu hỏi rất có khả năng là: Thiết kế dịch vụ chuyển tiền hoặc thanh toán trên AWS. Cấu trúc trả lời tốt:

1. Làm rõ yêu cầu nghiệp vụ, giá trị giao dịch, khách hàng, thời gian xử lý, yêu cầu khả dụng và tuân thủ.
2. Xác định bounded context, thành phần dữ liệu và các trường hợp lỗi.
3. Chọn API đồng bộ hay bất đồng bộ và giải thích lựa chọn.
4. Thiết kế cơ sở dữ liệu, transaction boundary và cơ chế idempotency.
5. Thiết kế event, outbox/inbox, consumer, retry, dead-letter queue và saga.
6. Chọn AWS services, Kubernetes, CI/CD và chiến lược triển khai.
7. Bổ sung bảo mật, audit, monitoring, alerting và runbook.
8. Phân tích chi phí, độ trễ, tính khả dụng và phương án mở rộng.

Ứng viên nên chủ động nêu giả định thay vì im lặng, ví dụ: “Tôi giả định đây là hệ thống thanh toán online cần xử lý hàng nghìn giao dịch mỗi giây; nếu quy mô khác, thiết kế sẽ thay đổi”.

Vòng hành vi và tình huống

Hãy chuẩn bị năm câu chuyện theo cấu trúc STAR:

  • Một lần bạn phát hiện và xử lý sự cố production.
  • Một lần bạn tìm ra lỗi thiết kế trong mã nguồn của đối tác.
  • Một lần bạn phản biện quyết định của lãnh đạo hoặc đồng nghiệp.
  • Một lần bạn truyền đạt kiến thức hoặc hỗ trợ một thành viên mới.
  • Một lần bạn cân bằng giữa thời gian triển khai, chi phí, bảo mật và chất lượng.

Với câu hỏi về sự cố, hãy nhấn mạnh thứ tự: phát hiện – đánh giá tác động – giảm thiểu – khôi phục – tìm nguyên nhân gốc – phòng ngừa tái diễn.

3. Giới thiệu bản thân trong 90 giây

Bạn có thể chuẩn bị mẫu sau và điền số liệu thật:

> “Tôi có [X] năm kinh nghiệm phát triển Java/Spring, trong đó [Y] năm tập trung vào microservice và triển khai trên AWS. Tại dự án [tên dự án], tôi phụ trách thiết kế và vận hành [số dịch vụ], xử lý [lưu lượng/yêu cầu], đạt [số liệu độ trễ hoặc khả dụng]. Tôi đã dùng [AWS services], [Kafka/SQS], Docker/Kubernetes và CI/CD để [kết quả]. Ngoài lập trình, tôi còn review thiết kế, hỗ trợ xử lý sự cố và chia sẻ kinh nghiệm với team. Tôi đặc biệt quan tâm vị trí này vì cơ hội làm việc trong bối cảnh ngân hàng với bài toán kiến trúc và vận hành ở quy mô thực tế.”

4. Bài luyện system design nên chuẩn bị

  • Dịch vụ thanh toán và chuyển khoản.
  • Dịch vụ đặt lịch hoặc đặt vé có hạn chừa số lượng.
  • Xác thực người dùng và quản lý phiên đăng nhập.
  • Xử lý webhook và retry.
  • Hệ thống thông báo có thứ tự và chống gửi trùng.
  • Đọc và ghi dữ liệu phân tích gần thời gian thực.

Với mỗi bài, chuẩn bị sơ đồ context container, API contract, event schema, bảng dữ liệu, luồng lỗi, chỉ số giám sát và ước tính chi phí.

5. Tài liệu cần mang hoặc chuẩn bị

  • CV được tối ưu theo JD, không chỉ liệt kê công nghệ.
  • Một trang tóm tắt dự án kiến trúc.
  • Danh sách 10 câu hỏi cho người phỏng vấn.
  • Sơ đồ microservice, event flow và deployment architecture.
  • Ghi chú về các quyết định kiến trúc và trade-off.
  • Ví dụ đoạn mã hoặc bài lập trình đã giải thích rõ, nếu có.

6. Câu hỏi nên đặt cho người phỏng vấn

  • Cấp bậc và mô tả chuẩn của vị trí là gì? Phạm vi làm việc cân bằng giữa implementation, architecture và mentoring như thế nào?
  • Team gồm bao nhiêu người, tổ chức theo domain hay theo service? Có chuyên gia AWS riêng không?
  • Stack Java đang sử dụng phiên bản nào? Dịch vụ được triển khai trên EKS hay nền tảng tương đương?
  • Có bao nhiêu hệ thống giao dịch thực tế? Quy mô lưu lượng và yêu cầu tuân thủ chính?
  • Có chế độ trực sự cố production ngoài giờ không? KPI và tiêu chí đánh giá hiệu quả công việc là gì?
  • Tiếng Anh được sử dụng trong tài liệu, họp và trao đổi với đối tác ra sao?
  • Ngân sách đào tạo, chứng chỉ AWS và cơ hội mở rộng trách nhiệm kiến trúc ra sao?

Vị trí địa điểm, loại hình và phúc lợi đang ghi `N/A`, người ứng viên nên hỏi rõ địa điểm làm việc, chính sách làm việc, chế độ trực, phúc lợi và ngân sách lương trước khi cam kết. Có thể liên hệ email `lynd3@vpbank.com.vn` được nêu trong tin tuyển dụng để xác minh.

7. Trang phục và hình thức

  • Phỏng vấn trực tiếp: chọn trang phục công sở nghiêm túc, gọn gàng, phù hợp với vai trò kỹ thuật; vest hoặc blazer là phương án an toàn nếu không biết văn hóa đơn vị.
  • Phỏng vấn trực tuyến: cũng nên mặc trang phục công sở, chuẩn bị nền tảng ổn định, camera ngang tầm mắt, ánh sáng tốt và tai nghe có micro.
  • Mang theo CV, sổ ghi chép, bút, nước và bản sao sơ đồ thiết kế nếu cần.
  • Không tập trung vào việc khoe công nghệ; hãy trình bày rõ bối cảnh, lựa chọn và lý do.

Lộ trình ôn thi

1. Lộ trình ôn tập 14 ngày

Nếu mỗi ngày học khoảng 2–3 giờ, lộ trình dưới đây vừa đủ để củng cố kiến thức và luyện phỏng vấn. Nếu chỉ có một tuần, hãy gộp các ngày 1–3, 4–6 và 7–9 thành ba buổi tổng hợp.

Ngày Nội dung Sản phẩm cần đạt
1 Rà soát hồ sơ, Java/JVM, collections, concurrency, SQL Tóm tắt điểm mạnh, điểm thiếu và 5 câu chuyện STAR
2 Spring Boot, transaction, security, testing Mã lời giải cho REST API có validation, transaction và unit test
3 API design, OpenAPI, idempotency, versioning Đặc tả một API chuyển tiền và danh sách lỗi
4 DDD: bounded context, aggregate, domain event Sơ đồ context và một aggregate thực tế
5 AWS compute, network, IAM, security Kiến trúc một dịch vụ trên VPC/EKS và checklist bảo mật
6 RDS, PostgreSQL/MySQL, DynamoDB, ElastiCache So sánh lựa chọn cơ sở dữ liệu và caching theo access pattern
7 Kafka, RabbitMQ, SQS, outbox/inbox, saga Thiết kế luồng event với retry, dead-letter và idempotent consumer
8 CQRS, Event Sourcing, eventual consistency Trình bày trade-off và trường hợp không nên áp dụng
9 Docker, Kubernetes, EKS Dockerfile và manifest Deployment, Service, probe, secret
10 CI/CD, IaC, triển khai, rollback Pipeline gồm test, security scan, artifact, canary và rollback
11 Observability, incident, bảo mật, chi phí Dashboard giả lập, runbook và bảng ước tính chi phí
12 Ngân hàng, ledger, audit, compliance cơ bản Mô tả nguyên tắc không sửa lịch sử giao dịch và nhu cầu đối soát
13 System design và coding Hoàn thành một bài thi 60–90 phút, có giải thích thay vì chỉ có code
14 Mock interview và hoàn thiện hồ sơ Quay lại video lần đầu, lần hai luyện lại và chuẩn bị câu hỏi cho nhà tuyển dụng

2. Dự án luyện tập đề xuất

Hãy xây dựng một dịch vụ chuyển tiền mô phỏng, dùng dữ liệu tự tạo và không đưa vào bất kỳ dữ liệu ngân hàng thật nào. Phạm vi gợi ý:

  • Spring Boot REST API với OpenAPI.
  • PostgreSQL cho account và ledger.
  • Redis để cache hoặc chống xử lý trùng.
  • Kafka hoặc SQS cho event.
  • Transaction cùng outbox để đồng bộ event.
  • Consumer idempotent và dead-letter queue.
  • Dockerfile, Kubernetes manifest hoặc EKS.
  • GitLab CI/Jenkins pipeline.
  • Terraform cho một số tài nguyên AWS.
  • Unit test, integration test và kiểm thử hợp đồng API.
  • Structured log, metric, trace và alert.
  • Threat model, cost estimate và tài liệu quyết định kiến trúc.

README nên giải thích rõ: yêu cầu, giả định, API, event schema, sơ đồ kiến trúc, cách chạy, cách kiểm thử, failure mode, cách rollback và các giới hạn của dự án. Đây là tài liệu có giá trị hơn một kho mã nguồn chỉ có README ngắn.

3. Kiến thức nền cần nhớ

Java và Spring
  • Collection, generic, exception, concurrency và JVM memory.
  • Dependency injection, bean lifecycle, AOP và proxy.
  • Transaction propagation, isolation, optimistic/pessimistic locking.
  • Spring Security, OAuth2/JWT và xác thực service-to-service.
  • JPA/Hibernate, SQL indexing, N+1 và connection pool.
  • JUnit, Mockito, Testcontainers và contract test.
Microservice và DDD
  • Bounded context, context map, aggregate, entity, value object.
  • Domain service, repository, domain event và anti-corruption layer.
  • API versioning, backward compatibility, idempotency và bulkhead.
  • Circuit breaker, retry có backoff và timeout.
AWS
  • RDS, DynamoDB, ElastiCache, SQS, SNS, Lambda, ECS, EKS, ALB.
  • IAM, VPC, KMS, Secrets Manager, CloudWatch, CloudTrail.
  • Multi-AZ, backup/restore, scaling và cost optimization.
  • Well-Architected pillars: reliability, security, performance, cost, operational excellence, sustainability.
Event-driven
  • Kafka partition, consumer group, offset, ordering và exactly-once giả định.
  • RabbitMQ exchange/queue và SQS visibility timeout.
  • Outbox, inbox, saga, compensating action, CQRS và Event Sourcing.
DevOps và vận hành
  • Docker image, Kubernetes workload, readiness/liveness probe và resource limit.
  • CI/CD pipeline, artifact versioning, canary, blue-green và rollback.
  • SLI/SLO, metric, log, trace, alert và postmortem.

4. Tài liệu tham khảo

  • Tài liệu Spring Boot: https://docs.spring.io/spring-boot/
  • Tài liệu AWS: https://docs.aws.amazon.com/
  • AWS Well-Architected Framework: https://aws.amazon.com/architecture/well-architected/
  • AWS Pricing Calculator: https://calculator.aws/
  • Kubernetes Basics: https://kubernetes.io/docs/tutorials/
  • Kafka Documentation: https://kafka.apache.org/documentation/
  • RabbitMQ Tutorials: https://www.rabbitmq.com/tutorials
  • OpenAPI Specification: https://spec.openapis.org/
  • Martin Fowler vềmicroservices và Event Sourcing trên martinfowler.com.
  • Sách Domain-Driven Design của Eric Evans, Implementing Domain-Driven Design của Vaughn Vernon và Microservices Patterns của Chris Richardson.

5. Bài kiểm tra tự đánh giá

Bạn đạt mức sẵn sàng tốt nếu có thể trả lời rõ ràng các câu hỏi sau:

  • Vì sao không nên dùng `@Transactional` trên một phương thức private hoặc cách gọi self-invocation?
  • Khi ghi ledger và phát event, làm thế nào tránh tình trạng database đã commit nhưng event bị mất?
  • Kafka có bảo đảm thứ tự toàn cục không? Những gì cần cấu hình để giảm rủi ro trùng hoặc mất thứ tự?
  • Chọn RDS hay DynamoDB cho dữ liệu nào trong hệ thống ngân hàng? Tiêu chí quyết định là gì?
  • Lựa chọn nào có nguy cơ tạo eventual consistency không chấp nhận được trong nghiệp vụ chuyển tiền?
  • EKS tự động đảm bảo những gì và không đảm bảo những gì?
  • Làm thế nào phát hiện API tăng độ trễ do database, dependency hay hạ tầng?
  • Một deployment đã được rollback nhưng dữ liệu đã được ghi sai thì xử lý thế nào?
  • Làm thế nào giảm chi phí mà không làm giảm độ tin cậy hoặc khả năng kiểm toán?

6. Chuẩn bị cho hai tuần

  • Ngày 1–3: chốt CV, xác định ba dự án nổi bật và bù lỗ kiến thức còn yếu.
  • Ngày 4–7: hoàn thành phần microservice, AWS, messaging và event-driven.
  • Ngày 8–10: hoàn thiện dự án luyện tập, pipeline, monitoring và tài liệu kiến trúc.
  • Ngày 11–12: luyện system design ngân hàng và chuẩn bị câu chuyện STAR.
  • Ngày 13: luyện tiếng Anh, đọc đề và trả lời system design bằng tiếng Anh.
  • Ngày 14: mock interview hoàn chỉnh, kiểm tra thiết bị và gửi hồ sơ.

Không nên học thuộc từng câu trả lời. Hãy học nguyên tắc, ví dụ thật và cách giải thích trade-off; điều này tạo ra sự tự nhiên khi phỏng vấn.

Tư vấn nghề nghiệp

1. Định vị đúng giá trị của ứng viên

Thông điệp nên là: Senior Java Developer có khả năng thiết kế và vận hành microservice ngân hàng trên AWS, chứ không chỉ là lập trình viên biết Java. Hồ sơ cần chứng minh ba tầng năng lực:

1. Delivery: viết mã, kiểm thử, triển khai và khắc phục sự cố.
2. Architecture: phân tích yêu cầu, thiết kế API, chia bounded context và lựa chọn trade-off.
3. Influence: review đối tác, xây chuẩn, định hướng kỹ thuật và truyền đạt cho team.

Một bullet CV tốt có thể có dạng: “Thiết kế và triển khai [số] microservice Java/Spring trên EKS, xử lý [lưu lượng], độ trễ p95 [số liệu], áp dụng outbox và idempotency để loại bỏ lỗi xử lý trùng, đồng thời giảm [chi phí/thời gian triển khai]”. Chỉ dùng số liệu thật.

2. Lộ trình phát triển sự nghiệp

Một hướng phù hợp là:

Senior Java Developer → Lead/Principal Backend Engineer → Solution Architect hoặc Cloud Architect → Technical Manager/Head of Engineering.

Trong 6–12 tháng tới, hãy tập trung vào:

  • Một chuyên môn rõ ràng như cloud-native banking backend, event-driven architecture hoặc domain-driven design.
  • Một hoặc hai chứng chỉ AWS có giá trị thực tế.
  • Khả năng định lượng chi phí, độ trễ, khả dụng và tác động kinh doanh.
  • Kinh nghiệm trực tiếp với quy trình release, incident, audit hoặc đối soát trong ngân hàng.
  • Kỹ năng viết tài liệu thiết kế và decision record bằng tiếng Anh.

Sau 12–24 tháng, mục tiêu có thể là:

  • Dẫn dắt một nhóm dịch vụ hoặc một domain nghiệp vụ.
  • Chuẩn hóa framework Java, template microservice và quy trình CI/CD trên AWS.
  • Xây dựng chương trình mentoring hoặc đóng góp vào cộng đồng kỹ thuật.

3. Khoảng lương kỳ vọng theo cấp bậc

Do tin tuyển dụng chỉ ghi “Thỏa thuận”, địa điểm và phúc lợi chưa được công bố, có thể dùng các khoảng dưới đây để chuẩn bị mức mong muốn:

Cấp bậc tương đương Tổng thu nhập tháng trước thuế, ước tính
Java Developer, khoảng 2–4 năm kinh nghiệm 25–45 triệu đồng/tháng
Senior Java Developer, cloud-native và ngân hàng 45–75 triệu đồng/tháng
Lead, Principal hoặc Solution Architect 65–100 triệu đồng/tháng
Engineering Manager/Head of Engineering 85–140 triệu đồng/tháng

(*) Đây chỉ là ước tính tham khảo theo thị trường Việt Nam, không phải mức cam kết của VPBank. Phạm vi trách nhiệm, địa điểm, quy mô hệ thống, chính sách thưởng và khả năng làm thêm cũng ảnh hưởng đến tổng thu nhập; mức lương có thể thay đổi tùy ngân hàng và thời điểm.

Khi trao đổi, nên hỏi rõ:

  • Mức lương cứng theo tháng và cơ chế tăng lương định kỳ.
  • Thưởng theo KPI, thưởng dự án và thưởng năm.
  • Chế độ làm thêm, trực sự cố và phụ cấp.
  • Bảo hiểm, khám sức khỏe, ngân sách học tập và chứng chỉ.
  • Có thể đàm phán theo tổng thu nhập hay chỉ theo lương cứng không.

Không nên nêu một con số thiếu căn cứ. Hãy đưa ra một khoảng mong muốn được giải thích theo cấp bậc, phạm vi trách nhiệm và giá trị kỹ năng AWS/ngân hàng.

4. Chiến lược tìm việc và nâng cấp hồ sơ

  • Tối ưu CV theo các từ khóa có trong JD: Java, Spring Boot, AWS, RDS, DynamoDB, ElastiCache, Docker, Kubernetes, EKS, CI/CD, DDD, Kafka, RabbitMQ, SQS, CQRS, Event Sourcing.
  • Với mỗi keyword, phải có bằng chứng tương ứng; không liệt kê EKS, CQRS hoặc Event Sourcing nếu chỉ biết khái niệm.
  • Tạo hồ sơ riêng cho hướng ngân hàng và hướng cloud-native.
  • Chuẩn bị một dự án có thể trình bày trong 10 phút và giải thích sâu trong 45 phút.
  • Ghi rõ quy mô hệ thống và phạm vi cá nhân để tránh bị hiểu nhầm là chỉ tham gia một phần nhỏ của dự án.
  • Sử dụng email `lynd3@vpbank.com.vn` để hỏi trước về cấp bậc, địa điểm, quy trình và ngân sách khi thông tin tuyển dụng còn `N/A`.

5. Rủi ro cần chủ động xử lý

  • Thiếu kinh nghiệm AWS trong hai năm: không nên nói quá; hãy chứng minh từng dịch vụ đã dùng và thời gian thực tế.
  • Thiếu ngân hàng: bù bằng hiểu biết ledger, idempotency, audit, transaction và kiểm soát truy cập; chứng minh khả năng học nghiệp vụ.
  • Thiếu kinh nghiệm trực tiếp với EKS hoặc Event Sourcing: nói rõ mức độ sử dụng thực tế và tập trung vào nguyên tắc, trade-off.
  • Phạm vi trách nhiệm rộng: cần hỏi rõ tỷ lệ coding, architecture, mentoring, review đối tác và trực sự cố.
  • Địa điểm và phúc lợi chưa rõ: không nên nộp hồ sơ mà chưa xác minh mức độ di chuyển, chính sách làm việc và tổng thu nhập.

Vị trí này phù hợp nhất với ứng viên muốn tiến từ lập trình viên thành người định hướng kiến trúc và tác động đến chuẩn kỹ thuật của cả đội. Nếu chưa đạt đủ kinh nghiệm AWS nhưng đã vững Java, ứng viên vẫn có thể tạo lợi thế bằng một portfolio mạnh, chứng chỉ phù hợp và bằng chứng học tập nhanh; tuy nhiên cần thận trọng không vượt quá mức kinh nghiệm thực tế.

Câu hỏi thường gặp

Tôi là sinh viên năm cuối, chưa có 3 năm Java và 2 năm AWS. Tôi có nên ứng tuyển vị trí Senior này không?

Theo đúng yêu cầu đã công bố, hồ sơ của bạn hiện chưa đáp ứng hai mốc kinh nghiệm tối thiểu, vì vậy khả năng vượt sàng lọc thấp. Bạn vẫn có thể nộp nếu thực tập hoặc dự án thực tế đã cho bạn kinh nghiệm tương đương, nhưng không nên ghi quá mức. Chiến lược phù hợp hơn là xây dựng portfolio Java/Spring, Docker, AWS, CI/CD và microservice, tìm việc Java Backend Junior hoặc Cloud Engineer trong 12–18 tháng, sau đó chuyển lên vị trí Senior. Nếu ứng tuyển sớm, hãy nêu rõ mục tiêu và những phần đã thực sự làm.

Tôi có 4 năm Java/Spring nhưng mới dùng AWS khoảng 8 tháng. Tôi có đủ điều kiện không và nên bù lỗ thế nào?

Bạn đã đáp ứng phần kinh nghiệm Java nhưng chưa đáp ứng rõ ràng yêu cầu hai năm AWS. Không nên tuyên bố là có hai năm chỉ để vượt bộ lọc. Hãy làm rõ các dịch vụ AWS đã dùng thực tế, xây dựng hoặc vận hành một hệ thống có RDS, SQS, EKS, CI/CD, monitoring và cost estimate, đồng thời lấy AWS Certified Developer – Associate để chứng minh nền tảng. Với kinh nghiệm Java mạnh, bạn vẫn có thể cân nhắc các vị trí Senior có yêu cầu AWS thấp hơn hoặc vị trí gần với điều kiện hơn.

Tôi đang làm Frontend JavaScript, muốn chuyển sang Java Backend. Lộ trình thực tế nên thế nào?

Bạn có lợi thế ở kinh nghiệm API, Git và DevOps nếu đã từng làm những việc đó. Hãy học theo thứ tự: Java cơ bản và OOP, Spring Boot, REST và SQL, Docker, AWS, microservice và messaging. Làm một dự án backend có frontend gọi API để tận dụng kinh nghiệm hiện tại. Với vị trí Senior, bạn còn cần bằng chứng về thiết kế production, vận hành sự cố, mentoring và quyết định kiến trúc. Trước khi chuyển hẳn, có thể nhận một số task backend trong đội hiện tại để tích lũy kinh nghiệm thực tế.

Mức lương tôi nên kỳ vọng cho vị trí này là bao nhiêu?

Tin tuyển dụng chỉ ghi “Thỏa thuận”, không công bố ngân sách, địa điểm, phúc lợi hay chính sách thưởng. Với cấp bậc Senior Java có kiến trúc cloud và kinh nghiệm ngân hàng, một khoảng tham khảo có thể là khoảng 45–75 triệu đồng tổng thu nhập tháng trước thuế, nhưng đây chỉ là ước tính theo thị trường, không phải cam kết của VPBank và mức lương có thể thay đổi tùy ngân hàng và thời điểm. Hãy hỏi nhà tuyển dụng về lương cứng, thưởng KPI, phụ cấp trực sự cố, bảo hiểm và cơ hội tăng lương trước khi đưa ra con số cụ thể.

Giờ làm, ngày nghỉ và KPI của vị trí này như thế nào?

Tin tuyển dụng không cung cấp lịch làm việc, chế độ trực hoặc KPI chính thức, vì vậy không nên suy đoán rồi trả lời như thông tin đã biết. Trong lúc phỏng vấn, hãy hỏi cụ thể: giờ bắt đầu và kết thúc, có làm thêm không, có trực production cuối tuần không, tần suất trực, lịch nghỉ, cơ chế đổi ca và tiêu chí đánh giá hiệu quả. Theo phạm vi công việc mô tả, KPI có thể liên quan đến tiến độ dự án, chất lượng thiết kế và mã nguồn, độ ổn định production, xử lý sự cố, hợp tác và khả năng chia sẻ kiến thức, nhưng đây mới là suy luận từ trách nhiệm chứ không phải KPI được công bố.

Nếu được hỏi thiết kế dịch vụ chuyển tiền trên AWS, tôi nên trả lời như thế nào?

Hãy bắt đầu bằng yêu cầu và giả định: số giao dịch, số khách hàng, yêu cầu thời gian thực, khả dụng, giới hạn và tuân thủ. Sau đó tách bounded context, xác định ledger và transaction boundary, xác định idempotency key và cơ chế chống ghi trùng. Với nghiệp vụ cần phản hồi đồng bộ, dùng API; với bước hậu xử lý, phát event qua outbox để tránh mất event. Consumer phải idempotent, có retry backoff và dead-letter queue. Chọn PostgreSQL/RDS cho dữ liệu cần truy vấn và transaction, Redis nếu có access pattern cache phù hợp, SQS hoặc Kafka tùy thứ tự và throughput. Triển khai trên EKS hoặc nền tảng tương đương, có IAM least privilege, secret encryption, audit, monitoring, alerting, CI/CD, rollback và cost estimate. Cuối cùng, nói rõ điểm mạnh, điểm yếu và phương án thay thế của từng quyết định.

DDD, CQRS và Event Sourcing có phải lựa chọn bắt buộc cho mọi hệ thống ngân hàng không?

Không. DDD phù hợp khi nghiệp vụ phức tạp, nhiều quy tắc và ranh giới domain rõ; với hệ thống đơn giản, áp dụng DDD quá mức có thể tạo nhiều lớp và làm tăng chi phí. CQRS tách mô hình ghi và mô hình đọc, hữu ích khi truy vấn phức tạp hơn mô hình ghi, nhưng phải xử lý eventual consistency. Event Sourcing lưu event làm nguồn sự thật, có lợi ích audit và tái dựng trạng thái nhưng đòi hỏi schema evolution, snapshot, projection và xử lý lỗi phức tạp. Câu trả lời tốt là trình bày lợi ích, trade-off và điều kiện áp dụng, thay vì khẳng định mọi dịch vụ ngân hàng đều phải dùng ba mô hình này.

Chứng chỉ AWS có đủ để chứng minh tôi đạt yêu cầu hai năm kinh nghiệm AWS không?

Không. Chứng chỉ chứng minh bạn có nền tảng và đã chuẩn bị cho kỳ thi, nhưng không thay thế kinh nghiệm vận hành thực tế, quyết định thiết kế, xử lý sự cố và hiểu chi phí. Trong phỏng vấn, hãy trình bày các dự án thật: bạn đã dùng service nào, với quy mô nào, giải quyết sự cố nào và cải thiện chi phí ra sao. Chứng chỉ vẫn hữu ích như một điểm cộng, đặc biệt AWS Certified Developer – Associate, nhưng hãy dùng nó như bằng chứng bổ sung.

Tôi thiếu kinh nghiệm ngân hàng nhưng có kinh nghiệm backend và cloud. Tôi nên bù lỗ thế nào?

Hãy học các khái niệm nghiệp vụ nền: tài khoản, số dư, ledger bất biến, giao dịch, idempotency, chống ghi trùng, reconciliation, audit trail, phân quyền và nguyên tắc phê duyệt kép trong các giao dịch nhạy cảm. Bạn có thể mô phỏng một dịch vụ chuyển tiền với dữ liệu tự tạo, đặc biệt chú trọng ledger, audit và rollback. Trong phỏng vấn, nói rõ bạn chưa có kinh nghiệm trực tiếp nhưng đã hiểu các yêu cầu cơ bản và có kinh nghiệm cloud để chuyển đổi nhanh. Tuyệt đối không biến kiến thức đọc tài liệu thành kinh nghiệm sản xuất.

Sau khi vào vị trí Senior, con đường thăng tiến tiếp theo là gì?

Con đường tự nhiên là trở thành Lead hoặc Principal Engineer với trách nhiệm dẫn dắt thiết kế, sau đó là Solution Architect, Cloud Architect hoặc Technical Manager. Với cấu bậc Senior, bạn vẫn có thể phát triển bằng chiều sâu kỹ thuật mà không cần chuyển sang quản lý. Hãy tích lũy bằng chứng về việc dẫn dắt quyết định kiến trúc, review nhiều hệ thống, giảm chi phí hoặc cải thiện độ ổn định, mentoring, đóng góp vào framework chuẩn và làm việc trực tiếp với stakeholder nghiệp vụ. Hãy hỏi trong phỏng vấn về tiêu chí thăng cấp và con đường tại đơn vị.