前端面经【腾讯、阿里、美团、字节】

这是我2019找暑期实习的简单经历和面经,写的有些仓促,也是第一次牛客发帖,希望可以从一些方面帮助到师弟师妹。

文章会从以下几个方面介绍,尽量客观评价,自己的面试肯定不止这几个,只是感觉值得分享的有这些!每个公司都很优秀,只是个人体验过程,实际情况请个人去实践体验哦哦!!

0. 2019年初找实习的简单经历
前端面经
1. 腾讯:三次,都是一面 【我经历的有些迷】
2. 阿里:一次,三面 【一周一次面试】
3. 美团:一次,两面 + hr面 【全流程,5天结束】
4. 字节:一次,三面 + hr面 【全流程,3天结束,还可以更快】
5. 字节内推帖子、实习体验贴,二维码

0. 过去

2019年的冬天,2月15日正月十一,按捺不住躁动之心的我早早的到达了北京,开始了在学校实验室简历准备以及复习阶段。

那时候的自己很天真,觉着自己一定还挺优秀的,可以和上一届的师兄师姐一样,顺顺利利拿到一些理想的offer,然后在选择中痛苦度过,哈哈哈,原谅我的厚脸皮。

  • 事实上呢?师兄师姐优秀,不代表你也优秀!
    当时尝试的投出了十几份简历,一天、两天。。。。一周、两周、n久过去了,我的简历犹如泥牛入海,一去不复返。

  • 事实上呢?offer很容易拿?
    这几年是互联网寒冬,不管是投递的人数还是招聘的人数,都没有那么理想。优秀的人手往往里握着好几个offer,大部分人手里并不是自己理想的offer,所以一定要提前准备,早下手为强!

  • 事实上呢?尝试找师兄聊一聊他们当时的准备情况
    在我仔细了解了他们的准备经过后,突然发现自己还远远不够!700多道leetcode我有?多个公司的实习经历我有?优秀的论文我有?

3月份腾讯提前批开始,抱着憧憬可以一步上岸的想法,我再一次投出了简历,然而这第一次的面试经历,让我很难看,紧张和迷茫让我表现欠佳,有些挖掘到深层次的问题已经触及我的盲点。

看看自己手上的项目,驳杂而不精,看看自己的基础,广泛而无亮点。

我的心态发生变化:我决定,从零开始:梳理简历,梳理基础、规划自己。

再之后的故事,就是积累,面试,再积累,再面试的过程,也就是面经的由来,永不放弃

四月,腾讯,阿里三面;五月,美团三面,字节四面。五月末,算是顺利上岸了吧~

我是实验室最晚的一个,相比同学朋友还换了第二份大厂实习,我也没有啥遗憾,我非常喜欢自己现在的公司和岗位,顺利转正。

之后还有阿里再次预约的一面面试,由于流程比较长拒绝了,当时准备留给秋招,转正成功后拿着现在的offer就心满意足了。

要坚信付出就会有回报,优秀的你永远不会被埋没。

0.1 中途的改变

  • 梳理简历:
    我是从研究生开始才接触开发,和别人相比是很难拿出众多的优秀成果。于是,从我的第一个项目开始,我思考我做了什么,不瞒大家说第一个项目是HTML的项目,简陋的代码还是在别人基础上完善的。但我依旧实事求是写下了项目的【背景、目标、问题解决、成果】。按时间顺序倒叙排列,参杂项目,参杂个人实践【其一:因为喜欢电影,用node实践了一个爬虫页面】我把自己的整个学习之路写的非常清楚,有前端、有后端、有算法、突然发现,这样的梳理反思使我的过去更加清晰,我自己也慢慢找到自己的方向。针对我需要面试岗位,列举出项目,填写到简历上,就很完美【悄悄说,自己改了十几版】。

总结经验

  1. 文档排版,整洁清晰,不要花里胡哨;非设计岗,内容优先,精简凝练。
  2. 合理排序,把重要内容,自身亮点放到简历最前面。
  3. 岗位明确,给自己一个合理的定位,有偏重点的写自己的项目经历。
  4. 技术实力,项目和个人实践,STAR原则了解一下,对你思考、整理自己项目,对写简历都有帮助。
  5. 不要冗余,课程名字?不相关的题外话?统统不要。
  6. 个人技能,根据自己熟练度写上 精通?熟悉?了解?就可以,不要写百分之多少。
  7. 个人爱好,志愿者等活动可以简单描述,便于面试官了解你的生活和工作状态。
  8. 综上所述,简历要扼住关键,实事求是,适当修饰,避免空洞,避免华而不实。
  • 梳理基础:

    • 我现在依旧深刻的记得,我是如何记录下我的面试题,又如何一一写下来解答,碰到一个盲点,继续扩散。划分模块,划分知识点,落到纸上。开始重新读书,《javaScript核心编程》《javaScript DOM编程技术》《node.js实战》《数据结构C语言版本》《你不知道的javaScript》这些书书籍的补充,开始完善我的知识结构。说点后话,在五月份的时候,这个所有纸加起来已经有五厘米厚了,是我自己从各个方面的整理和个人理解。
    • 其中刷题也是一直没有间断,刷题的过程会和你看书、总结、整理的过程相互印证。
      我的刷题方式是:完全自己做,第一直觉解法,可不可以优化,有没有多种方法,直到自己没有思路或者安全不会才去看答案;看了答案然后去看书、看博客、进一步理解。学习的差不多,找同类型继续熟练一下,看自己有没有漏洞。当然这样的刷题方式前期很慢很慢很慢,需要坐住小板凳,后期你就很熟练了,可以直接尝试最优解法或者脑洞解题。
      如果你是大神,可以一次记住,且可以实际应用请绕道而行,勿喷。

总结经验

  1. 思维风暴,记录知识点,不断扩展自己边界。
  2. 多多读书,读书有利于自己形成完整的知识结构。
  3. 合理记录,养成做笔记的习惯,整理一个文档出来。
  4. 白板刷题,要自己理解,内功最重要。
  • 公司看法:

    年幼的我,只知道BAT很厉害,其他的还是有些茫然,不知道公司具体做什么的。百度搜索、QQ微信、淘宝是我接触最多的几个产品,才会对他们有了解。当我和师兄师姐交流、通过看大量的帖子,招聘文章,公众号,发现我们的行业范围是如此广泛!!!大家普遍的心态是:大厂感觉好难,小厂不想去,我也同样如此。但当我简历受挫后,我开始不局限于知道的公司,开始分散思维,只要适合自己可以学习到东西的,我都愿意尝试。当然也要有不甘于现状的心,当前的努力是为了将来有更好的选折。
    除此之外,要考虑自己的人生方向,想要户口,公务员和银行是不错的选择。想要发展和不错的待遇,互联网公司是不错的选择。想要更多的假期,老师是个不错的选择。

  1. 自己的路,不要在乎别人的评价,喜欢就好;不要盲目攀比,适合自己就好。
  2. 多多尝试,面试官或许会挖掘到你自己都没有发现的优缺点,不断完善自己。
  3. 充分准备,公司都有面试记录,不要给自己过去留下一个不好的标签。
  4. 面试准备,面试是练出来的,闭门造车期望一次上岸是很难的,准备好之后大胆投递。
  5. offer多少,每个人都有自己理想的offer,合适最重要,不要贪多。原因有二:浪费时间;给其他同学留点机会;
  • 规划自己:
  1. 目标方向,多和师兄师姐、长辈交流,提前了解自己想去的方向。
  2. 学海无涯,互联网是一个不断改变的地方,时刻不能停止自己学习的心。

0.2 几个建议

1. 正确了解自己,给自己一个合适的定位,不要盲目自大和贬低自己。
2. 有思考有灵魂,不要贪图表面功夫,内功是最经得住考验的***。
3. 准备一份“心”的简历,有偏重的介绍自己,让面试官发现你身上的闪光点
4. 要有自信,早早投递,闪光的你到哪里都是金子。
5. 充分准备,重视基础,勇于探索,多练习白板刷题。
6. 做好自己的秋招进度表,以及行程规划,不错过一次机会。
7. 永不言弃!不要被周围的噪音影响了你,稳步前进,向着理想进发。

下面只简单写出题目,师弟师妹自己去一个一个学习,不一一解答了

1. 腾讯

1.1腾讯一面 【70分钟】

着重点:基础

面试流程:一面挂

面试环境:手机1面

面试感觉:
本次面试时间超长、覆盖面积超广,面试官也很厉害。但是当时小白,由于紧张,一些基础的知识都说错了,给面试官留下了不好的印象,也认识到自己对一些深入知识的探索还不够。

面试感悟:
大家基础一定要牢固,不要对自己曾经记下的知识,还存在疑惑,如果存疑,说明修为还不够。
面试官很会发现我们的优缺点的,所以好好表现自己,不要尝试蒙混过关,学着发散思维如何解决问题才是最重要的。

一、后端**

1.RESTful的原理

2.数据库百万条数据,有几种语文,数学,计算平均分,排序出来,如何解决

二、HTML

1.web语义化、语义化标签有哪些、section标签的作用

三、CSS

1.水平居中和垂直居中

2.预处理器sass优点

3.盒子模型

4.position的值有哪些,区别是什么

5.左右布局,sider+右侧自适应如何实现

6.样式框架的原理,布局方法有哪些,flex,grid,还有吗

四、js

1.闭包,应用

2.ES6常用语法有哪些

3.讲一下原型链,原型链的作用,继承?有什么问题?深拷贝/浅拷贝问题

4.require和import的区别?AMD、CMD、ES6

5.callback的缺点,Promise的状态有哪些,generator,async和await

五、浏览器

1.事件冒泡和事件捕获,应用?注意?

2.事件轮询 Eventloop

3.promise、console.log、setTimeout、执行顺序

4.重绘和重排

六、服务器

1.URl到页面加载过程

2.常见状态码知道哪些? 304 403 405分别是什么

3.POST和GET 的区别,除了长度,安全其他的

七、性能

1.前端优化有哪些

2.webpack的原理机制、配置了入口之后发生了什么

八、安全

1.知道哪些前端危险?如何防御

九、框架

1.了解有哪些框架,脏数据检测的原理、数据劫持的原理、订阅者发布者

2.用过哪些前端router,实现方式原理[hash、history]

3.VUE的生命周期,create和mounted之间发生了什么

4.钩子?

5.让你实现一个弹窗组件需要注意什么?

十、其他

遇到过的难点,如何解决的?

有读英文文档的习惯吗?


1.2 腾讯 PCG一面【20分钟】

面试流程:缓慢

面试环境:现场1面;茶水间,灯光昏暗,安静的环境

面试感觉:环境自然,面试官也很随和,但是系统流程太慢了,简历被锁定,提前批快结束也没放出来。

面试感悟:手撕代码不够熟练、需要加强。对于某些知识,自己有时候会产生自我矛盾,知识结构还不够清晰。

1. 数据绑定实现【框架和抛开框架,手撕】

2. 排序数组,查询某个值,存在则返回索引,不存在返回插入位置;优化,for~二分 【手撕】

3. ts和java对比,ts和es6对比,js对比框架

4. 框架的好处,坏处,单页面应用,seo如何解决

5. 最近最熟悉的项目,遇到最难解决的问题

6. http介绍一下,为什么http2.0不普及,websocket的基本指令,性能

7. 爬虫,网站如何去做防止,如何判断

8. 跨域问题,解决,jsonp原理,不受跨域影响的标签

9. 后台有注解,前端有吗?装饰器用过吗?

10. 搜索框优化,防抖节流,还有?

11. jQuery用过吗,token如何实现验证登录

12. 如何上传文件,pc端

1.3腾讯一面【20分钟】

忘记面试了什么,后端岗位捞的前端简历,广东话,原谅我很多没听明白。

2. 阿里

着重点:项目意义+解决问题

面试流程:整个流程下来,很舒心。大约一周一次面试,上一面通过,则进入下一面。

面试环境:全程手机,电脑

面试感觉:阿里的几个面试官都超级耐心,有一种探讨问题的意境;会给你介绍业务,讲解题目,提供思路,解答疑惑,甚至还会给你个人建议;

感悟:改变了我对面试的看法,我对技术的看法,我对阿里的看法,是一次很好的启蒙,要善待小白【曾经的自己】。

一面:

1. 自我介绍

2. 个人找一个简历上值得分享的项目。遇到的问题?

3. 前期项目,ts和js不兼容,如何解决的?登录的整个过程,无刷新?表单提交的字段有哪些,ajax的数据传输格式,二进制流传输图片?

4. 图片的上传过程,get,post,base64,数据流头部内容,图片是如何存储的?比如美国要访问国内的某个图片?CDN!他的工作方式?

5. 日历组件如何实现,有闰年和非闰年,如何存储,每个月的第一天起始位置怎么定,怎么布局,其实想问的是new Data(),但是我讲了如何自己实现的过程,给自己挖了坑,不过面试官还算满意

6. 地图,如何引入,如何使用,如何画点和连线,如何连线,现在给你北京和杭州的坐标,如何取点,如何画线?【canvas】?如果不能用百度api获取,如何计算点的位置?

7. 画图,css如何实现一个小球的上下跳动【css3的animation,@keyframes!使用什么属性设置?background定位,绝对定位top和bottom,margin,translate】css3的新属性,哪些会触发新的图层,为什么会设计新的图层?

8. 跨域问题,跨域的表现?cors设置的具体字段,*?有什么问题?Promise和async/await的区别!

9. 有没有比赛,有没有个人实践,有没有兴趣爱好。看过什么书,平时如何学习前端!

10. Promise经过babel编译后,得到的是什么?

阿里二面:

1. 自我介绍,或者值得分享的东西?讲一下项目的具体系统设计?

2. 实验室项目中,具体做什么工作,如果项目快结束了,和预期的不一样怎么办?技术选型?

3. 除了ionic,还知道什么用js实现的原生应用app框架?cordova的原理

4. TypeScript对比js,觉着有什么好用的地方,或者缺点?

5. 分页如何做?前端和后端的解决方案,如何实现,如何选择?后端高并发如何解决,前端切换页面的瞬间,新增了一条数据,如何保证第二页数据不发生变化?【假分页和快照】。如果发生变化,从用户行为方面考虑,有什么问题?

6. 区块链项目,为什么要使用功能WebSocket?【服务器推送,对比了长轮询】Websocket原理,对比http讲一下丢包重传,如何实现?

7. css了解多吗?有必要深入学习吗?讲一下为什么!哪一些属性会导致重排?js原生的那些API会导致重排,不考虑节点的属性变化和样式变化【clientWidth】?

阿里三面

1. 自我介绍,介绍一下一个做的项目?

2. 【1,2,3,4,5,6,7,8,9,10】分成随机数组 5个,每个2个

3. vue、React实现一个list,点击buton翻转展示

4. get和post对比,移动端性能优化,虚拟DOM树对比

5. angular的如何检测数据的,后台的了解程度

6. 家乡?在实习吗?什么时候开始学前端,如何学,看书吗?

实验室开会中,突然发起的面试,自己的心态不够稳定,说话很慌张,表现欠佳。

建议大家提前准备好摄像头,网络,电脑,随时准备线上码代码,或者和面试官重新约时间。


3. 美团

着重点:基础+项目表达能力

面试流程:面试官单独约你时间,稍显突兀,5天结束。【电话1面+现场2面+hr3面】

面试环境:单独的会面大厅,还算安静。

面试感觉:二面面试官全程陪送,接待,面试,送出门,还给打气加油。超赞!

面试感悟:你自己的简历,自己的项目要有自己的一套经验逻辑,可以侃侃而谈。

美团一面:

1. 自我介绍

2. position的五个属性,盒子模型如何设置,穷举所有垂直居中布局

3. URL请求的过程,详细解释cookie、session、localstroage、sessionStroage的区别,如何设置,具体命令行?

4. 查询数据库,左链接查询,增加一列一个字段。具体的命令行?

5. 页面加载的过程,script DOMContentLoaded和onLoad【document.onload和window.onload】,页面还没有载图片,点击在哪个阶段可以发生

6. 规划,如何学前端,有没有必要去特别深入的学习一种框架,为什么?vue-router的三种模式,React最新的更新功能?虚拟DOM树对比?数据双向绑定

7. 原型链和继承方式(6种,说明优缺点),闭包,解释一下应用场景。

8. 讲一下块级元素,行内元素,p是什么元素

9. sass和less预处理,用过什么?用过什么布局?

10. 为什么学前端,有什么目标和规划,具体的规划路线是什么,平时如何学习前端!最近在看的书和知识

美团二面

1. 一个无限级菜单,设计一个数据结构,手写出来

2. 网络请求,自己讲?巴啦啦从url到返回渲染讲了几分钟;强缓存协商缓存,状态码 207知道吗?

3. 讲一下原生APP和手机底层的交互?

4. ES6了解吗?Class的底层具体实现?新的提案,如何生效的?babel和ployfill,讲一下ployfill如何工作

5. 剩下时间,让自己介绍自己的项目,需求分析,技术选型,组织架构,设计实现,代码逻辑。会时不时的提问问题!自己硬生生讲了半个小时,就过了!过了?过了!

4. 字节

着重点:基础+算法+应变解决问题

面试流程:快速而有清晰,会预约时间,hr小姐姐体贴专线联系。现场【笔试+1面+2面+视频3面+电话hr面】

面试环境:安静整洁的面试间,休闲舒适的环境,

面试感觉:

​正式、高大上,要有想法,要随时准备应变。

面试官耐心且技术很棒,会给你提示,让你想解决方案,追求最优

连续面试几个小时,流程快但比较累,有种被掏空的感觉,我有点"贱贱的喜欢"这种感觉。

面试感悟:

基础算法要强,思路清晰,随时可手写代码;

​不要只是记住,重视实际场景使用,可以学以致用

​不要局限自己,充分发动思维风暴,不同方案解决问题。

笔试

1. window.onload()doucument.onload()

2. console.info(0.1+0.7)

3. https秘钥交换过程

4. 链表【奇数升序,偶数降序】将其变成正序递增链表,复杂度,多种方法;拓展,找出一个单链表是否有环,写出推理过程和公式。一圈的公式很容易推导,多圈的通用公式就很麻烦,没写出来。

5. 正则匹配 ?可以代表任意字符,可以代表任意长度字符 leetcode一个hard题。
match(a,a) true
match(a,ab) false
match(a,?) true
match(aa,
) true

一面

1. DNS查取ip的过程

2. 性能优化

3. 进程间通信

4. html js css加载执行的过程,什么时候加载,什么时候执行

5. 强缓存+协商缓存,返回的状态码?为什么要有Etag Last-Modefied有什么问题?Etag的值通常为文件内容的哈希值!而Last-Modified为最后修改的时间。

6. TCP三次,是不是有一个wait_2的过程?timewait?多长时间(2MSL)?为什么?

7. https证书如何效验

8. 如何实现懒执行,具体的方法

9. 后端如何设计一个多对多数据库表

10. 数据库索引讲一下原理

11. 前端模块化

12. import在浏览器是无法使用的,编译之后是如何加载进来的

13. Vue router的三种方式

二面

1. 一个页面获取body下所有的节点,统计每一种标签的个数。并且以{"key":"div","count",5}这种数据结构进行排序;手撕

2. 一个移动端页面实现header 高40px footer高40px 如何让中间部分自适应,手撕

3. ionic的原理和好处,对比vue,react。扩展RN,WEEK

4. cordova的原理,画图讲解

5. 实现class和extend,手撕

6. 爬虫相关,如何登陆,绕过验证码【数字,图片】,如何绕过ip被封禁(使用代理IP和轮换)

7. 预处理器的好处

三面

1. 弹幕实现,五行弹幕,水平和垂直的,多种方案,瀑布流

2. 层序遍历,手撕

3. 数组旋转,手撕

4. 懒加载,具体设计方法,两种

5. 大根堆小根堆 如何做到的,堆排序?

6. button移入鼠标,增加一个旗帜,并显示button的name,几种实现方式

7. 地图实现画点画线,高德地图实现?echart实现?canvas实现以及基本命令?

8. 目标规划

字节,校园招聘内推码 4W9DE9P

小编在抖音做得是商业化前端业务,可以直推我们hr,其他的也可以帮忙联系哦

你如果想了解我在字节感受可以查看下面的微信文章,包含个人感受
2019暑期实习招聘贴1 https://mp.weixin.qq.com/s/lUMNkxgYteHwBC2S-EW-mA
2020年内推贴2 https://mp.weixin.qq.com/s/xOFFb_YNAtSKZALJpKpqQg

字节官方的几个好的推文
如何应对面试官 https://mp.weixin.qq.com/s/Itr-EWLUfVMTSEiUN6GEeA
字节面经大搜罗 https://mp.weixin.qq.com/s/Sn24CeIS5NDJPBGMZQuiRg

下面放的是我的内推二维码和个人微信

图片说明

#字节跳动##阿里巴巴##美团##腾讯##校招##前端工程师##面经#
全部评论
这前端问了这么多后台的东西
点赞 回复
分享
发布于 2020-03-03 18:15
感觉那些设计和手撕我都不太行😶刚刚还投出去了两份简历,感觉自己…
点赞 回复
分享
发布于 2020-03-06 01:34
博乐游戏
校招火热招聘中
官网直投
已加楼主微信,请问字节的算法题这么多的吗,今年有木有什么比较流行的算法题比如dp动态规划什么的
点赞 回复
分享
发布于 2020-03-06 02:18
这四家我也都面试过,感觉没有这么多问题啊,都是随便聊聊就过了
点赞 回复
分享
发布于 2020-06-05 14:09
看完感觉问的问题大部分都好难呀,唉,我不配投前端,哭了😭
点赞 回复
分享
发布于 2020-09-08 14:18
字节抖音那个也是实习吗。。还有笔试的吗
点赞 回复
分享
发布于 2020-09-20 11:15

相关推荐

12 109 评论
分享
牛客网
牛客企业服务