美团前端一面

先是自我介绍,聊一聊做了什么项目什么角色,为什么做前端,如何学习的,然后开始提问:
1.如何判断函数参数是否为数组?如何判断对象?ES6如何判断?
Array.isArray() //ES5加入的方法,判断是否为数组,ES6同样适用
Object.prototype.toString.call() //判断数组和对象,ES6加入symbol数据类型后,结果不准确
instanceof //判断数组和对象,问题在于假定只有一个全局执行环境,除此之外也有ES6加入symbol数据类型后,结果不准确的问题
typeof //判断对象
(typeof param === 'Object' || typeof param === 'Function') && param !== null
2.箭头函数和普通函数的区别
做题
this.a = 20;
var test = {
    a: 40,
    init: () => {
        console.log(this.a);
        function go() {
            this.a = 60;
            console.log(this.a);
        }
        go.prototype.a = 50;
        return go;
    }
};
var p = test.init();
p();
控制台输出结果以及原因
输出:20 60
3.ES6 var let const 定义变量的区别
var 函数作用域,已声明未初始化时是undefined
let 块作用域,无提升,声明变量一定要在声明后才能引用,不允许重复声明,暂时性死区
const 块作用域,无提升,一旦声明需立即初始化,暂时性死区,声明变量时表示保存地址不变,指向的数据结构可变
做题
let d = 2;
const e = 10;
(function () {
    var a = b = 5;
    d = 3;
    let e = 11;
})()
console.log(b);
console.log(d);
console.log(e);
console.log(a);
控制台输出结果以及原因
输出:5 3 10 ReferenceError: a is not defined
需要注意的是,以下两种写法是等价的
var a = b = 5;

var a = b;
b = 5;
4.
//let url = 'http://www.meituan.com/?user=janechang&id=325&city=wuhan'
//实现parseParam(url)返回
//{
//    user: janechang,
//    id: 325,
//    city: wuhan
//}
5.
//请写出最快查找数组[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47]中31出现的位置
function findPos(arr, item){};
写了个二分查找
6.还问了些其他的
vue生命周期,渲染一个组件的生命周期过程,created/mounted都做了什么
http常用方法,什么情况下会用options
js数据类型,null和undefined的区别
讲一下px,rem,em
然后就不记得了







#面经##校招##美团##前端工程师#
全部评论

相关推荐

点赞 25 评论
分享
牛客网
牛客企业服务