Lần đầu phỏng vấn Anthropic mình tạch. Sau đó có một đồng nghiệp cũ đang làm bên phòng lab AI khác ngồi giảng cho một hồi, toàn những chuyện đáng lẽ mình phải biết từ trước khi vào phỏng vấn. Vài tuần sau thì mình có offer của cả Anthropic và OpenAI. Lần thứ hai mình đã làm khác đi thế nào, bài này kể chuyện đó.
Vòng code có 90 phút, hoàn toàn không phải mấy bài bảng trắng kinh điển. Họ bảo mình viết một kho key-value. Ban đầu chỉ có SET GET DELETE, roài thêm scan kèm bộ lọc, tiếp theo là TTL hết hạn theo timestamp, cuối cùng mới đến lưu file và nén dữ liệu. Tổng cộng 4 chặng, cái sau dựa vào cái trước.
Mình vừa xong chặng nào là người phỏng vấn nhét thêm ràng buộc vào chặng ấy, đúng kiểu đang giữa sprint thì đồng nghiệp lại đổi đặc tả. Móa, bực thật sự. Chị đồng nghiệp cũ bảo vòng screen OpenAI của chị cũng vậy, cho đúng 1 giờ để dựng thứ chạy được ngoài đời. Bên OpenAI còn một màn khác khá căng: đem hệ thống mình từng xây ra trình bày, xong họ lật từng quyết định lên hỏi cho tới cùng.
Cái làm mình vỡ trận ở phần code lại không phải đề khó. Vấn đề là phải nói được mình đang nghĩ gì. Có 90 phút thôi, một người cứ ngồi nhìn, 15 phút lại bồi thêm yêu cầu, nói cho mạch lạc kiểu gì nổi. Tới lần thứ hai mình đành tự ghìm cho chậm xuống. Chưa viết code vội, mình nói lại đề theo cách hiểu của mình rồi bày ra vài input mẫu trước.
Chị đồng nghiệp bắt tập đoạn này kỹ lắm, có khi mình đang nói thì chị ngắt luôn: "ok, còn corner case thì sao?" Thế là phải nghĩ thành tiếng ngay. Từ đó mình cứ phác hướng giải, ngó qua độ phức tạp rồi mới sờ bàn phím. Trước khi gõ còn hỏi người phỏng vấn xem đi hướng ấy có ổn không; được rồi thì viết chậm, xong lấy chính mấy ví dụ ban nãy mà debug.
Ready to ace your next interview?
InterviewMan gives you real-time AI answers during live interviews — undetectable on Zoom, Meet, and Teams.
Try InterviewMan FreeTập như vậy có cảm giác chậm khủng khiếp. Hóa ra còn nhanh hơn trước, ít nhất mình không chạy một mạch vào đường sai rồi ngồi viết lại từ đầu.
Đến system design thì quên hết những gì bạn đã học để thi system design kiểu FAANG đi, ở đây gần như không dùng được. Chẳng ai bảo mình thiết kế URL shortener, giá mà họ hỏi URL shortener còn đỡ. Chat service cũng không. Anthropic yêu cầu thiết kế hạ tầng inference phục vụ hàng triệu request, vừa phải giữ mức sử dụng GPU cao, vừa xử lý nhiều kích cỡ model khác nhau.
Thế là câu chuyện xoay quanh batching, quản lý bộ nhớ KV cache, route sang đúng instance và độ trễ cộng dồn thế nào qua một transformer pipeline. Người phỏng vấn mình từng XÂY chính serving stack của họ. Chính tay anh ấy viết nó luôn. Chỉ mất 2 phút là anh biết ngay mình ôn từ mấy video YouTube chung chung.
Chị đồng nghiệp cũ cũng đã cảnh báo rồi: bài system design ở OpenAI của chị là scale inference, còn người hỏi bên đó cũng có kinh nghiệm trực tiếp với hệ thống production thật. Bạn phải thực sự từng làm mảng này. May là ở công việc trước mình đã đụng vào serving infrastructure nên còn cứu được, nhưng vẫn cần vài tuần để sắp xếp lại kiến thức, đủ để nói cho rõ mà không lan man suốt 20 phút.
Một mẹo nhỏ: nếu cần distributed queue mà chưa từng dùng, cứ gọi nó là "distributed queue". Đừng tự chui vào những chi tiết mình không bảo vệ nổi.
Vậy nên ở lần phỏng vấn Anthropic thứ hai và vài buổi mock OpenAI, mình mở InterviewMan. Trong bài code, công cụ phát hiện mình quên kiểm tra TTL lúc đọc trước khi chuyển sang level kế tiếp. Đúng kiểu lỗi mình hay bỏ sót vì đầu óc chỉ chăm chăm tới chặng 4. Tới vòng safety, nó đưa ra các ý về alignment, nhờ vậy lần này mình trả lời được câu hỏi về tool use và hallucinations mà không đứng hình.
Ở system design, người phỏng vấn còn chưa đọc xong đề thì nó đã bắt được GPU usage và batching là hai điểm chính. Mình kiểm tra dock, process list và Activity Monitor khi dùng Zoom, Replit lẫn CodeSignal. Không thấy gì cả. Giá là $12/tháng nếu trả theo năm, $144 cho 1 năm, không giới hạn session, bộ đếm công khai ghi 57,000 người dùng, 4.8 sao từ 257 bài review và có hơn 20 tính năng stealth tích hợp sẵn.
Interview Coder giá $299 chỉ lo phần code, mà như vậy vô dụng ở vòng safety và system design, hai phần có thể chiếm khoảng một nửa điểm số tại những nơi này. Nếu muốn đọc một bài bao quát hơn, gần chủ đề nhất là so sánh InterviewMan với Interview Coder 2.
Behavioral là phần nhiều người hiểu sai nhất, bởi thật ra nó không hẳn là behavioral. Anthropic gửi tài liệu về các giá trị của họ trước buổi phỏng vấn và họ mặc định mình đã đọc. Câu đầu tiên hỏi failure mode nào của LLM làm mình lo nhất; câu nối tiếp là điều gì thay đổi khi cho một agent quyền dùng công cụ.
STAR chẳng giúp được gì, mấy câu chuyện mình chuẩn bị về xung đột trong nhóm cũng rơi tõm. Họ muốn biết bạn có thật sự quan tâm code của mình sẽ gây ra chuyện gì sau khi ship hay không. OpenAI cũng kiểm tra điều này.
Nói luôn về timeline vì ai cũng hỏi. Từ cuộc gọi với recruiter tới lúc Anthropic trả lời mất khoảng 3 tuần. Chị đồng nghiệp cũ bảo OpenAI mất 6 tuần, chờ gần chết. Anthropic chia final round thành 2 buổi riêng, mỗi buổi nửa ngày với 2 hoặc 3 vòng. OpenAI gom vào 1 ngày dài. Cả hai bên im bặt giữa các chặng là chuyện bình thường, recruiter ngập việc.
Nếu nhận offer, hãy xin 30 đến 45 phút với một trong các interviewer, dành hẳn một buổi chỉ để hỏi, rồi nghe kỹ vì tới lúc đó họ đang bán công ty cho bạn.
Mình biết chuyện dùng AI trong vòng phỏng vấn thật sẽ có rất nhiều ý kiến khác nhau. Bài này chủ yếu kể góc nhìn phỏng vấn tại frontier lab, trong các vòng thật chứ không phải tình huống giả định. Với mình thì nó có tác dụng. Không có nghĩa là với bạn cũng vậy.
Ready to Ace Your Next Interview?
Join 57,000+ professionals using InterviewMan to get real-time AI assistance during their interviews.

