oké dus ik kreeg in één week 47 sms'jes van Marcus over mijn voorbereiding op het software engineer-interview bij Uber. zevenenveertig. ik heb er misschien drie gelezen. interview verknald. twee van de vier rondes, complete afgang. Marcus als je dit leest: ja. ik weet het. je had het gezegd. je kunt stoppen.
even context over Marcus -- hij liep in zomer 2024 stage bij Uber op Eats infrastructure, in die zomer dat ze het dispatch-team herstructureerden. dus als hij mij om 23.00 uur appt met "bestudeer het product Ibrahim" en "kijk hoe dispatch werkt" en "lees over surge pricing" dan weet hij daadwerkelijk waar hij het over heeft. echt oprecht. en hij formatteerde zijn iMessages met bullet points? wie doet dat lol. Marcus dus.
goed, wat was ik ondertussen aan het doen terwijl ik die berichten negeerde? om 2 uur 's nachts in bed zitten met koude pepperoni van Dominos op schoot. deal van $7.99 voor medium. ik bestelde er die week zoveel dat Dominos me om 1 uur 's nachts pushmeldingen stuurde van hey Ibrahim heb je honger? (ja. altijd.) LeetCode mediums stampen. schele ogen. honderdtwintig problemen in drie weken en NUL blogposts van Uber gelezen. LeetCode zonder plan stampen is hoe je tijd verspilt. nul tijd in de app besteed om na te denken over matching. nooit gegoogeld op "how does Uber dispatch" wat vier seconden kost. ik bereidde arrays, trees, linked lists, DP voor. dat was het. dat was het hele plan en het was een verschrikkelijk plan.
ik kom aan op het kantoor in SF en ik sta al te trillen. Priya had me hier trouwens ook al voor gewaarschuwd. Priya is mijn vriendin van de universiteit (nou ja, oorspronkelijk de vriendin van mijn huisgenoot, nu een van mijn beste vrienden, het leven is raar). ze zegt altijd dat ze interviews ingaat om dingen te leren en niet om aangenomen te worden. en ik herinner me dat ik dacht oké Priya dat is een leuke filosofie maar ik heb een BAAN nodig. blijkt dat ze gelijk had? ja. ze had gelijk. als je zó wanhopig een aanbod nodig hebt, slaat je brein gewoon dicht. je vergeet woorden die je elke dag gebruikt. je handschrift op het whiteboard ziet eruit alsof je een medisch noodgeval hebt. sorry Priya. je had gelijk. ik ben je een etentje verschuldigd.
de behavioral ronde maakte me kapot. ik had een eigenlijk best goed verhaal over het optimaliseren van API-responstijden bij mijn vorige bedrijf. ik had de hele message queue vervangen, echt meetbare snelheidswinst. mijn interviewer zegt "welke metric bewoog" en ik zeg "significant." en zij staart me gewoon aan. doodse stilte van zo'n drie seconden. "hoeveel precies." en ik zit daar hoofdrekenen te doen om P99 latency-cijfers terug te halen die ik nooit had opgeschreven omdat mijn vroegere ik blijkbaar een hekel had aan mijn toekomstige ik. Marcus had me exact verteld dat dit zou gebeuren. hij zei dat Uber-interviewers willen dat je dingen zegt als "ik verlaagde P99 van 340ms naar 90ms nadat ik RabbitMQ had vervangen door Kafka" en ik kwam aanzetten met "ik maakte dingen sneller." goed gedaan Ibrahim. ze koppelen ook elke behavioral vraag terug aan hun company values, trip obsessed en go get it en build with heart, en daar kwam ik TIJDENS het interview achter omdat ik de carrières-pagina niet had gelezen lol.
het grootste wat ik van die ronde leerde. SCHRIJF JE GETALLEN OP. ik kan dit niet genoeg benadrukken. ga vóór je naar binnen loopt gewoon oude projecten langs. ga twintig minuten zitten. wat bewoog. met hoeveel. waarom je Kafka koos boven RabbitMQ of wat dan ook. zet het op papier. een sticky note, een servetje, het maakt me niet uit. want dit is wat er gebeurt als je dat niet doet: je slaat dicht. je interviewer vraagt "welke metric bewoog" en jij zegt "significant" en dan zijn er drie seconden van gewoon. niets. en jullie weten het allebei. verzin ook geen dingen. ze gaan op elk getal doorvragen en je valt binnen twee follow-ups door de mand. ik probeerde de STAR-methode. deed eerlijk gezegd niets voor mij. misschien werkt het voor andere mensen. ik had echte verhalen, zelfs goede, ik kreeg de details alleen niet uit mijn hoofd terwijl iemand me aankeek. dus ja. sticky notes. op je laptop. op je telefoon. waar dan ook.
coding was mijn enige lichtpuntje. Uber begint met een CodeSignal OA, vier problemen in zeventig minuten. de eerste twee waren simpele array-dingen, die had ik er in in misschien twaalf minuten totaal uit. de derde was een sliding window en exact dat type probleem had ik zes dagen eerder opgelost, dus pure mazzel. de vierde was een graph traversal waar ik vijfentwintig minuten over deed en ik diende in met nog zo'n veertig seconden op de klok, handpalmen bezweet. Marcus kreeg DP als vierde dus de pool rouleert. dynamic programming-problemen zijn eerlijk gezegd verschrikkelijke interviewvragen. of je kent de truc al, of je zit er alleen maar naar te staren. niemand gaat uit het niets een optimale DP-oplossing bedenken terwijl een interviewer meekijkt.
de phone screen was met een echte engineer van Uber. weighted grid met obstakels, medium niveau, en daarna maakte een follow-up met priority ordering het ineens lastig. waar ik door verrast werd was hoeveel mijn screener PRAATTE trouwens. ik had net een Google phone screen gedaan waar de engineer misschien vijftien woorden zei in de hele vijfenveertig minuten, totale stilte terwijl ik codeerde, alsof ik een examen deed in een lege kamer. de persoon van Uber was precies het tegenovergestelde, met "wat als deze input leeg is" en "loop nog eens door die regel heen" alsof we twee collega's waren die op een woensdag om 15.00 uur samen iets aan het debuggen waren. dat vond ik eigenlijk echt fijn. je code hardop doornemen terwijl je hem schrijft is een beetje het hele punt van deze screens en als niemand terugpraat voelt het raar en geïsoleerd.
mijn voorbereidingsroutine, en ik begon hier pas MEE NADAT ik ronde één had verknald dus doe wat ik zeg en niet wat ik deed, was om twee of drie basisproblemen op te lossen voordat ik iets moeilijks aanraakte. binary search, 2Sum, DFS en BFS op trees en graphs, reverse a linked list, coin change voor DP. dit zijn je bouwstenen. je wilt dat ze spiergeheugen zijn zodat je de code net zo snel kunt schrijven als je kunt typen. de echte truc bij graph-problemen is gewoon herkennen dat je naar een graph-probleem zit te kijken. Marcus zei dit een miljoen keer en ik snapte het eindelijk tijdens mijn CodeSignal toen probleem vier me aankeek en ik bijna voor brute force ging voordat ik dacht wacht, dit is letterlijk gewoon BFS.
system design is waar ik stierf. "design the dispatch matching engine." dat zei mijn interviewer. vijf woorden. mijn brein? leeg. compleet leeg. ik pakte de marker en begon microservice-vakjes op het whiteboard te tekenen alsof het huiswerk van CS101 was. en ik zag het gebeuren. zijn gezicht veranderde. ellebogen op zijn knieën, naar voren leunend, geïnteresseerd, en dan dertig seconden later armen over elkaar, achterover leunend. klaar met mij. deze gast HEEFT Uber's dispatch-systeem GEBOUWD. GEBOUWD. en ik sta daar een rechthoek met het label "API Gateway" te tekenen alsof dat iets voor hem betekent. hij probeerde me te helpen. echt waar. "wat gebeurt er als een chauffeur offline gaat midden in een bezorging." oké eh. "wat als drie restaurants klaar zijn met koken en er is maar één chauffeur in de buurt." uhhh. ik zit daar hierover na te denken vanuit het perspectief van een gast die twee keer per week pad thai bestelt op Uber Eats. dat is mijn hele mentale model van dispatch. geospatial indexing? geen idee. matching heuristics? ik had dat woord op dat moment letterlijk niet kunnen definiëren. rechthoeken op een whiteboard. dat was wat ik had. rechthoeken en vibes.
(James vertelde me dit trouwens allemaal PAS ACHTERAF. mijn collega. doet DevOps voor z'n werk, runt echte productiesystemen en geen schoolprojecten. hij haalde zijn design-rondes met gemak bij twee verschillende bedrijven. zijn belangrijkste punt: als je Kafka laat vallen, kun je maar beter ook echt met Kafka gewerkt hebben. want de vervolgvragen slopen je binnen dertig seconden en dan zit jij daar met "nou eh ik heb erover gelezen." zeg gewoon "distributed queue" als je het niet hebt gebruikt. doe niet alsof je expertise hebt. James zei ook dat ik het probleem eerst terug had moeten herhalen aan de interviewer, had moeten vragen waar ze op wilden focussen, en dan op dertigduizend voet had moeten beginnen en had moeten inzoomen. ik deed nul van die dingen. nul lol.)
ik had InterviewMan de hele tijd draaien en eerlijk gezegd heeft dat me gered van een totale afgang. tijdens system design pikte het "dispatch matching" als onderwerp op voordat mijn interviewer was uitgesproken en gaf het me een startstructuur zodat ik iets anders had dan een lege blik. op CodeSignal pikte het de graph-aanpak bij probleem vier op voordat ik zelf de constraints goed had geparsed. in de behavioral ronde haalde het een verhaal van eerder omhoog waarin ik wél een concreet latency-getal had genoemd, precies waar mijn interviewer op viste. ik checkte daarna dock, Activity Monitor, process list en screen recordings op zowel CodeSignal als Zoom en kon het niet vinden. twaalf dollar per maand bij een jaarabonnement, geen limiet op sessies. vergeleken met Interview Coder voor tweehonderdnegenennegentig dollar dat alleen coding doet (twee van de vier rondes) was het niet eens een vraag. nu 57.000 gebruikers, meer dan twintig features gebouwd rond onzichtbaar zijn.
boeken heel snel. Cracking the Coding Interview? was oké. het strijkt alles gewoon te veel glad, alsof je het leest en denkt oh oké dit is te doen en dan ga je voor een echt interview zitten en nope. eerlijk gezegd een gevaarlijk boek. Designing Data Intensive Applications daarentegen. oh man. game changer voor system design. serieus een van de beste technische boeken die ik heb. lees het zelfs als je nul interviews op de planning hebt, het is gewoon goed. voor algoritmes gebruikte ik het tekstboek van Jeff Erickson dat gratis online staat en ook nog echt leuk is? hij schreef het voor bachelorstudenten en niet voor onderzoekers dus het leest niet als een proefschrift. Marcus zweert bij Skienna's Algorithm Design Manual maar zelfs hij geeft toe dat je moet overslaan en heen en weer moet springen. van voor naar achter lezen is een sleur.
dus ja. Marcus had gelijk. over letterlijk alles. bestudeer het product voordat je komt opdagen. de system design-interviewers bij Uber hebben de echte dingen gebouwd die ze je vragen te ontwerpen. dat is geen metafoor. ze hebben het letterlijk gebouwd. schrijf je behavioral-getallen op een sticky note. doe elke ochtend warm-ups alsof je je uitrekt voor een run. en in hemelsnaam, loop een design-ronde niet binnen om rechthoeken op een whiteboard te tekenen en dat een systeem te noemen. dat deed ik. het ging precies zoals je denkt dat het ging.
Ready to Ace Your Next Interview?
Join 57,000+ professionals using InterviewMan to get real-time AI assistance during their interviews.
