Duplicata possible:
Comment vous préparer à la programmation des questions d'entrevue?
Quelqu'un pourrait-il me donner des conseils sur la façon de préparer un entretien technique? En tant que diplômé CS, je suppose que l'on doit approfondir les sujets suivants:
Structures de données: Tableau, liste liée, pile, files d'attente, tas, table de hachage, arbre binaire, arbre de recherche binaire, arbre binaire à équilibrage automatique (AVL, rouge Arbre noir), B-Tree, Tries/Suffix Tree
Algorithmes: Tri (tri à bulles, tri par insertion, tri par sélection, tri par coques, tri rapide, tri par fusion, tri externe), recherche (temps linéaire et logarithmique recherche), théorie des graphes (liste d'adjacence, matrice adjacente, DFS, BFS, tri topologique), programmation dynamique, algorithmes gourmands, diviser et conquérir.
Algorithmes ad hoc: Sélectionnez l'algorithme, la carte Fisher Yates Shuffle, l'échantillonnage du réservoir et la liste est infinie.
Bases de données: Requêtes SQL
Programmation et conception: C, C++, Java, langages de script (Perl, Python), (bases OOPS, fonctions virtuelles, copie profonde et superficielle, constructeur de copie , opérateur d'affectation, STL, gestion de la mémoire, pointeurs/référence, interface, classes abstraites
Systèmes d'exploitation: Synchronisation des threads (Mutex, variables conditionnelles, sémaphores, blocages), gestion de la mémoire (segmentation, pagination, TLB, mécanismes de mise en cache)
Il serait également formidable que nous puissions tous compiler les ressources disponibles sur Internet pour approfondir ces sujets. J'ajouterai certains d'entre eux:
Liste liée et arbres: http://cslibrary.stanford.edu/103/
S'il vous plaît, aidez-moi à trouver des ressources utiles pour préparer ces sujets, j'apprécierais également si vous pouviez ajouter à ces sujets.
Cela dépend vraiment du type d'emploi que vous postulez. J'ai vécu quelques interviews et j'en ai mené encore plus. Voici quelques conseils.
J'espère que cela pourra aider. Bonne chance!
Ce livre m'a été très utile dans le passé. Surtout quand je sortais de l'école.
EDIT: Il s'appelle "Programmation des entrevues exposées: les secrets pour décrocher votre prochain emploi, 2e édition (programmeur à programmeur)"
Il est bon de connaître autant d'éléments de votre liste que possible, mais lorsque j'aide à l'entrevue, nous passons rapidement en revue si vous connaissez les éléments. Nous sommes intéressés, et plus vous en savez, mieux c'est, mais c'est encore mieux si vous en savez assez pour répondre à la raison pour laquelle vous choisiriez une structure de données plutôt qu'une autre dans un problème donné, ou à quelle heure vous utiliseriez des sémaphores plutôt que des mutex, etc.
En plus de cela, les personnes qui apportent des échantillons de travaux antérieurs sont très appréciées. Si vous faites cela, assurez-vous de bien le savoir; c'est-à-dire, n'apportez pas quelque chose que vous avez fait en "équipe", où la majorité du code a été écrit par quelqu'un d'autre, à moins que vous ne le compreniez vraiment. Soyez prêt à expliquer pourquoi vous avez choisi les algorithmes que vous avez choisis, sous quelles contraintes vous travailliez et des choses comme ça.
La plupart de ce que vous avez énuméré n'apparaîtra pas directement dans une interview; on supposera que vous en connaissez la plupart en fonction de vos antécédents. Ce que vous devrez montrer, ce sont les compétences, plutôt que les connaissances, qui font le travail. Des choses comme:
Aucune de ces choses ne peut vraiment être "étudiée", seulement pratiquée. Plus il y a de pratique, mieux c'est, mais rappelez-vous toujours que ce n'est pas "la pratique rend parfait", mais "la pratique parfaite rend parfait". Entrainez-vous toujours à bien le faire, pas seulement à le faire du tout.
Bonne chance!!