三年经验前端面试小记

主要总结前两面基础问题,后面面试更多的是项目相关。

字节

一面

基础题

  1. HTTPS? VS HTTP 知道哪些对称加密/非加密算法
    HTTPS 详细的SSL/TLS握手过程?

  2. React hooks理念, diff原理,为什么要key prop

  3. 插入大量DOM节点,react 、 原生分别怎么处理,原生会用到哪些方法
    React使用Fragment,原生使用createDocumentFragment

  4. JWT是什么,cookie细节

  5. 模块化了解吗?AMD CMD CommonJS ESMoudle

  6. CSRF 详细说,防御方法

  7. CSS position 详细说

  8. UI组件库详细(我的项目)

  9. 微前端(我的项目)

  10. 最近学习的新技术

编程

  1. 手写节流防抖,详细问场景
  2. 原生xhr + promise封装

二面

项目深问

  1. 项目相关,微框架,为什么使用,难点与思考

  2. 项目相关,websocket兼容性,原生方法,丢包怎么解决

  3. 项目相关,RN白屏怎么处理,线上问题怎么定位问题

  4. 项目相关,什么情况下会OOM,怎么解决;JS什么情况下会堆栈溢出,怎么排查,怎么解决

  5. 长列表的滚动与刷新,虚拟列表怎么实现,intersectionObserve,getBoundingClientRect

  6. JS动画与CSS动画?JS动画怎么不阻塞,CSS动画为什么不阻塞
    合成线程:transform,filter,opacity,will-change

  7. webpack热更新是怎么实现的,怎么实现不刷新页面的更新?

  8. 原生JS有哪些不刷新页面的更新

编程:

  1. 输出随机数数组,不重复的随机整数[a,b),长度为c
  2. 二叉树,求从父节点到子节点每条路径组成的数字之和

三面

项目深度和广度上都有提问
编程题:问了我在博客写过的最大子序合
附加题:如果你是黑客,怎么实现CSRF攻击?


美团

一面

基础题:

  1. 项目发布流程?(gitlabCICD-Jenkins-Rancher啥的)

  2. react源码详细问

    fiber是什么?

    双缓存了解吗?

    render和commit哪个阶段可以中断,哪个是同步更新?

    事件处理机制?怎么停止冒泡的?

  3. webpack流程

    loader和plugin的区别?分别写过这两个吗?

    webpack懒加载怎么实现的?

  4. babel了解吗,详细说说过程?

  5. redux源码?redux-thunk源码? dva源码?

  6. 跨域的方法,详细问

  7. 微前端的详细问(项目相关)

  8. websocket详细(项目相关)

编程:

  1. 手写节流,普通版及第一次就触发的版本
  2. 手写promisfy

二面

一面面评较好,聊得比较广,二面在此基础上比较轻松

项目和基础外,也聊了聊如何学习新技术和对团队的期望等等

编程:手写斐波那契,递归&遍历

三面

因为前两面评价很好,三面内容也不难

项目深度和广度扩展,感觉是很有水平的大佬

项目相关:局域网与广域网区别,他们分别使用的协议有什么区别?FTP&HTTP?

编程:写出实现数组拍平的所有方法(我写了API、reduce、for…of…)


阿里

一面

基础的问题会问很深入,注重细节

  1. css盒模型
    分别是怎么计算宽度的
    使用什么来改变?

  2. position
    有哪些属性,详细聊聊
    position是基于什么定位的?要是父元素都是static呢?此时与fixed区别
    详细说说sticky

  3. display:flex
    flex详细聊,使用场景?怎么水平&垂直居中
    flex:1缩写代表的含义,flex:3呢

  4. 事件处理,捕获阶段获取的event.target是什么
    几种事件流和事件处理程序,为什么现在统一使用冒泡
    什么事件不会冒泡?为什么不冒泡
    react事件处理了解吗
    react是怎么停止冒泡,要是你来开发会如何处理

  5. 用什么方法判断是数组?为什么不用你说的其他方法,而是新增了一个API:Array.isArray

  6. sort内部排序,是稳定的吗
    sort接收参数有什么要求
    怎么处理字符串顺序
    怎么处理中文
    a-b=0时怎么处理

  7. reduce的使用,第二个参数的含义

  8. 跨域有哪些
    跨域的请求可以发出吗?请求是在哪一步进行拦截的
    CORS普通请求和复杂请求的区别

  9. 项目亮点?

编程:

  1. 实现对象数组的合并,去重,排序
  2. 实现redux compose函数

阿里一面过了,但是因为面试战线比较长,有些疲惫了,所以终止了面试流程。

最终拿到了美团&字节的offer。

你可能感兴趣的:(工作日志,前端,面试)