Fiquei impressionado com algumas das perguntas da entrevista (b)

prefácio

Endereço Original && meu blog
sabe quase && sei quase colunas
Jane livros
Henan front-end cambial líquida Qunguan

Última escreveu um artigo alguns me impressionaram as perguntas da entrevista (a) não tenha visto os alunos podem ir oh.
A fonte do título do artigo: Existem mais de 20 das perguntas face frontal, com certeza você não vêm para ver o ponto? .
Se a pergunta acima neste artigo eu não mencioná-lo, ele mostra que alguns problemas podem ser facilmente obtidos ou verificação simples ou uma capacidade limitada eu não posso responder para fora. Se você não fizer isso e algumas das questões que eu não mencionou isso eu acho que é a capacidade limitada não pode responder fora dele. Hey hey hey. Brincadeira, mas você pode deixar uma mensagem abaixo Oh!

texto

Ou as regras antigas dar o tema, e depois olhar para a minha resposta, que conselho pode mencionar na placa da mensagem.

  1. O que faz a, b, c, respectivamente, de saída?

function fun(n,o){
    console.log(o)
    return{
      fun:function(m){
         return fun(m,n);
      }
    };
}
var a = fun(0); a.fun(1); a.fun(2); a.fun(3);
var b = fun(0).fun(1).fun(2).fun(3);
var c = fun(0).fun(1); c.fun(2); c.fun(3);
  1. Uso como diversos métodos para identificar os elementos recorrentes na matriz tinha

Por exemplo: [1,2,4,4,3,3,1,5,3]

Saída: [1,3,4]

  1. Dado alguns dos documentos (documentos), palavras (palavras), para encontrar todos os documentos no documento todas as palavras presentes

var docs = [{
        id: 1,
        words: ['hello',"world"]
    },
    {
        id: 2,
        words: ['hello',"kids"]
    },
    {
        id: 3,
        words: ['zzzz',"hello"]
    },
    {
        id: 4,
        words: ['world',"kids"]
    }
 ];
findDocList(docs,['hello']) //文档1,文档2,文档3
findDocList(docs,['hello','world']) //文档1
  1. O que a seguinte saída código?

var test = (function(a){
    this.a = a;
    return function(b){
        return this.a + b;
    }
    }(function(a,b){
        return a;
    }(1,2)));
console.log(test(1));
  1. Não ciclo, criando uma matriz de comprimento 100, e o valor de cada elemento é igual ao seu índice.

  2. Um números inteiros se todo mundo é simétrica, então este número é o número simétrico. Então, por favor descobrir a partir de 1 para o número 10000 para todos simetria

  3. A saída de código a seguir é o quê?

var myObject = {
    foo: "bar",
    func: function(){
         var self = this;
         console.log('outer func : this.foo' + this.foo);
         console.log('outer func : self.foo' + self.foo);
         (function(){
             console.log('inner func : this.foo' + this.foo);
             console.log('inner func : self.foo' + self.foo);
         })();
    }
};
myObject.func();
  1. Por favor, escreva as seguintes regras de expressão regular da descrição detalhada
    / ^ (0 [1-9] dd ?)? [1-9] d {6} d? $ /

/ ^ (1 [89] | [2-9] d | 100) $ / i
/ ^ [w -] + @ [a-Z0-9 -] + ({[az] {2,6}}) { 1,2} $ / i

  1. Por favor método de array chateado write

  2. Implementação de gravação element.getElementsByClassName

  3. Por favor saída de código de escrita

if(!("a" in window)){
    var a = 1;
}
alert(a);
  1. Por favor saída de código de escrita

var handle = function(a){
    var b = 3;
    var tmp = function(a){
        b = a + b;
        return tmp;
    }
    tmp.toString = function(){
        return b;
    }
    return tmp;
}
alert(handle(4)(5)(6));
  1. expressão javscript do valor "[] == '' 'é, por quê?

  2. Js gera o seguinte html, clique em cada li ...... quando pop, 2, 3
    // li onclick evento pode aparecer índice está sendo clicado =?

<ul id="testUrl">
    <li>index=0</li>
    <li>index=1</li>
</ul>
  1. Mapa de New ES5 é necessário para aumentar a ES5 seguinte método mapa ambiental

A resposta é revelada

A primeira pergunta

function fun(n,o){
   console.log(o)
   return{
       fun:function(m){
           return fun(m,n);
       }
   };
}
var a = fun(0); a.fun(1); a.fun(2); a.fun(3);
var b = fun(0).fun(1).fun(2).fun(3);
var c = fun(0).fun(1); c.fun(2); c.fun(3);

Vamos dar uma olhada em passo a passo. Em primeiro lugar, a=fun(0)porque só passar um parâmetro, consolea saída é o segundo valor do parâmetro, é, sem dúvida, que a produção undefined.

Então, para a.fun(1)ser visto, em frente a esta frase está chamando fun(0)a função retorna um objeto dentro da volta fun, desta funvez fun(m,n)retorna para fora. Desta vez Nota : este objeto é funchamado por um momento antes de voltar fun(m,n), ele consoleserá executado, você pode determinar, certamente não vai passar em saída de 1, porque 1 como o primeiro parâmetro passado fun(m,n), e a consolesaída é o primeiro dois parâmetros. A saída, então, Shane?

Bem, nem todos adivinhação, a resposta é zero. Alguns podem perguntar, Nani? Para o cabelo é 0,0 vêm?

Para explicar o que quero, desde que você tenha um fechamento clara. Aqui fechamento usado. Sabemos que existe uma função de fechamento está fora do escopo de variáveis internas através de fechamento de funções de acesso. Na verdade, correndo a=fun(0)tempo, returnobjetos fora da função funno passado no 0 como o segundo parâmetro passado funpara fora para dentro e, em seguida, retornar 0 foi salvo. Assim, quando o correr a.fun(1)do tempo é realmente de saída antes de zero. Os dois também chama de volta e este princípio, o resultado final é 0.

Pode haver um pouco ao redor, ter tempo para olhar para si mesmos ou para depuração. (Eu venho tentando articular, e se ele não sabe se você deixar uma mensagem =. =).

Então, para b, se ficar a conhecer aqui na frente dele não é difícil. fun(0)tempo de execução será returnum objeto fora da parte traseira de uma série de chamadas encadeadas estão chamando a função retorna um objeto na frente fun, resultando em saída éundefined 0 1 2

E finalmente para c, se btodos eles se conheçam, aqui basicamente nada mais difícil do. Respectivamente, será a saída undefined 0 1 1.

Se você não entender, então eu sugiro pisar-lo, ainda não sei se você pode deixar uma mensagem abaixo, vou tentar o meu melhor para dar-lhe a capacidade de explicar.

A segunda questão

O uso do método achado como muitos elementos na matriz tinha uma recorrência
exemplo: [1,2,4,4,3,3,1,5,3]
Saída: [1,3,4]

Minha idéia é criar uma matriz. E depois passou na matriz está classificada. E então usar sorto método para fazer uma iteração, porque leva tempo para dois e o número ae bcomparar iguais e se resultnão há qualquer put duplicado apressionado.

Este é meu código:

atualização 4,5 dias

Graças @ pouco teimosa cap colega apontou o problema

function repeat(arr) {
    var result = [];
    arr.sort().reduce(function(a, b) {
        if(a === b && result.indexOf(a) === -1) {
            result.push(a);
        }
        return b;
    });
    return result;
}
//之前问题代码
function repeat(arr){
    var result=[];
    arr.sort().sort(function(a,b){
        if(a===b&&result.indexOf(a)===-1){
            result.push(a);
        }
    });
    return result;
}

atualização 3,23 dias

Graças @ iniciar-wrap método fornecido pelos alunos:

function repeat(arr){
    var result = [], map = {};
    arr.map(function(num){
    if(map[num] === 1) result.push(num);
        map[num] = (map[num] || 0) + 1;
    }); 
    return result;
}

Vale ressaltar que map[num] = (map[num] || 0) + 1, deste código (map[num] || 0), se map[num]houver, então map[num]+1 0 + 1 e vice-versa, com um toque muito pessoal inteligente.

Graças @ Saotome Mizuho dicas excêntricas fornecida por:

// es6
let array = [1, 1, 2, 3, 3, 3, 4, 4, 5];
Array.from(new Set(array.filter((x, i, self) => self.indexOf(x) !== i)));
// es5
var array = [1, 2, 4, 4, 3, 3, 1, 5, 3];
array.filter(function(x, i, self) {
    return self.indexOf(x) === i && self.lastIndexOf(x) !== i 
});

ES6 ideias Comentário:

array.filter ((x, i, auto ) => self.indexOf (x)! ==)
retorna uma matriz de elementos repetidos que constituem arrary por (N-1 ou de retorno)

novo Conjunto ([iteráveis])
Devolve uma colecção (elemento de repetição é aqui incorporada)

Array.from ([iteráveis])
Devolve uma matriz (no passo anterior torna-se o conjunto da matriz)

// ES5 ideias Comentário:

Uso indexOfe lastIndexOfo elemento de determinação para a frente e reverso determina que o número não é a mesma (se o mesmo número, então o método retorna dois isão o mesmo)

A terceira questão

Dado alguns dos documentos (documentos), palavras (palavras), para encontrar todos os documentos no documento todas as palavras presentes

Meu pensamento é: o segundo parâmetro é um array com joina síntese de uma corda, e depois forEachtransversal, respectivamente, a documentação é wordstambém usado joincorda sintética, usando o searchmétodo para encontrar todos os documentos onde wordsse incluído arrStr.

Este é meu código:

function findDocList(docs, arr) {
    let arrStr = arr.join(""),
    itemStr,
    result = [];
    docs.forEach(function(item) {
        itemStr = item.words.join("");
        if(itemStr.search(new RegExp(arrStr)) !== -1) {
        result.push("文档" + item.id);
    }
    });
    console.log(result);
}
findDocList(docs, ['hello']) //文档1,文档2,文档3
findDocList(docs, ['hello', 'world']) //文档1

quarta questão

O que a seguinte saída código?

var test = (function(a){
        this.a = a;
        return function(b){
        return this.a + b;
        }
}(function(a,b){
        return a;
}(1,2)));
console.log(test(1));

Você pode ver, há dois função de auto-execução. A seguinte função de auto-execução é completada uma passagem 1, de modo que a auto-executar as funções acima this.a=1, onde o thisponto window. Em seguida, a função de auto-execução retorna uma função para a testvariável. A chamada seguinte test(1), isto corresponde a um passado return 1+1de modo saídas 2.

A quinta questão

Não ciclo, criando uma matriz de comprimento 100, e o valor de cada elemento é igual ao seu índice.

Se você sabe Object.keys e Array.form , então esta pergunta basicamente nada difícil.
Resposta:

Object.keys(Array.from({length:100}))

Hey! Esperar para a próxima Array.formnão ES6 fazer, como conseguir ES5 de?
O código:

Object.keys(Array.apply(null,{length:100}))

Se você não sabe pode consultar aqui para explicar.

pergunta 6

Um números inteiros se todo mundo é simétrica, então este número é o número simétrico. Então, por favor descobrir a partir de 1 para o número 10000 para todos simetria

Penso, primeiros números em uma string, e então usar uma variedade de mapmétodos para atravessar a corda, a corda se torna a matriz separado, e depois chamar a matriz reversemétodo, e em seguida, virar a matriz joinpara uma cadeia, e, finalmente, a reversão de contraste se a cadeia ea cadeia antes de lançar o igual a (método um pouco estúpido, olhar grande Deus ilumine):

function symmetric(){
    var i=1,
    str,
    newStr,
    result=[];
    for(;i<1000;i++){
        str=""+i;
        newStr=result.map.call(str,function(item){
            return item;
        }).reverse().join("");
        if(str===newStr){
            result.push(+str);
        }
    }
    return result;
}

A sétima questão

Qual será a seguinte saída código?

var myObject = {
    foo: "bar",
    func: function(){
    var self = this;
    console.log('outer func : this.foo' + this.foo);
    console.log('outer func : self.foo' + self.foo);
    (function(){
        console.log('inner func : this.foo' + this.foo);
        console.log('inner func : self.foo' + self.foo);
    })();
    }
};
myObject.func();

Este problema principalmente no thisponto de, pessoalmente, sinto que não é muito difícil, porque thiseu tenho sido totalmente contratada ele (mau sorriso).
Este problema, em seguida, considerar apenas que a chamada de função thispontos para quem.
Função começou self=thisaqui thisé o ponto myObject, porque myObject.func(), obviamente, myObjecta coisa de chamá-lo, de modo que o primeiro duas frases consolede saída foosão bar.
O seguinte é uma função de auto-execução, você sabe, uma vez que a execução da função thisem circunstâncias normais todo o ponto windowaqui não é excepção, por isso, a terceira consolesaída fooé undefinedporque windowsob foonenhuma definição. A quarta saída é self.fooo selfé como acima definido, selfisto é, myObjectpor isso aqui fooé bar.

Q8

Por favor, escreva as seguintes regras de expressão regular da descrição detalhada
/ ^ [1-9] 6 {D} $ D / ?? (0 [1-9] dd?).
/ ^ (1 [89] |. [2-9] D | 100) $ / I
/ ^ [W -] @ + [A-Z0-9 -] + ({[AZ] {2,6}}) $ {1,2} / I

Ei, eu sou mais regular também considerada boa parte. Vou explicar um por um, algum regular mais difícil de expressar em palavras, sentimos sentido.

A primeira: Em primeiro lugar ^, em nome do que é atrás de um monte de coisas para o início $representante para acabar com ela na frente de um monte de coisas aqui, o que significa que, a fim (0[1-9]\d\d?)?[1-9]\d{6}\d?para o início e fim da cadeia. Em seguida, para o primeiro meio de correspondência entre parênteses é a primeira cadeia para a segunda corda 0 1-9 0-9 terceira cadeia opcional quarta corda, qualquer correspondência 1-9, então este conteúdo inteiro dentro dos parênteses opcionais. Respeita o significado por trás de uma primeira cadeia correspondente é então de volta junho 1-9 0-9 final, opcional string string correspondência, qualquer jogo 0-9.

Então arrumado é: 0 para o primeiro jogo, o segundo 1-9, o terceiro número é, em quarto lugar opcional, qualquer jogo número; e toda a frente do nódulo pode ter ser Nenhum. 1-9 do quinto (se não, em seguida, cozinhe o que precede que, a partir da primeira contagem) e as costas 6 é o último dígito seqüência numérica opcional, e é para começar e terminar.

Aqui está um exemplo:
022 222 222 222 para true //
002 222 222 222 // como falsa uma vez que o segundo dígito 1-9
02222222222 // primeiro suporte último dígito ou figuras mais recuados são omitidos
0222222222 // último dígito primeiro suporte e por finalmente, a parte digital omitindo
22222222 // primeiros conteúdos suportes omitidos
02222222 // d {6} não está satisfeito.

Segunda: 1, tal como os primeiros partidas, 8 ou 9 como o segundo ou para 2-9 como o primeiro, e o segundo número é a correspondente cadeia ou 100, e no início e no fim da sua caso é ignorado.

exemplo ainda mais intuitiva:

18 // verdadeiro jogo precedente. 1 [89]
23 é verdadeiro // partida [2-9] D
100 @ verdadeiro jogo 100
. 17 a falso //
230 // a falsa

Terceiro:
correspondência pelo menos uma frente ou um número ou letra, ou _ - @ rematching seguida, corresponde a pelo menos uma letra ou número, ou - e, em seguida, para coincidir com a letra 2-6} {1-2, a corda e eles ignoram caso para o início eo fim.

Esta linguagem uso para descrever muito difícil, eu não posso falar, em um exemplo:

. D @ {AW} 3 {} // AD aos verdadeiros
- @ - {ddd {}} // FS para true
. 3. 3 @ {DW} {} // ddd para true
.. 3 @ 3 a falsa // {DW} {letras 2-6 isto é, um} um menos ({[a-z]{2,6}}){1,2}atrás {1,2}não se encontram
@ 3 {dw} {ddd} // falso [w -] + não satisfazer o
33 {dw} {ddd} // falsa não @
DSA @ FFFF {DW} {D} / / false ({[az] { 2,6}}) não cumpre a

nono título

Por favor método de array chateado write

atualização 4,5 dias

referência aqui

// 之前的问题代码
function randomsort(a, b) {
    return Math.random()>.5 ? -1 : 1;
    //用Math.random()函数生成0~1之间的随机数与0.5比较,返回-1或1
}
var arr = [1, 2, 3, 4, 5];
arr.sort(randomsort);

pergunta 10

Escrever implementação element.getElementsByClassName de
minhas idéias: primeiro obter todos os elementos na página, e em seguida, splito passado em múltiplos classdividida em uma matriz, em seguida, duas camadas de interesse para encontrar elementos de circulação qualificado (pessoalmente acho que este método é eficiente realmente baixo, quando é algo, mensagem de boas vindas)
Código:

if(!document.getElementsByClassName) {
    document.getElementsByClassName = function(className) {
    var ele = [],
        tags = document.getElementsByTagName("*");
    className = className.split(/\s+/);
    for(var i = 0; i < tags.length; i++) {
        for(var j = 0; j < className.length; j++) {
        //如果这个元素上有这个class且没在ele里面(主要防止多个class加在一个元素上推进去两次的情况)
            if(tags[i].className === className[j] && ele.indexOf(tags[i]) === -1) {
                ele.push(tags[i]);
            }
        }
    }
    return ele;
    }
}

XI título

Por favor saída de código de escrita

  if(!("a" in window)){
      var a = 1;
  }
  alert(a);

Este problema principalmente na declaração de variáveis ​​aumentam, qualquer variável (ES5 in) declaração será aumentado para o topo do escopo atual. Então aqui está o código realmente é:

  var a;
  if(!("a" in window)){
      a = 1;
  }
  alert(a);

Então, antes de a instrução é executada, se aele já está no windowmeio, de modo que haveráatert undefined

título Twelfth

Por favor saída de código de escrita

var handle = function(a){
    var b = 3;
    var tmp = function(a){
        b = a + b;
        return tmp;
    }
    tmp.toString = function(){
        return b;
    }
    return tmp;
}
alert(handle(4)(5)(6));

Vamos ver passo a passo: primeiro handle(4), para onde o programa começa a funcionar, crie uma tmpfunção, enquanto a tmpfunção do toStringmétodo reescrito e, finalmente, voltar a esta tmpfunção.
Nota : tmpna anão passar em 4, não coloque tmpno ae handledo aconfuso, então aqui passar 4 nada seco.

Em seguida, o segundo passo: handle(4)(5)aqui é a implementação de uma tmpfunção, desta vez tmpa função aé passada na 5 * bé o primeiro passo na implementação da função bque é de 3 (não sei por que os alunos vão aprender a entender 3 de encerramentos de TI), finalmente, este bé equivalente a 8.

A terceira seção repete o segundo passo 8+6, o último b14, javascripto motor chama automaticamente o último toStringa voltar b, então o resultado é 14.

Décimo terceiro título

expressão javscript do valor "[] == '' 'é, por quê?

Este exame título de js ==entender operador, sabemos ==operadores de ambos os lados, se o valor não é o mesmo tipo de valor irá convertê-los para voltar no mesmo tipo de comparação. Esta questão esquerdo é objecttipo, o direito é o stringtipo, ele irá converter a esquerda é stringpara comparar o tipo, [].toString()isto é, ''de modo que o resultado final é true.

título XIV

Js gera o seguinte html, clique em cada li ...... quando pop, 2, 3
// li onclick evento pode aparecer índice está sendo clicado =?

<ul id="testUrl">
    <li>index=0</li>
    <li>index=1</li>
</ul>

Esta questão diretamente como necessário para gerar o código HTML correspondente, dar uleventos de ligação usando ouvintes de eventos agente que foi encomendado, então a saída do seu número de série e o conteúdo correspondente, nada difícil. Meu código:

var ul=document.createElement("ul"),
    lis=[];
    ul.id="testUrl";
for(var i=0,li;i<2;i++){
    li=document.createElement("li");
    li.innerHTML="index="+i;
    ul.appendChild(li);
    lis.push(li);
}
ul.addEventListener("click",function(e){
    alert(lis.indexOf(e.target));
    alert(e.target.innerHTML)
});
document.body.appendChild(ul);

XV título

Mapa de New ES5 é necessário para aumentar a ES5 seguinte método mapa ambiental

Pessoalmente, penso que, enquanto mapa método suficiente para entender, virão naturalmente fora do pacote. Ei, não como não spray. Embora não haja um link para uma implementação mapmétodo, mas usos ES5 é for ininconsistente com o assunto, então o meu código:

if(!Array.prototype.map){
    Array.prototype.map=function(callback,context){
    var len=this.length,
        i=0,
        result=[];
    if (typeof callback !== "function") {
        throw new TypeError(callback + " is not a function");
    }
    context=context||window;
    for(;i<len;i++){
        this[i]!==undefined?result.push(callback.call(context,this[i],i,this)):result.push(this[i]);
    }
    return result;
    }
}

Mas meu código e saída padrão o resultado foi um pouco fora. Eu não lidar com isso undefinede null, porque this[i]!==undefinedestes dois valores será devolvido intacto. No entanto, algumas necessidades diárias ainda podem ser cumpridas. Congratulamo-nos com sugestões e Cazaquistão.

Finalmente acabou, tantas perguntas sobre esta questão, na esperança de ser útil para todos, mas se há algo errado por favor me corrigir, mensagem de boas vindas.

Além disso, eu recebê-lo para os espectadores um pacote AJAX de bibliotecas iluminações .

referência

JS matriz aleatória interrompido Métodos de Síntese
como não usar circuito de circulação, criando uma matriz de comprimento 100, e o valor de cada elemento é igual ao seu índice de
MDN mapa

Este artigo é reproduzido em: macaco 2048➻ https://www.mk2048.com/blog/blog.php?id=hhacc1hhiab

Acho que você gosta

Origin www.cnblogs.com/baimeishaoxia/p/12527011.html
Recomendado
Clasificación