Eh bien, je frappe les livres partout où je peux. J'ai une interview à venir, la première par téléphone, pour un poste d'ingénieur logiciel. J'ai lu tous les articles de blog, j'ai lu tous les comptes rendus d'entrevues (certains assez anciens), et Google lui-même a même suggéré une liste de lecture de livres, dont aucun ne surprendrait personne ici. Pourtant, après un certain temps de préparation, je ne peux pas me débarrasser de ce sentiment qu'il y a un si grand terrain à couvrir, et je ne sais jamais s'il faut aller avec la profondeur ou la largeur. Je me suis retrouvé à réapprendre tout un domaine de compsci, seulement pour oublier la plupart des petits détails alors que je passe à un autre.
Donc, je ne sais pas s'il y a une bonne réponse à cette question, mais je cherche des conseils pratiques sur la façon d'aborder les semaines restantes avant l'entrevue. Une partie de mon cerveau est fatiguée par le bourrage, et bien sûr le reste doit être utilisé pour certains problèmes difficiles sur mon lieu de travail actuel.
la source
Réponses:
Ce que vous devez savoir
Google veut vous embaucher!
La force vitale de toute entreprise de logiciels est ses employés et Google n'est pas différent. Il cherche à embaucher les meilleurs et les plus brillants et les personnes qui mènent les entretiens veulent que vous réussissiez autant que vous.
Google fera de son mieux pour vous évaluer le plus précisément possible. C'est leur boulot.
Google est une entreprise axée sur les données. Les décisions d'embauche ne sont pas décidées par le gestionnaire fiat. Au lieu de cela, chaque intervieweur prend des notes détaillées au cours de l'entretien qui sont combinées en un paquet. Ce paquet sera ensuite examiné par un comité distinct , qui prendra finalement la décision. Donc, si vous ne gélifiiez pas avec l'un de vos enquêteurs, ne vous inquiétez pas! Ce qui compte, c'est votre performance lors de l'entretien.
Compétences que vous devriez avoir
Assurez-vous de mettre à jour les compétences / techniques suivantes avant votre entretien. Même si on ne vous pose pas directement une question à ce sujet, les examiner peut certainement vous mettre dans la bonne mentalité.
Structures de données
Quelle est la différence entre un tableau et une liste liée? Un arbre et un graphique? Quand utiliseriez-vous l'un sur l'autre? Quel serait l'impact sur les compromis vitesse / mémoire?
Une question d'entrevue ne se termine pas par une solution de travail. Soyez en mesure d'expliquer le temps d'exécution de votre approche et les types de compromis que vous pourriez faire. Par exemple, "si je mettais tout en cache, cela prendrait X Go de RAM mais fonctionnerait plus vite parce que ...". Ou, "si je gardais l'arbre binaire trié pendant que j'effectuais les opérations, X serait plus lent, Y serait plus rapide, etc."
Des algorithmes
Algorithmes de base de traversée de graphe, algorithmes de traversée d'arbre et deux bonnes approches pour trier les nombres.
Assurez-vous de vous entraîner à résoudre un problème non trivial à l'aide de la programmation dynamique. C'est votre as dans le trou quand il s'agit de questions d'entrevue difficiles!
Tables de hachage
C'est énorme. Sachez tout ce qu'il y a à savoir sur les tables de hachage, de pouvoir en implémenter une vous-même, à connaître les fonctions de hachage, à savoir pourquoi le nombre de compartiments doit être un nombre premier. Les concepts impliqués dans les tables de hachage s'appliquent à presque tous les domaines de l'informatique.
Points de discussion sur vous
Ces premières minutes de bavardage avec l'intervieweur sont un moment important pour expliquer toute sorte d'expérience qui vous distingue. Projets pertinents, réalisations techniques importantes, etc. N'oubliez pas que la personne qui mène l'entretien a interviewé des dizaines, voire des centaines de personnes intelligentes comme vous. Alors, que pouvez-vous dire qui les surprendrait?
Par exemple, dans une interview, j'ai parlé à l'intervieweur d'un programme que j'ai écrit pour jouer au jeu de Go au collège. Il est très difficile d'écrire une IA pour le jeu de Go, et j'ai un horrible Go-bot pour le prouver! L'essentiel est d'être vous-même, et pas seulement une personne intelligente qui sait programmer.
N'insistez pas trop, c'est juste une interview comme les autres. Soyez assuré que personne ne vous posera de questions stupides sur les plaques d'égout ou le mont. Fuji.
la source
Se détendre
si votre interview ressemble à la mienne, l'intervieweur n'est pas là pour vous soumettre à la soumission, il est là pour voir comment vous pensez .
EDIT: ce n'était que la première interview téléphonique, je ne sais rien de plus que cela ... et si je l'ai fait, je ne pourrais probablement pas vous le dire de toute façon!
la source
A emprunté l'article suivant à http://get-that-job-at-google.blogspot.in/
Connaissances de codage C / C ++ et Java sont les langages de programmation préférés des intervieweurs de Google. Vous devez bien connaître au moins l'un d'entre eux. Vous devrez écrire du code dans les entrevues sur écran téléphonique et dans les entrevues sur place également.
Livres recommandés pour les interviews CS : Introduction aux algorithmes - par Cormen
Entrevues de programmation exposées
Cracking the Coding Interviews
Algorithmes pour les entretiens
Sites Web recommandés pour la pratique du codage : InterviewStreet, Topcoder
Big-O Cela devrait être le point de départ dans la préparation d'un entretien algorithmique. Vous ne devez pas lutter avec l'analyse de complexité de base, car elle garantira de ne pas être embauché. Vous devez être familier et comprendre les notations O, Θ et Ω. Je recommande de lire la section sur l'analyse de la complexité du livre Structures de données et algorithmes.
Tri Vous devriez pouvoir écrire facilement des algorithmes O (n * lgn) comme QuickSort et MergeSort. Comparez et comprenez les meilleures, les pires et les complexités moyennes des cas. J'ai trouvé ce tableau sur wiki très pratique; il répertorie les propriétés importantes de tous les algorithmes de tri. Ne négligez pas les algorithmes de base O (n ^ 2) comme le tri par bulles ou le tri par insertion, car d'autres algorithmes s'améliorent par rapport à ceux-ci. Les entretiens portent davantage sur l'amélioration d'une idée de base, les algorithmes de tri aideront à ce processus.
Tables de hachage En cas de doute, pensez aux tables de hachage. Ils sont utiles dans la plupart des problèmes et nous aident fréquemment à améliorer la complexité temporelle de certains problèmes en mettant en cache les résultats.
Arbres Parcourez les algorithmes élémentaires de construction d'arbres, de traversée et de manipulation. Vous devriez pouvoir implémenter des algorithmes basés sur des arbres de recherche binaires. Vous devez être familier avec les arbres équilibrés, bien que vous ne soyez pas censé écrire du code pour eux dans l'interview: arbres AVL, arbres rouge-noir, Trie, arbres n-ary, etc. nous pouvons résoudre de nombreux problèmes d'arbre en modifiant simplement l'un de ces parcours.
Graphs Les graphes sont un concept très important en informatique. Pratiquez les trois représentations de base des graphiques (objets et pointeurs, matrice et liste d'adjacence) et familiarisez-vous avec leurs avantages et inconvénients. Il n'y a pas beaucoup de temps pendant l'entretien, vous ne devez donc pas vous attendre à quelque chose de très complexe. Cependant, les algorithmes de base de traversée de graphe (DFS et BFS) sont indispensables, vous devez les implémenter dans toutes les représentations de base. Vous devriez être en mesure d'implémenter les algorithmes Dijkstra ou Floyd-Warshall ainsi que des algorithmes de spanning tree minimum (Kruskal et Prim). En savoir plus sur le tri topologique, car il est étonnamment très utile dans de nombreux problèmes de commande.
Programmation dynamique C'est probablement le sujet le plus important car les implémentations sont petites. Vous devriez être capable d'implémenter 2 à 3 algorithmes dynamiques pendant 35 à 40 minutes. En vérifiant les ressources sur ce blog ou sur le Web, vous constaterez que vous devez vous attendre à au moins une question de programmation dynamique par entretien.
Systèmes d'exploitation Découvrez les processus, les threads et les problèmes de concurrence. Connaître les mutex, les sémaphores, les moniteurs et leur fonctionnement. Comprenez ce que sont les impasses et les livelocks et comment les éviter. En savoir plus sur le changement de contexte, la planification, etc.
Mathématiques Vous devez vous familiariser avec le comptage, la combinatoire et la probabilité.
Publications de Google Lisez les publications révolutionnaires de Google répertoriées ci-dessous si vous en avez le temps. Système de fichiers Google
Google Bigtable
Google MapRéduire
la source
Si vous avez passé les deux derniers mois à Careercup, vous pouvez vous permettre de vous détendre. Ce qui se passe à ce moment de l'entrevue ne peut pas être planifié, mais il vaut mieux être détendu et avoir l'énergie pour durer les tours.
la source