一面:1.简历项目 2. 考察数组的基本方法, 哪些方法会改动原数组哪些不会
3. 一道递归遍历对象手撕题
function fn(tree, name){ // 请在这里实现 if(tree.name == name){ return tree; } let ans = null; if(tree.children && tree.children.length != 0){ tree.children.forEach((node)=>{ ans = ans || fn(node,name); }) } return ans; } var tree = { name : '中国', children : [ { name : '北京', children : [ { name : '朝阳群众' }, { name : '海淀区' }, { name : '昌平区' } ] }, { name : '浙江省', children : [ { name : '杭州市', code : '0571', }, { name : '嘉兴市' }, { name : '绍兴市' }, { name : '宁波市' } ] } ] }; var node = fn(tree, '杭州市'); console.log(node); // { name: '杭州市', code: 0571 }
4. 手撕事件总线(没写出来)
二面:
setTimeout(() => { console.log(1); }, 0); console.log(2); new Promise((resolve, reject) => { console.log(3); resolve(); }).then(() => { console.log(4); new Promise((resolve, reject) => { resolve(); }).then(() => { console.log(6); }); }); console.log(5);
2.css
<style type="text/css"> #a { font-size: 12px } div p { font-size: 13px } .a .b .c { font-size: 15px } #b { font-size: 15px } div .c { font-size: 15px } </style> <div id="a" class="a"> <div id="b" class="b"> <p id="c" class="c">I’am here</p> </div> </div>
请问在标准模式下显示的 I’am here 字符会是多大的字体?命中的是哪一条规则?
3.请写出下列代码的输出结果:
var a = 0, b = 0; function A(a) { A = function (b) { console.log(a + b++); }; console.log(a++); } A(1); A(2);
4.实现一个函数 find(obj, str),满足:如var obj = {a:{b:{c:1}}};find(obj,'a.b.c') //返回1find(obj,'a.d.c') //返回undefined
答错了不少,然后二面挂,尝试二战快手,结果一面来了个高手,没顶住压力
二战的一面:
为什么选择前端项目
八股:css: flex布局, 现场出题
Es6:说了解的新功能
考察promise运行顺序: forEach包裹asnyc函数和async for in循环体里await的运行顺序
考察this指向, 普通对象的函数和箭头函数,你说箭头函数的this指向是在编译的时候确定的,那js的编译和c,c++的编译有什么区别
变量提升和暂时性死区的相关概念
说一下你了解的http状态码, 401和403区别。
你之前提到304是协商缓存,请你说一下http缓存机制, cache-control 的nostore和nocache的区别
算法题 240. 搜索二维矩阵 II - 力扣(LeetCode)当时知道要二分但是没做过这种二维的二分,没撕出来
答出来了七八成吧,面试官都是现场编题,水平很高,后来面试官虽然对我有一点正向评价,但还是给我挂了,不过整体面试过程很愉快,学到了一些东西。累了,不会再战了,总归还是无缘手子了,毕竟还是自己太菜了
#快手信息集散地#