九月份前端面试记录


奇虎360

  • ES6:promise、async await、迭代器、展开运算符
  • 前端项目技术选型要考虑的点
  • 取消未完成的网络请求
  • iframe安全性问题
  • nodejs有哪些常用的原生库以及常用方法
  • 关于立即执行函数
  • 关于react hooks
  • 如何做前端资源预加载
  • css命名规范(比如BEM规范)
  • nodejs事件循环机制
  • addEventListner方法的参数及应用场景
  • HTTP状态码301、302、304含义以及应用场景

360的面试官是文蔺,人非常好,聊天过程中得知他负责周五的起舞周刊,见到已经看了三年的公众号的作者,感到非常荣幸。


用友

  • 关于js迭代器
  • promise
  • 展开运算符

用友一面的面试官属于技术专家型,问问题会刨根问底,一定要把原理讲清楚才行。问的问题大多是些常用的语言特性和框架特性,平时应用这些特性时尽量把原理搞懂就好。二面是领导面,会根据做过的项目问问题,主要考察项目能力、沟通协作能力等等。


美团

  • 强缓存与协商缓存
  • js实现括号匹配算法
  • js实现二叉树的广度优先遍历

美团一面主要考察对语言特性的掌握,二面会考一些简单的数据结构与算法。


快手

  • 用原生js实现bind方法(不允许用call、apply)
  • 用原生js实现reduce方法
  • 用原生js实现一个promise
  • react hook
  • typescript
  • flex布局
  • 用css画一个心
  • promise的用法(假定一个业务场景,要求用promise实现方案)
  • 封装一个受控组件
  • 用react hooks实现无状态组件的componentDidMount、componentDidUpdate生命周期函数
  • 用js实现一个函数求解整数N,N满足N%2 === 1,N%3 === 2,N%5 === 4,N%6 === 5,N%7 === 0
  • 用ts实现函数caller,接收一个函数作为第一个参数,其返回值类型、其他参数类型由接收的函数参数决定

个人认为快手面试难度较大,会假定一些不太好解决的业务场景,让面试者手写代码给出解决方案。从基础到高级特性到底层原理再到复杂业务场景都会考。


阿里巴巴

  • 设计模式(工厂模式、发布订阅模式、等等)
  • 模块化的底层原理(import和commonjs实现原理上的区别)
  • async await promise的底层原理
  • 性能优化(加载优化、渲染优化、滚动条等等)
  • 解决跨域的多种办法
  • 显示器刷新频率是多少
  • js异步编程的方法
  • react的最新特性
  • 开发过程中遇到的难以解决的问题以及解决办法
  • 关于内存泄漏

阿里一面会考察工作中实际解决问题的能力,具体形式就是针对做过的项目来问,让面试者详细介绍一个项目,然后针对项目中遇到的问题和面试者认为工作中的亮点来问。然后还会问一些关于团队协作的问题,比如与其他前端同事如何合作,代码版本如何管理,与后端同事何如沟通协作等。二面考察对知识的掌握,从基础到高级特性都会问。


字节跳动

  • this指向
    • 全局this指向
    • 普通函数中this指向
    • 箭头函数中this指向
    • 对象方法中this指向
    • 定时器中this指向
  • call、apply、bind
  • webpack的

从现场出来没有及时整理,现在有点忘差不多了。考的东西比较基础,建议把犀牛书或者高程刷得比较通透,再多刷一些网上的笔试题和面试题。


总结

  • 关于语言基础:
    -