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