J'étais assez bon avec les algorithmes et les structures de données une fois, il y a très longtemps. Depuis lors, j'ai programmé professionnellement, puis je suis allé gérer une petite équipe, qui a totalement tiré mes compétences technologiques dans ce domaine.
J'ai décidé de redevenir développeur et de travailler pour Google. Le truc, c'est que je suis tellement hors de la pratique, que si je devais être interviewé en ce moment, je serais sûrement déboulonné en 10 minutes.
Quel programme de formation me recommanderiez-vous pour me remettre en forme? J'ai déjà commencé ce week-end en revenant aux bases absolues et en implémentant quelques algorithmes de tri, liste liée et table de hachage. Ensuite, je pense que je vais lire l'intégralité du matériel de cours sur les autres structures de données de base et les algorithmes graphiques. Je veux trouver un ensemble concentré d'exercices pratiques que je peux faire en relativement peu de temps, pour jongler avec les vieilles cellules du cerveau. Je connais ce truc - je dois juste me rappeler que je le sais.
Réponses:
Il y a 4 choses que je voudrais vous dire, et j'ai énuméré l'ordre dans lequel je dois vous les dire:
Bonne chance!
la source
Je suggère de choisir une véritable structure de données ou un format de fichier que les gens utilisent actuellement, et de faire quelque chose de cool avec. Le format de fichier Git est assez bien documenté par exemple:
http://book.git-scm.com/1_the_git_object_model.html
Faire quelque chose d'intéressant avec un format que les gens utilisent et être rigoureux à ce sujet donne des leçons - et - vous donne quelque chose qui intéressera les gens.
Ou à tout le moins, faites quelque chose avec un angle unique. Lorsque j'étais dans une position similaire à la vôtre, j'ai écrit une réponse à une question d'entrevue en ligne sur la création d'un graphique non dirigé qui pourrait détecter l'insertion de cycles. Cela aurait été un problème facile si je n'avais pas ajouté de contraintes supplémentaires ... mais j'ai décidé d'exiger qu'il puisse faire des insertions dans O (1). Le résultat a été NoCycle:
http://hostilefork.com/nocycle/
la source
Cela dépend exactement de votre objectif - par exemple, y a-t-il une conception et une analyse d'algorithmes, ou vous en tenez-vous aux structures et algorithmes standard? Mais il me semble que vous faites déjà ce que vous devez faire.
Si vous avez encore un vieux livre de texte préféré "il y a très longtemps", je vous suggère de le revoir. Au-delà de cela, c'est le conseil standard de tout revoir. Posez-vous des questions spécifiques, recherchez les réponses, lorsque vous êtes à court de questions, parcourez rapidement tout ce que vous pouvez trouver jusqu'à ce que vous puissiez trouver des questions plus spécifiques.
Algorithmes et structures de données (Niklaus Wirth) est un livre relativement concis sur les algorithmes de base et les structures de données sans toute la conception et l'analyse d'algorithmes. Très basique, cependant - listes, divers arbres, tas, mais je ne me souviens pas des digraphes par exemple. Un avantage est qu'il y a un téléchargement gratuit de la version Oberon - http://www.inf.ethz.ch/personal/wirth/ - recherchez le lien PDF près du bas de la liste des livres. Wikipédia est une ressource évidente, mais a tellement que c'est une bonne idée de décider ce que vous voulez et ce que vous ne voulez pas avant d'y aller.
la source
Quand vous étiez plutôt bon avec les algorithmes et les structures de données, à quelles ressources avez-vous accédé?
Quelle est la durée «relativement courte» dont vous avez besoin pour parfaire vos connaissances?
Je ne pense pas que les connaissances acquises avec dévouement disparaîtront jamais. Cela ne fera que disparaître un peu, et VOUS êtes le meilleur juge sur les domaines sur lesquels vous devez travailler pour retrouver vos anciennes prouesses avec les sujets que vous avez aimés.
la source