2022届字节跳动校招前端面经(已意向)
看了牛客上很多人的面经,我也写一下回报社区。
投的时候岗位是Data,当时不太明白,现在知道是内容审核的部门。
面试内容基本是从简历延伸来的,不会有意问没有做过的内容,反之也需要对自己简历里所写的东西非常熟悉。总体来说简历里的东西(项目)能说得多一些八股就会问得少一些。
一面
面试官年轻和善有活力的样子。
- 先简单问了项目
- 项目里用了 Service Worker,用来做什么(我用来离线缓存),想想还能用来做什么(多线程的操作)
- 跨域(CORS)的 response 头部字段是什么(Access-Control-Allow-Origin)
- React 里组件间怎么通信的(集中式,消息发布-订阅,父子单向流通)
- 【编程】手写一个简单的 Event Emitter 的实现,主要考察对 Event Emitter 的理解
- 单例模式怎么理解
- 不同 Tab 之间怎么通信(没答上,后来查了一下)
- 问了 Promise api(all race settle any等等)
- 【编程】手写 Promise.all 实现
- CSS 动画了解过吗,怎么水平居中对齐?(专门问了 Flex 的答案)
- CSS 选择器的优先级(内联>id>类,优先级还有个无视一切选择器的 important)
- 你对响应式设计的理解是什么,怎么实现(CSS 媒体查询)
当时不明白为啥会有这么一个问题,后来才发现前端里说响应式可能还有别的意思 - 项目的夜间模式怎么实现的(用的CSS变量)
(面试官似乎已经不想听到 CSS 了哈哈哈,因为每次问我项目里用 JS 还是 CSS 实现的时候我都是 CSS 实现) - 【编程】输入一个数字,输出该数字长度的随机字符串
- get 和 post 的区别(url明文区别,TCP次数,GET参数长度限制)
- React useCallback 什么作用(memorize函数,重新渲染时不会重新定义,但会重新运行。我之前的理解是错的,以为是 useMemo 的函数版)
- JS 有哪些基本类型
其他 JS 和 TS 的问题有点忘了。没记得有什么需要背的八股。
编程题也不是很算法,更注重对原理的理解。
二面
面试官依然年轻和善有活力的样子。
主要问项目,屏幕共享演示着讲的,自己做的东西比较熟悉。具体问了啥我不太记得了,一些技术细节都按着项目问的不算很八股。
宏观问题,好像问了个,学 React 的收获。
编程一
JSON 数据渲染为DOM,函数格式为
function tree(props){ return DOMLElement }
可以使用 React.createElement(name, props, children)。不需要运行,主要看思路。可以一行写完
function tree(props){ return React.createElement(props.name, props.props, props.children.map( child => tree())) }
平时我是用 JSX 语法写的组件,没有用过 React.createElement(name, props, children) 这个 API,对于 children 是什么类型的参数比较懵逼,返回值是 JSX Element 还是 HTMLElement 也不知道 。开始是 forEach + 递归写的,后来面试官说一行可以写完,我想了想说不知道一行写怎么挂载子组件上去,然后面试官又提示了 API 的用法。面试官可以说是提示的妈给提示开门,提示到家了。
编程二
判断循环链表。我用的快慢指针。
面试官:为什么不用一个指针?
一个指针也是可以的。但除了类似于 6 这种情况。于是问面试官说循环链表一定是首尾相接吗。面试官说是的。我说那一个指针也可以。
面试官:两个指针比一个指针好在哪?
可能是更快点吧……迭代次数少一点
三面
面试官散发着一种 leader 的气息。
还是问项目,讲了近一个小时的项目,不过重点不太一样,感觉得到是想了解学习方法和解决问题的能力。简称:面试官听我吹水……
和项目本身关系不大的问题大概是:
- 说说你对前端的理解。以及你觉得前端的价值在哪里
- 单页面怎么实现的?(history API)具体是哪个方法记得吗,怎么去实现的单页面路径有了解吗
- 你是如何解决 CSS 样式的问题的(调试的过程)
- 为什么没有实习
- Typescript 有什么好处
- 对前端工程化的理解(上个问题我说到了前端工程化……挖坑中)
- CI/CD 了解过吗,有用过吗(用过 Github Action)
- 面试官:NodeJS 和 Go 比较有什么不一样?(因为用过 Go 问的这个问题)
我:NodeJS 是运行时环境,Golang 是一种语言……
面试官:那 JS 和 Go 有什么不一样
我:一个类型动态的一个类型静态的……
面试官:那 TS 和 Go 有什么不一样
大概回答了一下编译和运行上的区别。但现在想想觉得可能面试官想问的语言的适用场景?或者说你觉得哪种语言好? - Typescript 有什么不好的地方吗?
- 为什么要做这个项目,解决了什么问题,自己做的项目花了多久,看 Golang 项目的代码看了多久,之类的问题
- 平时看什么信息了解新技术
HR 面
聊了聊为什么选择字节……后面差不多就是口头 offer 和流程的说明吧。
字节的效率很高,一天一面,三面后过了一个小时就 HR 面了。也很准时,体验很好。
#字节跳动前端面经##字节跳动##面经##校招#