一共三面:
先是做笔试,现场笔试有手写代码...
第一面:
一道题。解题思路是怎么样, 为什么等于打印这个。
function fn() { getName = function() { console.log('yifang')} return this; } fn.getName = function() {console.log('liudehua')} fn.prototypre.getName = function() {console.log('zhangxueyou')} var getName = function () {console.log('zhouxingci')} function getName() {console.log('huangzesi')} // 依次以下代码分别输出什么 fn().getName(); fn.getName(); getName(); new fn.getName(); new new fn.getName();
第二题:reduce方法的题
// 下面代码分别输出多少, 为什么等于这么多讲讲解题思路 const res = [1,2,3,4].reduce((total,p,i) => total + i ); console.log(res); // 输出多少 const res1 = [1,2,3,4].reduce((total,p,i) => total + i, 0); console.log(res1); // 输出多少
第三题:call方法实现:
这里我使用Symbol方法来作为唯一属性,引发了面试官后面给的题
Function.prototype.myCall = function(thisArg, ...args) { thisArg = thisArg ? Object(thisArg):window; const id = Symbol('id'); thisArg[id] = this; const res = thisArg[id](...args); delete thisArg[id]; return res; }
然后就引发出来为啥使用Symbol, 还可以用其他实现唯一key吗? 说一下
四题:es6除了promise对象还有那些新特性或者方法。
五题: const 和 let区别,能重复声明吗?
console.log(a); const a = 1;
上面代码执行多少?为什么? (暂时性死区)
第六题:知道事件循环吗? 看一道题
// 下面代码分别输出是什么, 为什么 setTimeout(() => console.log('1')) const p = new Promise((resolve, reject) => { console.log('2') for(let i = 0; i< 1000; i++) { console.log('3'); if(i === 9) resolve('4') } }) p.then(e => { console.log(e) }) console.log('5');
第七题:在函数内部如何判断当前函数是被执行还是被new了?
第八题:说一下 对闭包的理解,经常使用吗?有什么注意点
整个面试面试官主要看思路,会在题里面题问题然后在进行问下去。
第二面:
1.说一下浏览器从输入url到渲染页面流程
2.前端优化有哪些说一下
3.vue2中双向绑定实现原理是什么,和vue3有什么区别。
4.其他的我忘记了
第三面:
1.说一下浏览器渲染过程。
2.怎么学习前端开发。
3.如果一个公司用的很老的技术栈,例如jquery,但现在很多都是用的vue,react。你是怎么想的
4.一道开放题:
有1000个试剂瓶,每个试剂瓶都有自己编号,里面只有一瓶毒药;使用小白鼠来进行找到到毒药。如果小白鼠喝了毒药一天后就会死亡。
问题:用最少小白鼠找到毒药。
5.然后就是聊了一下人生规划等。。
还有一些细节问题,忘记了。。。
全部评论
(11) 回帖