华为、顺丰、Shopee、平安金服社招面经汇总

2,579 阅读4分钟

点赞再看,养成习惯 气温回暖,万物复苏。

最近准备跳槽,面了几家,面试没有分别记录下每家的问题,根据回忆,汇总在一起面试中提到的问题,记录一下。

  • 问的一些项目中的内容,就没有记录下来了。

  • 提到的技术栈里,最擅长哪一块或者对哪一块研究比较深入?

  • 什么是 BFC ?形成 BFC 的条件。

  • 垂直margin重叠是为什么?怎么解决这个问题?

  • flex: 0 1 auto 表示什么意思

    传送门

  • const a = 123,然后执行 a = 456 会怎么样?

  • 箭头函数this指向?箭头函数的prototype指向?

    箭头函数里this的指向就是上下文里对象this指向,偶尔没有上下文对象,this就指向window

    箭头函数没有原型属性

    var Foo = () => {};
    console.log(Foo.prototype);   //undefined
    
  • 什么情况下不适合用箭头函数?箭头函数跟普通函数有什么区别?

    1. 当想要函数被提升时(箭头函数是匿名的)
    2. 要在函数中使用this/arguments时,由于箭头函数本身不具有this/arguments,因此它们取决于外部上下文
    3. 使用命名函数(箭头函数是匿名的)
    4. 使用函数作为构造函数时(箭头函数没有构造函数)
    5. 当想在对象字面是以将函数作为属性添加并在其中使用对象时,因为咱们无法访问 this 即对象本身。
  • WeakMapWeakSetmapset的区别跟使用场景。

  • mapforEach的区别?

  • 如何对一个已声明的变量进行解构赋值?

  • 介绍一下JavaScript有哪几种继承方式?

  • 介绍下JavaScript 异步机制

    事件循环(event loop)和任务队列(task queue)

  • 如果让你实现一个无限下拉的列表怎么实现?

    云音乐前端技术团队的方案

  • 你了解 Intersection Observer 吗?

    MDN IntersectionObserver接口 (从属于Intersection Observer API) 提供了一种异步观察目标元素与其祖先元素或顶级文档视窗(viewport)交叉状态的方法。祖先元素与视窗(viewport)被称为根(root)。

  • 进程与线程的区别?

    阮一峰老师的文章

  • 浏览器内核有哪几个线程?

    1. GUI线程
    2. JS引擎线程
    3. 事件触发线程
    4. 定时器线程
    5. HTTP请求线程
  • 输入URL后发生了什么?

    从URL输入到页面展现到底发生什么?

  • http1.0http1.1HTTP2 的区别?

    HTTP1.0、HTTP1.1和HTTP2.0的区别

  • TCP,UDP的区别?

  • http请求头中能想到有哪些字段?

  • http 中设置 keep-alive 有什么作用?

  • 介绍下浏览器缓存方式?

  • 前端安全了解有多少?

  • 观察者模式与发布订阅者区别

  • reactvue 的区别?

    看个人理解

  • VueDiffReactDiff的区别?

    🌟不知道

  • Vue组件间通讯有哪几种方式?

  • Vue中V-for里为什么要使用key?一般用什么作为key

  • V-for中不使用index作为key,你知道为什么吗?

  • 介绍一下Vue中的插槽slot的使用。什么是作用域插槽?

  • 谈一谈Vue中 nextTick 的原理以及运行机制?nextTick在事件循环是怎么处理它的?

  • 在vue 中 如何 通过createElement创建虚拟dom?

  • 虚拟DOM 相比 真实DOM,为什么会带来性能上的优化?

  • React hooks 了解吗?

  • redux 做状态管理和发布订阅模式有什么区别?

  • 如何实现一个多级菜单?

  • 介绍下移动端的适配方案?

  • 微前端了解吗?

  • 对 TS 的认识,项目中是否使用?

    实事求是回答

  • 怎么看待几种前端跨端解决方案?

    React NativeWeexFlutterTarouni-app

  • Webpack 怎么做优化的?

  • 前端监控分为哪几个方面? 性能监控跟异常监控怎么处理的?有什么解决方案或者框架?

    性能监控、行为监控(埋点,点击流)、异常监控

    异常监控框架:betterjsfundebug

  • 前端页面性能指标有哪些?

    1. 首次绘制(FP)
    2. 首次内容绘制(FCP)
    3. 首次有效绘制(FMP)
    4. 每秒传输帧数(FPS)
    5. DNS解析时间
    6. TCP连接时间
    7. HTTP请求响应时间 用户可交互时间
  • 负责一个新项目,如何选择技术栈?

  • 如何进行项目重构

  • 项目中遇到印象深刻的困难是什么?

  • 你是怎么学习前端的?

  • 代码执行题没怎么记住:

//打印顺序
setTimeout(function () {
    console.log(1)
}, 0)
for (let i = 10; i <30; i += 10 ) {
    setTimeout((function (i) {
        console.log(i)
        return () => i
    })(i), i *100)
}
new Promise(function (resolve) {
    console.log(2)
    for (var i = 0; i < 1000; i++) {
        if (i == 999) {
            console.log(resolve())
        }
    }
    console.log(4)
}).then(function () {
    console.log(3)
    return 3.1
})
console.log(5)
// 多维数组降维, 将[1, [[2], [3, [4]], 5]] 转化为 [1,2,3,4,5]
flattenDeep (arr){
    // TODO
}
flattenDeep([1, [[2], [3, [4]], 5]])  // [1,2,3,4,5]

且行且珍惜