← Trở về trải nghiệm

Interview Experience

MIỄN PHÍ

Software Engineer

Senior · Technology / Software · Việt Nam

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

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

Vai tròSoftware Engineer
Cấp độSenior
NgànhTechnology / Software
Quốc giaViệt Nam
Năm2026
Số vòng3
Chủ đề
AlgorithmsData StructuresSystem DesignProduct Case

Gần 2 tiếng technical interview được dành để đào sâu website optimization và những project cũ trong CV, trước khi process chuyển sang behavioral và Feature Flag Design.

Phỏng vấn Frontend tại Cty O: Deep Dive, Feature Flag

My Experience

Phỏng vấn Frontend Engineer tại Công Ty O

Công Ty O là một công ty cybersecurity có trụ sở tại Thụy Điển, với một team development tại Việt Nam tập trung xây dựng application phục vụ người dùng.

Interview process ban đầu dự kiến gồm 2 vòng, nhưng cuối cùng ứng viên trải qua 3 vòng:

Technical → Behavioral → Technical + Behavioral

Điểm đáng chú ý nhất của process là interviewer không dành quá nhiều thời gian cho các câu hỏi Frontend theo kiểu trivia. Thay vào đó, phần technical tập trung rất mạnh vào past experience, đặc biệt là những project liên quan đến website optimization mà ứng viên đã trực tiếp thực hiện.

Ở vòng cuối, technical discussion chuyển sang một bài design thực tế hơn: thiết kế Feature Flag cho một Frontend application.

Đây không phải dạng System Design quy mô lớn, nhưng lại là một bài khá sát với production vì cần suy nghĩ về cách frontend và backend communicate, cách quản lý configuration và cách release một feature mà không ảnh hưởng tới toàn bộ user.


Frontend Fundamentals chỉ là phần mở đầu

Vòng technical bắt đầu bằng một số câu hỏi Frontend fundamentals khá quen thuộc:

  • let, const, var
  • Cookie
  • Local Storage
  • Session Storage
  • Browser storage

Những câu hỏi này tương đối cơ bản, nhưng thường được dùng để kiểm tra xem candidate có thực sự nắm những behavior nền tảng của browser hay chỉ quen sử dụng framework ở abstraction layer cao hơn.

Ví dụ, với storage, câu hỏi không chỉ dừng ở việc nhớ định nghĩa mà có thể mở rộng sang:

  • Khi nào nên sử dụng Cookie?
  • Khi nào dùng Local Storage?
  • Session Storage khác gì Local Storage?
  • Dữ liệu nào không nên lưu ở client?
  • Những vấn đề security nào cần cân nhắc?

Đây là nhóm kiến thức tưởng đơn giản nhưng khá dễ xuất hiện trong Frontend interview vì liên quan trực tiếp đến application architecture.


Resume Deep Dive mới là phần chiếm phần lớn thời gian

Sau phần fundamentals, interview chuyển sang past experience và đây mới là phần chiếm phần lớn thời gian của vòng đầu.

Ứng viên có nhiều kinh nghiệm về website optimization, vì vậy interviewer dành gần 2 tiếng để đào sâu vào chủ đề này.

Các câu hỏi không chỉ xoay quanh việc:

“Bạn đã optimize website như thế nào?”

mà có thể đi sâu hơn vào reasoning phía sau:

  • Bottleneck ban đầu nằm ở đâu?
  • Làm thế nào phát hiện bottleneck?
  • Metric nào được dùng để đánh giá?
  • Vì sao chọn approach đó?
  • Candidate trực tiếp implement phần nào?
  • Có những alternative nào?
  • Optimization có trade-off gì?
  • Kết quả trước và sau được đo như thế nào?

Đây là kiểu technical interview mà CV trở thành question bank.

Nếu CV ghi một achievement như:

“Improved website performance by 40%”

thì candidate cần chuẩn bị để giải thích được 40% đó thực chất là metric gì, baseline trước optimization là bao nhiêu, cách đo như thế nào và contribution cụ thể của mình nằm ở đâu.

Interviewer cũng quay lại một số project từ khoảng 3–5 năm trước.

Điều này tạo ra một preparation rule khá quan trọng:

Những gì đã ghi vào CV đều có khả năng trở thành câu hỏi.

Không nhất thiết phải nhớ từng dòng code của một project cũ, nhưng candidate nên nhớ được:

Problem → Architecture → Contribution → Technical Decision → Result

Nếu không phân biệt được đâu là quyết định của bản thân và đâu là decision đã được team đưa ra từ trước, resume deep dive rất dễ trở thành một vòng hỏi đáp khá khó.


Behavioral Interview bằng tiếng Anh

Vòng 2 diễn ra online với một HR và một Senior Frontend Engineer ở châu Âu.

Senior FE bắt đầu bằng một số câu hỏi đơn giản về past experience. Sau khi xác nhận ứng viên nắm khá chắc những gì đã làm, phần technical được rút ngắn và HR tiếp tục với behavioral interview.

Các câu hỏi thuộc nhóm khá kinh điển:

  • Tại sao bạn apply vào vị trí này?
  • Tại sao bạn nghỉ công ty cũ?
  • Kể về một lần bạn fail.
  • Kể về một lần conflict với đồng nghiệp.
  • Bạn đã giải quyết conflict như thế nào?
  • Gần đây bạn đã học được gì?
  • Expectation của bạn ở công việc mới là gì?

Theo chia sẻ của ứng viên, đây lại là phần khó hơn dự kiến.

Dù đã chuẩn bị trước một số câu trả lời, khi phải kể lại câu chuyện bằng tiếng Anh trong thời gian thực, việc vừa nhớ context, vừa structure câu trả lời và xử lý follow-up khiến phần behavioral trở nên khó hơn nhiều so với việc chuẩn bị answer trước ở nhà.

Một cách chuẩn bị hữu ích cho dạng interview này là xây dựng một story bank gồm một số câu chuyện thực tế:

Achievement · Failure · Conflict · Ownership · Technical Decision · Leadership · Learning

Mỗi câu chuyện nên có thể kể ngắn gọn theo flow:

Context → Problem → Action → Result → Learning

Sau đó mới mở rộng khi interviewer hỏi sâu.


Feature Flag Design

Vòng cuối kết hợp giữa technical và behavioral, với Engineering Manager của team và một Fullstack Developer ở châu Âu.

Một câu hỏi khá thú vị là:

Nếu lead một team, bạn sẽ chọn team gồm Frontend + Backend developers hay Fullstack developers?

Đây không phải câu hỏi có một đáp án tuyệt đối.

Một team Fullstack có thể giúp giảm handoff và tăng ownership end-to-end, đặc biệt khi product và team còn nhỏ.

Trong khi đó, Frontend/Backend specialization có thể phù hợp hơn với những domain cần technical depth cao hoặc khi team đã đủ lớn để specialization tạo ra hiệu quả rõ rệt.

Vì vậy, điều interviewer có thể quan tâm hơn là reasoning phía sau lựa chọn:

  • Team size
  • Product complexity
  • Domain boundaries
  • Ownership
  • Communication overhead
  • Skill distribution
  • Deployment model
  • Khả năng scale team

Phần technical đáng chú ý nhất là bài design Feature Flag cho một Frontend application.

Candidate cần trình bày các component chính, cách Frontend communicate với Backend và cách feature flag được sử dụng trong application.

Một flow cơ bản có thể hình dung:

Frontend → Config / Feature Flag API → Flag Evaluation → Feature

Ví dụ, thay vì hard-code:

newFeature = true

application có thể lấy configuration từ backend hoặc một feature flag service, từ đó cho phép team bật/tắt feature mà không nhất thiết phải release lại toàn bộ frontend.

Từ đây bài toán có thể mở rộng khá nhiều:

  • Làm sao rollout feature cho một nhóm user?
  • Nếu muốn release cho 10% traffic thì xử lý thế nào?
  • Nếu Feature Flag service bị down thì frontend làm gì?
  • Có nên cache configuration không?
  • Nếu configuration bị stale thì sao?
  • Làm sao rollback một feature nhanh?
  • Khi feature đã được release 100%, khi nào nên remove flag khỏi code?

Đây là điểm thú vị của dạng bài này: nhìn bề ngoài chỉ là một boolean true/false, nhưng khi đặt trong production context, Feature Flag liên quan tới release strategy, caching, reliability, rollout và technical debt.

Do giới hạn thời gian, phần code dự kiến sau design đã được bỏ qua.


Điều đáng chú ý nhất của process

Process này cho thấy Frontend interview không nhất thiết phải xoay quanh framework-specific questions.

Ở level Mid/Senior, interviewer có thể quan tâm nhiều hơn đến:

Bạn đã thực sự làm gì?

Vì sao bạn chọn cách đó?

Bạn hiểu hệ thống đến đâu?

Bạn có thể defend technical decision của mình không?

Và quan trọng không kém:

Bạn có thể giải thích những điều đó một cách rõ ràng hay không?

Đặc biệt với resume deep dive, việc có một CV chứa nhiều achievement và project mạnh có thể trở thành lợi thế, nhưng đồng thời cũng tạo ra rất nhiều điểm để interviewer đào sâu.

Vì vậy, preparation không chỉ là LeetCode hay đọc lại Frontend fundamentals. Một phần quan trọng không kém là review lại chính CV của mình và chuẩn bị để giải thích được từng technology, từng project và từng con số đã đưa vào đó.

Quy trình phỏng vấn

Quá trình phỏng vấn

Quy trình tại Công Ty O ban đầu dự kiến gồm 2 vòng, nhưng ứng viên trải qua tổng cộng 3 vòng:

Round 1: Technical → Round 2: Behavioral → Round 3: Technical + Behavioral

Round 1 — Technical

Phỏng vấn onsite tại văn phòng Hà Nội với một Lead Frontend Engineer và Managing Director, toàn bộ bằng tiếng Anh.

Phần đầu là một số câu hỏi Frontend fundamentals như let, const, var, Cookie, Local Storage và Session Storage.

Sau đó interview chuyển sang past experience. Vì ứng viên có nhiều kinh nghiệm về website optimization, interviewer dành gần 2 tiếng để đào sâu vào chủ đề này.

Các project cũ cũng được hỏi lại, bao gồm cả những project từ khoảng 3–5 năm trước. Phần interview chủ yếu tập trung vào việc ứng viên thực sự đã làm gì, tại sao chọn approach đó và hiểu technical decision của mình đến đâu.

Ngoài technical discussion còn có một số behavioral questions như:

  • Tại sao bạn nghỉ công ty cũ?
  • Expectation của bạn là gì?
  • Gần đây bạn đã học được gì?

Round 2 — Behavioral

Vòng 2 diễn ra online với một HR và một Senior Frontend Engineer ở châu Âu.

Senior FE hỏi một số câu liên quan đến past experience. Sau khi thấy ứng viên nắm khá chắc những vấn đề đã làm, interviewer chuyển phần lớn thời gian cho HR.

HR tập trung vào behavioral questions:

  • Tại sao bạn apply vào vị trí này?
  • Kể về một lần bạn fail.
  • Kể về một lần conflict với đồng nghiệp.
  • Bạn đã resolve conflict như thế nào?
  • Bạn học được gì từ trải nghiệm đó?

Theo chia sẻ của ứng viên, đây là vòng khó hơn dự kiến vì phải xử lý câu trả lời bằng tiếng Anh trong thời gian thực.

Round 3 — Technical + Behavioral

Thông thường Công Ty O chỉ có 2 vòng, nhưng ứng viên được mời thêm một vòng với Engineering Manager của team và một Fullstack Developer ở châu Âu.

Vòng này tiếp tục hỏi về past experience và behavioral, đồng thời có một số câu hỏi mở về team structure và engineering decision.

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

Nếu lead một team, bạn sẽ chọn Frontend + Backend developers hay Fullstack developers?

Phần technical tập trung vào Feature Flag Design cho một Frontend application.

Ứng viên cần trình bày:

  • Các component chính
  • Cách quản lý Feature Flag
  • Frontend và Backend communicate với nhau như thế nào
  • Configuration được truyền xuống application ra sao
  • Cách release và control feature

Ban đầu có dự kiến phần coding sau design, nhưng do giới hạn thời gian nên phần implementation được bỏ qua.

Questions I Remember

Câu hỏi bạn còn nhớ

Frontend Fundamentals

  • let, const, var khác nhau như thế nào?
  • Cookie là gì?
  • Local Storage khác Session Storage như thế nào?
  • Khi nào nên sử dụng Cookie, Local Storage và Session Storage?

Past Experience / Website Optimization

  • Bạn đã làm những project nào?
  • Trong project này bạn trực tiếp phụ trách phần nào?
  • Vì sao chọn technology / approach này?
  • Website được optimize như thế nào?
  • Bottleneck nằm ở đâu?
  • Làm thế nào đo được hiệu quả của optimization?
  • Achievement trong CV được tính như thế nào?
  • Kết quả trước và sau optimization khác nhau ra sao?
  • Những project từ 3–5 năm trước bạn đã làm gì?
  • Nếu làm lại project đó hôm nay, bạn có thay đổi technical decision nào không?

Behavioral

  • Tại sao bạn nghỉ công ty cũ?
  • Tại sao bạn apply vào vị trí này?
  • Expectation của bạn ở công việc mới là gì?
  • Gần đây bạn đã học được gì?
  • Kể về một lần bạn fail.
  • Kể về một lần bạn conflict với đồng nghiệp.
  • Bạn đã resolve conflict như thế nào?

Technical / Architecture

  • Nếu lead một team, bạn chọn Frontend + Backend developers hay Fullstack developers? Vì sao?
  • Design Feature Flag cho một Frontend application.
  • Feature Flag system cần những component nào?
  • Frontend và Backend communicate với nhau như thế nào?
  • Feature Flag configuration được quản lý ở đâu?
  • Làm thế nào rollout một feature cho một nhóm user?
  • Nếu Feature Flag service không available thì frontend xử lý thế nào?

Outcome

Kết quả

Ứng viên hoàn thành interview process gồm 3 vòng.

Theo chia sẻ của ứng viên, trải nghiệm này giúp nhận ra một điểm cần cải thiện khá rõ: behavioral interview, đặc biệt là khả năng trình bày những câu chuyện về failure, conflict và experience bằng tiếng Anh.

Về technical, điểm nổi bật của process là interviewer dành rất nhiều thời gian để deep dive vào past experience, thay vì chỉ kiểm tra kiến thức Frontend thông qua các câu hỏi lý thuyết.

Vòng cuối với Feature Flag cũng là một dạng bài đáng chú ý cho Frontend Engineer vì yêu cầu candidate suy nghĩ vượt ra ngoài UI implementation, đi vào cách feature được configuration, rollout và control trong một application thực tế.

Đây là một process khá rõ về một nguyên tắc quan trọng khi phỏng vấn Mid/Senior:

CV không chỉ là thứ để HR screening — nó có thể trở thành toàn bộ question bank của interviewer.

· · ·
○

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 →