Avec le deuxième grand boom technologique de Silicon Valley, les ingénieurs ont été extrêmement sollicités par les startups et les géants de la technologie. Pour ceux qui ont une formation en ingénierie ou étudient en informatique, le monde est votre huître en ce moment.
Cela étant dit, les entreprises ne font pas que céder des emplois. Les programmeurs doivent encore passer par des processus d'entrevue spécialisés, y compris l'entrevue technique parfois redoutée.
Se préparer à ces événements peut être une épreuve déroutante. Devez-vous étudier des projets techniques spécifiques ou généralement actualiser de nombreux sujets? Devriez-vous pratiquer sur un ordinateur ou avec un ami?
En tant que troisième ingénieur chez Pocket Gems, qui compte environ 165 employés techniques, j'ai mené des centaines d'entretiens téléphoniques et sur site. Pendant ce temps, j'ai beaucoup appris sur la façon de bien s'y préparer. Voici les conseils dont vous avez besoin pour organiser votre prochain entretien technique.
Focus sur les fondamentaux
Les intervieweurs vont principalement vous poser des questions sur vos principes fondamentaux: structures de données, analyse de complexité algorithmique, conception de classe, etc. Ce seront des questions à la fois directement sur les fondamentaux (par exemple, utiliser X pour faire Y) et des questions pour lesquelles vous utiliserez vos fondamentaux (plus de détails ci-dessous).
Pensez aux principes fondamentaux comme aux outils de votre boîte à outils. Ils resteront les mêmes, peu importe les nouvelles technologies impressionnantes. Avec des bases solides, vous serez mieux préparé pour résoudre des problèmes ouverts, à savoir le type de problèmes que nous, ainsi que de nombreuses autres startups, résolvons au quotidien. En se concentrant sur les fondamentaux, les intervieweurs peuvent passer moins de temps à préparer les questions de l’entretien et plus de temps à voir comment vous pensez.
Par exemple, on vous demandera peut-être quelque chose du genre: on vous donne un arbre binaire et deux nœuds dans l'arbre. Trouvez l'ancêtre commun le plus bas des deux nœuds donnés en temps O (n).
Au travers de cette question, l'intervieweur cherche à voir dans quelle mesure vous pouvez communiquer votre processus de réflexion et votre solution. La façon dont vous réfléchissez au problème, organisez vos pensées et communiquez votre réponse est souvent aussi importante que votre conclusion. Nous travaillons dans des environnements complexes et en constante évolution et avons besoin de personnes capables à la fois de résoudre des problèmes difficiles et de les communiquer efficacement à leurs coéquipiers techniques et non techniques.
Pour cette partie de l'interview, vous devriez être à l'aise pour discuter de choses telles que les chaînes, les tableaux, la syntaxe de base, les types de données, les listes chaînées, les arbres, les graphiques, les piles, les files d'attente et les tables de hachage. Oh, et assurez-vous de pouvoir répondre à FizzBuzz sans sourciller.
Soyez prêt à résoudre les problèmes de différentes manières
Chacun de vos principes fondamentaux présente des avantages et des inconvénients et offre une solution unique à un type de problème particulier. Une fois que les enquêteurs vous posent une question uniquement sur vos principes fondamentaux, ils vont probablement voir comment vous pouvez les utiliser dans la pratique. Ceci est réalisé en posant des questions ouvertes qui peuvent être résolues de différentes manières.
Voici un exemple de question: vous recevez une équation arithmétique sous forme de chaîne. Cette équation aura un seul chiffre de 0 à 9, addition, soustraction, multiplication et parenthèse. Ecrivez une fonction qui prend cette équation et calcule la réponse correcte. Les exemples d'entrées comprennent «1 + 1» et «2 * (1 + 9) - ((2 + 5) -9»).
Comme auparavant, l'intervieweur veut savoir comment vous décomposez les questions ouvertes et votre processus de réflexion dans le choix de votre solution. Plus important encore, ils veulent voir que vous pouvez communiquer efficacement des problèmes complexes.
Peu importe la question ou la solution que vous choisissez, réfléchissez bien! Si vous avez différentes façons de résoudre le problème, parlez des options avant de décider laquelle utiliser. Cela aide l'intervieweur à voir et à comprendre votre processus de pensée. En outre, l'intervieweur peut recommander une solution plutôt que les autres car il sait que les autres peuvent avoir certains écueils ou être en dehors du champ de l'interview.
N'ayez pas peur de poser des questions si quelque chose n'est pas clair ou s'il n'y a pas beaucoup de détails fournis. Celles-ci montrent que vous réfléchissez aussi et donnent à l'intervieweur une idée de la façon dont vous travailleriez avec les autres. Assurez-vous de poser des questions de clarification pour bien comprendre la question et pour ne pas élargir l'étendue du problème (par exemple, Quels sont quelques exemples d'entrées? Dois-je m'inquiéter de la division par 0? De l'angoisse l'heure d'été?)
Enfin, assurez-vous de passer en revue quelques tests élémentaires avant de dire que vous avez terminé. Cela vous permet à la fois de vérifier le code et de montrer à l'intervieweur que vous vérifiez votre code. Aussi facile que cela puisse faire les entretiens d'embauche, nous ne pouvons malheureusement pas lire dans vos pensées.
Donc, pendant que vous vous préparez, exercez-vous à résoudre des questions avec différents outils de votre boîte à outils afin de développer une intuition à ce sujet. Sachez quand utiliser chacun de vos outils afin de ne pas vous faire avoir pendant l'entretien. Et assurez-vous de bien décrire votre processus de pensée - cela peut être la partie la plus difficile pour les codeurs habitués à travailler de manière isolée.
Pratique, Pratique, Pratique
Plus vous pratiquez, mieux vous serez préparé pour l'entretien technique de codage. C’est vrai pour la plupart des choses, mais surtout pour les entretiens techniques: ils vous demandent vraiment de réchauffer votre cerveau.
Voici quelques conseils pour vous aider à tirer le meilleur parti de votre temps de pratique:
- Assurez-vous de simuler l'environnement de l'interview. Donnez-vous une limite de temps sur les problèmes. Si vous prévoyez une interview téléphonique, exercez-vous à la fois sur Stypi et sur Google Docs. (Je sais par moi-même, le fait de ne pas avoir d'auto-complétion et la coloration syntaxique m'a fait trébucher lors d'entretiens téléphoniques.) Si vous envisagez de faire une interview en personne, entraînez-vous à résoudre des problèmes sur papier ou sur un tableau blanc.
- Demandez à un ami non technique de vous poser les questions de l’entrevue et de le guider dans vos réponses. Si vous pouvez le lui expliquer, je suis sûr que vous pourrez l'expliquer à votre intervieweur technique.
- Ne croyez pas que vous trichez si vous utilisez certains des outils de préparation existants. Ils offrent souvent de bonnes idées et des questions pratiques. Mes sites préférés sont TopCoder et les livres Head First . Certains autres livres qui parlent davantage du processus d’interview sont Programmer des entrevues et Cracking the Code Interview .
Les entretiens techniques de codage peuvent sembler décourageants, mais avec les bons types de pratique ciblée, vous serez prêt à les réussir. N'oubliez pas de vous concentrer sur votre pain quotidien, vos principes fondamentaux et de vous entraîner beaucoup. Suivez les conseils ci-dessus et vous serez prêt pour votre prochain entretien technique sur le codage.
Vous voulez plus d'informations? J'ai récemment présenté ce sujet à la conférence sur les carrières ingénierie / technologie de l'UC à Berkeley. Consultez mes diapositives de l’exposé ci-dessous pour plus d’idées et de ressources!