字节,腾讯,shopee,顺丰前端面经

2,257 阅读9分钟

我真的觉得面试,是可以让你初步了解一个公司的窗口,你是否想加入这家公司,除了外界的口碑和他们开的条件,面试体验是一个很重要的因素,决定你是否想与面试你的人成为同事,是否想与他们一起工作。

我面试了一个月,就是随便聊聊,有机会就去面一面,分别面了 Shopee ,顺丰, 头条, 腾讯。目前都已有了结果,很多事情都已经记不清了,我就把记得的题目整理了一下,算是做一个自我总结吧。

面经

其实大部分面的时候都在聊自己做过的项目,如果你有拿得出手的项目,是很加分的(这里特别感恩当初在公司的工作经历,是自己很好的资本)

Shopee

shopee 的面试流程不长,2面技术面+1面hr面,会在面试后收到满意度调查,不用紧张 (并不是感谢你来参加此次面试但并未通过)

1.http2 的优点

2.多路复用与keep-alive 的区别

3.https 是如何实现的过程

4.强缓存与协商缓存

5.为什么要结合使用强缓存与协商缓存

6.浏览器存储是否有了解,当localstorage存量过大时有什么解决方案

7.对攻击是否有了解, 在富文本中的 XSS 攻击怎么防御,csrf 攻击如何防御

8.性能优化是如何优化的,针对不同屏幕的图片请求后如何处理大小

9.什么是同源策略?二级域名和域名是否同源?非同源的话是如何传递 cookie 的?

  1. 同源 samelite 的一些策略

11.react 的 hooks 有什么优势?

12.class组件 和 函数组件 分别在什么情况下使用?React Hooks 出现之后函数组件可以完全取代 class 组件吗?...

13.浏览器两个tab 之间如何进行消息传递,区分同源和非同源

笔试题

  1. 深拷贝的实现
  2. 判断字符串中的{}、[]、()三种括号是否匹配,需要考虑嵌套的情况。

顺丰

顺丰总共是4轮面试,2面技术面+hr面+总监面

顺丰一面的时候是两位老师一起面的,当时面的时候很迷茫,感觉一直没有正确回答面试官的问题,回答的驴唇不对马嘴,本以为凉了,但居然过了。二面的面试官不错,会认真的与你探讨问题。总监面只用了10分钟,两个人类似于快问快答的形式回答问题,总监的时间很宝贵

  1. css 命名冲突解决方案
  2. 三栏布局如何实现
  3. useEffect 使用 [] 只进行一次会有什么副作用
  4. hooks 是用来解决什么问题
  5. component 和 element 在 React 中分别担任什么角色
  6. indexDB 兼容性怎么样
  7. Last-Modify 是根据什么判断的
  8. 浏览器同时发起的请求数是由什么决定

字节跳动

字节跳动给我的面试体验是非常好的,面试官首先会自我介绍一下,同时也会介绍一下这个岗位是做什么的,让你有一个明确的认识。因为我会发现,很多面试官会一上来就开始,然后让面试者做一个自我介绍,对比字节的做法,字节会让我更放松,更有亲切感,同时发挥也更好。 面试过程中会与你讨论问题,如果有不太理解的问题也会耐心解答,让你感觉到被尊重,同时字节也是一个很重视效率的部门。 面试这么多家,字节是我收获最大的公司,即使不能入职,在面试过程中也学习到了很多知识和解决方案,同时也让我希望与面试我的人成为同事。虽然网络上也会有吐槽字节加班啊,累啊什么的,但我自己的经历让我相信字节是一个有好的企业文化的公司

字节是3面技术面+hr面

1.prelink 和prefetch 的区别

2.treeshaking 的实现原理

3.模块导入,只引入固定模块的原理

4.介绍一下缓存

5.如何统计页面性能 performance

6.如何对一个页面进行埋点设置

7.关于页面的性能优化

8.跨域相关

9.懒加载是怎么实现的

10.动态打包的实现原理

11.react key 的作用

12.react fiber 的原理

笔试

1.函数继承的实现方式

2.函数的链式调用实现Man().sleep().eat()

3.宏任务微任务的输出顺序

4.实现一个 includes 方法

5.给你一个数字数组,输出和最大连续子数组,eg [2,3,5,-7,8,-9,10,1]

腾讯

腾讯我是进行的视频面,不得不说视频面的体验跟现场面差远了,网络问题,语音听不清,表达不清晰,会有各种各样的问题,所以真的建议有条件一定要现场面。

笔试

腾讯是先做了一套笔试题,之后才开始面试

for(var i =0;i<5;i++){
 setTimeout(function(){console.log(i)},i*1000)
}

1.输出是什么?有几种改法可以正常输出?

2.判断两个字符串是否为同构数组 ,即不是同一字符串,但同字符的字符数相同,字符串长度相等?

3.promise.all 实现方式?报错是全部运行后抛出还是遇到第一个错误就抛出?

4.内存泄漏的场景

面试

1.内存泄漏的场景

2.性能优化

3.redis 实现方式

4.错误统计方式

5.nodejs的多线程方案

6.同构渲染如何实现

个人废话

刚毕业的时候是很茫然的,不知道自己要做什么,也不知道自己想要什么,可能什么砸到我身上了,我就去做,就这么简单

但是通过这几年的工作,与有更丰富经历的朋友聊天,看老板是如果思考问题,发现自己慢慢的不那么迷茫了,发现自己想要走的路了。比如,我刚开始工作的时候,不知道自己想用什么语言,不知道想用什么框架,不知道想做什么业务。公司是做什么的,我就做什么,公司是用什么技术的,我就用什么技术,随着工作的变动,这些也在跟着变。我相信刚毕业几年的同学大部分都会有这样的困惑,但我想说,那些早早明确了自己方向的人无疑是幸运的,但只要我们认真的面对当前的工作和生活,会发现没有什么东西是白做的,那都是你的积累,关键看你如何使用它。

以前一直觉得企业文化是一个很虚的东西,但随着在目前的公司工作,又经历了年初互联网比较火爆的事件,我们在这个环境中,我突然发现,企业文化是一个多么重要的思想,它就在那里,告诉你在公司里,什么是正确的,什么是错误的。在一个有着好的企业文化的公司里,你会觉得自己是被尊重的,会感觉公司是在做正确的事情的。他不会让你变成行尸走肉,只知道去完成手头的工作,不会让你变得麻木。 我非常庆幸自己是在一个有着很好的企业文化的公司里。在公司里,我收获了非常重要的两句话,一句是老板说的,一句是我的一个leader说的。分别是 “朝着正确的方向前进,美妙自会发生”,另一句是 “以皓月为目标,哪怕最终失败了,也会落于星辰”,我觉得这两句话里的思想,是我收获到的很宝贵的财富

现在的公司很好,为什么要离职呢?原因很多,首先人都是贪婪的,不满足的。薪资肯定是跳槽一个绕不开的话题,另外,对自己未来道路的规划也是我这次选择离职的原因。

因为我毕业以后,工作经历都是创业型公司,在这种类型的公司工作的好处就是你做的东西会很多,接触的方向也很多,因为相对来讲没那么正规,所以什么都需要你来做,同时,机会也更多。我在职的公司里,也是做了很多工作,也初步涉猎一些PM和管理类的工作,当然这方面我做的不是很好,管理类确实是一门很深奥的方向,不是简简单单就能做好的。 但我觉得这类公司的局限也在于一些事情上不够工程化,同时面对的场景也会较少,这样所能接触到的解决方案就有限,对自己的视野可能是一个限制。 我对自己未来的规划就是希望可以去大型公司去磨砺深造自己,在一个业务方向深扎。那么现在的公司,可能会不那么适合我。我不排除有很多优秀的人,无论在哪里都可以工作的很好,很优秀。但我可能不是那样的人,我就是一个比较被动,交给我的工作我可以负责任的做好,但下班后的时间,也喜欢陪女朋友刷刷剧,自己打打游戏,周末睡个懒觉的人。所以我希望有更大的平台可以锻炼一下自己,压榨一下自己的潜力。

总结

我每次面试都会问面试官倾向于现场面还是视频面,几乎所有的面试官都倾向现场面,虽然由于疫情原因,现场面会比较麻烦,而且需要请假这种,但对于心仪的公司,一定要不怕麻烦,现场面,体验好很多!

其实很多公司还是结合自己的项目经历展开来面试,所以自己做的项目一定要吃透,认真做。面试下来头条给的体验是非常非常好的,而且真的建议大家有条件就现场面,由于疫情原因现在很多都是视频面,但我问了一些面试官,普遍会觉得现场面更立体一些,体验也更好。说了很多废话,总结了一些题型,希望可以帮到有需要的人。

PS: 我现在人生经历有限,表达的看法也是个人的微末之见,也许随着年龄阅历的增长,以后的想法会有所不同.