字节跳动春招面经

刚刚HR面完,来回馈一下牛客盆友们。
春招的时候面了两个部门,第一个部门因为准备的不太好,就挂掉了,但是面经也给大家写一下,希望对大家有帮助

一面(企业应用):
1. CSS实现一个秒针效果(一分钟转一圈,匀速和一秒一走),不知道怎么做的朋友可以看一下我github上的demo(https://github.com/onechunlin/JS_Demo/tree/master/CSS%E5%AE%9E%E7%8E%B0%E7%A7%92%E9%92%88)
2. 实现Promise.limit(),实现对promise数组的限制运行。讲了一下思路,然后手写不出来,后面整理了一下,答案在这(https://github.com/onechunlin/JS_Demo/tree/master/Promise.limit%E7%9A%84%E5%8E%9F%E7%94%9F%E5%AE%9E%E7%8E%B0
欢迎大家点个小星星哦

3. Vue 2.x和Vue 3.x的区别(数据劫持方式、脚手架命令、UI界面等等)

4. CSS实现类似微信朋友圈的效果,要求根据图片数量显示不同的布局。(一张时占比50%,四张是田字布局,九张时九宫格布局)。
这个题其实挺偏的,我说了JS判断元素数量的方法,但是面试官还是不是很满意,核心思想就是利用伪类nth-last-child(1):first-child找到元素的子元素个数,
例如倒数第一个也是第一个元素时,说明只有一个元素。整理了答案在这咯

5. 如何获取一个元素相对于浏览器窗口左上角的位置(我说的是利用offsetParent循环直到找到body节点,进行一个数值的累加,
但是面试官说这种方法不好。后面找了好久终于找到了,可以利用Dom元素上的getBoundingClientRect()方法,该方法直接返回一个对象,可以拿到距离浏览器的距离)

6. 一次http请求的过程

还有其他一些小的知识点不太记得了,面完以后一个星期都没消息,然后我发邮件问了一下,挂啦。其实我觉得这一轮面试体验有点不太好(但是后面面其他部门的体验又很棒!),
面试官会在我说比较擅长点的时候打断我,然后继续下一个问题,所以后面搞得我都有点不太敢答了,你以为就这样结束了吗?

没有!我知道这个部门挂了,我又另外在牛客找了一个内推,投了抖音,但是抖音满了,最后好像没处理,但是HR给我打电话说我被捞出来了,
因为一面面试官对我评价还不错!(那为啥挂了),所以我又开始了另一个部门的面试。。。

一面:
看到面试官是个小姐姐,哈哈,心情都好了,然后就闲聊了一会儿(为了缓解我的紧张),开始自我介绍

1. 客户端和服务器怎么维持登录态(cookie和session的配合,还有token也可以)

2. cookie是每次请求都会发送给服务器吗(不会,因为服务器设置cookie时会指定其domain和path,只有请求相应的域时才会带上cookie)

3.跨域的方法(jsonp,跨域资源共享(CROS), 代理, 中间件等)

4. 你说的跨域资源共享是怎么用的呢(通过在后端设置响应头“Access-Control-Allow-Origin:*”来启用跨域)

5. for(var i = 0; i<5; i++){
setTimeout(() => {
console.log(i)
})
}输出什么(5,5,5,5,5),应该怎么改?(1. var改为let,这里扯一扯let的块级作用域,2. 使用立即执行函数将i传入函数里,这里扯扯JS的事件循环,宏队列微队列等)

6. [-4,-3,0,0,0,6,2,3]这样一个有规律的数列,0的左边都是负数,0的右边都是整数,要求找到与0相邻的正数和负数(-3,6),要求复杂度为log n(采用两次二分查找找出整数和负数)

7. position的取值(absolute, relative, sticky, static,然后这里小姐姐说你是不是还忘了一个,然后我连inherit都说出来了。。。
但是忘了fixed,但是小姐姐真的很nice,提醒了我,然后问了一下它的作用,因为前面说sticky的时候其实也提到了相对于浏览器定位,但是一时脑抽忘记了)

8. 怎么判断一个数组(Array.isArray,instance of,Object.prototype.toString.call(arr))

9. [] instance of  Object的结果(true), typeof []的结果(Object),Object.prototype.toString.call([])的结果("[object Array]")

10.
<html>
<head>
<script  type="text/javascript" src=‘./1.js' />
<script  type="text/javascript">
console.log('2');
</script>
</head>
</html>
1.js内容:console.log('1')
上述代码输出结果,(1,2),因为js是阻塞式加载的,而且是同步代码,所以会依次执行,但是一般会吧script标签放在body尾标签前,防止阻塞页面加载

11.  面试官说其实放在尾部js的加载也是阻塞式的,有什么办法解决吗(async  defer,此处介绍了一下浏览器的线程等,说明一下两个的不同,好像defer是ie里的,不太确定!

12. 实现一个合并数组的方法,使其合并后的数组仍是有序的,
mergeArray(arr1, arr2)
[-10,-2, 12,15]
[-4,4]

[-10,-4,-2,4,12,15]
利用双指针,每次比较指针的位置,当一个指针完时,将另一个数组直接添加到结果数组之后即可(此处拓展了一下数组的concat和slice方法)

一面就记得这么多,其实每个问题我都有拓展一点,所以面试过程感觉小姐姐挺满意的,让我在那个房间等一会儿,二面马上上线!

二面:
二面是个面相很友善的大哥,顿时就放松了很多
1. 在Date上添加一个方法,使得能够格式化的输出日期(
如用户输入:
(new Date()).format("YYYY-MM-DD HH:mm:ss");
(new Date()).format("YYYY/MM/DD HH:mm:ss");
都能得到同意的效果,这个题应该是考察原型链以及正则,我简单写了一下代码,然后说了一下思路就过了

2. 实现正则检查:email,ip 地址。你看,正则来啦,现场写了两个正则,应该存在一些问题,因为不知道邮箱具体标准,但是面试官应该能看出我会写一般的正则。
所以也没太为难我,追问了一下^和$)

3. 两数之和的算法(我说了两种,一种是排序之后使用头尾双指针,一种是利用数组的indexOf方法,在一个for循环中每次查找target-arr[i]的数是否存在,存在则加入结果数组)
这里还问了一下数组的indexOf和lastIndexOf的时间复杂度,因为数组本质其实是hash表,所以是常数项的复杂度

4. [1,2,3].map(parseInt)的结果(1,NaN,NaN),为什么?(因为map接收两个参数时值分别为value和index,而parseInt接收两个参数时值为value和radix馈一下牛客盆友们。
春招的时候面了两个部门,第一个部门因为准备的不太好,就挂掉了,但是面经也给大家写一下,希望对大家有帮助

一面(企业应用):
1. CSS实现一个秒针效果(一分钟转一圈,匀速和一秒一走),不知道怎么做的朋友可以看一下我github上的demo(https://github.com/onechunlin/JS_Demo/tree/master/CSS%E5%AE%9E%E7%8E%B0%E7%A7%92%E9%92%88)
2. 实现Promise.limit(),实现对promise数组的限制运行。讲了一下思路,然后手写不出来,后面整理了一下,答案在这(https://github.com/onechunlin/JS_Demo/tree/master/Promise.limit%E7%9A%84%E5%8E%9F%E7%94%9F%E5%AE%9E%E7%8E%B0
欢迎大家点个小星星哦

3. Vue 2.x和Vue 3.x的区别(数据劫持方式、脚手架命令、UI界面等等)

4. CSS实现类似微信朋友圈的效果,要求根据图片数量显示不同的布局。(一张时占比50%,四张是田字布局,九张时九宫格布局)。
这个题其实挺偏的,我说了JS判断元素数量的方法,但是面试官还是不是很满意,核心思想就是利用伪类nth-last-child(1):first-child找到元素的子元素个数,
例如倒数第一个也是第一个元素时,说明只有一个元素。整理了答案在这咯

5. 如何获取一个元素相对于浏览器窗口左上角的位置(我说的是利用offsetParent循环直到找到body节点,进行一个数值的累加,
但是面试官说这种方法不好。后面找了好久终于找到了,可以利用Dom元素上的getBoundingClientRect()方法,该方法直接返回一个对象,可以拿到距离浏览器的距离)

6. 一次http请求的过程

还有其他一些小的知识点不太记得了,面完以后一个星期都没消息,然后我发邮件问了一下,挂啦。其实我觉得这一轮面试体验有点不太好(但是后面面其他部门的体验又很棒!),
面试官会在我说比较擅长点的时候打断我,然后继续下一个问题,所以后面搞得我都有点不太敢答了,你以为就这样结束了吗?

没有!我知道这个部门挂了,我又另外在牛客找了一个内推,投了抖音,但是抖音满了,最后好像没处理,但是HR给我打电话说我被捞出来了,
因为一面面试官对我评价还不错!(那为啥挂了),所以我又开始了另一个部门的面试。。。

一面:
看到面试官是个小姐姐,哈哈,心情都好了,然后就闲聊了一会儿(为了缓解我的紧张),开始自我介绍

1. 客户端和服务器怎么维持登录态(cookie和session的配合,还有token也可以)

2. cookie是每次请求都会发送给服务器吗(不会,因为服务器设置cookie时会指定其domain和path,只有请求相应的域时才会带上cookie)

3.跨域的方法(jsonp,跨域资源共享(CROS), 代理, 中间件等)

4. 你说的跨域资源共享是怎么用的呢(通过在后端设置响应头“Access-Control-Allow-Origin:*”来启用跨域)

5. for(var i = 0; i<5; i++){
setTimeout(() => {
console.log(i)
})
}输出什么(5,5,5,5,5),应该怎么改?(1. var改为let,这里扯一扯let的块级作用域,2. 使用立即执行函数将i传入函数里,这里扯扯JS的事件循环,宏队列微队列等)

6. [-4,-3,0,0,0,6,2,3]这样一个有规律的数列,0的左边都是负数,0的右边都是整数,要求找到与0相邻的正数和负数(-3,6),要求复杂度为log n(采用两次二分查找找出整数和负数)

7. position的取值(absolute, relative, sticky, static,然后这里小姐姐说你是不是还忘了一个,然后我连inherit都说出来了。。。
但是忘了fixed,但是小姐姐真的很nice,提醒了我,然后问了一下它的作用,因为前面说sticky的时候其实也提到了相对于浏览器定位,但是一时脑抽忘记了)

8. 怎么判断一个数组(Array.isArray,instance of,Object.prototype.toString.call(arr))

9. [] instance of Object的结果(true), typeof []的结果(Object),Object.prototype.toString.call([])的结果("[object Array]")

10.
<html>
<head>
<script type="text/javascript" src=‘./1.js' />
<script type="text/javascript">
console.log('2');
</script>
</head>
</html>
1.js内容:console.log('1')
上述代码输出结果,(1,2),因为js是阻塞式加载的,而且是同步代码,所以会依次执行,但是一般会吧script标签放在body尾标签前,防止阻塞页面加载

11. 面试官说其实放在尾部js的加载也是阻塞式的,有什么办法解决吗(async defer,此处介绍了一下浏览器的线程等,说明一下两个的不同,好像defer是ie里的,不太确定!)

12. 实现一个合并数组的方法,使其合并后的数组仍是有序的,
mergeArray(arr1, arr2)
[-10,-2, 12,15]
[-4,4]

[-10,-4,-2,4,12,15]
利用双指针,每次比较指针的位置,当一个指针完时,将另一个数组直接添加到结果数组之后即可(此处拓展了一下数组的concat和slice方法)
一面就记得这么多,其实每个问题我都有拓展一点,所以面试过程感觉小姐姐挺满意的,让我在那个房间等一会儿,二面马上上线!

二面:
二面是个面相很友善的大哥,顿时就放松了很多
1. 在Date上添加一个方法,使得能够格式化的输出日期(
如用户输入:
(new Date()).format("YYYY-MM-DD HH:mm:ss");
(new Date()).format("YYYY/MM/DD HH:mm:ss");
都能得到同意的效果,这个题应该是考察原型链以及正则,我简单写了一下代码,然后说了一下思路就过了

2. 实现正则检查:email,ip 地址。你看,正则来啦,现场写了两个正则,应该存在一些问题,因为不知道邮箱具体标准,但是面试官应该能看出我会写一般的正则。
所以也没太为难我,追问了一下^和$)

3. Vue 2.x和Vue 3.x的区别(怎么样!!神奇吗!是不是前面被问到过!)

4. 你能写一下Vue的双向绑定吗?利用Proxy实现,刚好我自己学习过程中整理了一下,写了一个Demo,所以很顺利完成,Demo地址:

5. 两数之和的算法(我说了两种,一种是排序之后使用头尾双指针,一种是利用数组的indexOf方法,在一个for循环中每次查找target-arr[i]的数是否存在,存在则加入结果数组)
这里还问了一下数组的indexOf和lastIndexOf的时间复杂度,因为数组本质其实是hash表,所以是常数项的复杂度

6. [1,2,3].map(parseInt)的结果(1,NaN,NaN),为什么?(因为map接收两个参数时值分别为value和index,而parseInt接收两个参数时值为value和radix,即字符串和基底。
parseInt(1,0)当基底为0时会使用10进制,即为1,基底为1时不会有2,基底为2时不会有3,所以为NaN)

7. array reduce 实现 filter,这个就不说答案了,很简单,百度一下reduce的使用以及filter的使用应该就会了

8. flex实现圣杯布局(即上下固定,中间自适应,左右固定,中间自适应),利用flex: 0 100px来设置一个固定大小,flex:1来实现自适应大小。上下固定时将flex-direction设置为column即可。

其他的好像记不太清了,感觉二面体验也不错,面试官说回头再联系(有戏!)

三面:
当天上午连着两轮两小时面完,下午HR打电话约三面,约了第三天的晚上。

三面面试官那边网好像不太好,所以全程我都间歇性的问他(您好,能再说一遍题目吗,刚没听清。。。。巨尴尬,还好我脸皮厚,hhh

1.  上来面试官先自我介绍了一下,然后我自我介绍了一下(感觉又是个比较好的面试官,很好!)

2. 聊一下你最满意的项目,这个因人而异,大家一定要记得把自己项目的亮点说出来,我在说我做的那个点餐系统加入了一个推荐算法的时候,面试官明显眼前一亮(因为字节推荐算法很厉害!)

3. 你刚介绍项目的时候说你做过移动端的项目,能说一下和PC有什么不同吗(DPR问题,移动端滚动问题,不同分辨率的布局问题)

4. 你那个移动端的项目最终是怎么实现布局的呢(想知道我怎么实现自适应布局),我说我那个项目是使用的百分比布局,但是使用的CSS2还是CSS3的flex有点忘了,
因为那项目做了一年了,然后我就给面试官分别用CSS2和CSS3实现了一下经典的左右固定,中间自适应。(hh,二面的知识三面又用到了,真好)。然后顺着这个话题
跟面试官说了一下淘宝的flexible那个库,说了一下它的原理,利用rem来实现自适应布局和等比例缩放

5. 不使用setTimeout/setInterval等js的api,实现每隔一秒输出数组的一个元素。这个题刚开始给我难住了,但是后面突然灵光一闪,这不是和节流很像吗!,
然后写了一个节流函数用于替代setTimeout,还在其中加入了丰富的异步编程的知识(哈哈,我真是个小机灵鬼),但是最后面试官说你这个很接近了,让我再改改,
但是这时候我有点思绪紊乱了,所以最终没改出来。但是看面试官样子应该不是很失望

6. 说一下一次http通信的过程(惊人的相似)

7. 追问了一下网络传输中路由器怎么转发(这题有点懵,然后我就解释了一下OSI七层网络模型,以及其相关的协议,然后解释了一下TCP头中会包含目标地址和源地址)

8. 智力题:一个岛上有三种变色龙,每两种相遇就会变成第三种颜色,请问如果初始数量为10,14, 15,他们最终能变为一种颜色吗?
这个题在那演算了一下,告诉面试官可以,然后演示了一下推导过程。然后面试官一句。。。他们相遇不是合体变成一个。。。是都变了场面一度十分尴尬,然后我又进行了新一轮的推导。
结果是不能,他说那数字怎么改才可以变成一种颜色呢?其中两数相减以后的值是3的倍数时,可以变为一种颜色。

三面下来大概就记得这么多了,整理一下自己的项目到github也是个很好的习惯,因为面试官在面试过程中会问你上面的项目(加分项!)

总之面试过程中面试官会捕获你的亮眼之处,所以建议大家好好准备!希望大家都能拿到自己心仪的offer!

=============================================================================================
时隔几月,入职啦!欢迎大家来咱们部门呀,部门氛围很好,岗位需求多多哦


#字节跳动-2021届秋招提前批-产研前端内推码来啦~#

🙋我们的公司——
字节跳动成立于2012年3月,公司使命为“Inspire Creativity, Enrich Life(激发创造,丰富生活)”。公司业务覆盖150个国家和地区、75个语种,拥有超过6万名员工。
字节跳动在全球推出了多款有影响力的产品,包括今日头条、抖音、西瓜视频、飞书、TikTok、Lark、Helo等。截至2020年1月,字节跳动旗下产品全球月活跃用户数超过15亿。

🙋我们的团队——
字节跳动业务研发和工程架构部前端技术团队期待你的加入~
- 我们提供Web应用与产品研发的能力输出,目前涵盖的产品范围包括:今日头条、西瓜视频、教育系列产品、皮皮虾、番茄小说、Helo等;
- 此外,我们也支持公司大多数中台产品的研发工作,包括:游戏中台、基础架构、业务架构、搜索、用户增长等业务与技术中台;
- 在涵盖了ToC与ToB业务研发的同时,我们有独立的前端基础工程与架构团队,为业务研发团队提供研发工具、平台与相关技术解决方案等。

🙋我们的优势——
- 自由平等的工作环境
- 灵活的办公时间,上班不打卡
- 平等的工作氛围,沟通无“大小”
- 关注每一位校招新人的成长
- Mentor制,初入职场你有一位“领路人”
- Dance舞计划,应届生专属培养计划
- Bootcamp,技术新人训练营
- ByteTalk,行业前沿资讯分享
- 全方位的贴心福利关怀
- 免费三餐和就近住房补贴,帮你减轻压力
- 完善的商业保险制度,守护你的前行
- 温暖的节日礼品,点亮每一个值得庆祝的日子
- 多样化的健康关怀,助你更好地工作生活
- 精彩多元的文化生活
- 定期举办CEO面对面
- 欢乐温馨的家庭开放日
- 加入兴趣社团,寻找志趣相投的朋友

提前批更早更稳,且不影响正式批次投递喔~速速点击下方链接投递简历吧(校招实习也是这个)👇
【内推链接】https://job.bytedance.com/campus/position?referral_code=1QCW6G1
【内推码】1QCW6G1
欢迎大家转发内推码给朋友们(校招岗位皆可用),在官网投递时【填写内推码】并【完善简历】,点击【提交投递】即可内推成功,快来投递吧~

社招内推(日常实习也是这个)
https://job.toutiao.com/s/JFgHfmy

若投递时间截止也可以将简历发送到:wangchunlin.1@bytedance.com(记得主题说明来意,如:提前批、社招内推、实习等),备注:姓名 - 岗位 - 城市,欢迎前来投递~



#字节跳动面试##字节跳动##校招##前端工程师##面经#
全部评论
同学offer的是哪个部门呀
点赞 回复 分享
发布于 2020-04-27 10:43
自己顶一下
点赞 回复 分享
发布于 2020-08-12 15:13
大家投递一下吧!
点赞 回复 分享
发布于 2020-08-12 15:26
顶顶顶!
点赞 回复 分享
发布于 2020-08-12 23:52
顶!
点赞 回复 分享
发布于 2020-08-12 23:52
为什么会问这么多css啊 我最差就是css了😫
点赞 回复 分享
发布于 2021-12-22 15:57

相关推荐

共聚 销售经理 底薪7500试用期打八折,出差补贴一天100多
点赞 评论 收藏
分享
11-01 15:45
已编辑
陕西师范大学 Java
#25届秋招总结#&nbsp;bg:双非本211硕,投递公司320+,2个offer秋招提前批:6月–7月,投递30+,2个公司有反馈深信服笔试,百度9月给的面试,二面挂(百度9月才给提前批的面试)秋招正式批:8月–10月,官网投递190+,求职app投递100+。笔试80多家,面试公司30多家。面试情况:字节一面挂,美团2次一面挂,京东一面挂,shein一面挂,途虎二面挂,深信服一面挂,招银网络一面挂等等一系列公司面试挂。10月中旬拿到2个offer。个人感想:11月1号,已经11月了秋招基本可以说是结束了,后面就是国企央企比较多了,拿到offer后拒绝了几个国企的笔试和面试(鼠鼠菜鸡拿到offer后也是硬气起来了)。我的秋招历程感觉还是很辛苦的,投递320+只有2个offer,可能和我学历背景和实习有关,我投简历真的遇见过,同学双2或者双非本211硕但是有实习,人家的简历过了,但是我简历挂了。回顾整个秋招感觉真的不容易,10月刚开始的时候没有一个offer,当时真的很焦虑,甚至觉得可以说是绝望。8月和9月的面试很多但是没有一个oc(特别是面试答的挺好的手撕也写出来了,可是结果还是挂了),我的心情也从8月初的觉得秋招刚开始没什么到10月初的绝望。在我觉得秋招已经结束的时候来了2个offer就像黑暗中的一束光驱散我心里的阴霾。虽然不是什么大厂但是对我来说也很不错了。最后给大家说一下个人建议吧真的最好要去实习一下可以帮助大家提升能力和简历内容,如果学历好没有实习也是有机会的。秋招就是一个长期的过程10月没有offer也不要着急,我认识的学长有11月12月才拿到最好的offer的(虽然我10月没拿到offer的时候也很急)。希望大家都能找到满意的工作。ps:图片是参加一次线下双选会的排队情况,看不到尽头。 #秋招#&nbsp;&nbsp;&nbsp;#求职#&nbsp;&nbsp;#总结#
点赞 评论 收藏
分享
15 47 评论
分享
牛客网
牛客企业服务