美团第一轮面试

目录

  • 前言
  • 问题1
  • 问题2
  • 问题3
  • 问题4
  • 问题5
  • 问题6
  • 问题7
  • 总结

前言

由于疫情影响,一面是线上进行的,面试小哥很友好,下面是我的面试题整理,废话少说。直接上代码

问题1

function Person(name) {

this.name = name

}

let p = new Person('Tom'); 复制代码

1. p.__proto__等于什么?

2. Person.__proto__等于什么?

答案:

p.__proto__
->{constructor: ƒ}
Person.__proto__
-() { [native code] }

问题2

var foo = {};
var F = function(){};
Object.prototype.a = 'value a';
Function.prototype.b = 'value b';

console.log(foo.a)   
console.log(foo.b)    
console.log(F.a)      
console.log(F.b)  

答案:

value a
undefined
value a
value b

问题3

状态码代表什么意思?400 401 402 403 404 304
请参考:http常见的状态码,304,400,403,404,505等状态码分别代表什么?

问题4

实现一个flatten方法,使得输入一个数组,该数组里面的元素也可以是数组,该方法会输出一个扁平化的数组。

let givenArr = [[1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14]]]], 10];

let outputArr = [1,2,2,3,4,5,5,6,7,8,9,11,12,12,13,14,10]

答案:

functionflatten(arr){
    var res = [];
    for(var i=0;i<arr.length;i++){
        if(Array.isArray(arr[i])){
            res = res.concat(flatten(arr[i]));
        }else{
            res.push(arr[i]);
        }
    }
    return res;
}

或:


functionflatten(arr){
    while(arr.some(item=>Array.isArray(item)){
        arr = [].concat(...arr);
    }
    return arr;
}

问题5

let、const 以及 var 的区别是什么?
答案:略…

问题6

如何判断一个变量是不是数组?这题当时答的是先用typeof 判断为对象再判断长度,不太准确,最简单的方法为:

[] instanceof Array //true
Array.isArray([]) //true

详细方法:判断变量是否为数组方法

问题7

console.log(1+'2'+'2'); 
console.log(+'1'+-'2'+'2');
console.log('M'+'T'+'2');
console.log('M'-'T'+2);

答案:

122
-12
MT2
NaN

总结

这些问题有会的,也有答不上来的,但是我都如实的跟面试小哥回复了,面完以后,小哥问我有啥想问的没,最后简单聊了下美团工作环境啊,学习氛围啊等,不知结果如何,后续我再更新叭

你可能感兴趣的:(前端)