字节跳动 前端 3+1 面经(估计是最简单的字节面经)
前言
不知道是不是部门真的很缺人的原因(字节教育),所以感觉和别的字节前端面经比起来要容易得多,不仅是前端基础方面,算法方面由于我本身是学管理的,面试官也没有出太难的算法题目。
所以这份面经可能并没有太多参考价值...
在开始前再给我整理的知识点打个广告 FE-Basics, 得益于它我匆匆忙忙的复习过程才不会显得那么狼狈,并且本次面试大概90%的基础问题都涵盖到了。
整体面试总结
一面完感觉凉了,结果告诉我二面面试官马上来,二面面试官告诉我评价挺好的(惊了),二面完感觉不错也的确过了。三面约的19号,当天和产品对线对的自闭后感觉状态非常差,算法也没完全写出来,感觉是凉了。结果HR小姐姐说过了,昨天(24号)收到了意向书。
三面真的被拷打了,上来问我埋点和错误监控收集,呜呜呜我都忘记我简历上写了这玩意了... 整体结束后就是感觉必凉,其他基础倒是自认回答的不错。但想到字节的风格我结束后还是觉得挂了,只能说面试随缘?
如果有需要内推的话,也可以联系我哦,这个字节的HR小姐姐真的人超好,我还没问她就来告诉我进度了23333. 阿里目前秋季校招入口应该是已经关闭了,估计需要等明年春招了。
算法
- 用数组模拟一个栈,每次获取栈内最小元素的时间复杂度为o(1)
- 实现Promise.allSettled()
- 并发限制Promise.all()
- 2维数组斜45度输出
- 设计通用输入搜索组件,能够以列表展示返回结果,主要就防抖与请求竞态处理
- 实现订阅发布模式
- 基于XHR封装fetch
- 大数相加
- 字符串匹配,大概是给一个str,再给一个exp,判断str能否被exp匹配(如"sss"可以被".*"匹配),应该是lc原题的感觉
JS基础 & ES6
- 装箱拆箱,隐式转换
- 事件循环,V8与Libuv事件循环的差异
- 原型链 为什么要这么设计
- ES5继承 寄生组合式(俺忘了)
- ES6继承 实例成员与静态成员处理
- CommonJS与ES Module差异
- 防抖节流
- 柯里化 尾递归(虽然知道这玩意,但我不会)
- typeof instanceof ...
HTML & CSS
- BFC IFC
- CSS动画 GPU加速开启(3d属性)与原理(GPU)
- 伪类与伪元素差别
- Flex布局
React
- React Hooks, useEffect闭包陷阱
- React Suspense能力 作用(新的组件数据获取机制)
- Suspense 实现(抛出Promise异常)
- Redux 中间件(store.dispatch())
- React 虚拟DOM 本质 优点
- React Fiber 调度器机制(嘴贱扯了这个,但是没答好。 反 面
教 材) - React setState原生事件与合成事件表现
Node & GraphQL
- Node 多进程 child_process(spawn fork exec execFile差异) cluster egg-cluster
- Node IPC
- Node 多线程模拟 worker_thread(又嘴贱了,也没答好)
- PM2 原理 杀手进程与守护进程
- Node GC 新生代(scanverge)/老生代(标记清除 标记整理)使用的算法
- Koa与Express中间件 分别如何使用中间件衡量请求处理时间
- GraphQL 与 RESTFul API差异
- 基于GraphQL的BFF会有哪些优势与劣势
- GraphQL n+1问题
- Serverless优势 FaaS实例启动流程
- git rebase
TS & Git & Babel & Webpack
- TS类型编程(正好写过相关文章,说了蛮多然后就不问其他TS的问题了)
- Webpack摇树优化,为什么编译目标得是ES6(ESM静态优化机制)
- Babel原理(打扰了,没学过编译原理我只知道个AST) Babel编译过程
- Webpack性能优化 分为开发耗时与构建产物大小两个方面,见上一篇面经
- Webpack构建流程
- loader与plugin plugin遵循的事件流机制
小程序 & 跨端方案
- 跨端方案差异 Taro & Rax & Weex RN & KBone & Flutter 运行时(KBone)/编译时(其他)/底层GPU+Skia绘制控件(Flutter)
- 基于Rax开发项目时遇到了什么问题,如何解决的
- 小程序生命周期
- 小程序架构(这见之前的面经 有具体些的讲解)
- Taro原理(淦我嘴真的太贱了,这个只回答到制定了组件与API的通用标准)
网络 & 浏览器
- XSS 与 XSRF 防范手段 重点讲了cookie的same-site属性与axios的X-XSRF-TOKEN请求头
- HTTP缓存 强缓存与协商缓存相关请求头与响应字段
- 为啥有了last-modified还需要etag
- DNS解析过程 递归查询与迭代查询
- TCP与UDP差异
- 浏览器渲染过程 从HTML词法解析到栅格化线程池生成位图,具体细节记不太清了也没答好
- cookie setCookie 常见cookie属性(记不清了,被拷打)
- 跨域 OPTIONS请求 简单与复杂请求 CORS
其他
- 大文件上传 分片(Blob对象) 流式处理(Stream)
- Sentry原理(重写window.onerror) window.onerror不能捕获的错误
- 埋点方法
- 统计uv与pv(也就是记录用户是否访问过网站,我答的cookie或者是localStorage这种)
- 其他的后面想起来补充。