楼主双非本,5.13至今在字节飞书实习。秋招投递了快手三次简历,先后投了深圳杭州的base结果简历都挂。鼓起勇气投第三次(北京base)后才有了面试机会,目前已经收到手手的意向啦。故总结下三次面试的面筋,为后来者提供参考。
一面(65min)
字节实习
面试官让我主要介绍下在字节都做了些啥?
- 历史vue组件迁移到react(模块联邦实现组件维度的技术迁移)
- 复杂表单组件的设计理念, use-context-selector和useReducer
- service-woker存储入口html原理以及如何在html更新时及时取到最新的html文档?
- 覆盖率
- 模块联邦的原理浅说了一下, react组件渲染至vue的大体流程(核心是createPortal)
问题
全程没有八股,实习介绍完就开始写题
取得数组的最大深度
let arr = [1,2,[2,[3]],4,5]
getDepth(arr) ===> 3
生成随机的16机制颜色值
手写完后,能达到生成的效果。但是面试官提示说从16进制入手会更简练一些。
场景题
const newFn = requestFn(fn,count,time)
实现requestFn,调用返回newFn可以做到fn每隔time时间执行一次, 供执行count次
手写react组件
实现复选框组件
反问
问了业务以及技术栈, 总体感觉面试体验挺好,面试官挺年轻看起来像没毕业几年。最后结束时笑着说肚子饿了要去吃饭哈哈哈
二面(65min)
整场面试体验特别好, 面试官很友善和蔼看起来像是小组的负责人, 自我介绍完他有个紧急会议然后留下了一道组件题给我写。约6分钟后回来然后开始正式的面试。
题目
- 框架题: 使用vue或者react实现多选框的组件, 因为面的部门的技术栈主要是vue, 面试官建议我使用vue写,没办法好久没用vue了,硬着头皮用组合式api写的。
写完后面试官反问如果要进行封装给其他人用, 可以有哪些优化点? - 介绍实习中遇到的难点与收获
- 复杂表单表格的设计理念. useReducer和use-context-selector
- 对TS高级类型的理解加深了, 讲述了在复杂业务中TS的重要性。
然后面试官发散性问我never类型在实际场景中的使用? - 模块联邦
- 然后开始写题
- 实现数组的flat方法, 可以指定层级进行拍平同时也要兼容Infinity层
- 使用数组的reduce实现数组的map方法
一分钟就a了, 随后面试官发散性问为什么数组的很多方法比如forEach, map, filter的回调函数的第 三个参数要传数组本身的引用? - 手写Promise.allSettled
- 最后一道很经典的题
在浏览器中输入url地址后按回车会发生什么?
由这个问题引出以下问题: - DNS域名解析
- HTTPS加密过程
- 浏览器渲染原理
- http1.0 1.1 2.0 3.0的区别?
- 为什么http3.0要基于UDP实现, 如何保证可靠性?
反问
反问了部门业务, 得知我面的部门是大前端部门, B端C端都有做, 有做活动页的低代码平台,有面向快手创作者的创造者平台(会比较多的用到图表渲染),总之那边的业务我很喜欢。
面完一个小时后约了三面。
三面(30min)
三面面试官有一点点严肃, 名字叫海洋看起来像是大佬。整个面试过程很快就半小时。
- 自我介绍
让我介绍自己做过的项目(值得说的项目都可以说不局限于实习项目), 把自己之前用canvas做的一些粒子烟花效果以及用canvas去获取视频的每一帧等等小demo都说了下。后面介绍了自己的个人博客以及实习做的一些事情 - 算法题
力扣原题
单词距离
有个内含单词的超大文本文件,给定任意两个单词,找出在这个文件中这两个单词的最短距离(相隔单词数)。如果寻找过程在这个文件中会重复多次,而每次寻找的单词不同,你能对此优化吗?
题写完后问了我手上已经有几个offer了以及字节打算啥时候转正答辩
最后面试官有说让我等HR面, 大概一到两周可以出结果,希望能进池子!!
#快手前端面试##快手校招##前端面经#