最近裸辞也写了一篇金九银十:一年前端的面试分享(上),时隔多日,
终于鼓起勇气复盘字节的面试
,之所以把字节的面经单独写一遍出来,是因为面试大厂真的需要提前知道一些大厂面试经验
,这次出现的问题还是在于缺少或者说没有大厂面试经验
,所以借此单独总结出一遍,避免以后再重复犯这样的错误
接下来我们尽可能详细的描述当时
一二三面的面试场景
,对于缺少大厂面试经验的同学做一个借鉴
听别人说字节的
面试效率挺高的
,但是我遇到的情况却是不同,一二三面大概花了一个月左右
,二面结束的时候我知道自己应该过了,然后还特意让面试官催HR加快进度哈哈
,因为前后一个月周期太长了,时刻保持面试的状态挺难的
面试官会先介绍下自己·属于哪个组担任什么职位·,然后按照面试的套路让你先·介绍下自己·,一般我觉得这个时间段是面试官
了解你和看你的简历的时间段
,所以我的介绍通常是介绍自己来自于某某公司,担任什么职位
,熟悉某某技术栈,熟练某某技术栈
,然后对社区的贡献产出简单介绍下
(大概一分钟就行)
接下来面试官开启了一系列的灵魂拷问
组件库用到的的技术栈
,支持的三种模块方式
,按需加载功能
,自定义主题色功能
,tsconfig的配置
,commit规范和代码格式规范
等等typings
字段,当时因为紧张说不出来,然后还好是牛客网视频面试的,我直接手打了出来
哈哈哈ts类型声明
ssh大佬
这个模块就是简单babel编译成es5语法
,但是对import export字段不进行编译
,然后package.json声明sideEffect字段来声明副作用文件,防止被tree-shaking掉,项目中我们可以利用打包工具的tree-shaking功能做到按需加载babel-import-plugin
,这时候才想起来,跟面试官解释了自己的组件内不会引入样式,而是基于glup流式构建单独处理less文件,这样做的好处就是支持babel-import-plugin
eslint,(顺便说了不选择tslint的原因)
,prettier
,以及commit规范,另外说到了git-hook
,提交前会进行检查并且格式化(format)只是导出声明文件使用,并不会去编译我们的代码
semver版本规范
(语义化规范)这个规范,当时跟面试官说有个se啥啥的规范,顺带了解释大中小版本号的使用场景
,就蒙混过关了哈哈哈
表现出萌新求教的表情
,面试官提到了npm link
,之后问了其它大佬,确实是自己孤陋寡闻了,估计是这个问题终于被问倒了,面试官就结束了组件库的问题了哈哈
泛型
吗?(其实那时候我已经知道他要问啥,但是不能打断面试官)比如泛型接口,泛型类等等
怎么通过实例拿到构造函数
)我基本每回答一个问题都会手打出来
,但是三面的时候这个技巧被锁住了哈哈哈,具体往下看
)extend
Object.create(null)
固定高度和非固定的情况
如何实现的(比如webpack文件指纹策略)
,在牛客网手打了对应的请求头自动携带过去
实现JS限流调度器,方法add接收一个返回Promise的函数,同时执行的任务数量不能超过两个
class Scheduler {
async add(promiseFunc: () => Promise<void>): Promise<void> {
}
}
const scheduler = new Scheduler()
const timeout = (time) => {
return new Promise(r => setTimeout(r, time))
}
const addTask = (time, order) => {
scheduler.add(() => timeout(time))
.then(() => console.log(order))
}
addTask(1000, 1)
addTask(500, 2)
addTask(300, 3)
addTask(400, 4)
// log: 2 3 1 4
❗️至此经历了字节一轮的面试感觉到了难度,对整体知识的把握,绝对不可能靠背的,同样给一面的面试官点赞
大概隔了很久收到了二面的邀请,二面的面试官开头也是一面的面试套路一样
闭包陷阱
这个概念事件循环
应该不对,这道题是三面噩梦的开始,继续往下看吧
)滑动窗口解答
,但是写到一半写不出来,面试官引导了下,其实他解释的那时候我根本听不懂,冷静下来,我用动态规划解决了
,哎,自己算法真没刷多少,还好做出来了不过我感觉加快进度也是自己踩坑的开始
二面过了后,很开心的跟内推的老哥说应该过了,然后隔天确实收到了电话,本来约定在下周,我要求推前了(HR反应这几天面试官没空,然后帮我尝试安排下),过后我觉得有点不妙,毕竟可能会给面试官带来困扰,毕竟他们也忙,后来越想越乱,问了内推的老哥,他鼓励我说不要多想,一般三面不会随便挂的,而且三面一般问项目多一点,问题应该不大
当时我也觉得是,三面问的最多的就是项目或者闲聊其它方面的,但是小心使得万年船,我两方面都准备了
,但是结果却出乎意料,三面的面试官是女面试官,领导级别人物,气场非常强
,一开始也不是遵从一二面的面试套路,直接上来就问了项目亮点
(质疑的问了二面怎么答的,感觉到了二面面试官咋让你过的那种感觉)
?三面的期待和实际天差地别,面完后整个信心都没了
,一蹶不振
面试过后我狠狠抽了
自己三巴掌
,哎不争气,最后一题做出来就过了,查了下还是leetcode简单题,归根结底就是自己算法和数据结构不系统的学习,然后心情就是感觉比赛(3-1被翻篇的感觉,参考掘金VS快船),不过总体来说三面的面试体验感觉是高压面试了
,每说一句话,都能看到面试官的脸上丰富的表情,后面我都低头回答了,不敢直视
,其实换位思考一下,每个面试官都有其对应的风格
,你能在这种压力下扛过去,那抗压能力确实很强,是一个加分点
,另外一点就是及时复盘
,这是教训啊,没办法的事情
,所以总结如下:
求职阶段已经结束,笔者也顺利入职了360金融,
后面的文章也不会再发类似面经这种非技术的文章啦
,得好好沉淀自己,争取为社区输出优质深度的文章
(不要打我哈哈哈),另外自己的学习笔记也得到了许多同事的反馈,也收到了10-200的赞赏
很开心,当然了面经也是要有硬核的内容,我司还有HC需要内推的简历给我,实时跟进进度