知乎社招前端面试(一面)

基础题

  • 闭包;
  • 回流和重绘?如何规避带来的性能开销?;
  • cookie的samesite属性;
  • 浏览器缓存策略;
  • 强制缓存和协商缓存状态码区别;
  • 箭头函数和普通函数区别;
  • 状态码301和302区别
  • React v15和v16的区别 生命周期函数;
  • fiber理解;
  • 兄弟组件间通信方式;
  • context使用;
  • 受控组件和非受控组件区别;
  • webpack优化点;
  • hapyPack组件共享进程设置;
  • webpack增量更新设置;

笔试题

  1. 输出结果:
console.log(1);
setTimeout(() => {
    console.log(2);
});

new Promise((resolve) => {
    resolve();
    console.log(3)
}).then(() => {
    console.log(4);
}).then(() => {
    console.log(5);
});

console.log(6);
// 1,3,4,5,6
  1. a为何值时下述表达式成立:
var a = ?
if (a==1 && a==2 && a==3) {
console.log(1)
}
// a = {i:1, valueOf: () => a.i++}

3.手写Promise.all

// 思路解析
// 1.Promise.all()返回的肯定是一个promise对象,所以可以直接写一个return new Promise((resolve, reject) => {})(这应该是一个惯性思维)
// 2.遍历传入的参数,用Promise.resolve()将参数"包一层",使其变成一个promise对象
// 3.关键点是何时"决议",也就是何时resolve出来,在这里做了计数器(count),每个内部promise对象决议后就将计数器加一,并判断加一后的大小是否与传入对象的数量相等,如果相等则调用resolve(),如果任何一个promise对象失败,则调用reject()方法。
// 一些细节:
// 1.官方规定Promise.all()接受的参数是一个可遍历的参数,所以未必一定是一个数组,所以用Array.from()转化一下
// 2.使用for…of进行遍历,因为凡是可遍历的变量应该都是部署了iterator方法,所以用for…of遍历最安全

Promise.prototype.myAll = function(iterators) {
    // 可遍历参数转换为数组
    const promises = Array.from(iterators);
    const len = promises.length;
    // 执行成功标识
    let count = 0;
    let resultList = [];
    // 返回一个Promise对象
    return new Promise((resolve, reject)=>{
        promises.forEach((p,index) =>{
            Promise.resolve(p)
            .then((result)=>{
                count++;
                resultList[index] = result;
                if(count === len){
                    resolve(resultList);
                }
            })
            .catch(e=>{
                reject(e);
            })
        })
   })
}
#面经##知乎##社招##前端工程师#
全部评论
笔试题第一题错了 应该是1 3 6 4 5 2
4 回复
分享
发布于 2021-04-03 17:03
原来还有笔试题的
点赞 回复
分享
发布于 2021-03-26 11:33
滴滴
校招火热招聘中
官网直投

相关推荐

#软件开发2024笔面经#面试情况上午09:35开始,持续35分钟左右。电话面试,1位面试官;面试官很和蔼。首先做自我介绍;提问35分钟。提问问题介绍一下本、硕期间处理栅格数据有关的项目,其中具体做了什么?介绍一下本、硕期间处理矢量数据有关的项目,其中具体做了什么?在研究生阶段的叶绿素项目中,处理的栅格数据都包括哪些?具体如何处理的?得到的结果是什么类型的,结果具有什么含义?在滴滴的实习中,做了什么针对矢量数据的工作?如何优化矢量数据的处理、分析速度?在滴滴的实习中,调用的后台数据库是如何实现的,用了什么数据库?如何处理后台数据库数据获取过程中可能出现的异常情况?你接触过哪些与GIS分析有关的项目或工作,具体都是做什么的?本科的项目中,都分别用到了哪些地图引擎?都大致做了哪些工作?你的个人职业规划如何,对于GIS与RS就业的选择如何?对于GIS开发的前、后端自己更倾向于哪一个?研究生的研究方向具体是做什么的?具体的工作都有哪些?对于海量的空间数据处理,具体都做过哪些实际工作?遇到了哪些问题?你常用的编程语言都有哪些?C++有哪些数据结构、表达式类型、变量类型、数据类型?关系表达式都有哪些?C++的int类型变量大小是多少个字节,short、long与double类型又是多少呢?C++的循环可以有哪些方式?哪种效率更高?C++的效率与Python相比,主要体现在哪里?对于海量数据的读取与分析,其优化效果是否明显?C++的多线程是否接触过,具体是如何实现的?C++的设计模式有哪些,都是什么意思?常用的SQL是哪种?如何提升数据库的性能?数据库创建表的具体流程是什么,需要注意什么?联表查询是什么,是怎么实现的?常见的坐标系都有哪些,具体分类是什么?你知道哪些GIS开发引擎与地图引擎?地图瓦片切分的具体原理是什么?你接触过哪些和三维模型有关的项目?了解哪些三维模型构建的算法或软件?除了点云数据,还可以用哪些数据构建空间三维模型?各自需要用到哪些算法?在本科的点云建模项目中,点云构建空间三维模型的时候具体流程是什么,需要如何实现?是否对构建得到的模型加以渲染?你所构建的几个三维模型是什么格式的文件?反馈情况3天后,收到二面电话。
点赞 评论 收藏
转发
5 44 评论
分享
牛客网
牛客企业服务