năm vòng. năm kỹ năng hoàn toàn khác nhau bị đem ra test. mình chuẩn bị chắc được một vòng rưỡi. lol. đó gần như là toàn bộ câu chuyện, nhưng để mình kể cho ra hồn vì mình vẫn đang tiêu hóa xem rốt cuộc chuyện gì vừa xảy ra.
ông bạn Jake của mình làm ở Stripe. ở đó được hai năm rồi. trước đó bọn mình làm cùng nhau ở một startup trên đường Valencia ở Mission, bốn đứa chen chúc vào một cụm bàn WeWork, runway mười một tháng, đốt mất sáu. công ty chết. Jake đáp xuống Stripe còn mình thì nhảy lung tung. anyway, Jake kéo mình ngồi ở Equator Coffee ở SoMa vào một ngày thứ bảy. gọi cold brew. bảy đô MỖI LY. cho cà phê. ổng bảo "ông ơi đừng cày leetcode cho Stripe, họ còn chẳng test cái đó" và mình gật đầu bảo ừ chuẩn rồi rồi mở neetcode NGAY GIÂY ổng vừa đi. vì mình đúng là một thằng hề không biết nghe lời.
đến vòng integration. đây là thứ quật mình gãy luôn và mình không hề phóng đại dù chỉ một chút. họ mở tài liệu API thật của Stripe trên màn hình chia sẻ, đưa cho mình codebase dở dang của người khác, rồi bảo thêm tính năng này vào. bốn mươi lăm phút. não mình không tài nào bắt nhịp được. luôn. mình ngồi nheo mắt nhìn mấy function signature chưa từng thấy, cuộn lên, cuộn xuống, cuộn ngược lên nữa mà không hấp thụ nổi gì cả. zero thông tin. bạn biết cái cảm giác đọc cùng một dòng bốn lần không? CHÍNH NÓ. chỉ khác là có interviewer ngồi đó ghi lại từng lỗi mình mắc. cảm giác tệ nhất. mình từng bomb một buổi onsite của Google thảm đến mức recruiter ghost luôn, vậy mà vòng này còn tệ hơn.
công ty nào cũng nói họ test theo kiểu khác mà đúng không. Google nói vậy. Meta nói vậy. rồi ai cũng quẳng cho bạn một bài medium hard trên CoderPad và đi tiếp. nhưng Stripe nói vậy là họ làm thật. Jake đúng. hai tháng rồi mà mình nghĩ lại vẫn còn cay, nói thật.
đợi đã, để mình quay lại vòng bug bash. vòng này xứng đáng có hẳn một đoạn riêng vì không có thứ gì, KHÔNG CÓ THỨ GÌ, trong sáu tháng ôn phỏng vấn chuẩn bị mình cho nó cả. họ đưa cho bạn một file đầy code thanh toán của người khác rồi interviewer nói "tìm bug đi." một tiếng. bug thật kéo ra từ codebase thật của họ luôn thì phải. bạn đã bao giờ nhìn một trang Where's Waldo mà mắt cứ trượt qua ổng mãi chưa? y chang. đọc đống code thanh toán đầy bug đó của họ đúng là cảm giác như vậy. mình đọc cùng một nhánh validation hai lần và cả hai lần đều bỏ sót cái lỗ hổng đó. cả hai lần luôn! đây không phải kỹ năng thuật toán. zero phần trăm kỹ năng thuật toán. đây là kỹ năng kiểu "bạn đã từng dành nhiều năm đọc production code tệ lúc 2 giờ sáng vì PagerDuty réo và có thứ gì đó đang cháy chưa" và với mình à? nope. Jake cứ bảo mình bỏ leetcode đi mà luyện đọc code tệ. InterviewMan chỉ ra đúng cái lỗ validation mình bỏ sót. hơi nhục là một công cụ mười hai đô một tháng lại nhìn ra thứ mắt mình không thấy, nhưng mình cũng chẳng định bomb cả vòng chỉ vì sĩ diện.
quay lại integration. JAKE. Jake cảnh báo mình về vòng này nhiều nhất. ổng ngồi ở Equator bốn mươi phút chỉ để nói về nó với mình. bốn mươi phút. mình ngồi đó với ly cold brew đắt vô lý của mình và nghĩ ok Jake bình tĩnh nào, làm gì khác vòng coding bình thường đến thế được. lol. sai. sai quá sai tới mức giờ nghĩ lại còn buồn cười. bạn rơi vào một đống code chưa từng thấy và phải ship một thứ sạch sẽ, khớp với cách dev trước đó viết. chẳng có thuật toán nào cho chuyện đó cả. mình search neetcode với "stripe integration practice" và ra đúng zero kết quả, thế là cũng đủ nói lên nhiều thứ rồi. Jake lúc nào cũng bảo mấy người chỉ cày thuật toán sẽ lộ nguyên hình ở vòng này và yep. lộ nguyên hình. đó chính xác là chuyện đã xảy ra với mình. InterviewMan chỉ mình đúng API endpoint trước khi mình tự tìm ra, chắc cứu được tầm năm phút? khó nói chính xác lắm. nếu bạn muốn chuẩn bị cho vòng này thì cứ mở tài liệu API của Stripe trước đi. không phải để học thuộc. chỉ cần quen bố cục thôi. PaymentIntents ở đâu. webhooks được ghi ở đâu. kiểu vậy. thế cũng đã cứu đúng năm phút đó rồi mà không cần tool lol.
vòng coding. CoderPad. ba phần chồng lên nhau. phần một cơ bản, ổn, whatever. phần hai thêm đống liên quan đến payment và ok yeah, đến đây là mình phải nghĩ thật. phần ba là edge case của retry logic và trời ơi. TRỜI ƠI. nó xấu đi rất nhanh. điều làm mình rối nhất ở vòng coding của Stripe là interviewer quan tâm đến CÁCH mình viết code hơn là mình giải xong nhanh cỡ nào. cô ấy theo dõi cả tên function của mình luôn. xem mình có tách mọi thứ thành các phần dễ đọc không hay nhét hết vào một function (mình có thể đã nhét vài thứ thật). khác hẳn Google, nơi bạn đua tới O(n), chứng minh toán học, và chả ai trên đời quan tâm biến của bạn tên temp2 hay gì. Jake nói trước vòng của mình là "hãy viết như thể đồng nghiệp khó tính nhất đang review PR của ông" và trời ạ. lời khuyên TỐT NHẤT. lời khuyên tốt nhất mà bất kỳ ai từng cho mình cho bất kỳ buổi phỏng vấn nào luôn. InterviewMan đã vạch sẵn phần hai khi mình còn đang làm nốt phần một, nên mình cứ thế tiến tiếp. liệu mình có tự giải được không? có thể. nhưng mấy edge case retry ở phần ba ấy, không đời nào mình tới được đó nếu không có quãng thời gian mình tiết kiệm được. không đời nào.
system design. họ dùng Whimsical, cái mà mình thật ra lại thích, vì đa số virtual whiteboard cho cảm giác như đang vẽ bằng cục xà phòng ướt lol. rate limiting ở quy mô lớn. distributed state. hai server bất đồng xem client đã chạm limit hay chưa. không phải bài URL shortener trên YouTube mà ai với mẹ của ai cũng luyện bốn trăm lần rồi. Jake bảo team thật của ổng còn cãi nhau về rate limiting trong standup, nghĩ cũng khá điên. mình thấy ổn ở vòng này vì hồi Jake còn chuẩn bị bọn mình từng whiteboard ở Equator hai lần mỗi tuần. bọn mình vẽ diagram lên khăn giấy nhiều đến mức barista chắc chắn một trăm phần trăm nghĩ bọn mình đang lên kế hoạch cướp tiệm.
behavioral. STAR chuẩn bài. đánh đổi giữa tốc độ và chất lượng. nếu bạn đã làm phần chuẩn bị behavioral cho Amazon thì ổn thôi. vòng này không có gì lạ.
vậy đây là điều mình thật sự rút ra từ tất cả chuyện này. năm vòng. năm năng lực hoàn toàn khác nhau bị đem ra test. phần chuẩn bị cho Google của mình chỉ phủ được một vòng. behavioral của Amazon phủ thêm một vòng nữa. có một kế hoạch chuẩn bị phỏng vấn vững cho mọi kiểu vòng là cách duy nhất để xử lý độ rộng của Stripe. bug bash, integration, và một bài system design thực sự chứ không phải cái URL shortener trên YouTube kia, ba thứ đó mình đúng nghĩa là chưa từng luyện lấy một lần vì chẳng công ty nào khác test chúng. còn nhớ cái lỗ validation mình bỏ sót hai lần không? InterviewMan bắt được nó. còn nhớ năm phút trong vòng integration khi mình không tìm ra đúng endpoint không? đó là khác biệt giữa làm xong và không làm xong vì mọi vòng của Stripe đều chạy theo đồng hồ. trong lúc coding, nó đã vạch phần hai ra rồi khi mình vẫn còn đang ở phần một. mình kiểm tra dock, danh sách process, screen recording trên cả CoderPad lẫn Zoom. chẳng thấy gì cả. mười hai đô một tháng nếu lấy gói năm. 57.000 người dùng. 20+ stealth features. một tool chỉ dành cho coding giá hai chín chín một tháng có lẽ chỉ phủ được một trong năm kiểu vòng, và phép tính đó rõ ràng không hợp với Stripe.
Jake bảo mình bỏ leetcode đi và luyện đọc code tệ. mình thật sự ước là mình nghe lời ngay từ lần đầu lol.
Ready to Ace Your Next Interview?
Join 57,000+ professionals using InterviewMan to get real-time AI assistance during their interviews.
