được rồi, tôi đã nhận được 47 tin nhắn từ Marcus trong một tuần về việc chuẩn bị phỏng vấn kỹ sư phần mềm Uber của tôi. bốn mươi bảy. có lẽ tôi đã đọc ba trong số đó. ném bom cuộc phỏng vấn. hai trong số bốn vòng, tổng số khuôn mặt. Marcus nếu bạn đang đọc nội dung này: có. Tôi biết. bạn đã nói với tôi như vậy bạn có thể dừng lại.
bối cảnh nhanh về Marcus -- anh ấy thực tập tại Uber vào mùa hè năm 2024 về cơ sở hạ tầng của Eats, mùa hè đó họ đã tái cơ cấu đội ngũ điều phối. vì vậy khi anh ấy nhắn tin cho tôi lúc 11 giờ tối với nội dung "nghiên cứu sản phẩm Ibrahim" và "xem cách vận hành công văn" và "đọc về giá tăng đột biến", anh ấy thực sự biết mình đang nói về điều gì. như thực sự biết. và anh ấy đã định dạng iMessages của mình bằng dấu đầu dòng? ai làm vậy haha. Marcus thì có.
dù sao thì tôi đã làm gì khi phớt lờ những tin nhắn này? ngồi trên giường lúc 2 giờ sáng với những miếng domino pepperoni lạnh ngắt trên đùi. Thỏa thuận trung bình 7,99 USD. đã đặt hàng rất nhiều trong tuần đó Dominos đã gửi cho tôi thông báo đẩy vào lúc 1 giờ sáng như này Ibrahim, bạn có đói không? (vâng. luôn luôn.) mài phương tiện LeetCode. mắt lác. 120 vấn đề trong ba tuần và KHÔNG có bài đăng nào trên blog của Uber được đọc. mài LeetCode không có kế hoạch là cách bạn lãng phí thời gian. không có thời gian trong ứng dụng để suy nghĩ về việc kết hợp. chưa bao giờ tìm kiếm trên Google "Uber điều phối như thế nào" chỉ mất bốn giây. tôi đã chuẩn bị sẵn mảng, cây, danh sách liên kết, DP. đó là nó. đó là toàn bộ kế hoạch và đó là một kế hoạch khủng khiếp.
tôi đến văn phòng SF và tôi đã run rẩy rồi. Nhân tiện, Priya cũng đã cảnh báo tôi về điều này. Priya là bạn đại học của tôi (à, ban đầu là bạn gái của bạn cùng phòng thời đại học của tôi, giờ là một trong những người bạn thân nhất của tôi, cuộc sống thật kỳ lạ). cô ấy luôn nói rằng cô ấy bước vào các cuộc phỏng vấn để cố gắng học hỏi chứ không phải cố gắng để được tuyển dụng. và tôi nhớ đã đồng ý Priya đó là một triết lý dễ thương nhưng tôi cần một CÔNG VIỆC. hóa ra cô ấy đã đúng? vâng. cô ấy đã đúng. khi bạn cần một lời đề nghị đến nỗi não bạn như bị khóa lại. bạn quên những từ mà bạn sử dụng hàng ngày. chữ viết tay trên bảng trắng của bạn trông giống như bạn đang gặp một sự kiện y tế. xin lỗi Priya. bạn đã đúng. tôi nợ bạn bữa tối.
vòng hành vi đã hủy hoại tôi. tôi đã có một câu chuyện thực sự hay về việc tối ưu hóa thời gian phản hồi của API tại công ty trước đây của tôi. tôi đã hoán đổi toàn bộ hàng đợi tin nhắn, tốc độ thực sự có thể đo lường được. người phỏng vấn của tôi hỏi "số liệu nào đã thay đổi" và tôi nói "đáng kể". và cô ấy chỉ. nhìn chằm chằm vào tôi. sự im lặng chết chóc trong khoảng ba giây. "Bao nhiêu." và tôi đang ngồi đó tính nhẩm, cố gắng nhớ những con số độ trễ P99 mà tôi chưa bao giờ viết ra vì hình như quá khứ tôi ghét tôi trong tương lai. Marcus đã nói với tôi điều này chính xác sẽ xảy ra. anh ấy nói những người phỏng vấn Uber muốn bạn nói những câu như "tôi đã cắt P99 từ 340 mili giây xuống còn 90 mili giây sau khi đổi RabbitMQ lấy Kafka" và tôi đã xuất hiện với câu "tôi đã làm mọi việc nhanh hơn". làm tốt lắm Ibrahim. họ cũng gắn mọi câu hỏi về hành vi với giá trị công ty của họ, bị ám ảnh bởi chuyến đi và bắt tay vào xây dựng nó bằng cả trái tim, và tôi phát hiện ra điều này TRONG suốt cuộc phỏng vấn vì tôi không đọc trang tuyển dụng, haha.
điều lớn nhất tôi học được từ vòng đó. VIẾT SỐ CỦA BẠN XUỐNG. tôi không thể nhấn mạnh điều này đủ. trước khi bạn bước vào, chỉ cần xem lại các dự án cũ. ngồi đó trong hai mươi phút. những gì đã di chuyển. bằng bao nhiêu. tại sao bạn chọn Kafka thay vì RabbitMQ hay gì đó. lấy nó ra giấy. một tờ giấy nhớ, một chiếc khăn ăn, tôi không quan tâm. bởi vì đây là điều sẽ xảy ra nếu bạn không làm như vậy: bạn trống rỗng. người phỏng vấn của bạn hỏi "số liệu nào đã thay đổi" và bạn nói "đáng kể" và sau đó chỉ có ba giây. Không có gì. và cả hai bạn đều biết điều đó. cũng đừng bịa chuyện. họ sẽ nhấn vào mọi con số và bạn sẽ bị cuốn vào hai lần theo dõi. tôi đã thử Phương pháp STAR. một cách trung thực, không làm gì cho tôi cả. có thể nó có tác dụng với người khác. tôi đã có những câu chuyện có thật, thậm chí là những câu chuyện hay, tôi chỉ không thể nhớ ra chi tiết ra khỏi đầu khi ai đó nhìn chằm chằm vào tôi. vậy ừ. ghi chú dán. trên máy tính xách tay của bạn. trên điện thoại của bạn. bất cứ nơi nào.
viết mã là một điểm sáng của tôi. Uber bắt đầu với CodeSignal OA, bốn vấn đề trong bảy mươi phút. hai cái đầu tiên là nội dung mảng cơ bản, tôi đã hạ gục chúng trong tổng cộng khoảng mười hai phút. thứ ba là một cửa sổ trượt và tôi đã giải quyết được chính xác loại vấn đề đó sáu ngày trước đó, thật may mắn. thứ tư là việc duyệt biểu đồ mất 25 phút và tôi gửi bài chỉ còn khoảng 40 giây, lòng bàn tay đổ mồ hôi. Marcus có DP ở lần thứ tư nên nhóm sẽ xoay vòng. các vấn đề về lập trình động tạo ra các câu hỏi phỏng vấn khủng khiếp một cách trung thực. hoặc bạn đã biết thủ thuật này hoặc bạn chỉ ngồi đó nhìn chằm chằm vào nó. không ai sẽ phát minh ra giải pháp DP tối ưu ngay từ đầu trong khi người phỏng vấn của họ theo dõi.
màn hình điện thoại là của một kỹ sư Uber thực sự. lưới có trọng số với các chướng ngại vật, mức độ trung bình, sau đó theo dõi thêm thứ tự ưu tiên và đột nhiên thật khó. Tuy nhiên, điều khiến tôi mất cảnh giác là người sàng lọc của tôi NÓI nhiều đến mức nào. tôi vừa mới làm một Màn hình điện thoại Google nơi kỹ sư nói có lẽ mười lăm từ trong suốt bốn mươi lăm phút, hoàn toàn im lặng trong khi tôi viết mã, có cảm giác như tôi đang làm bài kiểm tra trong một căn phòng trống. người Uber thì ngược lại, nói "điều gì sẽ xảy ra nếu đầu vào này trống" và "đưa tôi qua dòng đó một lần nữa" giống như chúng tôi là hai đồng nghiệp đang gỡ lỗi thứ gì đó vào lúc 3 giờ chiều ngày thứ Tư. tôi thực sự rất thích điều đó. nói qua mã của bạn trong khi bạn viết nó gần như là toàn bộ mục đích của những màn hình này và khi không có ai nói lại, bạn có cảm giác kỳ lạ và cô lập.
thói quen chuẩn bị của tôi, và tôi chỉ bắt đầu điều này SAU vòng ném bom một vì vậy hãy làm những gì tôi nói chứ không phải những gì tôi đã làm, là giải quyết hai hoặc ba vấn đề cơ bản trước khi chạm vào bất cứ thứ gì cứng. tìm kiếm nhị phân, 2Sum, DFS và BFS trên cây và đồ thị, đảo ngược danh sách liên kết, đổi xu cho DP. đây là những khối xây dựng của bạn. bạn muốn chúng trở thành bộ nhớ cơ để bạn có thể viết mã nhanh nhất có thể. thủ thuật thực sự với các bài toán đồ thị chỉ là xác định rằng bạn đang xem xét một bài toán đồ thị. Marcus đã nói điều này hàng triệu lần và cuối cùng tôi đã hiểu nó trong CodeSignal của mình khi vấn đề thứ tư đang nhìn chằm chằm vào tôi và tôi gần như đã dùng vũ lực trước khi nghĩ đến việc chờ đợi, đây thực sự chỉ là BFS.
thiết kế hệ thống là nơi tôi đã chết "thiết kế công cụ phù hợp với công văn." đó là những gì người phỏng vấn tôi đã nói. năm từ. não của tôi? trống. hoàn toàn trống rỗng. tôi lấy bút đánh dấu và bắt đầu vẽ các hộp microservice trên bảng trắng giống như bài tập về nhà CS101. và tôi có thể thấy điều đó xảy ra. khuôn mặt anh ấy đang thay đổi. khuỷu tay chống lên đầu gối nghiêng vào, thích thú, rồi ba mươi giây sau khoanh tay, ngả người ra sau. xong việc với tôi. anh chàng này XÂY DỰNG hệ thống điều phối của Uber. XÂY DỰNG NÓ. và ở đây tôi đang vẽ một hình chữ nhật có nhãn "API Gateway" như thế có ý nghĩa gì với anh ấy. anh ấy đã cố gắng giúp tôi. anh ấy thực sự đã làm vậy. "điều gì xảy ra khi tài xế ngoại tuyến giữa lúc giao hàng." được ừm. "Điều gì sẽ xảy ra nếu ba nhà hàng nấu xong và chỉ có một tài xế ở gần đó." ừm. Tôi đang ngồi đó suy nghĩ về điều này từ góc nhìn của một anh chàng gọi món pad thai trên Uber Eats hai lần một tuần. đó là toàn bộ mô hình tinh thần của tôi về việc gửi đi. lập chỉ mục không gian địa lý? không biết. phù hợp với phương pháp phỏng đoán? thực sự tôi không thể định nghĩa được từ đó vào thời điểm đó. hình chữ nhật trên bảng trắng. đó là những gì tôi đã có hình chữ nhật và rung cảm.
(Nhân tiện, James đã nói với tôi tất cả những điều này SAU. Đồng nghiệp của tôi. Làm DevOps để kiếm sống, điều hành các hệ thống sản xuất thực tế chứ không phải các dự án đẳng cấp. Anh ấy đã vượt qua vòng thiết kế của mình ở hai công ty khác nhau. Điều số một của anh ấy: bạn bỏ tên Kafka đi, tốt hơn là bạn nên chạm vào Kafka. bởi vì những câu hỏi tiếp theo sẽ hủy hoại bạn sau ba mươi giây và bạn sẽ ngồi đó và nói "ừm, tôi đã đọc về nó." chỉ cần nói "hàng đợi phân phối" nếu bạn chưa sử dụng nó. Đừng giả mạo chuyên môn. James cũng nói với tôi trước tiên hãy lặp lại vấn đề với người phỏng vấn, hỏi họ muốn tập trung vào điều gì, sau đó bắt đầu từ độ cao 30 nghìn feet và phóng to. Tôi không làm những điều đó, không, cười lớn.)
tôi đã chạy InterviewMan suốt thời gian qua và nó thực sự đã cứu tôi khỏi bị xóa sổ hoàn toàn. trong quá trình thiết kế hệ thống, nó đã chọn "khớp công văn" làm chủ đề trước khi người phỏng vấn của tôi nói xong và đưa cho tôi cấu trúc bắt đầu để tôi có điều gì đó khác hơn là một cái nhìn trống rỗng. trên CodeSignal, nó đã nắm bắt được cách tiếp cận biểu đồ cho vấn đề thứ tư trước khi tôi tự mình phân tích các ràng buộc. xung quanh hành vi, nó đưa ra một câu chuyện từ trước đó, nơi tôi thực sự đã nói một con số độ trễ cụ thể, chính xác là điều mà người phỏng vấn tôi đang tìm kiếm. tôi đã kiểm tra dock, Trình giám sát hoạt động, danh sách quy trình, bản ghi màn hình trên cả CodeSignal và Zoom sau đó và không thể tìm thấy nó. mười hai đô la một tháng tính theo năm, không có giới hạn số phiên. so với Interview Coder ở mức 299 đô la chỉ thực hiện viết mã (hai trong bốn vòng) thì đó thậm chí không phải là một câu hỏi. Hiện có 57.000 người dùng, hơn 20 tính năng được xây dựng xung quanh chế độ ẩn.
sách thật nhanh. Bẻ khóa cuộc phỏng vấn viết mã? nó ổn. chỉ làm mọi thứ trôi chảy quá mức, giống như bạn đọc nó và nghĩ ồ được rồi, điều này có thể thực hiện được và sau đó bạn ngồi xuống để phỏng vấn thực sự và không. cuốn sách nguy hiểm một cách trung thực. Tuy nhiên, hãy thiết kế các ứng dụng chuyên sâu về dữ liệu. ôi trời. thay đổi trò chơi cho thiết kế hệ thống. thực sự là một trong những cuốn sách kỹ thuật hay nhất mà tôi sở hữu. hãy đọc nó ngay cả khi bạn không có cuộc phỏng vấn nào sắp diễn ra, nó vẫn rất hay. đối với các thuật toán, tôi đã sử dụng sách giáo khoa trực tuyến miễn phí của Jeff Erickson và thực sự thú vị? ông viết nó cho sinh viên chưa tốt nghiệp chứ không phải nhà nghiên cứu nên nó không giống như một luận văn. Marcus thề với Sổ tay thiết kế thuật toán của Skienna nhưng ngay cả anh ấy cũng thừa nhận rằng bạn phải bỏ qua. đi trước ra sau là một việc khó khăn.
vậy ừ. Marcus đã đúng. về mọi thứ theo nghĩa đen. nghiên cứu sản phẩm trước khi đến. những người phỏng vấn thiết kế hệ thống tại Uber đã xây dựng những thứ thực tế mà họ yêu cầu bạn thiết kế. đó không phải là một phép ẩn dụ. họ thực sự đã xây dựng nó. viết các con số về hành vi của bạn vào một tờ giấy dán. khởi động mỗi sáng giống như bạn đang giãn cơ trước khi chạy. và vì tình yêu của Chúa, đừng bước vào vòng thiết kế và vẽ các hình chữ nhật trên bảng trắng và gọi đó là một hệ thống. tôi đã làm điều đó nó đã diễn ra chính xác như bạn nghĩ.
Ready to Ace Your Next Interview?
Join 57,000+ professionals using InterviewMan to get real-time AI assistance during their interviews.
