Comment décrocher une offre d'ingénieur logiciel en 43 jours alors qu'il travaillait à temps plein

Faits

Il y a environ un an, j'ai reçu des offres d'ingénieur logiciel de Google, LinkedIn, Amazon, Uber… La plupart des offres venaient d'une promotion et l'augmentation du salaire de base s'élevait à 40%. J'ai fini par choisir Uber parmi toutes ces entreprises (pas celle avec le salaire le plus élevé, mais j'étais profondément en phase avec le potentiel de cette entreprise, haha). Alors qu’aujourd’hui marque le premier anniversaire de travail avec Uber et que des amis autour de moi me demandent constamment des conseils pour les entretiens, j’ai décidé de réfléchir au processus des entretiens il ya un an et d’essayer d’inclure l’essence même que j’ai trouvée utile lors de la préparation.

Pourquoi commencer?

J'apprécie beaucoup ma carrière et la ville dans laquelle je vis. J'ai travaillé pour l'équipe de Microsoft Office et vivais à Bellevue au début de ma recherche d'emploi, et les deux facteurs ont également contribué à la décision que j'ai prise de rechercher un emploi. J'aimerais travailler sur le génie logiciel lié au Web et vivre dans une ville animée pleine de jeunes professionnels du travail qui peuvent travailler dur et faire la fête. Aucune de mes préférences n'ayant été remplie par mon emploi précédent et ma ville, j'ai décidé de passer à autre chose.

Aperçu du plan

Les entretiens de type IMO, de type Silicon Valley pour les ingénieurs logiciels, constituent un système d’évaluation distinct, très différent de l’évaluation des performances au travail. Bien que de nombreuses entreprises essaient de modifier le processus d’entretien pour que le signal émis lors des entretiens reflète la capacité des candidats à effectuer un travail réel autant que possible, il est encore loin d’être parfait. Au tout début de ce processus de préparation, mon objectif est parfaitement clair: considérez le processus d’entretien comme un test standardisé et réalisez-le.

Bénéficiant / ayant survécu à la longue exposition du système éducatif chinois, préparer un test standardisé a toujours été pour moi un côté facile: j'ai besoin d'une chronologie de haute intensité et je ne passerai que du temps sur des choses qui vont se passer. avoir un impact sur l'entretien. Il y a d'innombrables messages en ligne qui disent aux gens de lire des manuels scolaires à l'université, et pour moi, c'est exagéré. Vous n’avez simplement pas besoin de connaître l’histoire de Knapsack pour réussir l’interview, il vous suffit de vous familiariser avec l’utilisation de la programmation dynamique pour résoudre les problèmes. Je ne dis pas qu'il y a nécessairement un «raccourci» pour la préparation de l'entretien, mais il devrait y avoir au moins ce «chemin clair» sur lequel des candidats raisonnables devraient s'entendre.

Calendrier définitif: 1 jour pour mettre à jour mon CV, 2 jours pour envoyer / renvoyer / réseauter / (tout processus permettant d'obtenir un entretien), et 20 jours pour se préparer avant le premier entretien, et enfin 20 jours supplémentaires pour un entretien / une préparation continue.

Obtenir des entrevues

Liste d'entreprises pour obtenir l'entrevue

Ci-dessus se trouve la liste des sociétés que j’ai compilées dans Evernote. Étant donné que j'apprécie tellement la ville dans laquelle je vis, j'ai classé les entreprises en trois groupes: NYC, LA et la baie de SF (je n'apprécie pas tellement le reste de la région de la baie. Ces entreprises sont donc devenues un deuxième niveau pour moi. déteste les longs trajets.).

Pour chacune des entreprises énumérées ci-dessus, je me suis assuré d’avoir recours à ces entreprises selon 3 perspectives différentes: portail en ligne, parrainages d’amis et recruteurs accessibles via LinkedIn. Un petit conseil est d'essayer de donner la priorité à la référence d'amis par rapport au portail en ligne, car pour certaines entreprises, les références deviennent indisponibles une fois que vous avez soumis une demande en ligne.

J'ai effectué tous les processus ci-dessus pour toutes les entreprises susmentionnées au cours d'un week-end et, lundi, lundi, j'avais plus de 10 entretiens programmés.

Algorithme et structure de données

Les candidats ont généralement peur des entretiens sur la structure des données et des algorithmes, mais je pense personnellement que c’est l’un des sujets les plus faciles une fois que vous avez adopté l’approche systématique. Je me suis concentré sur deux perspectives lors de la préparation: la résolution de problèmes et l'explication de la résolution de problèmes.

J’ai utilisé une plate-forme de codage en ligne appelée Leetcode.com pour préparer la résolution de mon problème et je suis satisfait du résultat. Préparer des interviews d'ingénieurs logiciels en pratiquant sur Leetcode.com n'est pas nouveau, mais je pense avoir différencié mon approche «moins c'est plus»: je me suis concentré uniquement sur les 150 premiers problèmes, non classés. Il y a pas mal de gens en ligne qui disent que vous devriez trier par difficulté et commencer par les plus faciles, et pour moi c'est absurde: vous ne vous préparez pas à vous divertir ou à augmenter votre confiance en vous, et vous devriez essayer de réfléchir au scénario réel de l'entretien, comme aussi objectivement que possible.

Les 150 premiers problèmes sont géniaux. Ils couvrent à peu près tous les sujets requis dans une interview avec un ingénieur logiciel: des sujets communs tels que Chaîne, Tableau, Arbre binaire, Programmation dynamique, Manipulation de bits, à des sujets peu communs comme Segment Tree, Trie, Topological Sort.

Sujets abordés dans Leetcode.com

Chronométrez chaque tentative de programmation. Il est essentiel d’avoir un timing strict pour entrer dans le rythme de l’entrevue. J'ai alloué 30 minutes à chaque problème pour ma première itération de la 150. Lors de ma première itération des problèmes, j'ai vraiment essayé de résoudre chacun d'entre eux. Si je ne résolvais pas un problème en 30 minutes, je n’appellerais pas un arrêt difficile tant que je ne pourrais pas le résoudre au bout de 30 minutes. Pour ma deuxième itération, cependant, j’ai mis la contrainte de temps à 15 minutes pour chaque problème, en partant du principe que les approches ont déjà été consolidées dans ma mémoire.

Expliquer la résolution de problèmes joue un autre rôle important. J'avais l'habitude de penser que cela va naturellement devenir mon point faible, car l'anglais n'est pas ma langue maternelle. Cependant, parler couramment anglais n'est pas le facteur déterminant pour un entretien technique. Il est vrai qu’il s’agit avant tout de «parler le bon langage», mais «le bon langage» est en réalité une agrégation de la bonne terminologie qui se trouve être enveloppée par le contexte de la langue anglaise. Il est donc primordial de rechercher les bonnes terminologies et le bon processus de transmission de l’idée.

Geeksforgeeks.com est de loin le site Web que j'ai le plus profité pour me préparer à expliquer mon processus de pensée. Il s’agit d’un briefing de blog technologique sur chaque algorithme de classe et les exemples classiques de problèmes. Le blog Tech s’adapte parfaitement au tempo d’une interview: ils tentent tous deux de transmettre une idée claire comme du cristal de manière concise et efficace dans le temps. Pour chaque problème de programmation au sein du 150, je me suis assuré de réfléchir sur l'algorithme à l'origine du problème. Ensuite, je lirai attentivement l'article de Geeksforgeeks.com sur l'algorithme, ainsi que les exemples de problèmes et leurs solutions.

En lisant Geeksforgeeks, j'ai réalisé à quel point le processus d'entrevue technique me manquait en tant que nouveau diplômé. Obtenir des solutions rapides pour chaque problème donne au candidat une allure intelligente, mais «parler la langue» / expliquer la résolution du problème de la bonne manière incite les enquêteurs à travailler avec le candidat. Habituellement, ce dernier joue un rôle encore plus important, et c’est ce qui m’est arrivé lors d’une série d’interviews Google, au cours desquelles je n’ai pas obtenu la réponse exacte mais que ma communication a emporté sur des retours positifs.

Conception du système

La conception des systèmes pèse beaucoup plus lourd pour les recrutements dans l'industrie que pour NCG. Sans l'expérience de la conception d'un système Web à grande échelle au cours de mon travail précédent, je me sentais désemparé.

Heureusement, les cours de conception de systèmes proposés sur hiredintech.com m'ont beaucoup aidé. Il couvrait des concepts de base, élaborés sur les principaux goulots d'étranglement dans un système Web, et plus important encore: comment quantifier de nombreuses parties de votre conception de sorte qu'il semble que vous parlez après des années d'expérience.

Pratiquer la conception de système peut être difficile, car il s'agit par nature d'une question ouverte et il est difficile de trouver un processus universel / normalisé pour la résolution de problèmes. Alors, que devons-nous faire quand une approche universelle ne peut être trouvée? Nous classons les problèmes de conception de système, puis nous divisons et conquérons.

Le processus de catégorisation est assez simple. J'ai classé les goulots d'étranglement auxquels ont été confrontés certains produits populaires et résumé des exemples montrant comment ces produits surmontent ces goulots d'étranglement. Vous trouverez ci-dessous une partie de la liste des applications Web dans laquelle j'ai plongé profondément.

Justin TV

Force de vente

Instagram

Flickr

Comme vous pouvez le constater, beaucoup d'articles ci-dessus proviennent de highscalability.com. Creusez profondément dans ce site.

Fin

En regardant en arrière, il s’agissait de 43 jours. Je me préparais pour environ 5 heures un jour de semaine et environ 15 heures un jour de week-end. J'ai divisé toutes les entreprises en deux groupes: le premier groupe étant Google, Amazon, LinkedIn, Uber, etc., et le second groupe constitué de Facebook, Bloomberg, Airbnb, Spotify, etc. J'ai décidé de ne planifier que le premier lot. avec. L'idée est que si ma préparation ne fonctionnait pas du tout, j'aurais encore le temps d'ajuster ma stratégie et de tirer pour le deuxième lot, qui est un aussi bon ensemble de sociétés IMO.

Heureusement, toutes les stratégies et tous les efforts ont porté leurs fruits. En préparation depuis 30 jours, j’avais déjà l’impression de comprendre l’essentiel de l’entretien dans le style de la Silicon Valley. Plus important encore, j’ai eu l’impression d’avoir une compréhension suffisante du système d’entretien pour pouvoir évaluer objectivement la performance de mon entretien. Mes attentes après l’entretien ont toujours été cohérentes avec le résultat, ce qui était vraiment un sentiment positif.

En fin de compte, être un bon interlocuteur ne garantit pas une performance optimale face à des projets concrets. Nous avons la chance de pouvoir utiliser systématiquement ce système d’entretien en constante évolution, mais chaque candidat doit également comprendre que l’accumulation de connaissances à long terme et la passion pour l’ensemble du secteur seraient très utiles. Je suis toujours sur le point de devenir un bon ingénieur logiciel et cette partie demandera de réels efforts.

J'espère que cet article aide. N'hésitez pas à discuter, critiquer et partager.

Mon LinkedIn Facebook. Connectons-nous.

-Siyi