字节前端社招面经

19届普通本科毕业,软件工程专业,两年工作经验

一面

  1. 自我介绍
  2. 问项目
  3. 算法题,leetcode 112路径总和
  4. 你知道哪些JS数组的API
  5. 手写reduce
  6. 讲一下HTTP缓存
  7. 谈谈vue和react的区别和优劣
  8. hooks用过吗?聊聊react中class组件和函数组件的区别
  9. 前端性能优化你会怎么做?
  • 减少回流重绘
  • 缩小代码体积,例如:Tree-shaking、代码压缩、代码分割、Scope-hoisting等
  • 减少请求数,例如:雪碧图、基础库打成一个包
  • 并发请求,使用cdn,突破浏览器对同一域名的TCP连接数限制,或者使用http2
  • 运行时加载,例如:图片懒加载,组件动态import
  • 缓存,例如:http缓存,dll等
  1. 反问环节

一面没有太大难度,进行的很快,不到40分钟就结束了

二面

  1. 自我介绍

  2. 项目中遇到最复杂的是什么?最有技术难度的是什么?

  3. 算法题,fn([['a', 'b'], ['n', 'm'], ['0', '1']]) => ['an0', 'am0', 'an1', 'am1', 'bn0', 'bm0', 'bn1', 'bm0']

    function f(matrix) {
       const result = [];
       const len = matrix.length;
     function dfs(res, curr) {
         if (res.length === len) {
             result.push(res.join(''));
               return;
         }
           for (let i = 0; i < matrix[curr].length; i++) {
             res.push(matrix[curr][i]);
                  dfs(res, curr + 1);
               res.pop();
         }
     }
       dfs([], 0);
       return result;
    }
  4. u.console('breakfast').setTimeout(3000).console('lunch').setTimeout(3000).console('dinner'),实现这个u

    class U {
     constructor() {
         this.promise = Promise.resolve();
     }
    
     console(val) {
         this.promise = this.promise.then(() => {
            console.log(val); 
         });
         return this;
     }
    
     setTimeout(wait) {
         this.promise = this.promise.then(() => {
             return new Promise(resolve => {
                 setTimeout(() => {
                     resolve()
                 }, wait);
             });
         })
         return this;
     }
    }
    const u = new U()
    u.console('breakfast').setTimeout(3000).console('lunch').setTimeout(3000).console('dinner')
  5. 事件代理是什么?

  6. e.target和e.currentTarget的区别

  7. 写一个事件代理函数,需要判断child是parent的子节点

    function proxy(event, cb, parent, child) {}
  8. 看代码说结果

    var length = 10;
    function fn() {
     return this.length + 1;
    }
    var obj1 = {
     length: 5,
       test1: function() {
         return fn()
     }
    }
    obj1.test2 = fn;
    obj1.test1.call()
    obj1.test1()
    obj1.test2.call()
    obj1.test2()
  9. 从输入Url到页面渲染发生了什么?写个提纲

  • 网络阶段:构建请求行、查询强缓存、DNS解析、建立TCP连接、发送HTTP请求、响应请求
  • 解析阶段:解析html、构建dom树、计算样式、生成布局树
  • 渲染阶段:生成图层树、生成绘制列表、生成图块、优先选择视口附近的图块生成位图数据、展示内容
  1. Tcp和Udp的区别
  2. 前端新技术了解哪些?
    说了PWA和electron,介绍了这两个主要是用来做什么
  3. 问了一下工作中的性格
  4. 复盘,问了一下离职原因
  5. 反问

二面基本全程都在手写,过程中感觉差点就要凉凉了,但是好在题目都做出来了,这一面花了一个多小时。

三面

  1. 自我介绍
  2. 聊项目
  3. 算法题,给数组中的字符串编号,f(['ab', 'c', 'd', 'ab', 'c']) => ['ab1', 'c1', 'd', 'ab2', 'c2'],写完后问了一下时间和空间复杂度。
  4. 作用域问题,看代码说结果
    题目忘记了,做完后面试官改了一个地方让我说结果,结果做错了。。
  5. 让你实现一个微信扫码登录掘金会怎么实现,微信、掘金、客户端这三方的通信流程是怎样的?
  6. vue和react让你做技术选型你会考虑哪些因素?
  7. React Fiber有了解吗?
    讲了为什么要做时间分片、说了react15和react16架构的区别,然后说了Fiber树其实对应了原来的vDom,本质是一个链表。
  8. 了解哪些设计模式?代理模式了解吗?
    说了单例、发布订阅、观察者模式。
  9. 了解消息中间件吗?
    说了redux和koa的中间件,估计面试官不是想问这个。。
  10. 工作中有没主动做过什么事?
  11. 你觉得你跟别人相比有什么优势?
  12. 问了大学时的专业排名,高考生源是哪儿的
  13. 反问

这一面也进行了一个多小时,感觉做的时候脑子有点懵,基础题居然做错了一题,后面出的题都是比较开放的,让我自己谈,问我微信扫码登录的时候有个点一直没答到面试官想要的结果,发挥的很一般。。感觉是要凉了,不过还是勉强过了。

HR面

  1. 前几轮面试的感受
  2. 为了这次面试准备了多久,怎么准备的
  3. 聊了以往的工作经历,在团队中的定位
  4. 工作后是怎么学习的,有没有自己的规划
  5. 工作中遇到困难是怎么解决的
  6. 团队协作的时候怎么沟通的
  7. 业务繁忙时如何保障代码质量
  8. 你会通过怎样的方式理解需求
  9. 离职的原因
  10. 期望薪资以及当前的薪资
  11. 反问

HR面也聊了一小时

最后

HR面完过了一周多,问了内推的兄弟,说是已通过,在走审批流程了,但是当天被HR告知审批没通过,他们还是想要更资深一点的人(PS:外包经历毁简历)

09-27更新

去抖音电商了,有空更新一下这边的面经哈

#字节跳动前端面试##面经##社招##字节跳动##前端工程师#
全部评论
这么叼还没过?
7 回复 分享
发布于 2021-08-10 08:42
抖音电商的面经大哥能分享下吗?明天要面哈哈哈
1 回复 分享
发布于 2022-03-07 20:07
楼主 强啊 我都没你一半强👍
1 回复 分享
发布于 2021-08-11 12:51
这么强还挂,离谱!
1 回复 分享
发布于 2021-08-10 22:08
大佬,几年经历呀,咋个资深法
1 回复 分享
发布于 2021-08-10 10:40
这么强都挂?就tm离谱,lz能带带我吗😁
4 回复 分享
发布于 2021-08-13 23:32
手写reduce怎么写。。。
2 回复 分享
发布于 2021-11-15 15:30
二面二维数组排列组合: function f(arr) { let len = arr.length if (len < 1) return [] let result = [''] for (let val of arr) { const tempArr = [] for (let v of val) { const res = result.map(r => r + v) tempArr.push(...res) } result = tempArr } return result }
1 回复 分享
发布于 2022-12-06 12:32 河南
强啊 啥时候更新抖音电商的面经啊
1 回复 分享
发布于 2022-06-05 11:00
点赞 回复 分享
发布于 2022-01-12 22:14
点赞 回复 分享
发布于 2022-01-12 09:26
看到大佬们的面经,觉得自己啥也不是
点赞 回复 分享
发布于 2022-01-05 15:51
还有在看机会的嘛,微软这边有大量HC
点赞 回复 分享
发布于 2021-10-17 22:32
消息中间件说的是nsq,kafka这些😓
点赞 回复 分享
发布于 2021-10-11 15:35
大佬您好,写一个事件代理函数,需要判断child是parent的子节点 function proxy(event, cb, parent, child) {}                    这道题是啥意思呀
点赞 回复 分享
发布于 2021-10-11 11:46
杭州的吗
点赞 回复 分享
发布于 2021-09-12 15:40
这特么能挂太离谱了吧
1 回复 分享
发布于 2021-09-02 15:44
大哥哪个部门
点赞 回复 分享
发布于 2021-08-28 13:39
楼主面试准备了多久?
点赞 回复 分享
发布于 2021-08-27 03:13
6
点赞 回复 分享
发布于 2021-08-19 01:26

相关推荐

04-07 17:47
已编辑
广东海洋大学 前端工程师
许愿hr面让我赢一次吧更新:还是输了,已发感谢信一面&nbsp;(3.28)面试时长(1h)1.&nbsp;&nbsp;介绍一下简历中的组件库项目2.&nbsp;&nbsp;vite&nbsp;和&nbsp;webpack&nbsp;有什么区别?3.&nbsp;&nbsp;vite&nbsp;打包可能会有什么问题呢?需要怎么处理?4.&nbsp;&nbsp;vue2&nbsp;和&nbsp;vue3&nbsp;有哪些不同?5.&nbsp;&nbsp;vue2&nbsp;和&nbsp;vue3&nbsp;diff算法的区别是什么?(面试官对我的回答不太满意)6.&nbsp;&nbsp;说说你对工程化的理解7.&nbsp;&nbsp;工程化中对CSS会怎么处理?8.&nbsp;&nbsp;说说你对打包优化的理解9.&nbsp;&nbsp;在你看来性能优化要做的事情是什么?10.&nbsp;&nbsp;有做过代码执行上的性能优化吗?11.&nbsp;&nbsp;在vue开发中需要关注哪些要点来避免性能劣化的情况?12.&nbsp;&nbsp;说说http不同版本的一些区别13.&nbsp;&nbsp;http2.0有哪些缺点?14.&nbsp;&nbsp;http1对同时并发请求的数量是有限制的,你了解吗?15.&nbsp;&nbsp;说说http和https的区别16.&nbsp;&nbsp;具体说一下加密的方法和流程(不太了解)17.&nbsp;&nbsp;Promise和async&nbsp;await的区别18.&nbsp;&nbsp;async&nbsp;await具体是怎么实现的?19.&nbsp;&nbsp;算法题:最大并发数控制二面(4.1)面试时长(1h)没有自我介绍直接开始,全程拷打项目,问题也基本是项目延申出来的1.&nbsp;&nbsp;简单介绍一下你上一段实习中觉得做的比较好的项目2.&nbsp;&nbsp;想知道你们的项目大概是什么样的结构,你在开发的时候会从什么地方下手?3.&nbsp;&nbsp;IntersectionObserver的事件回调是宏任务还是微任务?如何判断呢?4.&nbsp;&nbsp;虚拟列表中滚动条的位置该如何确定呢?尤其是元素不定高的情况5.&nbsp;&nbsp;你这个自己实现的虚拟列表有和其他第三方插件进行对比吗?6.&nbsp;&nbsp;如果是在直播这种不断推送新消息的场景下,你会怎么设计呢?7.&nbsp;&nbsp;对于埋点,如果用户打开页面后很快将页面关闭的话,关闭之前的操作和数据该如何获取?8.&nbsp;&nbsp;看你组件库项目使用了Monorepo,介绍一下9.&nbsp;&nbsp;对比其他方式,Monorepo最大的好处是什么?10.&nbsp;&nbsp;你上一家实习公司的主要业务有了解过吗?11.&nbsp;&nbsp;算法题:&nbsp;&nbsp;&nbsp;&nbsp;(1)lc&nbsp;LCR&nbsp;091.&nbsp;粉刷房子&nbsp;&nbsp;&nbsp;&nbsp;(2)数组扁平化(后面要求尾递归实现)三面(4.7)面试时长:(1h10min)全程无八股,大部分是偏向业务和场景的开放性题目1.&nbsp;&nbsp;介绍一下实习项目的业务背景(这块说了蛮久)2.&nbsp;&nbsp;假如你是一个项目的负责人,面对一个新需求你会如何判断以及决策?3.&nbsp;&nbsp;功能上线后如何判断这个功能上线前后的影响和优化有多少呢?4.&nbsp;&nbsp;有去了解过用户反馈最多的问题或者诉求最强的问题是什么吗?5.&nbsp;&nbsp;移动端兼容性处理是如何实现的呢?6.&nbsp;&nbsp;哪些浏览器会在图片兼容性上有问题呢?7.&nbsp;&nbsp;如果在项目上线之前,对用户浏览器使用情况进行预调研以及前期判断,你会怎么做?8.&nbsp;&nbsp;有去了解过当前浏览器的内核分布,以及有多少种内核吗?9.&nbsp;&nbsp;移动端的浏览器他的内核和版本会和什么相关呢?(以上两个题真知识盲区了)10.&nbsp;&nbsp;介绍项目中的瀑布流组件是如何实现的?11.&nbsp;&nbsp;还有什么别的方式能实现瀑布流呢?12.&nbsp;&nbsp;h5是如何和移动端做通信的呢?13.&nbsp;&nbsp;项目中用到了i18n,说说i18n的原理?14.&nbsp;&nbsp;使用i18n的过程中遇到了什么问题呢?你是如何解决的?15.&nbsp;&nbsp;算法题:&nbsp;&nbsp;&nbsp;&nbsp;(1)求数组深度(递归和迭代都要写)&nbsp;&nbsp;&nbsp;&nbsp;(2)实现Promise.half方法(后面要求能失败重试)
牛客965593684号:这肯定稳了,我面字节面试官对我回答不满意直接把我挂了,这都让你过了说明很想要你啊
点赞 评论 收藏
分享
评论
59
405
分享

创作者周榜

更多
牛客网
牛客企业服务