字节跳动提前批抖音三面面经 + hr面经(已经意向书)

明天猿辅导转正面试,写个字节面筋攒攒rp,7月底面的了。

有些问题记得不是很清楚了,准备的也不是特别充分。QuQ,随便写写,回馈牛客~

之后有啥想起来的再来补一补~

TL;DR

一面

基本上就是问下基础,确实记得不是太清楚了。

  • 自我介绍

  • 两家实习,大二小米暑假实习2个月、大三猿辅导实习接近8个月。讲讲实习的一些事。

  • Ant-design 核心贡献者,讲讲给 antd 写的一些 feature 以及修复的一些 issue。

  • 算法:最接近三数之和 和 比较两个pkg版本号大小(包括带 rcbetaalpha这种)。

  • 第一题刚开始用的 hash 表,面试官让我不要优化一下,改成双指针了。

  • 第二题模拟(代码写了快70行,我太笨了)

  • 一些前端基础知识

  • 继承方式

  • 问了下 es6 的继承的一些细节(constructor这些相关)

  • 问了个事件执行机制的题目,然后给了一堆混有 promise 和 async之类的事件的代码来给出一个输出结果,分析好异步和同步队列的执行情况。

  • 为了个 类似于 this 绑定的题目,也是给了一推代码分析结果,分析好隐式绑定和显示绑定以及执行的作用域就行了。

  • Dom、bom事件,小程序里面有吗(实习的时候做了一个兼容小程序的frog库)

  • 实现三列布局(口胡),左右两侧自适应,中间固定呢

  • 响应式布局 vw、em、rem 区别(实习的时候用 rem 做过响应式布局,根据视窗大小来动态计算根的 font-size 值)

  • nodejs 为啥适合做 IO 密集型不适合做 CPU 密集型

  • TCP、UDP 区别,详细问了下 TCP 的三握四挥手的过程,还问了个关于三次握手中间断开的话,包的情况。

  • new 执行过程中发生了啥

  • 其他

其实这一轮问了挺久的,快70分钟了,有些记不起来了。

二面

  • antd 贡献情况,具体哪些 feature,然后 antd 的一些工作发布流程,pr 的code review之类。

  • 实现一个类似于浏览器的并发加载的功能(用队列乱搞了半天,这题挺有意思)。

  • 实现一个判断数组去重的函数。(用了 Map,面试官让我用 es5 的方式,就只能用 object 来做 hash 表,要是有不同类型的值呢?typeof 判断一下,然后存 key 的时候标记一下就行了)。

  • 链表判环。

  • 基础知识

  • 记得有问 https 的加密相关的。

  • 然后 http2 的一些优势。

  • 还有一些也不记得了

  • 问了下实习做的一个编辑相关的项目,ts compiler api 的一些用法,以及分析提取 ast 来拼接一个 object 出来。问了下里面用到的一些算法, 其实就只用了 dfs 去扫树结构。然后最后处理 json 输出的时候,处理那个逗号来遵循 json 格式下了点功夫。

  • 问了下 react 的底层原理

  • 讲了下 diff 算法,为啥之前那种修改算法是 o(n三次方)(要遍历两棵树 & 找出不用),diff算法比较暴力,会直接根据 type 不用去做销毁再重构。但 diff 算法也会有些复用的情况例如设置了 key 之类。然后讲了下单点 diff 以及多点 diff 的执行机制。

  • 讲了下 react 15 之前的架构以及为啥要在 react15之后引入 fiber 架构。添加的 scheduler 做了哪些工作,以及在这一过程中主要优化解决的问题。

  • useState 的实现(依赖了一个双向链表)然后讲了一些其他的hooks

  • hooks 解决了 HOC 以及 render props 的一些痛点。

  • 问了下微前端相关的

  • 微前端解决的一些问题,市面上的一些微前端矿建

  • 你给qiankun的源码做过贡献,讲一讲qiankun的隔离机制以及qiankun因为用到了es6 的proxy机制导致对 IE 浏览器的不兼容性,qiankun提供的一些解决方案。

  • 讲一下qiankun 里面多应用样式是怎么隔离的,js 是怎么隔离的。

  • 问了下 deno 相关(参加过 deno 中文 api 文档的一些翻译工作)

  • deno 解决了 nodejs 的哪些痛点,相较于 node 它有哪些优势,有哪些缺陷

  • 问了我平时用 deno 来搞些啥

  • deno 源码为啥要用 rust 写而不是 cpp,聊了 rust 的一个 tokio 库来给 deno 作为异步事件支撑

  • deno 源码里面还有 cpp 吗(肯定没了啊。。),然后聊下之前 deno 团队将核心模块用 ts 迁移回 js 的事情。

面试官:还有能吹的吗?

我:没有。

面试官:那我帮你叫三面面试官。

其实这一轮也快1个小时了。有些问题也不记得了。。

三面

  • 算法:写了个两数之和,我在里面用数组的indexOf来当 hash 表用,他就问我 indexOf 有时间复杂度吗?其实这个是有的,以前打周赛就因为这个 t 过,具体时间复杂度其实有 O(N),然后他让我用 hash 表扫,提前预处理存了一轮,他问我能不能只写一层遍历。。。

  • 问了下

  • 看了我 github,然后顺势发现了我的博客(其实我简历上有。。。),看到内容后问了些关于浏览器渲染机制的问题,可以让我多去看看 chrome 的官方文档,那边资料比较新。

  • 开始问 antd 相关

  • 写过哪些组件(skeleton的一个组件已经发布了)

  • 有哪些感触(其实主要还是测试,因为大型开源库都遵循一个“百行代码,千行测试”的原则,有时候你可能只改了很小的逻辑,但是你要给这部分写很多test case)。

  • 提到关于 antd 里面组件 refactor with hooks 的工作,在重构过程中遇到了哪些问题(jest 测试对与FC 的支持不好,例如没办法像之前测逻辑的时候直接去测 state, facebook 之后能做一些改善吧。)

  • 写过一篇引导新人进入开源社区贡献 antd 的文章,现在被放在官方文档上面 hhhh

  • 正在参加阿里的编程之夏,选的项目就是 antd,里面有个课题以前没做过(组件提供无障碍的支持,会怎么去思考以及克服)。

  • 为啥春招不去阿里实习(疫情原因,不太想离开北京)。现在手上阿里云的offer 应该差不多可以拿到。

  • 对面 leader 比对了一下抖音和阿里云的区别,宣传了一下抖音,前端架构组,专门攻坚技术,能做的事情有很多。我也表示应该意愿会比较大吧,不过还是得看最后的选择吧。。。

面试官:我这边没啥问题了,之后hr会找你聊的。

然后一天就面了三轮。下午hr发消息约了明天的hr面。

可能是穿着 leetcode 的短袖在面试,算法都出的没那么恐怖。面试官问了挺多代码题的,记得最后关闭那个浏览器窗口的时候,上面有 14 个题目的 tab。。。。

hr面

  • 一些私人问题以及我对开源和技术的一些看法。

  • 问了下之前的翻译经历(掘金翻译了20多篇文章加上 deno 中文文档的翻译),碰巧也穿着之前参与掘金翻译送的短袖。

  • 问了钱在心中的地位,之后在北京的发展。

  • 现在手上快有的offer(阿里云还在坐等hr面,猿辅导转正面试)

问了也挺久的,大概快40分钟吧。

然后面完之后三个工作日就接了意向书。

Others

个人 github: https://github.com/fireairforce

有个 leetcode 的刷题 repo,已经用 js 刷了 600 多题了。

欢迎 star:https://github.com/fireairforce/leetCode-Record

#秋招##前端工程师##字节跳动##面经#
全部评论
大佬tql
点赞 回复
分享
发布于 2020-08-09 17:11
牛客md语法渲染的不是特别好。。。裂开
点赞 回复
分享
发布于 2020-08-09 17:12
阅文集团
校招火热招聘中
官网直投
tql
点赞 回复
分享
发布于 2020-08-09 17:17
沾大佬喜气
点赞 回复
分享
发布于 2020-08-09 17:42
SSSSSSSSSSP
点赞 回复
分享
发布于 2020-08-09 17:50
lz是哪个部门啊?
点赞 回复
分享
发布于 2020-08-09 17:51
大佬猿辅导实习8个月是怎么做到的,太强了吧
点赞 回复
分享
发布于 2020-08-09 17:52
大佬 好强啊
点赞 回复
分享
发布于 2020-08-09 21:17
沾沾东哥喜气。前排出售一件LC短袖,面试据说有BUFF加成
点赞 回复
分享
发布于 2020-08-09 21:28
真牛逼
点赞 回复
分享
发布于 2020-08-10 01:41
给东哥跪了
点赞 回复
分享
发布于 2020-08-10 12:08
真的流弊
点赞 回复
分享
发布于 2020-08-10 20:13
东哥是真牛逼 。。。
点赞 回复
分享
发布于 2020-08-11 20:19
沾沾大佬的喜气,许愿字节offer
点赞 回复
分享
发布于 2020-08-11 22:10
给东哥跪了,这就是zoomdong
点赞 回复
分享
发布于 2020-08-11 23:51

相关推荐

招聘C++/JAVA/测开实习,简历直推leader,流程响应快,且我可以跟进你们的流程同时也招聘python/go的运维实习简历发送至**********如果看不到邮箱,直接私我要邮箱投递吧可以在邮件里注明需要+V 跟进面试流程,我会加你跟进不再接收JAVA简历,增加招聘运维工程师运维开发工程师(杭州、上海、北京、成都)岗位描述:·      负责运维系统开发,如部署升级系统、监控系统、故障诊断系统等·      通过自动化的方式,提升系统运行的效率及稳定性岗位要求:1.     熟悉C/C++/Java/golang等至少一种编程语言,和shell/perl/python等至少一种脚本语言。2.     熟悉linux操作系统,具备良好的基础知识,如文件系统、网络等。3.     加分项:熟悉分布式存储和机器学习4.     加分项:熟悉运维系统、具有运维系统开发经验#实习##暑期实习##春招#C++岗位描述:1. 阿里云超大规模分布式文件系统的设计、研发和维护,支持全球的海量用户与数据。2. 新一代文件存储协议的设计与研发,定义下一代文件系统的标准协议。3. 负责并行文件系统的设计、研发和维护,创造超高吞吐全球领先的文件系统。4. 学习能力强,不畏挑战,喜欢钻研,有良好的沟通能力和团队协同能力,善于独立思考并反思总结。岗位要求:1. 扎实的计算机专业基础,精通操作系统、数据结构与算法、数据库、计算机网络等2. 丰富的编程经验,熟悉一门或多门编程语言,包括不限于Java/C++/Python/Go 等3. 加分项:了解NFS、SMB协议,了解常见的文件系统如Ceph、Lustre、GlusterFS等4. 加分项:对Linux内核有一定的了解,有修改内核的经验。5. 加分项:了解KV存储,如LevelDB、RocksDB等。6. 加分项:   参与国内或国际计算机相关赛事,并获得奖项;  或者有论文和专利成果等。7. 如果以上条件都还不能完全具备也没有关系,我们欢迎自信且热爱学习的同学。
投递阿里云等公司10个岗位
点赞 评论 收藏
转发
11 46 评论
分享
牛客网
牛客企业服务