Met de tweede grote technologische groei van Silicon Valley is er een grote vraag naar technici bij zowel startups als technische reuzen. Voor degenen die een technische achtergrond hebben of computerwetenschappen studeren, is de wereld nu je oester.
Dat gezegd hebbende, geven bedrijven niet alleen banen weg. Programmeurs moeten nog steeds gespecialiseerde interviewprocessen doorlopen - inclusief het soms gevreesde technische interview.
De voorbereiding hierop kan verwarrende beproevingen zijn. Moet je specifieke technische projecten bestuderen of over het algemeen veel onderwerpen opfrissen? Moet je oefenen op een computer of met een vriend?
Als derde ingenieur bij Pocket Gems, met ongeveer 165 technische medewerkers, heb ik honderden telefonische en on-site interviews afgenomen. Gedurende deze tijd heb ik veel geleerd over hoe ik me er goed op kan voorbereiden. Hier zijn de tips die je nodig hebt om je volgende technische interview te maken.
Focus op basisprincipes
Interviewers gaan u vooral vragen stellen over uw basisprincipes: gegevensstructuren, algoritmische complexiteitsanalyse, klasseontwerp en dergelijke. Dit zullen vragen zijn die zowel rechtstreeks over fundamentals zijn (bijvoorbeeld X gebruiken om Y te doen) als vragen waarvoor u uw fundamentals zult gebruiken (meer daarover hieronder).
Beschouw basisprincipes als de tools in uw gereedschapskist. Ze blijven hetzelfde, ongeacht welke geweldige nieuwe technologie er uit komt. Met sterke basisprincipes ben je beter voorbereid op het aanpakken van open-end problemen - het soort problemen dat wij en vele andere startups dagelijks oplossen. Door zich te concentreren op de basisprincipes, kunnen interviewers minder tijd besteden aan het opstellen van de interviewvragen en meer tijd besteden aan het zien van hoe u denkt.
U kunt bijvoorbeeld iets vragen als: u krijgt een binaire boom en twee knooppunten in de boom. Vind de laagste gemeenschappelijke voorouder van de twee gegeven knooppunten in O (n) tijd.
Met deze vraag kijkt de interviewer hoe goed u uw denkproces en oplossing kunt communiceren. Hoe je door het probleem denkt, je gedachten organiseert en je antwoord communiceert, is vaak net zo belangrijk als je conclusie. We werken in complexe en steeds veranderende omgevingen en hebben mensen nodig die zowel moeilijke problemen kunnen oplossen als effectief kunnen communiceren naar hun technische en niet-technische teamgenoten.
Voor dit gedeelte van het interview moet u gerust zaken als tekenreeksen, arrays, basissyntaxis, gegevenstypen, gekoppelde lijsten, bomen, grafieken, stapels, wachtrijen en hashtabellen bespreken. Oh, en zorg ervoor dat je FizzBuzz kunt beantwoorden zonder in de gaten te houden.
Wees voorbereid om dingen op verschillende manieren op te lossen
Elk van uw basisprincipes heeft voor- en nadelen en biedt een unieke oplossing voor een bepaald type probleem. Nadat interviewers je alleen een vraag hebben gesteld over je basisprincipes, gaan ze waarschijnlijk kijken hoe je ze in de praktijk kunt gebruiken. Dit wordt bereikt door open vragen te stellen die op verschillende manieren kunnen worden opgelost.
Een voorbeeldvraag hier zou zijn: U krijgt een rekenkundige vergelijking als een string. Deze vergelijking heeft enkele cijfers 0-9, optellen, aftrekken, vermenigvuldigen en haakjes. Schrijf een functie die deze vergelijking aanneemt en het juiste antwoord berekent. Voorbeeldingangen zijn “1 + 1” en “2 * (1 + 9) - ((2 + 5) -9”).
Zoals eerder wil de interviewer zien hoe u open vragen en uw denkproces bij het kiezen van uw oplossing afbreekt. Het belangrijkste is dat ze willen zien dat u complexe problemen effectief kunt communiceren.
Ongeacht de vraag of de oplossing die u kiest, denk er hardop aan! Als u verschillende manieren hebt om het probleem op te lossen, bespreek dan de opties voordat u besluit welke te gebruiken. Het helpt de interviewer uw denkproces te zien en te begrijpen. Ook kan de interviewer de ene oplossing boven de andere aanbevelen, omdat hij of zij weet dat de anderen bepaalde valkuilen kunnen hebben of buiten het bereik van het interview kunnen vallen.
Wees niet bang om vragen te stellen als er iets onduidelijk is of als er niet veel details worden gegeven. Deze laten zien dat je ook denkt - en geven de interviewer een idee van hoe je met anderen zou werken. Zorg ervoor dat je verduidelijkende vragen stelt om de vraag volledig te begrijpen en dat je de omvang van het probleem niet vergroot (bijv. Wat zijn enkele voorbeeldinvoer? Moet ik me zorgen maken over delen door 0? Moet ik me zorgen maken over zomertijd?)
Zorg er ten slotte voor dat je een aantal testgevallen mondeling doorloopt voordat je zegt dat je klaar bent. Hiermee kunt u zowel de code controleren als de interviewer laten zien dat u uw code controleert. Hoe eenvoudig het ook zou zijn om sollicitatiegesprekken te maken, we kunnen je gedachten helaas niet lezen.
Dus, terwijl je je voorbereidt, oefen je het oplossen van vragen met verschillende tools uit je toolbox, zodat je er een intuïtie over ontwikkelt. Weet wanneer je elk van je tools moet gebruiken, zodat je niet struikelt tijdens het interview. En zorg ervoor dat je oefent om je denkproces volledig te beschrijven - dit kan het moeilijkste deel zijn voor programmeurs die eraan gewend zijn om geïsoleerd te werken.
Oefenen, oefenen, oefenen
Hoe meer je oefent, hoe beter je voorbereid bent op het technisch coderingsgesprek. Dit geldt voor de meeste dingen, maar vooral relevant voor technische interviews - ze vereisen echt dat je je hersenen opwarmt.
Hier zijn een paar tips om u te helpen het meeste uit uw oefentijd te halen:
- Zorg ervoor dat je de interviewomgeving simuleert. Geef jezelf een tijdslimiet voor problemen. Als je een telefonisch interview gaat doen, oefen dan op Stypi en Google Docs. (Ik weet het zelf, het niet hebben van autocomplete en syntax highlighting heeft me in telefonische interviews doen struikelen.) Als je persoonlijk een interview gaat doen, oefen dan problemen op papier of op een whiteboard.
- Vraag een niet-technische vriend je de interviewvragen te stellen en bespreek hem of haar met je antwoorden. Als je het hem of haar kunt uitleggen, weet ik zeker dat je het aan je technische interviewer kunt uitleggen.
- Heb niet het gevoel dat je vals speelt als je een aantal van de prep-tools gebruikt die er zijn. Ze bieden vaak veel inzicht en oefenen vragen. Mijn favorieten zijn websites zoals TopCoder en de Head First- boeken. Enkele andere boeken die meer over het interviewproces praten, zijn Programming Interviews Exposed en Cracking the Code Interview .
Technische coderingsinterviews kunnen behoorlijk ontmoedigend lijken, maar met de juiste soorten gerichte oefening, ben je klaar om ze te azen. Vergeet niet om je te concentreren op je brood en boter, de basis en veel te oefenen. Volg de bovenstaande tips en u bent voorbereid op uw volgende technisch coderingsinterview.
Wil je meer info? Ik heb dit onlangs gepresenteerd op de UC Berkeley Engineering / Tech Career Conference. Bekijk mijn dia's uit de talk hieronder voor meer gedachten en bronnen!




