Pendant six jours, du 13 août au 20 août 2018, j'ai passé des entretiens avec six entreprises de la Silicon Valley (LinkedIn, Yelp, Apple, Amazon, Facebook et Google) et j'ai reçu une offre d'emploi de chacune.
Dans le processus de préparation, que je décris ci-dessous, je me suis beaucoup appuyé sur ce
poste de l'année dernière - c'est lui qui m'a incité à un moment donné à réfléchir à l'opportunité de passer à une autre entreprise. Je n'avais pas envie d'errer constamment à l'autre bout du pays et de revenir à la recherche d'un emploi idéal, il était donc clair que je devais préparer ma volonté et planifier toutes les interviews pour qu'elles se déroulent les unes après les autres. Je visais des postes vacants qui sont pertinents pour le développement mobile, mais l'approche décrite pour la formation, les trucs et astuces conviennent également à d'autres cas.
J'espère que mon histoire inspirera quelqu'un qui est maintenant dans la même position (pas tout à fait satisfait du travail actuel, veut déménager dans la région de la baie, mais est un peu court en termes de préparation), osez - qui sait ce que l'avenir leur réserve.
Introduction et statistiques
J'ai fermement décidé que je voulais travailler dans la région du golfe, où je peux créer une grande entreprise et me développer sérieusement en tant que développeur mobile. J'avais l'habitude de travailler dans des startups, et c'était une bonne expérience, mais cette fois pour plusieurs raisons je cherchais un plus gros poisson (je veux dire non seulement la taille de l'équipe, mais aussi la capitale). Je savais également que je n’avais pas encore d’entreprise spécifique et que je comprenais quel salaire je devais demander pour ne pas perdre par rapport à ce que j’ai. Enfin, je n'avais aucune envie d'envoyer une centaine de CV, comme je l'ai déjà fait juste après l'université.
Dans cet esprit, j'ai envoyé un CV à vingt entreprises. Quatre d'entre eux (Reddit, Nest, Stripe, Uber) m'ont refusé immédiatement après avoir reçu la lettre. Sur les seize autres, dix (Lyft, Airbnb, Dropbox, Instagram, YouTube, Square, Robinhood, Twitter, Snap, Slack) n'ont donné aucun retour. L'arithmétique simple suggère que six entreprises ont répondu et ont suggéré que je parle avec un recruteur. En conséquence, j'ai reçu six invitations pour un entretien téléphonique, six - pour un entretien au bureau et six offres d'emploi.
Après avoir examiné mon calendrier sur Google, j'estime qu'il a été distribué comme suit:
- 7 rencontres avec les recruteurs en 10 jours
- 7 entretiens techniques en 11 jours
- 29 entretiens de bureau en 8 jours
- 3 traces d'entretiens téléphoniques
En rassemblant ces chiffres, nous pouvons calculer: j'ai effectué 46 entretiens en 73 jours (si vous comptez les intervalles entre les étapes). C'était difficile et pendant plusieurs semaines, j'ai dû passer toutes mes pauses déjeuner en réunion. J'ai commencé à travailler tôt pour pouvoir partir tôt et passer des soirées à des conversations téléphoniques. Des complications ont été créées par le fait qu'il était nécessaire de continuer à s'acquitter correctement de leurs tâches dans leur travail actuel - cependant, j'ai toujours essayé de lui donner la priorité et de reporter les réunions si les circonstances l'exigeaient. Je n'avais pas l'intention de m'éloigner pour rendre l'interview plus pratique. C'est contraire à l'éthique, laisse une mauvaise impression, et en plus, cela peut finir par ne pas trouver un nouvel endroit et ruiner votre réputation sur l'ancien.
Entreprises (par ordre chronologique)
LinkedIn (Sunnyvale, Californie)LinkedIn, en fait, développe de très belles applications, et elles
apportent une contribution considérable à la communauté open source. Tout au long de notre interaction, j'ai été impressionné par la culture d'entreprise et les solutions d'ingénierie. Si vous comparez la position dans la cote de prestige sur le marché iOS au début et à la fin de tout le processus, c'est cette entreprise qui a le plus progressé à mes yeux.
Yelp (San Francisco, Californie)L'application Yelp a fière allure: on ressent la finesse du dressing, en parlant d'une connaissance approfondie de la plateforme iOS. J'ai aimé l'atmosphère de leur bureau. Le bâtiment en lui-même est très beau, et je serais heureux de travailler en équipe avec toutes les personnes qui ont interviewé. Par rapport aux autres sociétés de ma liste, celle-ci est assez petite et elle affecte tout - mais elle a un effet positif. L'équipe semble avoir très bien fonctionné et les processus de travail se déroulent extrêmement rapidement.
Apple (Cupertino, Californie)Apple fait depuis longtemps partie intégrante du marché iOS (ha ha). Je suis leur fan enragé depuis l'enfance (enfin, depuis l'âge de douze ans, bien sûr). C'est grâce à leurs ordinateurs Mac que je me suis laissé emporter par la programmation. Le SDK iPhone m'a aidé à créer et à déployer ma première application. Quand ils m'ont invité à passer un entretien au bureau, puis à faire partie de l'équipe - c'était comme dans un rêve. Je ne sais même pas quoi dire d'autre sur leur compte.
Amazon (Palo Alto, Californie)Je n'appellerais pas Amazon une entreprise axée principalement sur le développement mobile, au contraire. Cependant, le poste et l'équipe répondaient aux critères que je m'étais fixés au départ. Le bureau de Palo Alto, où j'ai interviewé, ne m'a pas impressionné, mais c'est un refuge temporaire et bientôt ils devraient déménager dans un bâtiment plus conforme au style d'Amazon. À cet égard, je n'ai pas eu de chance avec le temps. Les gens à qui j'ai parlé semblaient très enthousiastes à propos de leurs projets. Littéralement de toutes les entreprises que j'ai entendues: "Nous avons une atmosphère ici comme dans les startups!", Mais avec Amazon, cela semble vraiment être vrai.
Facebook (Menlo Park, Californie)J'ai été interviewé dans leur nouveau bâtiment. En général, tout semblait être cool, mais je me souviens assez vaguement des détails de la réunion: c'était mon cinquième jour d'entretiens consécutifs et le manque de sommeil se faisait sentir. Je me souviens seulement que j'ai eu beaucoup de plaisir à communiquer avec les employés et que la réunion du dîner s'est avérée très informative.
Google (Mountain View, Californie)Chez Google, si je comprends bien, les entretiens pour un certain poste sont menés plus ou moins selon un schéma. J'ai réussi à parler avec de nombreux membres de l'équipe travaillant sur l'un des plus grands produits iOS de l'entreprise, mais j'ai postulé pour un poste non lié spécifiquement à leurs activités. Après que le comité d'embauche ait donné son feu vert, j'ai été transféré à l'étape suivante, où ils ont sélectionné la bonne équipe et finalement trouvé une option appropriée. Il s'agit d'un processus très long par rapport au rythme des négociations des autres équipes avec lesquelles j'ai parlé. J'ai dû constamment garder les autres employeurs au courant de la façon dont nous faisons affaire avec Google et Google, respectivement, ce que nous avons trouvé avec d'autres entreprises.
Plan de formation
Je vais être clair: quand j'ai commencé, j'étais théoriquement capable de résoudre la plupart des tâches de la section "Simple" sur Leetcode en une trentaine de minutes et environ 25% des tâches de la section "Difficulté moyenne", si vous n'aviez pas fixé de délais. Résoudre les tâches de la section «Complexe» pour moi, c'était comme essayer de prouver l'égalité des classes NP et P. Bref, j'avais beaucoup de travail à faire.
Pour resserrer les algorithmes, je me suis d'abord tourné vers le livre
Cracking the Coding Interview . Le dimanche matin, je me suis levé, je suis allé au café et là j'ai résolu les problèmes d'Objective-C. Ayant élaboré un nombre décent de tâches à partir du livre (quelque part autour de trente-cinq), je suis passé à Leetcode et j'ai passé en revue les tâches qui correspondaient aux chapitres que j'avais achevés. Après plusieurs semaines de tels cours, j'ai senti que j'avais déjà assez bien appris les «bases» et je suis passé à l'étape suivante.
Armé de mes connaissances de base, j'ai suivi
des entrevues Éléments de programmation . Ce livre est beaucoup plus compliqué que le précédent. Des plans de cours recommandés y sont donnés, et j'ai essayé de ne pas trop m'en écarter. Si je me souviens bien, une a été conçue pour quatre semaines de formation et je l'ai traversée presque complètement. À mon avis, il est extrêmement important de s'entraîner à résoudre les tâches au tableau ou de faire une répétition téléphonique avec quelqu'un. De plus, par «d'une importance critique», je veux dire non seulement «utile», mais qu'il devrait être considéré comme un élément obligatoire du programme d'études. Je ne doute pas que quelqu'un pourra trouver un emploi sans lui, mais pour moi je n'ai pas trouvé de meilleur moyen de développer mes compétences.
Si quelqu'un a besoin d'un partenaire pour répéter des interviews pour des articles liés à iOS, je serai heureux de vous aider. Vous pouvez me trouver chez
CS Career Hackers - contactez, vous regardez, nous serons d'accord d'une manière ou d'une autre, si je ne suis pas très occupé. Sinon, il y a d'autres personnes qui vous soutiendront volontiers. Bien sûr, vous serez gêné. C'est tout l'intérêt. Si tout fonctionnait par lui-même, alors il n'y avait aucun sens à pratiquer, non? Si pendant les répétitions au tableau noir ou au téléphone, vous êtes très gêné ou vous sentez mal à l'aise, alors vous faites exactement ce dont vous avez besoin - entraînez-vous à l'avance. Personnellement, au début, je me sentais très contraint, puis à un moment donné, cela a passé, donc la formation a plus que payé.
Après un mois de travail quotidien (deux à trois heures en semaine, plus le week-end), je me suis concentré sur la section «
Questions d'entretien populaires » sur Leetcode. Je ne les ai pas tous passés en revue, mais j'en ai assez fait. Pour se préparer à un entretien sur les algorithmes, l'essentiel est d'atteindre le niveau où l'on peut trouver une solution en plein entretien. Ce n'est pas la peine d'essayer de mémoriser toutes les décisions, c'est impossible. Presque toutes les tâches que j'ai rencontrées au cours de cette semaine d'entretiens étaient nouvelles pour moi - mais en même temps, elles ressemblaient à ce que j'avais déjà vu. Après tout, le processus de développement lui-même se déroule selon le même schéma. De nombreuses tâches en général se décrivent, mais chaque cas a un ensemble spécial de restrictions.
Ce que j'ai appris
Ci-dessous, je vais énumérer dans une liste les conclusions que je me suis faites, dans un ordre aléatoire. Toutes ces recommandations me seraient très utiles si je les connaissais à l'avance - à la fois celles liées à la préparation des entretiens techniques, et celles qui parlent de planification et d'autres nuances qui ne sont pas liées à la programmation. Il n'y a rien en eux qui s'applique uniquement et exclusivement à iOS, donc je pense qu'en termes généraux, ils conviennent à toutes les interviews dans notre industrie.
- Ne laissez pas tomber. Quand je cherchais mon premier emploi sérieux après l'université, je n'en avais que pour une semaine ou deux de cours. J'ai raisonné comme ça: apparemment, ça ne m'est tout simplement pas donné. Après tout, plus d'une semaine s'est écoulée et presque aucun progrès n'a été observé, alors à quoi bon perdre du temps? Mais cette fois, j'ai décidé que je n'avais pas le choix. Après un certain temps, l'image a commencé à prendre forme. Il faudra investir beaucoup de travail, mais c'est le désir d'étudier qui distingue les candidats retenus des autres.
- La formation est notre (presque) tout. Bien sûr, un certain niveau de capacités innées est également nécessaire ici, mais la pratique (c'est-à -dire l'entraînement) peut changer beaucoup, beaucoup. Les gens ne sont pas embauchés pour ce avec quoi ils sont nés. Ils sont embauchés pour le fait qu'ils sont en mesure de remplir avec succès certaines fonctions, et où et quand ils ont reçu les connaissances nécessaires n'a pas d'importance.
- La formation avec des amis est notre repos. Peu importe que vous répétiez au tableau noir ou que vous utilisiez quelque chose comme le partage de code , le fait est que lorsque vous plongez dans l'atmosphère d'une interview avec quelqu'un pendant longtemps, c'est loin d'être effrayant. Si au cours de l'entretien, le cerveau tombe subitement en panne et que vous dégagez une sorte de stupidité, cela ne vous dérangera pas. Eh bien, si vous parvenez à trouver une personne qui connaît les solutions, même pour les tâches que vous ne comprenez pas, et qui peut vous pousser dans la bonne direction - ce sera généralement parfait. Sérieusement, une telle formation vaut son pesant d'or.
- La couverture est décisive. Vous pouvez vous entraîner avant d'être stupéfait (et même de manière productive) - et toujours ne pas avoir d'emploi, car votre curriculum vitae n'est pas parvenu à la bonne personne ou vous avez été attaqué par une stupeur au tableau noir et vous n'avez pas résolu le problème à temps. La meilleure garantie est de vous donner le maximum de chance. Autrement dit, envoyez un curriculum vitae à tous ceux qui vous conviennent et à qui vous répondez aux exigences, et pas seulement la meilleure option. J'ai sélectionné une vingtaine de sociétés!
- La décision est un processus, pas un résultat. La mémorisation n'aboutira à rien. Environ une semaine, on m'a proposé une vingtaine de tâches sur les algorithmes, et une seule d'entre elles m'était familière (ce que j'ai immédiatement rapporté, bien que beaucoup le jugeraient superflu). Mais j'ai appris à identifier les modèles, et j'ai donc réussi à trouver des solutions sur le pouce.
- N'abandonnez pas. Je me suis retrouvé coincé plus d'une ou deux fois, et l'intervieweur a dû m'amener à la bonne réponse. Cela ne m'a pas empêché de recevoir des offres d'emploi de toutes les entreprises. Il y a eu une entrevue, que j'ai sentie désespérément échouée (quatre des cinq séances, à mon avis, n'ont tiré qu'un «non» définitif), mais en fait, ils m'ont finalement invité à faire partie de l'équipe. Bref, ce qui n'arrive pas dans la vie.
- Ne vous précipitez pas pour balayer les tâches. Quand j'étudiais avec un ami, il rejetait souvent les tâches les plus difficiles, disant que cela ne me serait pas utile. Fait intéressant, sur les quatre types de tâches qui, selon lui, "elles ne tomberont certainement pas", deux ont été capturées. Pas tout à fait dans la forme sous laquelle nous les avons résolus, mais de manière très similaire. Si au cours du processus de formation, vous rencontrez régulièrement une sorte de concept - élaborez-le.
- Ne sous-estimez pas l'importance des compétences générales. Je pense que je dois une grande partie de mon succès au fait que mes réponses (assez honnêtes) aux questions étaient conformes à la politique de l'entreprise. J'ai une théorie selon laquelle les développeurs très forts ont parfois du mal à trouver un travail décent simplement parce qu'ils se comportent grossièrement, mentent ou ne savent pas comment rester dans des situations qui ne sont pas liées à la programmation. À mon avis, toutes ces raisons sont bonnes pour refuser un candidat. Par conséquent, pratiquez votre comportement de la même manière que les compétences techniques.
- Montrez vos connaissances. Au cours des entretiens, des situations se sont souvent produites lorsque, en réponse à une question, j'ai mentionné certaines de mes autres compétences avec la réserve que, faute de temps, je ne pouvais pas parler en détail de la mise en œuvre de cette solution. Parlez-vous de lignes? Montrez dans votre décision que vous savez comment travailler avec Unicode, ou dites comment la prendre en charge. Vous appelez une méthode privée? Expliquez comment les choses fonctionnent avec les méthodes d'Objective-C. Mise à jour des données en vue tableau? Énumérez les animations que vous pouvez prendre en charge. Si vous connaissez mal quelque chose, soulever ce sujet, bien sûr, n'en vaut pas la peine. Mais si vous avez quelque chose à dire, profitez-en pour aller au-delà du cadre étroit dans lequel la question initiale vous conduit, et montrez votre avantage sur ceux qui ne sortent pas des sentiers battus.
- Essayez de ne pas atteindre la barre, mais de la soulever. L'impression que vous faites lors de l'entretien dépend non seulement de la possibilité de vous offrir un emploi, mais également des conditions dans lesquelles il vous sera proposé. Si, à un moment donné, vous serez sûr que vos connaissances pour ce poste sont suffisantes - excellentes! Mais n'oubliez pas: il y a une énorme différence entre «tendre la main plus ou moins» et «tout à fait raison». Votre objectif devrait être le deuxième. Les conditions qui m'étaient initialement offertes (c'est-à -dire avant les négociations) étaient très, très bonnes, et je pense que les entretiens ont joué un rôle important ici.
En conclusion
Eh bien, c'est tout! Le marathon était toujours là , mais je ne regrette rien. J'espère sincèrement que tout ce que j'ai écrit ici aidera quelqu'un à prendre son envol à la poursuite du rêve. Si quelqu'un est intéressé par des conseils pertinents spécifiquement pour le segment iOS, je peux le partager, alors écrivez
dans les commentaires .
Si cela vous encourage: c'est mon deuxième emploi après le collège, j'ai environ deux ans et demi d'expérience, pas de grands noms dans mon CV, je suis diplômé d'un collège très modeste, qui n'a jamais eu de grandes entreprises au "salon de l'emploi", j'ai entamé le processus fin avril et commencé à envoyer un curriculum vitae en juin-juillet et finalement, en quelques mois, j'ai obtenu un emploi dont je ne pouvais que rêver.
Enfin, je veux à nouveau faire de la publicité pour la communauté
CS Career Hackers . Si vous cherchez un endroit pour pratiquer, ou si vous voulez simplement discuter avec des personnes qui sont à votre place (ou qui le connaissent, de chaque côté), veuillez ne pas passer. Je l'ai rencontré quelques mois seulement après la signature du contrat, mais de toute façon, c'est génial. Bonne chance dans vos préparatifs!