Việc làm

2 ngày trước · Hà Nội · Tại văn phòng

Expert of Application Architecture

ABBANK · Software/Technical Architect

Xem mô tả & ứng tuyển trên ITviecMô tả công việc, lương và ứng tuyển nằm ở ITviec.

10 câu hỏi có thể gặp khi phỏng vấn

Chọn theo kỹ năng và cấp của tin (DevOps & CI/CD, Cloud (AWS, Azure, GCP), System Design & Kiến trúc). Gợi ý trả lời do Drama Công Ty biên soạn để bạn ôn nhanh, không phải đề của công ty.

  1. 01Bạn viết Dockerfile thế nào để image nhỏ, build nhanh và an toàn?DevOps & CI/CD · Junior

    Gợi ý trả lời

    Ý chính: dùng multi-stage build, sắp xếp layer để tận dụng cache, và không chạy bằng root.

    FROM node:22-alpine AS build
    WORKDIR /app
    COPY package*.json ./
    RUN npm ci
    COPY . .
    RUN npm run build
    
    FROM node:22-alpine
    USER node
    COPY --from=build /app/dist /app
    
    • Copy file khai báo dependency trước, code sau, để đổi code không phải cài lại package.
    • Dùng .dockerignore loại node_modules, .git, file .env.
    • Không nhét secret vào image (kể cả ở layer đã xoá); dùng build secret hoặc biến môi trường lúc chạy.
    • Ghim phiên bản base image, quét lỗ hổng trong pipeline.
    Ôn thêm câu hỏi DevOps & CI/CD →
  2. 02CI, Continuous Delivery và Continuous Deployment khác nhau thế nào? Một pipeline cơ bản gồm những bước gì?DevOps & CI/CD · Junior

    Gợi ý trả lời

    CI là tự động build và test mỗi lần merge code; Continuous Delivery là luôn có bản sẵn sàng deploy nhưng lên production cần bấm duyệt; Continuous Deployment thì tự lên production nếu mọi bước đều qua.

    Pipeline cơ bản:

    • Checkout, cài dependency (có cache).
    • Lint, unit test, quét bảo mật (SAST, dependency, secret).
    • Build artifact/image, gắn tag theo commit SHA, đẩy lên registry.
    • Deploy lên staging, chạy smoke/integration test.
    • Deploy production (thủ công hoặc tự động), có cách rollback.

    Người phỏng vấn muốn nghe: build một lần, dùng cùng một artifact cho mọi môi trường; chỉ cấu hình là khác nhau.

    Ôn thêm câu hỏi DevOps & CI/CD →
  3. 03Trong Kubernetes, Pod, Deployment và Service là gì và liên quan với nhau thế nào?DevOps & CI/CD · Junior

    Gợi ý trả lời

    Pod là đơn vị chạy nhỏ nhất (một hoặc vài container dùng chung network); Deployment quản lý số bản sao Pod và việc cập nhật; Service cho một địa chỉ ổn định để gọi tới nhóm Pod.

    • Pod có thể chết và được tạo lại với IP mới, nên không gọi trực tiếp IP Pod.
    • Deployment tạo ReplicaSet, hỗ trợ rolling update và rollback.
    • Service chọn Pod theo label (selector), kiểu ClusterIP (nội bộ), NodePort, LoadBalancer.
    • Từ ngoài vào HTTP thường dùng Ingress hoặc Gateway API phía trước Service.

    Hay sai: label của Pod template không khớp selector của Service, khiến Service không có endpoint nào.

    Ôn thêm câu hỏi DevOps & CI/CD →
  4. 04Giải thích VPC, public subnet, private subnet, Internet Gateway và NAT Gateway.Cloud (AWS, Azure, GCP) · Junior

    Gợi ý trả lời

    VPC là mạng riêng ảo của bạn trên cloud; subnet chia nhỏ dải IP; tính "public" hay "private" của subnet do route table quyết định.

    • Public subnet: route 0.0.0.0/0 tới Internet Gateway; đặt load balancer, bastion.
    • Private subnet: không có route trực tiếp ra Internet; đặt app server, database.
    • NAT Gateway: nằm ở public subnet, cho máy trong private subnet đi ra Internet (tải package, gọi API) nhưng không cho kết nối từ ngoài vào.
    • Security group lọc ở mức instance (stateful); Network ACL lọc ở mức subnet (stateless).

    Người phỏng vấn muốn nghe: database không bao giờ đặt ở public subnet, và truy cập quản trị nên đi qua bastion hoặc dịch vụ kiểu Session Manager.

    Ôn thêm câu hỏi Cloud (AWS, Azure, GCP) →
  5. 05Object storage (S3, Blob Storage, Cloud Storage) khác block storage và file storage thế nào?Cloud (AWS, Azure, GCP) · Junior

    Gợi ý trả lời

    Object storage lưu file dạng đối tượng truy cập qua HTTP API, dung lượng gần như không giới hạn và rẻ; block storage là ổ đĩa gắn vào máy ảo; file storage là ổ mạng dùng chung qua NFS/SMB.

    • Object: ảnh, video, backup, data lake, static website. Không sửa một phần file được, phải ghi đè cả object.
    • Block (EBS, Managed Disk, Persistent Disk): ổ hệ điều hành, database tự quản; độ trễ thấp.
    • File (EFS, Azure Files, Filestore): nhiều máy cùng đọc ghi một thư mục.

    Hay sai: để bucket public để tiện chia sẻ. Nên giữ bucket private, chia sẻ bằng presigned URL hoặc CDN có kiểm soát.

    Ôn thêm câu hỏi Cloud (AWS, Azure, GCP) →
  6. 06Thiết kế cache: các chiến lược cache-aside, write-through và cách xử lý cache invalidation.System Design & Kiến trúc

    Gợi ý trả lời

    Cache giảm độ trễ và tải cho DB, đổi lại phải chấp nhận dữ liệu có thể cũ trong một khoảng thời gian.

    • Cache-aside (phổ biến nhất): đọc cache, miss thì đọc DB rồi ghi vào cache kèm TTL. Khi cập nhật thì ghi DB rồi xoá key cache.
    • Write-through: ghi qua cache rồi cache ghi xuống DB, dữ liệu cache luôn mới nhưng ghi chậm hơn.
    • Write-behind: ghi cache trước, đẩy xuống DB sau; nhanh nhưng có thể mất dữ liệu.

    Các vấn đề cần xử lý:

    • Cache stampede: key nóng hết hạn, hàng nghìn request cùng đánh vào DB. Giải pháp: lock hoặc single-flight, làm mới sớm, thêm độ lệch ngẫu nhiên cho TTL.
    • Cache penetration: truy vấn key không tồn tại liên tục. Giải pháp: cache cả kết quả rỗng, dùng bloom filter.

    Hay sai: cập nhật cache thay vì xoá, dễ ghi đè giá trị cũ khi hai request chạy song song.

    Ôn thêm câu hỏi System Design & Kiến trúc →
  7. 07Pod bị CrashLoopBackOff, bạn điều tra thế nào?DevOps & CI/CD

    Gợi ý trả lời

    CrashLoopBackOff nghĩa là container khởi động rồi thoát liên tục; cần tìm lý do nó thoát.

    kubectl describe pod <pod>      # events, exit code, OOMKilled?
    kubectl logs <pod> --previous   # log của lần chạy trước khi chết
    kubectl get events --sort-by=.lastTimestamp
    
    • Exit code 137 / OOMKilled: thiếu memory limit hoặc rò rỉ bộ nhớ.
    • Lỗi cấu hình: thiếu biến môi trường, Secret/ConfigMap sai, không kết nối được DB.
    • Liveness probe quá gắt khiến app bị kill khi đang khởi động; cân nhắc startupProbe.
    • Sai lệnh command/args, sai kiến trúc image (arm64 và amd64).

    Người phỏng vấn muốn nghe: quy trình có thứ tự, dựa vào events và log trước khi đoán.

    Ôn thêm câu hỏi DevOps & CI/CD →
  8. 08Liveness, readiness và startup probe khác nhau thế nào? Cấu hình sai thì hậu quả gì?DevOps & CI/CD

    Gợi ý trả lời

    Readiness quyết định Pod có nhận traffic không; liveness quyết định có restart container không; startup probe tạm hoãn hai probe kia cho tới khi app khởi động xong.

    • Readiness fail: Pod bị gỡ khỏi endpoint của Service, không bị restart.
    • Liveness fail: kubelet restart container.
    • Startup probe hợp với app khởi động chậm (JVM, nạp model).

    Lỗi hay gặp:

    • Liveness kiểm tra cả DB bên ngoài: DB chậm là toàn bộ Pod bị restart dây chuyền.
    • Không có readiness: rolling update đẩy traffic vào Pod chưa sẵn sàng, gây lỗi 5xx.

    Người phỏng vấn muốn nghe: liveness chỉ nên kiểm tra chính process còn sống, phần phụ thuộc để cho readiness.

    Ôn thêm câu hỏi DevOps & CI/CD →
  9. 09Terraform state là gì? Làm việc nhóm với Terraform bạn quản lý state thế nào?DevOps & CI/CD

    Gợi ý trả lời

    State là file Terraform ghi lại ánh xạ giữa code và tài nguyên thật; Terraform dựa vào nó để tính plan. Mất hoặc lệch state là nguy cơ tạo trùng hoặc xoá nhầm tài nguyên.

    • Lưu state ở remote backend (S3, GCS, Azure Blob, Terraform Cloud), bật versioning và mã hoá.
    • Bật locking để hai người không apply cùng lúc.
    • Tách state theo môi trường/thành phần để giảm phạm vi ảnh hưởng.
    • Không commit state lên Git: trong đó có thể chứa secret.
    • Chạy plan trong CI cho mỗi PR, apply qua pipeline có duyệt.

    Hay sai: sửa tay trên console rồi quên, tạo drift; nên định kỳ chạy plan để phát hiện.

    Ôn thêm câu hỏi DevOps & CI/CD →
  10. 10Điểm mạnh lớn nhất của bạn là gì?Câu hỏi hành vi & văn hoá

    Gợi ý trả lời

    Chọn một hai điểm mạnh liên quan tới vị trí, và chứng minh bằng ví dụ thật, không liệt kê tính từ.

    Cấu trúc: điểm mạnh, ví dụ ngắn, kết quả, liên hệ với công việc mới.

    Câu mẫu: "Điểm mạnh của em là chủ động tìm nguyên nhân gốc. Ở dự án trước, hệ thống thỉnh thoảng bị timeout mà không ai tái hiện được. Em tự đọc log, thêm theo dõi ở các điểm nghi ngờ và tìm ra một truy vấn bị khoá bảng vào giờ cao điểm. Sau khi sửa, lỗi đó không còn xuất hiện. Em nghĩ điều này hữu ích với vị trí bên mình vì hệ thống có lượng truy cập lớn."

    Hay sai: "Em chăm chỉ, ham học hỏi, chịu được áp lực" mà không có ví dụ. Ai cũng nói vậy nên không đọng lại gì.

    Ôn thêm câu hỏi Câu hỏi hành vi & văn hoá →

Bạn đã phỏng vấn ở ABBANK?

Kể lại các vòng và câu hỏi đã gặp (ẩn danh) để người sau ôn đúng trọng tâm.

Chia sẻ kinh nghiệm phỏng vấn