Eu fui muito bom com algoritmos e estruturas de dados uma vez, há muito tempo. Desde então, programei profissionalmente e fui gerenciar uma equipe pequena, que retrocedeu totalmente minhas habilidades técnicas nesse campo.
Decidi que quero ser desenvolvedor novamente e trabalhar para o Google. O problema é que estou tão fora de prática que, se eu fosse entrevistado agora, certamente seria reprovado em 10 minutos.
Qual programa de treinamento você recomendaria para eu voltar à forma? Eu já comecei este fim de semana voltando ao básico absoluto e implementando alguns algoritmos de classificação, lista vinculada e tabela de hash. Em seguida, acho que vou ler todo o material do curso sobre outras estruturas básicas de dados e algoritmos de gráficos. Quero encontrar um conjunto focado de exercícios práticos que eu possa fazer em um período de tempo relativamente curto, para manipular as antigas células cerebrais. Eu conheço essas coisas - só preciso me lembrar de que sei.
Respostas:
Gostaria de lhe contar quatro coisas e listei a ordem em que preciso lhe dizer:
Boa sorte!
fonte
Eu sugiro escolher uma estrutura de dados ou formato de arquivo real que as pessoas estejam usando agora e fazer algo legal com isso. O formato do arquivo Git está muito bem documentado, por exemplo:
http://book.git-scm.com/1_the_git_object_model.html
Fazer algo interessante com um formato usado pelas pessoas e ser rigoroso sobre isso ensina lições - e - fornece algo em que as pessoas se interessarão.
Ou, pelo menos, faça algo com um ângulo único. Quando eu estava em uma posição semelhante à sua, escrevi uma resposta para uma pergunta de entrevista on-line sobre como criar um gráfico não direcionado que pudesse detectar a inserção de ciclos. Teria sido um problema fácil se eu não tivesse adicionado restrições extras ... mas decidi exigir que ele pudesse fazer inserções em O (1). O resultado foi NoCycle:
http://hostilefork.com/nocycle/
fonte
Isso depende exatamente de qual é seu objetivo - por exemplo, o projeto e a análise de algoritmos estão aí, ou você está seguindo as estruturas e algoritmos padrão? Mas parece-me que você já está fazendo o que precisa fazer.
Se você ainda tem um livro de texto favorito antigo de "há muito tempo", sugiro que o revise. Além disso, é o conselho padrão de revisitar qualquer coisa. Faça perguntas específicas a si mesmo, procure as respostas, quando ficar sem ler as perguntas e navegue rapidamente pelo que encontrar, até encontrar algumas perguntas mais específicas.
Algoritmos e estruturas de dados (Niklaus Wirth) é um livro relativamente conciso sobre algoritmos básicos e estruturas de dados sem todo o design e análise de algoritmos. Muito básico, porém - listas, várias árvores, montes, mas não me lembro de digrafos, por exemplo. Uma vantagem é que há um download gratuito da versão Oberon - http://www.inf.ethz.ch/personal/wirth/ - procure o link em PDF próximo ao final da lista de livros. A Wikipedia é um recurso óbvio, mas tem tanta coisa que é uma boa ideia decidir o que você quer e o que não quer antes de ir para lá.
fonte
Quando você costumava ser muito bom com algoritmos e estruturas de dados, quais eram os recursos que acessava?
Quão curto é o "tempo relativamente curto" necessário para aprimorar seu conhecimento?
Não acho que o conhecimento adquirido com dedicação desapareça. Isso só desaparecerá um pouco, e VOCÊ é o melhor juiz em quais áreas você precisa trabalhar para recuperar sua antiga habilidade com os assuntos que você amou.
fonte