Yo estaba impresionado por algunas de las preguntas de la entrevista (b)

prefacio

Dirección original && mi blog
sabe casi && sabe casi columnas
Jane libros
de Henan front-end intercambio neto Qunguan

Última escribió un artículo algunos me impresionó las preguntas de la entrevista (a) no han visto los estudiantes pueden ir oh.
La fuente del título del artículo: Hay más de 20 de las preguntas cara frontal, seguro que no vienen a ver el punto? .
Si la pregunta anterior en este artículo que no menciono, muestra que algunos problemas se pueden obtener fácilmente o cheque simple o una capacidad limitada que no puedo contestar a cabo. Si no lo hace, y algunos de los temas que no mencionar que creo que es la capacidad limitada no puede responder de ella. Hey hey hey. Es broma, pero puede dejar un mensaje debajo de Oh!

texto

O las viejas reglas dan el tema, y ​​luego ver mi respuesta, ¿qué consejo puede mencionar en el tablón de anuncios.

  1. Lo que hace a, b, c, respectivamente, de salida?

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 muchos métodos para identificar los elementos que se repiten en la matriz tenido

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

Salida: [1,3,4]

  1. Teniendo en cuenta algunos de los documentos (documentos), palabras (palabras), para encontrar todos los documentos en el documento todas las palabras 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. Lo que el resultado siguiente 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. No ciclo, la creación de una matriz de longitud 100, y el valor de cada elemento es igual a su índice.

  2. Un números enteros si todo el mundo es simétrico, a continuación, esta cifra es el número simétrica. Así que por favor averiguar a través de 1 al número 10000 para todos los de simetría

  3. La siguiente salida de código es lo que?

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, escriba las siguientes reglas de expresiones regulares de descripción detallada
    / ^ (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 escritura molesto gama

  2. Puesta en práctica de escritura element.getElementsByClassName

  3. Por favor salida de código de escritura

if(!("a" in window)){
    var a = 1;
}
alert(a);
  1. Por favor salida de código de escritura

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. javscript expresión del valor "[] == '' 'es, ¿por qué?

  2. Js genera el código HTML siguiente, haga clic en cada li ...... cuando el pop, 2, 3
    // li onclick caso puede estallar índice se hace clic en él actualmente =?

<ul id="testUrl">
    <li>index=0</li>
    <li>index=1</li>
</ul>
  1. Mapa de Nueva ES5 es necesaria para aumentar la ES5 método siguiente mapa ambiental

La respuesta se revela

La primera pregunta

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 a echar un vistazo al paso a paso. En primer lugar, a=fun(0)porque sólo pasar un parámetro, consolela salida es el segundo valor del parámetro, es, sin duda, que la producción undefined.

Luego, para a.fun(1)ser visto, delante de esta frase está llamando a fun(0)la función devuelve un objeto dentro de la parte de atrás fun, esta funvez fun(m,n)vuelve a cabo. Esta vez Nota : este objeto se funllama por un momento antes de regresar fun(m,n), que consoleserá ejecutado, se puede determinar, desde luego, no va a pasar de la producción de 1, 1, porque como el primer parámetro pasado fun(m,n), y la consolesalida es la primera dos parámetros. La salida será a continuación, Shane?

Bueno, no todo el mundo adivinanzas, la respuesta es cero. Algunos pueden preguntarse, Nani? Para el pelo es 0,0 provienen de?

Para explicar lo que quiero, siempre y cuando tenga un cierre claro. Aquí cierre empleado. Sabemos que hay una función de cierre está fuera del alcance de las variables internas a través del cierre de las funciones de acceso. De hecho, correr a=fun(0)del tiempo, returnlos objetos de función en funel pasado en el 0 como segundo parámetro pasó funa cabo en el interior y luego regresar 0 se ha guardado. Así que cuando el correr a.fun(1)el tiempo es en realidad de salida antes de cero. Las dos llamadas también hacia atrás y este principio, el resultado final es 0.

Puede ser un poco alrededor, tome tiempo para mirar a sí mismos o de depurar. (He estado tratando de articular, y si no sé si usted deja un mensaje =. =).

Luego, para b, si es que llegan a conocer aquí en frente de ella no es difícil. fun(0)tiempo de funcionamiento será returnun objeto fuera de la parte posterior de una serie de llamadas encadenadas están llamando a la función devuelve un objeto delante de funy perder la potencia esundefined 0 1 2

Y, finalmente, a c, si btodo lo que obtienen a saber, aquí básicamente nada más difícil el. Respectivamente, se emitirá undefined 0 1 1.

Si usted no entiende, entonces le sugiero que paso a paso, aún no se sabe si puede dejar un mensaje a continuación, voy a intentar mi mejor esfuerzo para darle la capacidad de explicar.

La segunda pregunta

El uso del método hallazgo como muchos elementos de la matriz tenía un recurrentes
ejemplo: [1,2,4,4,3,3,1,5,3]
de salida: [1,3,4]

Mi idea es crear una matriz. Y luego aprobada en la matriz está ordenada. Y luego usar sortel método para recorrer, ya que se necesita tiempo para dos y el número ay bcomparar igual y si resultno hay ningún puesto duplicado aempujado hacia adentro.

Este es mi código:

actualización de 4,5 días

Gracias @ poco terco casquillo compañero señalaron el 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;
}

actualización de 3,23 días

Gracias @ puesta en envoltura método proporcionado por los estudiantes:

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 la pena mencionar que map[num] = (map[num] || 0) + 1, de este código (map[num] || 0), si map[num]la hay, entonces map[num]1 0 + 1, y viceversa, con un toque muy personal inteligente.

Gracias @ Saotome Mizuho consejos sexuales proporcionados 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 las ideas Comentario:

array.filter ((x, i, auto ) => self.indexOf (x)! ==)
devuelve una matriz de elementos que constituyen arrary repitiendo (N-1 o de retorno)

nuevo Conjunto ([iterable])
Devuelve una colección (elemento de repetición se incorpora en el presente documento)

Array.from ([iterable])
Devuelve una matriz (en el paso anterior se convierte en el conjunto de la matriz)

// ES5 las ideas Comentario:

Uso indexOfy lastIndexOfel elemento de determinación de avance y retroceso determina que el número no es el mismo (si el mismo número, entonces el método retorna dos ison los mismos)

La tercera pregunta

Teniendo en cuenta algunos de los documentos (documentos), palabras (palabras), para encontrar todos los documentos en el documento todas las palabras presentes

Mi pensamiento es: el segundo parámetro es una matriz con joinla síntesis de una cadena, y luego forEachtransversal, respectivamente, la documentación es wordstambién usado joincuerda sintética, utilizando el searchmétodo para encontrar todos los documentos en que wordssi se incluye arrStr.

Este es mi 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

cuarta pregunta

Lo que el resultado siguiente 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));

Se puede ver, hay dos funciones de aplicación directa. La siguiente función de auto-ejecución se completó un pase de 1 de modo que la auto-ejecución de las funciones anteriores this.a=1, en el que el thispunto window. A continuación, la función de auto-ejecutable devuelve una función de la testvariable. La siguiente llamada test(1), esto corresponde a la aprobada en el return 1+1modo 2 salidas.

La quinta pregunta

No ciclo, la creación de una matriz de longitud 100, y el valor de cada elemento es igual a su índice.

Si conoces Object.keys y Array.form , entonces esta pregunta básicamente nada difícil.
Respuesta:

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

¡Hey! Esperar a la siguiente Array.formES5 ES6 no hacer, cómo lograr de?
El código:

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

Si usted no sabe puede referirse aquí a explicar.

pregunta 6

Un números enteros si todo el mundo es simétrico, a continuación, esta cifra es el número simétrica. Así que por favor averiguar a través de 1 al número 10000 para todos los de simetría

Pienso, primeros números en una cadena, y luego usar una gran variedad de mapmétodos para atravesar la cadena, la cadena se convierte en toda la matriz por separado, y luego llamar a la matriz reversemétodo, y luego voltear la matriz joinen una cadena, y, finalmente, la inversión de contraste si la cadena y la cadena antes de dar la vuelta al igual que (método un poco estúpida, mira gran Dios 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;
}

La séptima pregunta

¿Cuál será el resultado siguiente 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 en el thispunto, personalmente creo que no es demasiado difícil, porque thishe estado totalmente contraído (mala sonrisa).
Este problema, entonces considerar quién para llamar a la función thispuntos a quién.
Función comenzado self=thisaquí thises el punto myObject, porque myObject.func(), obviamente, myObjectlo que llaman, por lo que la primera dos frases consolede salida fooson bar.
La siguiente es una función de aplicación directa, ya sabes, ya que la ejecución de la función thisen circunstancias normales, todo el punto windowaquí no es una excepción, por lo que la tercera consolesalida fooes undefinedporque windowbajo fooninguna definición. La cuarta salida es self.fooel selfes como se define anteriormente, selfes decir, myObjectde modo que aquí fooes bar.

Q8

Por favor, escriba las siguientes reglas de expresiones regulares de descripción detallada
/ ^ [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

Hey, soy más regular buena parte también considerado. Voy a explicar uno por uno, algunos regulares más difícil de expresar en palabras, tenemos la sensación de sentido de la misma.

La primera: En primer lugar ^, en nombre de que está detrás de un montón de cosas para el principio $representativo para acabar con ella delante de un montón de cosas aquí, lo que significa que con el fin (0[1-9]\d\d?)?[1-9]\d{6}\d?para el comienzo y final de la cadena. Entonces a la primera media coincidente en paréntesis es la primera cadena a la segunda cadena de 0 1-9 0-9 tercera cadena cuarto de cadena opcional, cualquier coincidencia 1-9, entonces todo este contenido dentro de los paréntesis opcionales. Se refiere al significado de una primera cadena coincidente es entonces posterior 6 1-9 0-9 definitivo opcional cadena de cadena coincidente, cualquier partido 0-9.

Así ordenada es: 0 para el primer partido, el segundo 1-9, el tercer número es, en cuarto lugar opcional, cualquier partido número, y toda la parte delantera de la protuberancia puede ser tener Ninguno. 1-9 de la quinta parte (si no, luego cocinar lo anterior que, desde el primer conteo) y la parte posterior 6 es la cadena numérica opcional último dígito, y que es empezar y terminar.

Aquí está un ejemplo:
022 222 222 222 a true //
002 222 222 222 // false desde el segundo dígito 1-9
02222222222 // primer soporte último dígito o cifras más posteriores se omiten
0222222222 // último dígito primer soporte y por Por último, la parte digital omitiendo
22222222 // primeros soportes contenidos todos omite
02222222 // d {6} no está satisfecho.

Segundo: 1 como los primeros partidos, 8 o 9 como el segundo O a 2-9 como el primero, y el segundo número es la coincidencia de cadenas o 100, y al principio y al final de su caso se ignora.

ejemplo todavía más intuitivo:

18 // true. Partido 1 [89] anterior
23 es cierto // partido [2-9] D
100 @ verdadero partido 100
. 17 en false //
230 // en false

Tercero:
coincidente al menos un frente o un número o una letra, o _ - @ rematching continuación, coincide con al menos una letra o un número, o - y después para que coincida con la letra 2-6} {1-2, la cuerda y ignoran caso para el comienzo y el final.

Este uso del lenguaje para describir demasiado duro, no puedo hablar que, en un ejemplo:

. D @ {AW} 3 {} // AD a verdaderos
- @ - {ddd {}} // FS a verdadero
. 3. 3 @ {DW} {} // ddd a verdadero
.. 3 @ 3 en false // {DW} {cartas 2-6 es decir, un} a menos ({[a-z]{2,6}}){1,2}detrás {1,2}no se encuentran
@ 3 {dw} {ddd} // false [w -] + no cumplía el
33 {dw} {ddd} // falsa no @
DSA @ FFFF {DW} {D} / / falso ({[az] { 2,6}}) no cumple con el

noveno título

Por favor método de escritura molesto gama

actualización de 4,5 días

La referencia aquí

// 之前的问题代码
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);

pregunta 10

Escribe aplicación element.getElementsByClassName de
mis ideas: en primer lugar obtener todos los elementos en la página, y luego splitla pasó en múltiples classdividida en una matriz, luego dos capas de interés para encontrar elementos de circulación cualificados (se sienten personalmente que este método es eficiente muy baja, cuando es algo, mensaje de bienvenida)
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;
    }
}

título XI

Por favor salida de código de escritura

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

Este problema principalmente en la declaración de variables aumentan, cualquier (ES5 en) Declaración variable se eleva a la parte superior del ámbito actual. Así que aquí está el código que realmente es:

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

Por lo tanto, antes de ejecutar la sentencia si aya está en el windowmedio, por lo que habráatert undefined

título XII

Por favor salida de código de escritura

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 a ver paso a paso: en primer lugar handle(4), a donde el programa empieza a correr, crear una tmpfunción, mientras que la tmpfunción del toStringmétodo reescrito, y finalmente volver a esta tmpfunción.
Nota : tmpen el ano pasar en 4, no se puso tmpen ay handlela aconfunde, por lo que aquí pasa nada 4 seco.

A continuación, el segundo paso: handle(4)(5)aquí es la implementación de una tmpfunción, esta vez tmpla función ase pasa en el 5 * bes el primer paso en la implementación de la función bque es 3 (no sé por qué los estudiantes van a aprender a entender 3 de cierres it), Por último, este bes equivalente a 8.

En la tercera sección se repite el segundo paso 8+6, el último b14, javascriptel motor llama automáticamente al último toStringpara volver b, por lo que el resultado es 14.

decimotercera título

javscript expresión del valor "[] == '' 'es, ¿por qué?

Este estudio de título de JS ==entender operador, sabemos que ==los operadores de ambos lados si el valor no es el mismo tipo de valor va a convertir a volver el mismo tipo de comparación. Esta pregunta izquierda es objectel tipo, la derecha es el stringtipo, convertirá la izquierda es stringpara comparar el tipo, [].toString()es decir, ''por lo que el resultado final es true.

título XIV

Js genera el código HTML siguiente, haga clic en cada li ...... cuando el pop, 2, 3
// li onclick caso puede estallar índice se hace clic en él actualmente =?

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

Esta pregunta directamente como se requiere para generar el HTML correspondiente, dan uleventos de unión utilizando detectores de eventos agente que recibió la orden, entonces la salida de su número de serie y el contenido correspondiente, nada difícil. Mi 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);

título XV

Mapa de Nueva ES5 es necesaria para aumentar la ES5 método siguiente mapa ambiental

Personalmente pienso que mientras mapa método suficiente para entender, naturalmente salido del paquete. Hey, no me gusta no rocíe. Aunque hay un enlace a la aplicación mapmétodo, pero usos ES5 es for ininconsistente con el tema, por lo que mi 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;
    }
}

Pero mi código y la salida estándar el resultado fue un poco fuera de. No trato con eso undefinedy nullporque this[i]!==undefinedestos dos valores serán devueltos intactos. Sin embargo, algunas de las necesidades diarias todavía se pueden cumplir. Aceptamos sugerencias y Kazajstán.

Por último otra vez, tantas preguntas sobre este tema, con la esperanza de ser útil para todos, pero si hay algo mal por favor me corrijan, mensaje de bienvenida.

Además, les doy la bienvenida a los espectadores un paquete de bibliotecas AJAX alumbramientos .

referencia

JS disposición aleatoria interrumpido Métodos Resumen de
cómo no usar bucle de circulación, creando una matriz de longitud 100, y el valor de cada elemento es igual a su índice de
mapa MDN

Este artículo se reproduce en: mono 2048➻ https://www.mk2048.com/blog/blog.php?id=hhacc1hhiab

Supongo que te gusta

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