字节跳动商业化面试面经

说明

这篇字节跳动商业化的面经同样来自一朋友的总结,先介绍下他的背景,目前有6年的前端开发经验,base北京.本次的字节跳动面经总结只发记录的面试题,不加自我的分析和答案了.有些问题属于项目经验相关的面试题,可能仁者见仁,没有标准答案还需要根据自身情况做准备.还有一些技术性的问题,在小程序前端面试题宝典(点我)都能找到详细的答案解析就不一一列举了.

希望这篇面经能对大家面试过程有一定的帮助.以下是正题:

一面

1. 项目:可视化搭建平台中的细节问题:数据规范,请求收敛

2. 组件的拖拽行为是怎么实现的 ,如何为组件注入行为。

3. 性能优化的指标?用了哪些手段

4. 如何做到页面一部分资源返回,其他资源延迟返回

5. 页面的缓存问题,相关的请求头字段和响应头字段

6. 描述一下https,加密过程,证书问题

7. webpack的打包原理,在webpack之前是如何处理这些问题的

8. webpack loader和plugin的功能,区别。

9. js的事件机制

10. 异步编程中,如何实现三个请求依次返回

11. H5页面中长列表在下拉过程中为什么会闪一下 ,如何解决?
主要是重绘和重排问题
12. 查询css属性的时候会触发重排么 ?

13. vue2.0 的响应式原理,vue3.0 的响应式原理

14. vue3.0 都解决了哪些问题

15. 设计题,如何开发一个select 组件 ,类似百度输入框功能,需要考虑的点有哪些
算法题

第一道题目是英文的 :Given a 2D char array and a String array. Find the path of each word in the String array such that all paths don't share any same ltter located at (i, j)

把题目翻译了一遍:给一个2D char 数组和一个字符串数组, 找到所有字符串在2D char 数组中的路径并且每一个路径和另一个路径不重复使用一个位置上的字母。

然后理直气壮的说了一句不会~

然后面试官讲,那咱换一道,于是就有了第二道

给定数组【2,3,4,6,7】,target=7 输出数组中和等于目标的所有组合

思路:

  • ×:当前组合和之前生成的组合重复了。
  • △:当前求和 > target,不能选下去了,返回。
  • ○:求和正好 == target,加入解集,并返回。
const combinationSum = (candidates, target) => {
  const res = [];
  const dfs = (start, temp, sum) => { // start是当前选择的起点索引 temp是当前的集合 sum是当前求和
    if (sum >= target) {
      if (sum == target) {
        res.push(temp.slice()); // temp的拷贝 加入解集
      }
      return;   // 结束当前递归
    }
    for (let i = start; i < candidates.length; i++) { // 枚举当前可选的数,从start开始
      temp.push(candidates[i]);          // 选这个数
      dfs(i, temp, sum + candidates[i]); // 基于此继续选择,传i,下一次就不会选到i左边的数
      temp.pop();   // 撤销选择,回到选择candidates[i]之前的状态,继续尝试选同层右边的数
    }
  };
  dfs(0, [], 0); // 最开始可选的数是从第0项开始的,传入一个空集合,sum也为0
  return res;

二面

1 项目:

2. 数据结构:二叉树,遍历的方式

3. TCP/IP DNS,CDN的原理:

4. 浏览器渲染原理,详细讲一下页面渲染:

5. 用递归的方式实现list到tree的转换,tree的层次由给定的path决定,注意对父结点与子结点的处理!

var userList = [

{name:'user1',age:18,province:'四川',city:'成都',district:'高新区'},

{name:'user2',age:19,province:'四川',city:'成都',district:'天府新区'},

{name:'user3',age:20,province:'四川',city:'南充',district:'顺庆区'},

{name:'user4',age:22,province:'江苏',city:'南京',district:'鼓楼区'},

{name:'user5',age:21,province:'江苏',city:'南京',district:'玄武区'},

{name:'user6',age:21,province:'江苏',city:'镇江',district:'京口区'}

]

function list2tree(list,path){

// TODO

};

var userTree = list2tree(userList, 'province/city/district');
6. 如何开发一个tree组件,思路,注意的点

7. 最近有关注哪些新技术

最后

三面 ?没有三面 。因为要去成都,三面直接放弃了 ,HR联系了好几次,还是很硬气的放弃了,hh

字节的面试整体来讲比较注重基础和设计,一、二面都有组件设计相关 ,主要想考察平时对项目的思考和实践,以及前瞻性吧 。

算法一面第一道敢于理直气壮的放弃是因为之前看到过,leetcode上属于困难~。其他的问题都比较常规,基础。这类题回答的时候,对于自己比较熟悉的,就讲的详细一些,用自己的话在准备面试前梳理一下 ,比如问到https,可以顺便提一下http,然后从为什么会有https,https解决了什么问题,流程,手段。。。

字节的面试官还是比较nice的 ,一面面试官是个戴眼镜的妹仔,还简单的捧了下,小姐姐看上去是校招生~,“哈哈哈,我工作6年了...”。。。

二面面试官从视频口出现的那一刻,就断定了这是一位技术大佬,对没错,我就是通过发型判断出来的 。二面的时候,有卡壳的地方,面试官会很温和的讲 ,没关系,这个你平时可能遇到的比较少,项目中没用到,下去可以再看一下~听起来就是从百度过去的。聊到新技术,说了一下微前端(也不算什么新技术),聊了下会使用到的场景,这些面试问题一般都是考察自驱力和学习状态。整个面试流程很快 ,第一天一面,第二天约二面,有时间的话 ,一天都能走完整个面试流程。反馈会比较及时,面完了,就不用纠结面试结果了。

切记一点,这样的面试不会的就说不会,别发散,说些没用的

面试之前一定要多刷题,把那些比较常规的面试题好好准备,剩下的靠自己的临场发挥.如果大家想找一些全面系统的前端面试题,再次安利我们团队开发的xiaochgengxu前端面试题宝典刷题 ,600多道前端面试题包罗万象,可以助你一臂之力.避免广告之嫌就不多说了哈~

目前这篇面经的作者已经收到了美团和蚂蚁的offer,爱奇艺面试面经也欢迎大家的访问,其他公司的面经有时间也会整理出来分享给大家,希望能对大家有所帮助.






#字节面试##面经##字节跳动#
全部评论

相关推荐

wuwuwuoow:代码能力这东西太抽象,找实习背八股和算法就行,面试能不能过就看八股算法好不好。进去给实习生的活,换谁都能做,跟什么能力都无关。
点赞 评论 收藏
分享
人生第一次面大厂,和节子挺有羁绊的,浅浅记录一下吧-----------------------------------------------------Timeline:一面&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2025-05-07&nbsp;&nbsp;&nbsp;&nbsp;15-16&nbsp;&nbsp;&nbsp;&nbsp;当天17:&nbsp;00&nbsp;通过二面&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2025-05-08&nbsp;&nbsp;&nbsp;&nbsp;14-15&nbsp;&nbsp;&nbsp;&nbsp;当天15:&nbsp;40&nbsp;通过三面&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2025-05-12&nbsp;&nbsp;&nbsp;&nbsp;15-16&nbsp;&nbsp;&nbsp;&nbsp;当天20:&nbsp;38&nbsp;面挂[HR姐姐说一面二面面评不错,商业化CRM可以捞捞,换部门加一轮面试即可]四面&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2025-05-13&nbsp;&nbsp;&nbsp;&nbsp;17-18&nbsp;&nbsp;&nbsp;&nbsp;当天21:&nbsp;31&nbsp;面挂------------------------------------------------------一面面经-5.7:1.&nbsp;自我介绍2.&nbsp;项目性质:你提到的两个项目是练手还是实际投入使用的呀?3.&nbsp;问项目难点(1)说论坛的游客模式&nbsp;=&gt;&nbsp;问登陆&amp;登陆态是怎么实现的登陆这块是怎么做的?登陆态是怎么维护的?用户刷新后仍然是登陆状态,怎么判断的?(判断token是否存在)token存在哪里(localstorage里面)token有时效吗?(三天半)你怎么判断它过期的(jwt)你怎么使用jwt解析的 localstorage里面有时效吗?(2)消息实时推送SSE(3)安全性优化(加入csrf)追问:你可以详细介绍一下CSRF吗?你对别的攻击方式了解吗(回答了XSS、提到有分为存储型XSS和反射型)追问存储型和反射型区别4.&nbsp;自己提到项目收获和项目的开发流程5.&nbsp;问怎么了解到的项目整体规范开发6.&nbsp;git开发工作流熟悉吗?回答说对于分支流转比较熟悉追问&nbsp;git&nbsp;merge&nbsp;和&nbsp;git&nbsp;rebase的区别rebase使用有什么风险&nbsp;如何规避风险:影响公共分支追问:怎么样影响的公共分支面试官解释:风险产生的本质原因是git&nbsp;rebase&nbsp;时候要强推(并且必须强推)7.&nbsp;对axios封装以及取消重复请求是怎么实现的?追问post请求的避免重复请求是怎么实现的,可以怎么优化8.&nbsp;节流防抖使用场景9.&nbsp;图片懒加载追问offsettop是元素距离谁的追问只判断offset整体位置可以吗面试官补充offsettop定位的元素不一定是滚动元素10.&nbsp;Vue2和Vue3的区别11.&nbsp;问react项目经验12.&nbsp;react&nbsp;hook的原理介绍一下追问hook使用有什么限制吗13.&nbsp;useEffect和useLayout&nbsp;Effect区别14.&nbsp;一道算法题:&nbsp;比较版本号【一面面试官是个很温柔的姐姐,提问循循善诱,引导型,面试整体体验很舒适(不敢想要是面过了,姐姐是mentor该有多幸福)】------------------------------------------------------二面面经-5.8:1.&nbsp;自我介绍&nbsp;(改进了下自我介绍,明显感觉面试官很赞许【听自我介绍的面试官不多见,感动子】)2.&nbsp;学校专业课学了哪些课程(自我介绍提到成绩专业第一,&nbsp;回答数据结构、操作系统、计网、&nbsp;电子技术基础等)3.&nbsp;什么情况下促使你去学习前端的&nbsp;4.&nbsp;问数据结构问题:讲一下数组和链表的区别&nbsp;(说数组像整齐排列的房子、链表像一串手串云云)5.&nbsp;讲一下树的遍历和图的遍历&nbsp;(答主有点学院派,问数据结构问到点上了,爽)6从浏览器发起一个请求,到请求返回中的过程中,整个请求到响应的路径很多情况下都有缓存。尽可能把缓存说清楚,有哪些缓存(说了强制缓存和协商缓存)追问除了浏览器层面的强制缓存和协商缓存还有哪些缓存,提示如DNS、服务器缓存(讲了DNS缓存,&nbsp;自己补充讲URL输入到页面呈现的过程)追问其他的缓存7.&nbsp;你们做系统的静态资源是托管在哪里的,是部署在服务器吗(补充讲项目开发流程,&nbsp;这里抢问题了,应该看面试官眼色让他把缓存介绍一下)8.&nbsp;做项目的初衷是什么9.&nbsp;post请求什么时候会出现&nbsp;打印控制台,post请求出现两次的情况简单请求和复杂请求的区别options&nbsp;请求遇到过吗10.&nbsp;axios底层?,支持node吗11.&nbsp;讲一下AJAX12.&nbsp;算法题:扁平数组转成树形结构问时间复杂度和空间复杂度13.&nbsp;面试官小哥:我再来问你一些不相干的问题(以为可以开始扯闲话环节了,结果继续问问题)Vue中编写UI会使用&nbsp;template&nbsp;和&nbsp;render,这两者有什么区别吗、有什么关系吗追问:不进行打包、编译可以直接使用template语法吗,render函数最终返回的是什么template最终会被编译成render,这个编译发生在什么时间?14.&nbsp;Vue-loader有什么作用(跟上一题有关系)15.&nbsp;在webpack项目中自己随便写了一个a.abc文件,可以在js或ts文件中随便引入吗16.&nbsp;Vue中的nextTick,底层怎么实现的?17.&nbsp;介绍一下浏览器中的微任务(自己扩展说微任务和宏任务的区别、使用场景)反问环节:1.&nbsp;反问面试官求职时的心理状态、做了哪些准备2.&nbsp;反问面试官有什么技术方面的书推荐3.&nbsp;AI风潮下,程序员的核心能力会发生转变吗?从业务能力向&nbsp;AI使用&nbsp;能力偏移【隔了一周多,编辑面经还在感慨,二面面试官小哥真的很nice,面试节奏特别对。要反馈有反馈、要引导有引导,表示不懂的时候还会重新解释问题,整场面试说说笑笑地进行下来了,轻松愉悦(以至于复盘的时候才发现有的问题还是有点小难的!)最后反问环节聊天也聊得很开心啊啊啊,要是二面小哥是组长就好了...可惜没有缘分。祝大家面大厂都遇到这样的面试官(接好运!)】------------------------------------------------------三面面经-5.12:1.&nbsp;自我介绍2.&nbsp;js闭包内存泄漏原因,&nbsp;降低内存泄漏风险的方法3.&nbsp;自动设置垃圾回收4.&nbsp;weakmap5.&nbsp;node.js:common.js和ES&nbsp;module&nbsp;追问Common.js的缓存机制6.&nbsp;script的async和defer的区别async会阻塞后续dom吗7.&nbsp;cookie存token和header存token有什么差别8.&nbsp;ES6装饰器9.&nbsp;decorator装饰器,普通函数不支持装饰器的原因,&nbsp;高阶函数10.&nbsp;回流重绘&nbsp;怎么尽量降低影响(方法)11.&nbsp;TS枚举和定义普通对象区别12.&nbsp;普通枚举和常量枚举13.&nbsp;type&nbsp;和&nbsp;interface的区别14.&nbsp;ts类型断言&nbsp;两种方式的区别15.&nbsp;HTTP2.0中的服务器推送有哪些应用场景16.&nbsp;git相关的命令17.&nbsp;git&nbsp;pull&nbsp;和&nbsp;git&nbsp;fetch区别18.&nbsp;本地分支做变更,&nbsp;怎么办(回答stash暂存)19.&nbsp;算法题1const&nbsp;[a,b]&nbsp;=&nbsp;{a:1,&nbsp;b:1}&nbsp;能正常运行吗?为什么封装一个通用型的方法,&nbsp;左右结构不动,&nbsp;成功解构20.&nbsp;算法题2大数相加21.&nbsp;追问:&nbsp;你有一个网站&nbsp;包含了各种各样的静态资源,&nbsp;你会怎么设置缓存策略-三面面试官应该是leader,经过我长长的自我介绍后,大手一挥说那我们开始吧!整场面试下来问题密度挺高的,苯人感觉自己答得也很不错,没有卡壳的地方。leader大人也会给一些反馈,面试整体比较顺畅~依旧是体验感不错的面试,但最后还是挂了。。。HR姐姐说面评反馈主要是算法题1思路有问题,应该是用迭代器+沟通不够简明有效得到结果后整个人都down了,非常难受哇非常......感觉像做了一场梦,二面通过的时候觉得自己很lucky,好像离字节很近了,但是结果三面出结果又离得远远的了仔细复盘了一下觉得确实还可以语言更精炼一些回答问题,整体面试还很有收获的。虽然没过,但是感恩~------------------------------------------------------四面面经-5.13:前半小时闲聊规划、学习前端原因、项目(有点不太记得了)后面四道手写题1.&nbsp;TS&nbsp;泛型用法2.&nbsp;写出数组的10个方法(写了十几个,面试官问了几个方法的用法)手写实现一个reduce3.&nbsp;this指向4.&nbsp;给二叉树,输出二叉树每一层的最大节点-&nbsp;算法题撕得不好,面得有点低气压。但是此&nbsp;leader&nbsp;挺活泼的哈哈哈,也会主动给出一些提示(重生之部门leader亲自教你写算法)。面试结束后就知道g了,瘫椅子上半小时没说话,才收拾收拾去吃饭了和面评反馈的一样,《可能太过紧张,心态会有点急促》。但是很感激面试官啊,哎哎哎这把确实没缘分我是不会放弃面试字节的(我节孝子一定会回来的)
爵士豪猫:感谢佬的面经,真的就是看了你的面经写了几个原题才oc的,也祝佬早日找到心仪的实习offer
点赞 评论 收藏
分享
评论
1
9
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务