A importância das estruturas de dados e algoritmos para programadores

Diretório de artigos 

1. Estrutura de dados [proficiente]

2. Algoritmos [muitos exercícios]

3. A importância das estruturas de dados e algoritmos [Realidade]

4. Entrevista em Dachang [difícil]

5. Como aprender estrutura de dados e algoritmo [Planejamento]

1. A quantidade de código

2. A importância dos blogs

3. Pense mais, faça mais desenhos

4. Recomendação de livro

6. Resumo 【Prospecto】


  Olá a todos, meu nome é Ji Ning. Estrutura de dados e algoritmo, acredita-se que esse nome seja muito familiar para todos. Pode-se dizer que o domínio das estruturas de dados e algoritmos determina o limite superior do nível do programador.

1. Estrutura de dados [proficiente]

  A estrutura de dados é uma forma de os computadores armazenarem e organizarem dados e refere-se a uma coleção de elementos de dados que possuem um ou mais relacionamentos específicos entre si. No desenvolvimento de software, vários requisitos de gerenciamento de dados podem ser necessários e várias estruturas de dados são necessárias neste momento. As estruturas de dados mais básicas são arrays, listas vinculadas, pilhas, filas, tabelas hash, etc.

  Estrutura de dados pode ser entendida como: dados + estrutura . Dados são um símbolo que descreve coisas objetivas, manipuladas por um programa e armazenadas em um computador. A estrutura inclui a estrutura lógica e a estrutura de armazenamento dos dados.

  A estrutura lógica é dividida em estrutura de coleção, estrutura linear, estrutura de árvore e estrutura gráfica, a estrutura de armazenamento é dividida em estrutura de armazenamento sequencial, estrutura de armazenamento em cadeia, estrutura de armazenamento de índice e estrutura de armazenamento hash (hash).

  Em geral, diferentes tipos de estruturas de dados servem para gerenciar dados em diferentes formatos na memória e realizar operações como adicionar, excluir, verificar e modificar esses dados.

2. Algoritmos [muitos exercícios]

  Algoritmo : É um processo de cálculo bem definido que recebe um ou um conjunto de valores como entrada e produz um ou um conjunto de valores como saída. Simplificando, um algoritmo é uma série de etapas computacionais usadas para transformar dados de entrada em resultados de saída .

  Como todos sabemos, estruturas de dados e algoritmos são inseparáveis. Para os dados na estrutura de dados, também podemos ter alguns outros requisitos para realizar algum processamento nos dados. Por exemplo, classificação e pesquisa, e até mesmo alguns algoritmos mais eficientes na classificação e pesquisa para atingir determinados propósitos que esperamos.

Resumo do algoritmo comum:

  Algoritmos de classificação : classificação por colina, classificação por inserção direta, classificação por troca, classificação rápida, classificação por mesclagem, classificação por contagem, classificação por seleção, classificação por heap
  Algoritmos de pesquisa : hashing, retrocesso, recursão, poda, árvores vermelho-pretas, interpolação
  Teoria dos grafos : o caminho mais curto , árvore geradora mínima, modelagem de fluxo de rede
  Programação dinâmica : problema da mochila, subsequência mais longa, problema de contagem
 Pensamento algorítmico : dicotomia, algoritmo ganancioso, dividir e conquistar

3. A importância das estruturas de dados e algoritmos [Realidade]

  No processo de procura de emprego, todos os que recrutam na escola geralmente têm que passar por um processo de 1 teste escrito + 3 entrevistas. Só depois de passarem no teste escrito podem participar na entrevista. Neste formulário de triagem, o teste escrito de habilidade é particularmente importante.

  Algumas fábricas de pequeno e médio porte geralmente têm 20-30 questões de múltipla escolha + 2 questões de programação no teste escrito, enquanto no teste escrito de algumas grandes fábricas, a maioria delas é baseada em 3-4 questões de programação + questões-e -responder formulário de perguntas. E, sem exceção, os problemas difíceis da prova escrita são todos de programação de JO online. E a maioria das respostas deve ser feita usando estruturas de dados e algoritmos.  ​​​​​​Em 2021, a NetEase também começou a mudar para o método de escrever quatro questões de programação.

   A Tencent também tem 5 questões de programação, que devem ser empresas com as quais todos estão familiarizados.

  Pode-se observar que os requisitos da empresa para a capacidade de codificação dos alunos estão cada vez maiores.Os testes escritos de Dachang são quase todos questões de algoritmo e são difíceis,
e as questões de algoritmo são incluídas apenas em testes escritos pequenos, médios e longos. O algoritmo não é testado apenas no teste escrito, mas também o entrevistador basicamente deixa o entrevistador escrever o código na hora. No entanto, a capacidade do algoritmo não pode ser melhorada rapidamente a curto prazo , e é necessário pelo menos meio ano de treinamento em algoritmo. Caso contrário, o teste escrito será muito difícil durante o recrutamento escolar real, portanto, o algoritmo deve ser preparado com antecedência. Fresco os graduados podem participar da Blue Bridge Cup, ACM, Baidu Star , etc. Na competição de algoritmos, não importa se você ganha um prêmio ou não, você deve melhorar seu nível de programação por meio da competição.

  Os irmãos que leram a introdução on-line da regra do JO que postei antes devem saber que questões de programação são realmente difíceis de ganhar pontos!

4. Entrevista em Dachang [difícil]

  A entrevista não é fácil! Se você passar na prova escrita, mas cair na entrevista, será uma pena. A seguir estão listadas algumas perguntas que o entrevistador costuma fazer quando os idosos e as irmãs estão entrevistando a grande fábrica, para sua referência.

Uma entrevista sênior da CVTE:

1. Como calcular quantos objetos uma classe instancia?
2. Se existe outra classe derivada que herda esta classe, como calcular o número de objetos instanciados por cada uma dessas duas classes?
3. Você entende de sindicatos e estruturas?
4. Como testar se uma máquina é big endian ou little endian?
5. Você entende de filas e pilhas?
6. Como implementar uma fila com duas pilhas .
7. Você já usou templates?
8. Escreva uma função modelo que compare o tamanho de dois números.
9. Você já usou containers?
10. Determine se as duas listas vinculadas se cruzam.
11. A diferença entre vetor e array.
12. Qual foi o projeto mais gratificante que você realizou na escola? Descreva resumidamente o projeto

Uma entrevista com um veterano da Tencent:

1. Autoapresentação
2. Como aprender STL?
3. Se um produto fornece como detectar vazamentos de memória?
4. Comunicação entre processos, como é implementada a memória compartilhada, quais problemas surgirão e como resolvê-los?
5. Por que o TCP é confiável? Como a confiabilidade é garantida? Por que o aperto de mão triplo? Por que o handshake triplo é confiável?
6. O problema da subcontratação de dados HTTP;
7. Relacionado a vetores;
8. Relacionado a hashmap;
9. O princípio da árvore vermelha e preta, complexidade de tempo, etc.; 10. A diferença entre Memcpy
e memmove; 12. No servidor de e-mail do jogo, os jogadores frequentemente criam e excluem e-mails todos os dias. Há grandes quantidades de dados e tamanhos diferentes. Que cenários existirão, como armazená-los e como os e-mails chegam à memória? 13. Escreva uma questão de algoritmo à mão


Uma entrevista com a irmã mais velha do Baidu:

1. Escrita à mão cinco questões , três questões de programação , um banco de dados, um linux
2. Duas questões de banco de dados
3. Quão bem você conhece o algoritmo, programação de classificação por inserção
4. Fale sobre IP, TCP, ARP
5. Qual é o kernel
6. As principais funções da camada IP
7. A camada inferior do mapa e conjunto
8. O uso de bootstrap, html, o nome completo do html
9. Qual você acha que é a diferença entre o framework e a biblioteca

10. Otimização de código
11. Tabela hash
12. Shell script
13. Ideia de classificação rápida
14. O que é recursão
15. O que é dividir e conquistar e qual a diferença da recursão 16.
Como funciona a plataforma web
17. Comandos Linux
18. Entendimento Quais são as tecnologias de ponta, e o inglês e que literatura inglesa você conhece? 

  Essas perguntas da entrevista são marcadas em roxo para o conteúdo das estruturas de dados e algoritmos. A partir disso, podemos ver a importância das estruturas de dados e algoritmos para a procura de emprego no futuro.

5. Como aprender estrutura de dados e algoritmo [Planejamento]

1. A quantidade de código

  Comparado com C e python puro, a estrutura de dados e o algoritmo melhoraram significativamente o comprimento e a dificuldade do código.Se você apenas ler e estudar sem perder tempo escrevendo código, sofrerá muito no recrutamento escolar ao enfrentar um grande grupo de papel reis. de. Portanto, milhares de palavras não são tão práticos quanto ter tempo para fazer mais perguntas algorítmicas.

2. A importância dos blogs

  Tenho um profundo entendimento da importância dos blogs para o aprendizado. Um blog pode ser usado como suas próprias notas técnicas. Quando você escreve um blog, você vai descobrir, nossa, ainda tenho tantas coisas que não entendi. Para deixar o conteúdo do blog correto, você vai ser forçado a verificar as informações e aprender mais.compreensão do conhecimento. Em segundo lugar, o blog também pode promover o aprendizado contínuo: sempre que terminar de escrever um blog, terei uma grande sensação de realização e realização.

3. Pense mais, faça mais desenhos

  Diante de algumas operações e pensamentos incompreensíveis na estrutura de dados, muitas vezes não conseguimos olhar para o teto e pensar com o cérebro. Quando chegar a hora de fazer isso, precisamos fazer mais, desenhar mais imagens e pensar nos problemas em combinação com fotos.

4. Recomendação de livro

Recomendação de estrutura de dados e aprendizado de algoritmo:

Na "Competição de Algoritmos" do professor Luo Yongjun , a ideia do algoritmo é simples e clara e a implementação do código não é desleixada.

"Big Data Structure" de Cheng Jie , a história é mais interessante, pode ser usada como um livro introdutório à estrutura de dados.

"Xiao Hui's Algorithmic Journey", de Wei Mengshu, conta o conhecimento básico de algoritmos e estruturas de dados, perguntas de entrevistas de algoritmos complexos e mutáveis ​​​​e os cenários reais de aplicação de algoritmos por meio da jornada mental do protagonista virtual Xiao Hui, na forma de quadrinhos

Perguntas recomendadas para escovar a estrutura de dados:

"Oferta do Sword Pointer" "Guia de entrevista do código do programador" 

  Os dois livros acima podem ser lidos depois de aprender a estrutura de dados e o algoritmo. Depois de compreender 90% dos tópicos em “Sword Finger Offer”, pode-se dizer que você atingiu o limite de um grande programador de fábrica. Se você pensar novamente, melhorar, você precisa revisar as questões reais do teste escrito de Byte, Huawei e Tencent ou as questões de algoritmo no leetcode.

  Normalmente, é recomendado usar Niuke.com, Jisuanke, etc. para perguntas sobre escovação. Sem a base de uma certa quantidade de código, não é recomendado escovar o leetcod diretamente, a perda supera o ganho.

6. Resumo 【Prospecto】

  Estrutura de dados e algoritmo é um curso muito importante, vale a pena o tempo de todos para aprender, mas também é difícil, o que aumenta a distância entre os programadores. Espero a todos, e também espero poder estudar bem as estruturas de dados e algoritmos, revisar as questões com cuidado e ter a consciência tranquila. Por fim, espero que todos possam receber sua oferta favorita e ir para a fábrica de amor dos seus sonhos daqui a um ou dois anos!

Acho que você gosta

Origin blog.csdn.net/zyb___/article/details/131884367
Recomendado
Clasificación