Desenvolvimento de aplicativos Android! Requisitos de função de trabalho de engenheiro de desenvolvimento do Meituan Android, basta ler este!

O estado atual do desenvolvimento Android

No momento, o desenvolvimento móvel já está em um estágio saturado, e o desenvolvimento do Android não é tão popular quanto era no passado e não é mais tão popular como era há alguns anos. Assim como uma linguagem de programação experimentou seu pico, ela deve ter essa curva, como a curva seno que aprendemos, primeiro sobe rapidamente, depois atinge o pico, depois cai e, finalmente, se aproxima de um valor estável.

Percebe-se que a partir do segundo semestre de 2016, a Internet móvel está basicamente em um estágio de lento desenvolvimento, e muitos figurões a chamam de segunda metade da Internet. Se a primeira metade da Internet móvel é um estágio extenso e forte de território, então a segunda metade é a fase de defesa do território.Neste estágio, haverá muitos oligarcas.

Tecnicamente, em comparação com a entrevista anterior, apenas os quatro componentes principais do Android foram solicitados. O banco de dados, a rede e a experiência do projeto são diferentes. Agora, a entrevista para as posições do Android projetará vários princípios (incluindo alguns princípios do sistema e princípios e processos de bibliotecas de terceiros), Otimização do Android e tecnologia de plataforma cruzada relacionada ao Android. Além disso, empresas um pouco maiores também exigem experiência do usuário do aplicativo, fluência etc., de modo que as entrevistas do Android não são mais as mesmas.

Compartilhamento cara a cara

A primeira parte é um resumo da minha experiência de entrevista inicial e a segunda parte é um tópico que acho que tem mais espaço para pensar

Resumo da experiência

  • Um belo currículo deve incluir as seguintes partes (layout de cima para baixo)
    • Destaques pessoais (área de especialização, blog pessoal, projeto de código aberto)
    • Experiência educacional (graduação, experiência escolar, honras)
    • Experiência de trabalho (estágio)
    • Experiência de projeto
    • habilidade profissional
  • Uma base sólida de front-end, como você sabe
    • <meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'/> Qual é o papel?
    • flex:1 O que 1 representa?
    • Generator Como lançar um erro?
  • Familiarizado com uma estrutura de front-end (reagir primeiro)
  • Escove as perguntas do algoritmo do LeetCode com frequência e familiarize-se com as estruturas de dados correspondentes, como listas vinculadas comuns, pilhas, filas, tabelas de hash e árvores
  • Familiarizado com noções básicas de rede, comandos Git, comandos Linux
  • Saiba mais sobre as novas tendências de front-end (Flutter, PWA, Serveless, GraphQL, CSS Houdini)
  • Seja confiante e deixe o entrevistador sentir seu amor pelo front-end

Questões de entrevista

Devido ao número relativamente grande de empresas e ao número de entrevistas, as perguntas usuais da entrevista não serão divulgadas e as perguntas da entrevista não serão divididas por empresa.

Questão de algoritmo

A maioria deles vem do LeetCode, LeetCode HOT 100, é melhor você mesmo passar por isso para entender a solução ideal

Questões de programação

  • Use Class para implementar EventEmitter, que requer métodos on, once, emit e off

  • Para implementar deepClone, é necessário clonar com sucesso objetos com referências circulares

  • CSS implementa uma caixa com largura de 1/2 do navegador e uma proporção de 2: 1

  • Implementar a função de soma

    sum(1)(2)(3) == 6; // true
    sum(1, 2, 3) == 6; // true
    复制代码
    
  • Implementar a função sum2

    console.log(sum2(1)(2)(3)()) // 6
    console.log(sum2(1, 2, 3)()); // 6
    复制代码
    
  • Realize a sequência de fibonacci com recursão da cauda

  • Implementar a função conjunta

  • As seguintes funções são implementadas. Quando uma operação push é realizada em um arr, uma linha de mensagem de prompt será impressa automaticamente

    const arr = [1,2,3];
    arr.push(4);
    // arr pushed a new element: 4
    复制代码
    
  • A implementação do código interrompe a operação do Promise

  • Existe um conjunto de fotos, após a realização de uma foto, deve-se esperar até que a foto anterior seja carregada antes de começar a carregar

  • Adicione um método à classe Test para imprimir o conteúdo especificado

    class Test {
        constructor() {
            this.person = { name: "jack", age: 38, position: "CTO" };
        }
        // ......
    }
    
    const test = new Test();
    for (const ele of test) {
        console.log(ele);
    }
    // [ 'name', 'jack' ]
    // [ 'age', 38 ]
    // [ 'position', 'CTO' ]
    复制代码
    
  • Para implementar a função de manipulador, tanto b quanto ac devem ser removidos

    console.log(handler("aabaa")); // 'aaaa'
    console.log(handler("abaccbc")); // 'c'
    console.log(handler("aaccc")); // 'c'
    console.log(handler("aaabccc")); // ''
    复制代码
    
  • Implementar a função de decodificação

    decode('HG[3|B[2|CA]]F') === 'HGBCACABCACABCACAF' // true
    复制代码
    
  • Implemente a função _bind para tornar a impressão bem-sucedida

    function Animal(name, color) {
      this.name = name;
      this.color = color;
    }
    Animal.prototype.say = function() {
      return `I'm a ${this.color} ${this.name}`;
    };
    const Cat = Animal._bind(null, "cat");
    const cat = new Cat("white");
    if (
      cat.say() === "I'm a white cat" &&
      cat instanceof Cat &&
      cat instanceof Animal
    ) {
      console.log("success");
    }
    复制代码
    
  • CSS para obter o efeito de barra de progresso circular

  • Diga o seguinte para imprimir

    console.log(-1 >>> 32); 
    console.log(-1 << 32);
    console.log(1 >> 32);
    console.log(5 >>> 2);
    
    var a = { n: 1 };
    var b = a;
    a.x = a = { n: 2 };
    console.log(a.x);
    console.log(b.x);
    复制代码
    

Resposta curta

  • Implementar a função de inspeção das ferramentas de desenvolvedor F12
  • Realize arrastar e soltar uma caixa de uma área para outra área designada
    • Parte da caixa está dentro da área e parte está fora da área. O que devo fazer?
    • Descreva resumidamente vários métodos-chave de encapsulamento
  • Como solucionar o problema da tela branca do projeto desenvolvido no navegador WeChat
  • Como contar quais áreas em uma página têm mais cliques de usuários
  • Como projetar permissões de usuário de acordo com a granularidade do nível do botão, por exemplo: A pode acessar o botão, B não pode
  • Como fazer capturas de tela automaticamente do conteúdo de uma página da web e como solucionar as restrições de login

  • Um componente envolve o componente B, o componente B envolve o componente C, sua sequência de gatilho componentDidMount
  • O React setState é assíncrono ou síncrono e qual é o princípio?
  • Quais são as precauções para o uso de React Hooks
  • Mecanismo de evento sintético do React
  • Descreva resumidamente os velhos e novos ciclos de vida dos componentes React e fale sobre a introdução da arquitetura React Fiber
  • Uma introdução detalhada ao gerenciamento de estado Redux e como conectar-se aos componentes React
  • O objetivo do React HOC, qual é o padrão do decorador
  • O princípio de realização do Mobx

  • Princípio de middleware de Koa, apresente a função de composição
  • Apresente o mecanismo EventLoop de NodeJS, a função de process.nextTick ()
  • O NodeJS é de thread único ou multi-thread, quais threads existem e por que o JS é de thread único
  • O princípio de realização do CommonJS
  • Quais fluxos existem no NodeJS, como entender o pipe () e suas vantagens
  • As regras de análise de exigir
  • Apresente o balanceamento de carga, qual é o cluster e child_process do NodeJS

  • Como o webpack é empacotado
  • Como a importação dinâmica do webpack é implementada
  • Como escrever seu próprio carregador e plugin
  • Descreva resumidamente os elementos externos no arquivo de configuração do webpack, o UMD entende?

  • Apresentar DNS, o que é consulta iterativa e consulta recursiva, o que é nome de domínio de primeiro nível e nome de domínio de segundo nível
  • Qual é o separador entre o cabeçalho HTTP e o corpo, e como fazer a correspondência com o normal
  • O processo detalhado de HTTPS, o que é um certificado digital, resumo da mensagem, criptografia assimétrica, algoritmo Hash
  • Como realizar comunicação em tempo real entre páginas de guia, cliente e servidor
  • Código de status HTTP: a diferença entre 301, 302 e 307

  • Descreva resumidamente o mecanismo de coleta de lixo do navegador e o que são referências fortes, referências fracas e referências circulares
  • Descreva resumidamente a função de requestAnimationFrame e requestIdleCallback
  • A ordem de análise dos seletores CSS é da direita para a esquerda ou da esquerda para a direita? Por que
  • Qual é o problema com o evento click no terminal móvel, como resolvê-lo e quais poços você encontra no terminal móvel?
  • Descreva resumidamente o processo de geração e as vantagens e desvantagens do JWT, como cancelar ativamente o JWT e renovar o JWT
  • Quais são os indicadores usados ​​para detectar o desempenho do site?
  • Como verificar de qual linha de código a solicitação Ajax do site é enviada, quais eventos estão vinculados a um elemento e o que o painel de depuração do Chrome F8, F10 e F11 representa?
  • Fale-me sobre o seu conhecimento de jpg, gif, jpeg, png, webp, URL base64

Finalmente

Para programadores de Android, eu compilei alguns materiais para você, incluindo, não se limitando a IU avançada, otimização de desempenho, cursos de arquiteto, NDK, applets WeChat de desenvolvimento híbrido (ReactNative + Weex), Flutter e outros todos os aspectos da tecnologia de prática avançada do Android; espero para ajudá-lo e poupar o tempo de todos para pesquisar informações na Internet para aprender, e você também pode compartilhar a dinâmica com amigos ao seu redor para aprenderem juntos!

  • Esboço da tecnologia Android Frontier

  • Conjunto completo de vídeos sistemáticos de arquitetura de alto nível

Coleta de informações: goste + clique no GitHub para obtê-lo gratuitamente

Materiais anteriores de arquitetura avançada do Android, código-fonte, notas e vídeos. UI avançada, otimização de desempenho, cursos de arquiteto, desenvolvimento híbrido (ReactNative + Weex), todos os aspectos da tecnologia prática avançada do Android, e há especialistas técnicos no grupo para discutir, comunicar e resolver problemas.

E4% B8% 8D% E4% BC% 9A% E8% BF% 99% E4% BA% 9B% EF% BC% 9F% E5% A6% 82% E4% BD% 95% E9% 9D% A2% E8% AF% 95% E6% 8B% BF% E9% AB% 98% E8% 96% AA% EF% BC% 81.md) **

Materiais anteriores de arquitetura avançada do Android, código-fonte, notas e vídeos. UI avançada, otimização de desempenho, cursos de arquiteto, desenvolvimento híbrido (ReactNative + Weex), todos os aspectos da tecnologia prática avançada do Android, e há especialistas técnicos no grupo para discutir, comunicar e resolver problemas.

Acho que você gosta

Origin blog.csdn.net/chayel123/article/details/114099438
Recomendado
Clasificación