← Trở về trải nghiệm

Interview Experience

MIỄN PHÍ

Software Engineer

Senior · Financial Services · Úc

Anonymous contributor·Reviewed by EmpSignal
·5 phút đọc

Bối cảnh trải nghiệm

Vai tròSoftware Engineer
Cấp độSenior
NgànhFinancial Services
Quốc giaÚc
Năm2024
Số vòng4
Chủ đề
AlgorithmsData StructuresSystem DesignBehavioral

Quy trình của Công ty N khá “rộng”: từ JavaScript fundamentals, React, Accessibility đến Security và CI/CD — đặc biệt phần Technical gần như có thể chạm tới toàn bộ frontend stack.

Phỏng vấn Frontend tại Cty N: OA, Security, CI/CD

My Experience

Tổng quan

Quy trình tuyển Frontend Engineer tại Công ty N gồm 4 vòng, kết hợp giữa English screening, Codility assessment, technical interview và behavioral/technical discussion.

Điểm đáng chú ý nhất nằm ở vòng Technical: thay vì tập trung vào một vài bài coding hoặc một project cụ thể, interviewer kiểm tra khá rộng kiến thức frontend — từ JavaScript runtime, Event Loop, React, Web Security, Accessibility, Testing cho tới CI/CD.

Đặc biệt, vì đây là môi trường banking, Security được đặt khá rõ vào trọng tâm. Bên cạnh đó, ứng viên cũng được kỳ vọng có understanding tốt về CI/CD và engineering practices chứ không chỉ đơn thuần biết build UI.

Một điểm khá hữu ích trong process là ứng viên có thể xin HR danh sách topic trước buổi Technical Interview để chuẩn bị. Tuy nhiên danh sách topic tương đối rộng, nên về bản chất vẫn cần có nền tảng frontend đủ chắc thay vì chỉ học thuộc từng câu hỏi.


Round 1 — HR Call

Vòng đầu tiên khá ngắn và chủ yếu là screening.

HR giới thiệu về vị trí, sau đó kiểm tra khả năng giao tiếp tiếng Anh thông qua một số câu hỏi cơ bản:

  • Giới thiệu bản thân bằng tiếng Anh
  • Kinh nghiệm làm việc
  • Career background
  • Expectation đối với vị trí
  • Một số câu hỏi liên quan đến previous experience

Mục tiêu chính của vòng này là xác nhận background và khả năng giao tiếp trước khi bước vào technical assessment.


Round 2 — Online Assessment

OA được thực hiện trên Codility.

  • 3 câu
  • 120 phút
  • Độ khó: Easy → Medium
  • Chủ yếu xoay quanh Array và String

Đây là phần khá khác với Technical Interview sau đó: OA thiên về khả năng giải quyết problem bằng code, trong khi vòng Technical lại mở rộng sang rất nhiều frontend fundamentals.

Vì vậy, nếu nhìn toàn bộ process, có thể chia khá rõ:

OA → coding ability

Technical → breadth & fundamentals

Behavioral → communication, reasoning & experience


Round 3 — Technical Interview

Đây là vòng có phạm vi kiến thức rộng nhất.

Phỏng vấn online bằng tiếng Anh với:

  • 1 Senior Engineer
  • 1 Tech Lead

Các topic được hỏi trải rộng trên frontend ecosystem:

  • JavaScript
  • Event Loop
  • React
  • Web Security
  • Testing
  • Accessibility
  • CI/CD
  • Các frontend fundamentals khác

Một điểm khá đặc trưng là phần lớn câu hỏi thiên về knowledge check. Interviewer thường đưa câu hỏi trực tiếp và không đào follow-up quá sâu.

Security

Security được chú trọng hơn bình thường do đặc thù banking.

Một Frontend Engineer trong môi trường này không chỉ cần biết cách render UI mà còn phải hiểu các rủi ro khi application xử lý:

  • Authentication / authorization
  • Token
  • XSS
  • CSRF
  • CORS
  • Sensitive information
  • Secure handling ở browser
  • Security implications khi giao tiếp giữa frontend và backend

Điểm quan trọng là không nên học Security như một danh sách attack vector. Với mỗi vấn đề, nên hiểu được:

Threat → Attack surface → Impact → Mitigation


CI/CD

CI/CD cũng là một topic được kỳ vọng khá rõ.

Ở level Mid/Senior, interviewer có thể không chỉ muốn nghe:

“Team em dùng GitHub Actions/Jenkins để deploy.”

Mà quan trọng hơn là hiểu pipeline thực sự hoạt động như thế nào:

Code → Pull Request → Build → Test → Quality Check → Artifact → Deploy → Verification

Với frontend, có thể đào thêm:

  • Dependency installation
  • Lint / type check
  • Unit / integration / E2E test
  • Build artifact
  • Environment variables
  • Deployment strategy
  • Rollback
  • Cache dependency
  • Secret management

Đây là một trong những khác biệt giữa “frontend developer biết làm UI” và “frontend engineer hiểu software delivery”.


Round 4 — Behavioral / Technical Discussion

Vòng cuối được thực hiện online với:

  • 1 Tech Lead
  • 1 Engineering Manager

Một điểm thú vị là interviewer tiếp tục kiểm tra technical fundamentals thay vì tách hoàn toàn technical và behavioral.

Phần trao đổi bằng tiếng Việt.

Event Loop

Một câu hỏi đáng chú ý:

Vì sao JavaScript Call Stack sử dụng Stack thay vì Queue?

Đây là dạng câu hỏi không chỉ kiểm tra việc ứng viên có nhớ Event Loop hay không, mà muốn xác nhận ứng viên có hiểu execution model phía dưới hay chỉ học thuộc sơ đồ:

Call Stack → Web APIs → Task Queue → Event Loop

Nếu hiểu bản chất, cần phân biệt được:

  • Call Stack quản lý execution context theo nguyên tắc LIFO
  • Queue được sử dụng ở các cơ chế scheduling như task/microtask queues
  • Event Loop phối hợp giữa execution hiện tại và các scheduled callbacks
  • Call Stack và callback queue giải quyết hai vấn đề khác nhau

Đây là một câu hỏi khá nhỏ nhưng có khả năng reveal depth tương đối tốt.

JWT

Có thêm discussion về JWT, đặc biệt các khía cạnh:

  • JWT dùng để làm gì?
  • Stateless authentication hoạt động ra sao?
  • Access token / refresh token
  • Token expiration
  • Storage ở browser
  • Security trade-off
  • Khi token bị compromise thì xử lý thế nào?

Next.js

Interviewer hỏi về:

  • Ưu điểm của Next.js
  • Nhược điểm / trade-off
  • Khi nào framework này phù hợp
  • Những vấn đề có thể phát sinh khi application lớn

Không nên trả lời Next.js chỉ bằng danh sách feature. Một discussion tốt hơn sẽ đi vào trade-off giữa:

Developer experience ↔ Runtime model ↔ Rendering strategy ↔ Deployment complexity

Web Components

Ngoài React ecosystem, interviewer còn hỏi về Web Components.

Đây là một signal khá thú vị: họ không chỉ kiểm tra framework-specific knowledge mà còn muốn biết ứng viên hiểu những primitive ở tầng Web Platform như thế nào.

Quy trình phỏng vấn

Quy trình phỏng vấn

Round 1 — HR Call

  • Giới thiệu vị trí
  • English screening
  • Self-introduction bằng tiếng Anh
  • Work experience
  • Career expectation

Round 2 — Online Assessment

  • Codility
  • 3 câu
  • 120 phút
  • Easy → Medium
  • Array / String

Round 3 — Technical Interview

  • Online
  • Tiếng Anh
  • 1 Senior Engineer + 1 Tech Lead
  • JavaScript
  • Event Loop
  • React
  • Security
  • Testing
  • Accessibility
  • CI/CD
  • Các frontend fundamentals khác

Round 4 — Behavioral / Technical

  • Online
  • Tiếng Việt
  • 1 Tech Lead + 1 Engineering Manager
  • Event Loop
  • JavaScript fundamentals
  • JWT
  • Next.js
  • Web Components
  • Các câu hỏi liên quan đến technical understanding và experience

Một điểm đặc biệt

Ứng viên có thể xin HR danh sách topic trước vòng Technical để chuẩn bị.

Tuy nhiên danh sách khá rộng, nên cách chuẩn bị hiệu quả hơn là xây nền tảng theo từng nhóm kiến thức thay vì cố đoán từng câu hỏi.

Questions I Remember

Các câu hỏi đáng chú ý

JavaScript

  • Event Loop hoạt động như thế nào?
  • Call Stack là gì?
  • Vì sao Call Stack sử dụng Stack thay vì Queue?
  • Task Queue và Microtask Queue khác nhau như thế nào?

React / Frontend

  • React hoạt động như thế nào ở mức cơ bản?
  • Những vấn đề về rendering / state cần lưu ý?
  • Testing frontend nên tiếp cận ra sao?
  • Accessibility cần được xử lý như thế nào trong web application?

Security

  • JWT là gì?
  • Ưu / nhược điểm của JWT?
  • Token nên được lưu ở đâu?
  • XSS / CSRF / CORS khác nhau như thế nào?
  • Frontend cần quan tâm những vấn đề security nào trong application banking?

Framework

  • Ưu điểm của Next.js?
  • Nhược điểm / trade-off của Next.js?
  • Khi nào nên sử dụng Next.js?
  • Web Components là gì?
  • Web Components khác gì với framework-based components?

Engineering

  • CI/CD pipeline của frontend thường gồm những bước nào?
  • Testing nên được đặt ở đâu trong pipeline?
  • Làm thế nào để đảm bảo code quality trước khi deploy?
  • Deployment và rollback nên được thiết kế như thế nào?

Accessibility

  • Accessibility là gì?
  • Vì sao semantic HTML quan trọng?
  • Keyboard navigation hoạt động như thế nào?
  • Screen reader tương tác với web application ra sao?

Outcome

Interview Intelligence

1. Công ty N đang test breadth khá mạnh

Nếu chỉ nhìn vào Round 3, đây không phải kiểu interview:

React → coding → vài câu JavaScript → hết.

Coverage trải dài:

JS Runtime → React → Browser → Security → Testing → Accessibility → CI/CD

Điều này cho thấy preparation nên được xây theo knowledge map thay vì học riêng lẻ từng framework.

Một Frontend Engineer có thể rất mạnh React nhưng vẫn bị hụt nếu không nắm:

  • Browser fundamentals
  • HTTP / networking
  • Security
  • Testing
  • Delivery pipeline
  • Accessibility

2. Banking environment làm Security trở thành một phần của frontend engineering

Với application thông thường, Security đôi khi được nhìn như responsibility chính của Backend.

Trong banking, frontend vẫn là một phần của attack surface.

Ví dụ:

User → Browser → Frontend → API → Backend

Frontend có thể xử lý authentication state, token, sensitive UI state, user input và communication với backend.

Do đó nên hiểu rõ:

  • Điều gì được phép tin tưởng ở client?
  • Điều gì bắt buộc phải enforce ở server?
  • Token exposure có consequence gì?
  • XSS có thể ảnh hưởng authentication như thế nào?
  • CORS giải quyết vấn đề gì và không giải quyết vấn đề gì?
  • Sensitive data có nên xuất hiện trong client logs hay browser storage không?

Đây là những câu hỏi có tính engineering hơn nhiều so với việc nhớ định nghĩa của từng security term.


3. Event Loop question là một ví dụ điển hình của “depth check”

Câu:

“Tại sao Call Stack dùng Stack mà không dùng Queue?”

nghe có vẻ đơn giản nhưng thực ra có thể phân biệt khá rõ giữa:

Memorization

và

Mental model

Ứng viên không chỉ cần biết Stack là LIFO, mà nên nối được với execution context:

Function call → execution context → nested call → return → caller resumes

LIFO phù hợp với cách các function call được lồng vào nhau và quay trở lại caller.

Trong khi đó Queue phù hợp hơn với việc xếp lịch các callback/task chờ execution.

Hiểu được relationship này sẽ giúp trả lời các câu hỏi Event Loop khác một cách tự nhiên hơn thay vì nhớ từng sơ đồ riêng biệt.


4. “Knowledge check” không có follow-up vẫn cần chuẩn bị theo chiều sâu

Một lỗi dễ mắc khi biết interviewer ít follow-up là chuẩn bị kiểu flashcard:

“JWT = JSON Web Token.”

“CORS = Cross-Origin Resource Sharing.”

“CI/CD = Continuous Integration / Continuous Delivery.”

Những câu trả lời đó chỉ đủ ở mức definition.

Ở interview thực tế, nên chuẩn bị ít nhất 3 tầng:

Level 1 — Definition

Nó là gì?

Level 2 — Mechanism

Nó hoạt động như thế nào?

Level 3 — Trade-off

Khi nào nên dùng, rủi ro gì và alternative là gì?

Ví dụ với JWT:

Definition: token format dùng để truyền claims.

Mechanism: server issue token, client gửi token trong các request phù hợp, server validate token.

Trade-off: stateless verification thuận tiện cho một số architecture nhưng token revocation, rotation, storage và exposure cần được thiết kế cẩn thận.

Chuẩn bị theo format này sẽ giúp cover được cả câu hỏi trực tiếp lẫn trường hợp interviewer bất ngờ đào thêm.


5. CI/CD là một signal khá quan trọng ở level Senior

Một Senior Frontend Engineer không nhất thiết phải là DevOps Engineer.

Nhưng nên hiểu application của mình đi từ:

local code → source control → CI → artifact → deployment → production

như thế nào.

Đặc biệt nên có mental model về:

  • Automated testing
  • Build
  • Environment separation
  • Secrets
  • Artifact
  • Deployment
  • Monitoring
  • Rollback

Và quan trọng nhất:

Nếu production deployment fail thì team phát hiện bằng cách nào và quay về version trước ra sao?

Đây là mindset của software delivery chứ không chỉ frontend coding.


Preparation Map

Nếu chuẩn bị cho một interview tương tự, có thể chia thành 8 nhóm:

01. JavaScript

Event Loop, Call Stack, Scope, Closure, Promise, async/await, prototype, execution context.

02. React

Rendering, state, hooks, reconciliation, performance, component architecture, testing.

03. Browser

HTTP, cookies, storage, CORS, caching, rendering pipeline, security model.

04. Security

XSS, CSRF, CORS, JWT, OAuth concepts, token storage, authentication vs authorization.

05. Testing

Unit, integration, E2E, mocking, test pyramid, flaky test.

06. Accessibility

Semantic HTML, keyboard navigation, ARIA, focus management, screen reader.

07. CI/CD

Pipeline, build, test, artifact, environment, deployment, rollback, secrets.

08. Framework / Web Platform

Next.js, SSR/CSR/SSG concepts, Web Components, browser APIs.

Nếu cover được 8 nhóm này ở mức definition → mechanism → trade-off, bạn sẽ có preparation framework tốt hơn nhiều so với việc cố học thuộc một list câu hỏi cố định.

Outcome

Bài interview này cho thấy một quy trình Frontend ở môi trường banking có thể có scope khá rộng: coding chỉ là một phần nhỏ, còn technical fundamentals, security, CI/CD và khả năng hiểu platform cũng được đặt khá nhiều trọng số.

Đặc biệt, việc được cung cấp topic list trước vòng Technical là một lợi thế về mặt preparation — nhưng đồng thời cũng cho thấy phạm vi kiến thức mà ứng viên cần cover khá rộng.

Với những role tương tự, nên chuẩn bị theo hướng hiểu cơ chế và trade-off, thay vì chỉ ghi nhớ definition của từng keyword.

· · ·
○

Anonymous contributor

✓ Reviewed by EmpSignal

Trải nghiệm thật, được EmpSignal kiểm duyệt.

Muốn đọc thêm những trải nghiệm như thế này?

Khám phá thư viện trải nghiệm dành cho thành viên EmpSignal.

Truy cập những câu chuyện chuyên sâu từ cộng đồng người đi làm.

Khám phá membership →

Trải nghiệm liên quan

Gợi ý dựa trên chủ đề, ngành và cấp bậc tương tự bài bạn vừa đọc.

Khám phá thêm trên EmpSignal

Ngoài đọc trải nghiệm, đây là những cách khác để kết nối và chuẩn bị tốt hơn.

Signal Talk

Ghép 1:1 ẩn danh với người cùng chủ đề — không lộ email, luôn là cuộc trò chuyện thật.

Tìm người để nói chuyện →

Signal Interview Prep AI

EmpSignal AI đọc job description, đối chiếu với trải nghiệm phỏng vấn thật, rồi chỉ ra câu hỏi, stories và điểm dễ bị hỏi sâu.

home.pillars.prepBadge

Bạn cũng có một câu chuyện?

Chia sẻ trải nghiệm phỏng vấn hoặc nơi làm việc của bạn — ẩn danh, không lộ email hay tên công ty.

Chia sẻ trải nghiệm →