你好,我是TianTian。
今天分享一篇小K投稿的字节面试记录,这是他第三次面字节了,之前投稿过一次:
两个部门,六轮面试,终与字节无缘
简单介绍一下,小K,目前是大专,22届毕业,他接下来计划准备专升本,拿过滴滴offer,以下是正文。
在八月初的时候参加了字节的青训营,因为一些原因,我又对和实习和校招也没有概念,青训营助理就帮我内推的实习岗,又因为我是 22 届,所以 hr 给我约面试的时候询问我确定要投实习岗吗,我问了下实习和校招的区别,我又给改成了校招,结果校招审批不过,最后还是面的实习岗位。这是我已经第三次面试字节了,不过我又挂掉了。
css 实现高度是父盒子宽度一半的盒子,可以等比例变化
缩放
padding-left 和 padding-top 的值是怎么计算的
相对于父元素的...不记的了,过吧(父元素的宽度)
flex 九宫格
隐士类型转换
事件轮询
Node.js 事件轮询了解吗
不了解
xss 攻击
页面渲染的过程
css 会阻塞 DOM 树渲染吗
React 中不可变值
Hooks 的限制
webpack HMR 原理
webpack 构建过程
写代码
实现类似模版字符串的解析
用的 for 循环
面试官:正则...
额,过吧(之前面试结束我还去看过但我还是记不住)
异步相加,假设在某个设备没有加法,只能用给定的方法计算
面试官:不能用 for 循环,这个设备没有加法,
额,那我用下标获取数据?
然后面试官把限制取消了
写完了,面试官说了几个点,问我怎么去优化
我根据提示说了一下怎么去做这个优化
git pull 和 git fetch 的区别
本地有一些修改,我想发布之前的代码
git stash
平时怎么后端联调的
怎么解决跨域
proxy
线上环境那
nginx
其他的解决跨域的方法
cookie ...(忘了,登录鉴权)
你还知道 cookie 那些字段吗
httpOnly,不知道了
面试官 secure 设置是否只能通过https来传递此条cookie
跨域请求能携带 cookie
能啊, CSRF攻击
怎么防范
fetch 有什么好处和缺点
fetch 可以取消吗
本身没提供,但是可以通过其他方法取消吧,没了解过
HTTP 状态码
201、206 了解吗
面试官讲了一下关于文件下载的情况
HTTP 缓存
给你一个网站你怎么优化
你怎么测量你优化的成果
如何测试其他地域
如何获取所有用户指标
performace 对象有很多指标可以通过它来计算,但是我没背过(这一连串问题,三面又被问了一遍) 常用的性能测量 APIs-深入浅出 Performance 工具 & API
代码 深拷贝下滑线格式变成驼峰
{
"game_id": 123,
"game_name": "halo"
}
{
"gameId": 123,
"gameName": "halo"
}
面试官自我介绍了一下
好耳熟啊,青训营答疑直播的时候听老师讲过
你觉的 React Hooks 的作用
你常用的 Hooks
Rreact-Redux 的 Hooks 我用的也挺多要说吗
你觉你那个理解的好也可以说
那算了,没了解过其的原理
因为之前都是一面来问,问怎么使用,三面问的考察点就变了,当时没有体会到
有了解 React 18 的新特性
公众号看的,React 18 生命周期
你觉的 HTTP 有哪些比较好的点
这跟谁比啊(我有点懵、没懂)
面试官引导了一下
我觉得 HTTPS 采用混合加密的机制挺巧妙,就说了一下(没察觉到,跑题了)
那如果不考虑性能,可以一直用 HTTPS 发请求吗
我...不确定
面试官:加密长度有限制
那你觉的 HTTP 有哪些地方设计不好的地方
啊...没啥想法啊
面试官有引导了一下说了 Expire
我说了下 Expire 为什么被替代
除了不准还有什么原因
精度
忘记怎么说到 HTTP2 了,我说到 HTTP2 不是要强制使用 HTTPS 吗
面试官:那你觉的为什么 HTTP2 要强制使用 HTTPS
我分析了下 HTTP2 的特性和 HTTPS 特性也没发现什么关联的
然后面试官给我讲了的挺久的关于字节内部的一些实现
这中间面试官给我提了几点建议:
面试官说看我之前写过的面试总结,对我有一定的了解,给我几点建议
面试不关心你不会什么,也不会因为你不会一两个问题就挂掉你,是允许候选人有知识的盲区的,面试更关心你会什么,你的亮点是什么
遇到问题不要着急回答,先思考一下,就像我们平时做事,不是比谁做的更快,而是比谁做的更好
...聊到实习工作
聊着聊着,我说了一句让面试官印象很深刻,到后面我询问挂掉原因面试官又我聊了一下这个问题
我说和我想象中不太一样,之前面试就难点啊亮点啊,我以为工作中会有很多挑战,但是实际感觉我平时自己写代码区别不大。
面试官就这个问题和说了挺多的
到了反问
校招的标准
校招不会那么看重项目经验,相当与一到两年左右的社招
实习多久能转正
两个月就可以发起转正
base 是哪里呢
你期望是哪里
杭州啊、我人现在在杭州
在杭州没有团队,北京、上海、广州、深圳也有不过业务不一样,不考虑吗
其他城市入职时间要晚一点
大约多晚
第二天收到拒信了,我人品是不是有问题,所以我给面试官发了个邮件想询问一下原因,我当时的邮件没写主题,因为我不知道该写什么主题,变成了垃圾邮件,但面试官还是把他的微信发给了我,还和我通二十分钟电话,这真的是我没想到的,我以为面试官邮件不会回复或者说简单回复一下结束了,非常感谢这个面试官。
面试官说客观原因一是该岗位需要尽快在北京入职,二是觉得我有转正诉求,但是转正的几率很小,主观原因是觉得我缺少一些思考和深度,希望我追求极致,面试官说对我之前说感觉工作中和我平时自己写代码区别不大这句话比较深刻,又在这方面多给了我一些指导和建议。
我当时给自己先定一个时间,到这个时间我就开始投简历,我先根据当前的情况先写一份简历,看看自己缺失,用剩下的时间开始准备把这简历中不足弥补上。我大一的时候看过一篇神三元的面经,我还是挺重视网络、操作系统、编译原理,但我听说这个大厂才考,我也没想过我能面到大厂,所以把这个学习久放的很靠后。
复习了一段时间,感觉有些力不从心,开始用四象限法则,适当舍弃了一些点,最开始简历是写的了解 node 的,本来我想通过后面的时间把它变成熟悉的,但是后来复习起来发现剩下的时间不多,想了想感觉 node 也并不是必备项,直接就删掉了。
今年 2 月份左右吧字节也举办了前端训练营,还是什么营我记不清了,我当时报名参加 5 道算法就一道 75% js 的怎么输入我不知道,用的 c 语言,c 语言输入有的需要 getchart(),不然会取值错误,也不能调试,就一道只输入一个整数,其他题怎么输入我都写不明白,开始意识到自己编码能力很差,离开了代码提示,不能调试,就什么都写不出来,在那开始就去用记事本去刷 leetcode,玩转算法面试 Leetcode真题分门别类讲解,还有 js 的各种手写。
我觉得找工作是一个很熬人的过程,需要有足够时间和一点运气,我希望大家能留下充足的时间和耐心做好充足的准备。
对于写简历,B站 有很多的简历点评大家可以去看看Young村长大圣老师前端早早聊。
我大概说下我自己之前的简历吧,我的简历分为四个模块个人信息、教育经历、技术栈、项目经历,一页。
教育经历
对于学历每个公司都是很看重的,对于一个没毕业的学生,更是格外的看重,尤其我这种学历是劣势的,我怕它看不到所以单独列了一个教育经历放在最上方,学校下面是奖学金和两个算法比赛,我个人觉得比赛没必要写太多,因为大多面试官都不知道这个比赛是啥,偶而会有面试官会问一下。
技术栈
深刻理解 HTML 语义化,熟练掌握 CSS 模块化, ES6+
熟练掌握 React 及其周边生态,并了解其底层原理,了解 Vue
熟悉 Webpack 基础配置及性能优化,了解 Chrome DevTools、Lighthouse 等性能测量工具
掘金链接(这个很重要,比如有的面试官问的问题,我印象不是很清晰,比如 webpack,那些插件名我实在记不住,就告诉面试官我有篇文章是写这个的)
我没写网络
项目
说实话,我一直所认为的亮点和难点,需要达到人无我有,人有我优的地步,到现在我也还是这么认为的,但是多少不现实,我也没这个本事,希望以后能达到这个高度。
我觉得还多体现自己的一些思考吧,工作也只是重复搬砖,但你如何把这这个砖般的更快、更好、更整齐那,那就要看你自己怎么去想、怎么去做了。
大家可以先看看这个视频 HR 是怎么筛你简历的和面试老P7告诉你怎么获得面试机会,从1面到4面该如何应对
在牛客网上有人问我的面试机会为什么会这么多,是项目还是比赛有亮点?
我个人感觉好像都没有,但是我投简历的时候不看城市,投递的时间又那么久,所以我的面试机会就翻了好几倍
虽然说金三银四、金九银十,但是那只是针对大公司,但现在各大公司提前批一个比一个早啊,反正我在三四月份的面试很少,几乎都是电话面试都要求要尽快入职,我学姐和我们说他们公司都要等六七月份才开始招人,因为这时候人多可以压价。
我在 BOSS 投递的简历比较多,但是 BOSS 必须要对方回复你才能发简历,所以我在询问机会的时候会把我的作品链接和掘金链接都发过去,一般看到链接处于好奇心都会开看看。
在看一遍看看不同面试官的考察点老P7告诉你怎么获得面试机会,从1面到4面该如何应对模拟面试看看你会不会犯同样的错误饥人谷模拟面试:
缓解紧张
我印象中最开始面试的时候,我提前两个多小时就进牛客面试间去等,让自己到面试的时候表现的好一点,但是还是紧张
后来一般提前 10 分钟到 20 分钟吧,听歌,干饭人,感觉能缓解一点,刚开始还是有点小紧张,问几个问题就不紧张了
现在面试就不紧张了,因为我面试成功他以后就是我的同事,互联网和工位和大网吧是一样的,就当是了同事同学交流了
自我介绍
我的自我介绍特意背过,很简短,我语速比较快(因为我感觉他们不听,我也有点紧张,紧张说话更快),背的自然就没有然后的口头禅
给出一些暗示,引导一些到一些ni方向,你
面试不关心你不会什么,也不会因为你不会一两个问题就挂掉你,是允许候选人有知识的盲区的,面试更关心你会什么,你的亮点是什么,遇到问题不要着急回答,先思考一下,就像我们平时做事,不是比谁做的更快,而是比谁做的更好,这是三面面试官说的:
遇到不会的问题,适当转移话题
一些答案比较统一的题吧
我如果不会,就直接过(一面说的多)
或者我会一些其他与这个相关的,我就会说这个我不会但那个我比较熟(二面说的多)
一些偏思考的题,场景的,或者是写代码
先复述一遍题,我要是没听懂,或者有些点的不太明确我会再问问,要是没思路,就会说我暂时没什么想法了,写代码我就说等我在想一想。
因为我觉得代码题会给比较长的时间,而其他题就是一个快问快答的节奏,不会就过了,让他多问一些我会的。
现在看来,想法不太对,这回三面面试官也说了一下,我经历电话面比较多啊,电话面双方都不说话我是感觉是很尴尬的,我一般答的就比较快,或者多复述一下题目啊尽量避免这个冷场,无论视频和电话面,我比较忌讳冷场,但现在看来这个思考时间把控的就不好,希望大家能根据考察点对时间进行一个调整,尤其是电话面。
在回答结束也要告诉面试官你答完了
电话面和视频面如果对方有些停顿,我就会问我是不是没说明白。
适当扩展
我回答问题,就喜欢回答关键点,不会描述太细节,因为我觉得都会,但是实际上面试官不知道你是真实掌握还是从面经看来的
面试不是考试,不要太死板,适当寻求一些提示
题没听懂,不知道面试官想问什么
某个 API 忘了
优化代码代码没思路
反问
最后可以主动留个联系方式,这样在挂掉之后也可以问下原因,别一个坑栽两次,你栽的起吗?我栽不起。面试通过也可以问问工作,租房什么的。
hr 面
再看一遍这个视频,加深印象 HR 是怎么筛你简历的和面试
我当时 offer 发下来之后,面试官就加了我的微信,后面我快要入职的时候,面试官就和我说马上要搬工位的了,并在地图给我画了几个位置,在牛客加了滴滴租房的群,很快就找到了距离工位比较近房子,群里有几个实习生都租错地方,入职之后发现工位不对,因为我们办理入职的地方和办公的地方是不一样的,他们又都没有面试官的联系方式,hr 也不清楚,就很麻烦。最好租的近一点,周末还能去蹭个空调学学习。
先根据邮件地点办理入职,会讲一些公司办公的软件,考勤,答疑什么的,电脑要由导师申请,第一天没权限,安了一天环境,第二天改改文案错误、熟悉项目代码,下午就开始搬工位,周末就放假了,下周来还是熟悉项目代码、写组件的文档,过了几天 PRD 评审,评审一半给我发消息说让我进去也听一下,我进去,这干啥那?啊,结束了,说啥了?给我分了点任务,开始写昨天评审的页面。后端培训回来给出接口文档,我看着接口文档,设计图显示要分类,这一堆,我怎么分类啊,我就去问后端,后端说分类是产品定义的,后端不管,啥?还有产品?好吧。
后面开发完部署,产品体验就提了一堆 bug,我写的是图表展示一些后端的指标,涉及很多单位,单位的转化和数字的截取(保留小数点后几位),这些都没做,这些细节在 UI 没有画,但是在 PRD 评审的时候会说,我也没听,也不知道。这个时候我明白 PRD 评审是干嘛的,再之后工作就是重复之前的过程。
在这个过程主要体现两个问题
沟通
我之前都是自己写后端,根据页面也来去写数据,我对后端的一些设计理念,也不了解,再加上我一个刚来的实习生,他对我的的能力可能也是存在一些质疑,所以我在刚开始和后端沟通接口文档的时候,他每次都要把我的导师叫过来,再问一遍,好多的时间都花在了沟通上了。
我当时总是问一些反问句,因为我当时觉得这个数据不太对,但是他这么设计是有什么考虑吗,反问句可能会给人带来一种质疑感觉吧,有点不太好,现在也是熟了一些,有问题我就直接说,这么设计会有什么样的问题。
经验不足
因为这个项目没有引入什么适配的方案,我当时还问了一下,说不用考虑宽高等比例变化,问的可能有点不太明白,我就把最外层容器直接固定,只考虑屏幕小的时候怎么展示更好一点,结果大屏就凉了,外层又改的百分比,我当时应该缩放浏览器,多测测的
文字的截取(老大看我代码提的),后端正常返回几个字,但是后端不正常返回给我几万个字,那第一眼看去就是前端问题
不听 PRD 评审,我当时对产品也没有概念,PRD 评审是干嘛的我当时也不知道,结果开发完被提了一堆问题
虽然都是小问题,但是这些问题不应该出现
业务思考
一个流程下来,我也对业务和环境也比较熟悉了,但经历这么长时间的面试一直就项目亮点和难点的,我真的以为实习工作是充满挑战的,不然哪来的亮点和难点啊,来之前我还一直在想我胜任不了这份工作,而实际上工作中我也并没有感觉到什么难点和亮点。真的和我平时自己写代码区别不大(我平时对自己代码的要求还是很高的),只是多了一些流程。
这样工作让我感受到了一点点的危险,我对转正答辩不了解,但我感觉和晋升答辩差不多,而我现在又没什么特别的贡献和成绩,转正?不可能。我也不想我现在没有选择,以后也没有,我又应该如何提升自己?
学新技术、看源码?没实习前我一直都这么做,结果就是盲目学习,这个比较火,那个面试常考,最后不过是多背了一些东西,收获一些 API,过两天就忘了,反而带来一些焦虑,实际意义和收获并不大。
实习之后我的思考点也有所转变,更想去解决一些实际问题,带着问题去学习,比如我现在想到的问题就是我们现在项目的弹窗,统一用 redux 进行管理的,而这个每次的创建注册的过程,怪麻烦的,那我好像可以写一个 cli 通过命令来执行这些操作。
时间管理
虽然我们组下班比我想象中要早的多,每天晚上八九点大家就都走了,但是我本身加时间观念不强,再加上有一些惰性,和一些额外的事情,时间就显得有些割裂,每天学习就感觉有些碎片化,不能像在学校的时候专心学习,其他都不管不顾。
准备专升本考试
加强时间管理
划分优先级,四象限管理法
整理知识点、制定学习计划
利用碎片时间,但碎片化的学习,我感觉学不到什么,反而会让我更焦虑,所以我会用这个时间关注一些新的特性或者一些稀奇古怪的小点,如果遇到一些比较重要,先划分优先级,再考虑系统的去学习
打好基础,提高自己的专业技能
网络、操作系统、编译原理
多刷题,带着一些问题,去看源码,学习其中的编程思路和设计思想
之前跟小K的交谈过,可以感受到他求职之旅很艰辛,这是他第三次面字节了,我相信未来某一天,他会跟我说,他已经拿下字节offer的!
每个人通过自己的努力,最后都能收获满意的成绩~
看似寻常最奇崛,成如容易却艰辛。
共勉!
[1]. 常用的性能测量 APIs: https://juejin.cn/post/6953220613104205855#heading-16
[2]. 神三元的面经: https://juejin.cn/post/6844904106537009159
[3]. 玩转算法面试 Leetcode真题分门别类讲解: https://coding.imooc.com/class/82.html
[4]. 简历点评-Young村长 Leetcode真题分门别类讲解: https://space.bilibili.com/480140591/?spm_id_from=333.999.0.0
[5]. 大圣老师: https://space.bilibili.com/26995758/dynamic?spm_id_from=444.41.0.0
[6]. HR是怎么筛你简历的和面试: https://www.bilibili.com/video/BV1Uf4y1h7g7?spm_id_from=333.999.0.0
[7]. 前端早早聊: https://space.bilibili.com/35528472/dynamic?spm_id_from=444.41.0.0
[8]. 老P7告诉你怎么获得面试机会,从1面到4面该如何应对: https://www.bilibili.com/video/BV1bL4y1Y7iS?spm_id_from=333.999.0.0
[9]. 老P7告诉你怎么获得面试机会,从1面到4面该如何应对: https://www.bilibili.com/video/BV1bL4y1Y7iS?spm_id_from=333.999.0.0
[10]. 饥人谷模拟面试: https://space.bilibili.com/388802312/channel/detail?cid=79171&ctype=0