ok jadi aku dapat 47 mesej daripada Marcus dalam masa seminggu pasal prep interview software engineer Uber aku. empat puluh tujuh. aku baca mungkin tiga. lepas tu aku bungkus interview itu. dua daripada empat pusingan memang hancur total. Marcus kalau kau baca ni: ya. aku tahu. kau dah cakap awal-awal. dah boleh berhenti.
sikit konteks pasal Marcus -- dia intern di Uber masa musim panas 2024 pada pasukan Eats infrastructure, masa yang sama pasukan dispatch tu disusun semula. jadi bila dia mesej aku pukul 11 malam cakap "study the product Ibrahim" dan "look at how dispatch works" dan "read about surge pricing" dia memang tahu apa yang dia cakap. bukan gaya tahu-tahu ayam je, memang dia tahu betul. dan dia format iMessage dia dengan bullet points. siapa buat benda macam tu lol. Marcus buat.
jadi apa aku buat masa abaikan semua mesej dia tu? duduk atas katil pukul 2 pagi dengan Domino's pepperoni sejuk atas riba. deal medium $7.99. aku order sampai banyak sangat minggu tu Domino's hantar push notification pukul 1 pagi macam "hey Ibrahim you hungry?" ya. sentiasa. aku grind LeetCode medium sampai mata pun dah macam nak silang. seratus dua puluh soalan dalam tiga minggu dan SIFAR blog post Uber yang aku baca. grind LeetCode tanpa plan memang cara paling senang nak buang masa. sifar masa fikir pasal matching dalam app sebenar. tak pernah pun google "how does Uber dispatch" padahal empat saat je. aku prep arrays, trees, linked lists, DP. itu saja. itu seluruh plan aku dan plan itu memang teruk.
aku sampai di pejabat SF dan tangan aku dah menggeletar. Priya dah bagi amaran pasal benda ni juga sebenarnya. Priya kawan aku dari kolej, asalnya teman wanita kepada roommate kolej aku, sekarang dah jadi antara kawan paling rapat aku, hidup memang pelik. dia selalu cakap dia masuk interview untuk belajar sesuatu, bukan semata-mata nak dapat kerja. dan aku masa tu fikir ok Priya falsafah kau comel tapi aku perlukan KERJA. rupa-rupanya dia betul. ya memang dia betul. bila kau terlalu perlukan offer, otak kau macam lock terus. kau lupa perkataan yang kau guna setiap hari. tulisan tangan kau atas whiteboard nampak macam kau sedang alami kecemasan perubatan. maaflah Priya. kau memang betul. aku hutang kau makan malam.
pusingan behavioral memang ratakan aku. aku sebenarnya ada cerita yang bagus tentang macam mana aku optimize API response time di syarikat lama. aku tukar keseluruhan message queue, ada peningkatan yang boleh diukur, memang real. interviewer aku tanya "what metric moved" dan aku jawab "significantly." lepas tu dia cuma pandang aku. senyap mati mungkin tiga saat. "by how much." dan aku pula duduk di situ cuba buat kira-kira dalam kepala untuk ingat semula nombor P99 latency yang aku tak pernah tulis sebab nampaknya versi lama aku memang benci versi masa depan aku. Marcus dah cakap benda ni akan jadi. dia kata interviewer Uber nak jawapan macam "i cut P99 from 340ms to 90ms after swapping RabbitMQ for Kafka" dan aku pula datang dengan "i made things faster." syabas Ibrahim. diorang juga ikat soalan behavioral kepada nilai syarikat macam Trip Obsessed, Go Get It, dan Build with Heart, dan aku baru tahu benda tu SEMASA interview sebab aku tak baca pun careers page diorang lol.
pengajaran paling besar dari pusingan tu ialah TULIS NOMBOR KAU. serius aku tak boleh tekankan benda ni cukup-cukup. sebelum masuk, semak semula projek lama kau. duduk dua puluh minit pun jadi. apa yang bergerak. bergerak berapa banyak. kenapa kau pilih Kafka berbanding RabbitMQ atau apa-apa sajalah. tulis atas kertas. nota pelekat, napkin, aku tak kisah. sebab kalau tak, inilah yang jadi: kau blank. interviewer tanya "what metric moved" dan kau jawab "significantly" dan lepas tu ada tiga saat yang cuma... kosong. dan dua-dua pihak tahu benda tu. jangan tipu nombor juga. diorang akan tekan setiap nombor dan kau akan kantoi dalam dua soalan susulan je. aku cuba STAR method. langsung tak bantu aku sejujurnya. mungkin berkesan untuk orang lain. aku ada cerita sebenar, cerita yang elok pun ada, aku cuma tak dapat tarik butiran dia keluar dari kepala masa ada orang duduk stare aku. jadi ya. nota pelekat. atas laptop. atas telefon. dekat mana-mana pun.
coding pula satu-satunya bahagian yang aku rasa hidup sikit. Uber mula dengan OA CodeSignal, empat soalan dalam tujuh puluh minit. dua yang pertama basic array stuff, aku habiskan dalam lebih kurang dua belas minit total. soalan ketiga sliding window dan aku kebetulan baru buat jenis soalan tu enam hari sebelum itu, jadi memang nasib semata-mata. soalan keempat graph traversal yang makan dua puluh lima minit dan aku submit dengan lebih kurang empat puluh saat berbaki, tapak tangan dah basah. Marcus pula dapat DP untuk soalan keempat dia jadi bank soalan memang berputar. dynamic programming jujurnya soalan interview yang menyakitkan. kau sama ada dah tahu triknya atau kau cuma duduk tenung skrin. tak ada siapa akan cipta penyelesaian DP optimum dari kosong sambil interviewer tengok.
phone screen aku dengan jurutera Uber sebenar. weighted grid dengan obstacles, tahap medium, lepas tu follow-up tambah priority ordering dan terus jadi susah. benda yang paling buat aku pelik ialah betapa banyaknya screener aku BERCAKAP. aku baru selesai Google phone screen sebelum tu di mana jurutera itu cakap mungkin lima belas perkataan sepanjang empat puluh lima minit, total senyap semasa aku menulis kod, rasa macam duduk jawab exam dalam bilik kosong. orang Uber ni pula sebaliknya, asyik tanya "what if this input is empty" dan "walk me through that line again" macam dua orang rakan sekerja tengah debug sesuatu pukul 3 petang hari Rabu. aku sebenarnya suka benda tu. bercakap sambil tulis kod memang seluruh poin pusingan macam ni dan bila seorang lagi langsung tak bercakap balik, rasa ganjil dan terasing.
rutin prep aku, dan aku baru mula buat benda ni SELEPAS aku meletup pada pusingan pertama jadi buat apa aku cakap jangan ikut apa aku buat, ialah selesaikan dua atau tiga masalah basic sebelum sentuh benda yang susah. binary search, 2Sum, DFS dan BFS pada trees dan graphs, reverse linked list, coin change untuk DP. itu blok binaan kau. kau nak semua benda ni jadi muscle memory supaya kau boleh tulis kod selaju tangan kau menaip. helah sebenar pada graph problems ialah kenal pasti bahawa apa yang kau tengok tu memang graph problem. Marcus cakap benda ni sejuta kali dan aku baru betul-betul faham masa CodeSignal aku bila soalan keempat duduk depan mata dan aku hampir buat brute force sebelum terfikir tunggu kejap, ini literally BFS.
system design ialah tempat aku mati. "design the dispatch matching engine." itu ayat interviewer aku. lima perkataan. otak aku? kosong. betul-betul kosong. aku capai marker dan mula lukis kotak microservice atas whiteboard macam tugasan CS101. dan aku boleh nampak masa itu juga apa yang sedang berlaku. muka dia berubah. mula-mula siku di lutut, badan condong ke depan, nampak berminat, dan tiga puluh saat kemudian tangan dah bersilang, badan sandar ke belakang. habis. dia dah siap dengan aku. lelaki ni BINA dispatch system Uber. memang DIA yang bina. dan aku pula di sini lukis segi empat tepat berlabel "API Gateway" macam itu kononnya bermakna apa-apa untuk dia. dia cuba tolong aku. memang dia cuba. "what happens when a driver goes offline mid delivery." ok um. "what if three restaurants finish cooking and only one driver is nearby." uhhh. aku duduk di situ berfikir dari sudut pandang seorang lelaki yang order pad thai di Uber Eats dua kali seminggu. itu saja model mental aku tentang dispatch. geospatial indexing? tak tahu. matching heuristics? lagi tak tahu. kalau masa tu dia suruh aku jelaskan pun aku rasa aku cuma ulang perkataan dia balik. kotak-kotak atas whiteboard. itu je. betul-betul itu je.
(James beritahu semua ni SELEPAS tu by the way. rakan sekerja aku. dia buat DevOps untuk hidup, urus production systems sebenar, bukan projek kelas. dia lulus design rounds di dua syarikat berbeza. nasihat nombor satu dia: kalau kau nak sebut Kafka, pastikan kau memang pernah sentuh Kafka. sebab follow-up questions akan koyakkan kau dalam tiga puluh saat dan kau akan duduk di situ cakap "well um i read about it." kalau tak pernah guna, cakap je "distributed queue." jangan pura-pura pakar. James juga kata ulang balik masalah tu dekat interviewer dulu, tanya dia nak fokus bahagian mana, lepas tu baru masuk detail sikit-sikit. aku buat semua benda tu? kosong. langsung tak buat lol.)
aku pasang InterviewMan sepanjang proses dan sejujurnya benda tu selamatkan aku daripada wipeout penuh. masa system design ia tangkap topik "dispatch matching" sebelum interviewer aku sempat habiskan ayat dan terus beri rangka mula supaya aku ada sesuatu selain muka kosong. masa CodeSignal ia nampak pendekatan graph pada soalan keempat sebelum aku sendiri sempat hadam constraints. masa behavioral round ia tarik semula cerita lama yang aku pernah sebut dengan nombor latency sebenar, tepat macam yang interviewer aku cari. aku check dock, Activity Monitor, process list, rakaman skrin pada CodeSignal dan Zoom selepas tu dan tak jumpa apa-apa. dua belas dolar sebulan pada pelan tahunan, tiada had sesi. dibandingkan dengan Interview Coder yang dua ratus sembilan puluh sembilan dolar dan cuma buat coding, iaitu dua daripada empat pusingan je, memang langsung tak perlu fikir dua kali. sekarang ada 57,000 pengguna dan dua puluh lebih ciri yang dibina khusus untuk kekal tak kelihatan.
pasal buku pula sekejap. Cracking the Coding Interview? ok je. cuma ia terlalu melicinkan segalanya, macam kau baca dan fikir oh ok boleh buat ni, lepas tu kau duduk dalam interview sebenar dan nope. buku tu bahaya juga jujurnya. Designing Data Intensive Applications pula, aduh, memang game changer untuk system design. serius antara buku teknikal terbaik yang aku ada. baca je walaupun kau tak ada interview terdekat, memang buku yang bagus. untuk algoritma aku guna buku teks Jeff Erickson yang percuma online dan entah macam mana betul-betul seronok? dia tulis untuk undergrad, bukan penyelidik, jadi tak rasa macam tengah baca disertasi. Marcus pula swear by Skienna's Algorithm Design Manual tapi dia sendiri mengaku kau kena lompat-lompat. kalau baca dari depan sampai belakang memang terasa berat.
jadi ya. Marcus memang betul pasal hampir semua benda. study produk sebelum kau datang. interviewer system design di Uber ialah orang yang memang bina benda yang diorang suruh kau design. itu bukan metafora. memang diorang yang bina. tulis nombor behavioral kau atas nota pelekat. buat warm up setiap pagi macam kau tengah regang badan sebelum larian. dan demi tuhan jangan masuk pusingan design kemudian lukis segi empat atas whiteboard dan panggil benda tu satu sistem. aku buat benda tu. hasil dia tepat macam yang kau bayangkan.
Ready to Ace Your Next Interview?
Join 57,000+ professionals using InterviewMan to get real-time AI assistance during their interviews.
