查看原文
其他

铜三铁四,收获字节、美团、网易、快手、携程 offer,面经来啦!

CUGGZ 前端充电宝 2022-07-21

金三银四在今年变成了铜三铁四,很多小伙伴在群里吐槽春招面试机会很少,很多公司都不招人。互联网的“寒冬”,努力提升技术实力才是硬道理!

最近收到群里小伙伴的反馈,拿到了一些公司的暑假实习offer,听到这个消息还是很开心的,希望大家可以多多反馈,分享自己的上岸经历!

这位同学是2023届(大三)的,今年一月份开始准备春招面试,最终拿到了字节跳动美团网易快手携程的offer/oc,下面直接上面经!

美团-平台(oc)

面试过程:

  • 2.23 投简历
  • 3.19 笔试
  • 3.30 一面
  • 4.1 二面
  • 4.19 HR 面
  • 4.20 中午oc

(通过)一面,3.30,50 min:

  • 为什么选择前端,平时怎么学习,有做过什么项目
  • 介绍项目难点(算法可视化追踪),解决了什么弊端,是否测试过,怎么实现追踪的,为什么要自己写节点缓存比较而不是直接调用 api 取节点比较
  • null 和 undefined 的区别
  • vue 的生命周期,异步请求一般在哪里调用
  • vue 的组件怎么通信
  • v-for 和 v-if 能不能一起用,优先级怎样
  • 是否了解跨域,怎么跨域,怎样的域名之间访问算跨域
  • 做题,读取 url 查询参数,为什么用了这么多 let 而不用 const
  • 反问

总结:聊了很久的项目,面试官不断追问,给我带来很多启发,在方案选型和测试这一块要好好复盘一下。其他就是常规的八股,总体感觉心态比较平和~

(通过)二面,4.1,50 min:

  • 自我介绍
  • 实习时间和意愿
  • 简单介绍项目
  • 问第一个项目:有什么功能,遇到的困难(布局组件的考究、前后端协调问题)
  • 对 vuex 的理解,什么时候、为什么要用,介绍一下 sessionStorage,怎么配合 vuex 存取数据
  • 对前端路由的理解,vue-router 怎么实现的,从一个路由到另一个路由发生了什么,vue 生命周期
  • 什么是 RESTful 风格,有什么好处
  • 笔记模块为什么选用 wangeditor 做富文本处理,怎么配合 localStorage 做缓存和保存,为什么要对保存功能做节流
  • 问第二个项目:
  • 难点(组件嵌套实现,模块改进,模拟 virtual dom 缓存实现节点追踪)
  • 为什么选用 vis-network,做了什么改进(一面刚好问过)
  • 做题:字符串第一个出现的唯一字符的位置
  • 反问

总结:类似于简历项目面,中间穿插一些八股。面试官很和善,氛围很轻松,最像聊天的一次面视,也是近来体验最舒服的一次面试~

(通过)HR面,4.19,35 min:

  • 自我介绍
  • 为什么学习前端?对岗位和部门的意愿度
  • 对之前技术面的体验如何?有什么需要改进
  • 有什么其他的校招流程,意愿度如何
  • 自己对哪方面的业务更感兴趣
  • 自己的优点
  • 自己在团队中、宿舍里、班级里的角色是怎样的
  • 自己有什么待提升的方面
  • 希望在实习的过程中收获什么
  • 喜欢什么样的团队风格?反感怎样的风格?
  • 反问(部门介绍,培养体系)

字节跳动-飞书(offer)

面试过程:

  • 3.26 投简历
  • 4.11 一面
  • 4.14 二面
  • 4.19 三面
  • 4.20 下午oc

(通过)一面,4.11,65 min:

  • 自我介绍
  • 项目难点介绍,和一些反问
  • tcp 的可靠性怎么实现的,tcp 复用是怎么实现的(这俩没答好)
  • http 缓存,不同资源一般采取什么缓存方式
  • 输出题:promise 和 async 的经典输出,async 改写成 promise 实现同样输出
  • 写题:找出dom节点下所有标签类型;最短路径和
  • 常用什么开发框架,是否了解 webpack loader,怎么理解单一职责性,为什么要遵循这一原则
  • 反问

总结:经典出师不利。近都是看的http,结果tcp糊了。后面的输出题好像面试系统出问题了,跟我预想的不一样,只好强行解释,后来面试官才说出问题了,也不知道咋回事(尴尬)。写题写得不错。

(通过)二面,4.14,60min:

  • 自我介绍
  • 项目介绍,介绍难点项目(描述了详细的可视化实现流程
  • 做题,深度遍历 dom,打印遍历路径(dfs+回溯
  • 实现发布订阅模式
  • 列出 flex 常用属性和值,并解释;
  • 对 BFC 的理解
  • vue:实现一个模态框组件,过深的组件该怎么配合定位属性
  • 反问

总结:感觉问的不多,怎么面了这么久,是不是我漏了什么没想起来。

(通过)三面,4.19,60min:

  • 自我介绍
  • 项目难点介绍
  • 输出题:对象、闭包、this 指向问题
  • 算法题:排列组合
  • 接雨水(横着、竖着)
  • base 地和实习时间问题
  • 反问

总结:投的字节飞书企业应用的前端开发实习生,base杭州,投的挺迟,但好像还是有 hc 的。因为是 “最难面视”,所以把字节放最后投,经验和准备都更充足,把握会大一些吧,希望给给力~

网易-网易云音乐(offer)

面试过程:

  • 3.7 投简历
  • 3.27 笔试 2h, 4 编程 (ac 3.7/4)、1 问答 (设计模式)
  • 4.7 一面
  • 4.13 二面
  • 4.19 HR 面

(通过)一面,4.7,65 min:

  • 自我介绍
  • es6 的 const 和 var 的区别
  • 原型链的了解,看题输出
  • 手写 bind,this 指向问题
  • 对 Promise 的理解,看题输出
  • 如何实现多个异步请求的链式调用,请求完成前的 loading 动画如何配合
  • 说说浏览器缓存策略
  • 常见的跨域方案,为什么要有同源限制,CORS 用到的响应头是什么,每次跨域请求都会发送预检请求吗,node 中间件的原理是什么
  • cookie、localStorage 和 SessionStorage 的区别
  • 哈希命名,为什么文件要有哈希命名
  • 如果安排 html、js、css、图片等资源的打包,该怎么设置强缓存和协商缓存
  • js 模块规范,是否了解 tree-shaking 的原理
  • 盒模型
  • 垂直水平居中方案
  • 什么是 BFC,一般用来做什么
  • vue:组件生命周期,组件间通信,兄弟间通信
  • 对 vuex 的理解,平时怎么用、为什么要用
  • vue-router 的模式,后端是怎么适配的(重定向)
  • data 为什么是函数而不是对象
  • 直接给 data 新增数据会怎样,如何保持响应式
  • 一个 data 数据改变到页面更新的过程
  • 怎么解决项目遇到的难点
  • 有没有自己的项目仓库
  • 怎么学习新技术,在哪里学
  • 项目中遇到的最大困难
  • 反问

总结:用的是网易自己的面视系统,需要签到,然后等短信就可以进面试房间了。比较常规的八股面,背就完事了。中间也有一些追问没答上来,尽量说了自己的理解,面试官之后也会友好地说出正确的答案或合理方案。

(通过)二面,4.13,45min:

  • 自我介绍
  • 使用 var 的循环,不同的 let 方案
  • 原型链问题,this 指向
  • var 声明和输出
  • 项目中做过什么优化?不用 vue-cli 做过 webpack 的打包优化吗?
  • 什么是 bundle、chunk、vendor?为什么要抽离运行时模块,它是怎么影响打包过程?tree-shaking 了解吗?
  • 为什么文件要哈希命名,是必须的吗?缓存策略这一块怎么考虑?
  • 为什么使用小程序?Vue3 相比 vue2 的改进,多根节点再什么场景使用?
  • 怎么理解单向数据流?平常经常遇到子组件对父组件的一些调用,难道不是打破了单向性?vuex 会不会违反单向性?
  • react 的响应式与 vue 的有什么区别?无比较的全部渲染难道性能不是很差吗?react 是怎么处理数据渲染更新的?
  • 反问

总结:又是出师不利 。开始的输出题以为都没问题的,信誓旦旦说了一堆,结果后知后觉,面试结束了才发现搞错了。怪不得面试官要追问,追问的点都答对了,结果还是没反应过来之前的是错的。之后就不算是八股了,都是要结合理解思考的回答,有种和面试官斗智斗勇的感觉。总体来看,一面重基础,二面重思维,输出题也更巧妙讲究一点,奈何我大意了。面试官说后面会有短信或 hr 通知结果,希望手下留情吧。

HR 面,4.19,40 min:

  • 自我介绍
  • 最有成就的项目(聊了快半小时)
  • 忘了之前还问啥了,不过不是啥大问题
  • 对云音乐产品有什么意见反馈
  • 反问

总结:聊得头脑发热,项目成就那里聊到团队和理想,发起背景,分工情况,研发运营什么的,还有结果评判和价值意义,感觉hr思维很严谨,我一下子吼不住,一直聊一直辩论一直解释,不停地延伸和回溯,感觉从一个简单的技术项目合作延伸得太远了,她想知道的和我想表达的总是差一点,我只是想以自己团队的身份介绍我们在做的,结果hr又感觉我作为技术负责人似乎不太理解项目发起的背景什么的。反正一直聊,聊麻了。

快手-效率流程(offer)

面试过程:

  • 3.18 投简历,当天晚上就约下周的面试了
  • 3.21 一面
  • 3.23 二面
  • 3.25 HR 面
  • 3.28 HR 通知通过(口头offer)
  • 3.31 收到意向书,现已接受offer

(通过)一面,3.21,50min:

  • 自我介绍
  • 介绍项目的难点和收获大的地方
  • https 如何保证传输安全
  • 微信小程序的优点,技术上和 H5 页面开发、公众号开发的区别
  • 关于移动端适配的了解,为什么要有 rem
  • vue 的渲染和响应式实现原理,setter/getter 的作用,watcher 到底是什么,怎么实现的监听(一些追问)
  • v-key 的作用和原理
  • vue3 的新特性了解多少?Proxy 的缺点?ReactHooks?
  • 写题,通过属性字符串(如'a.b.c')取对象的属性值
  • 反问

总结:面视氛围很轻松,面试官会引导性地问问题,在我回答的过程,视频中能看出来面试官在跟着我的思路,然后再针对性的提问。

(通过)二面,3.23,50 min:

  • 自我介绍
  • 偏向于写视觉还是写逻辑(我说视觉)
  • 说说常用的行内元素和块元素
  • 行内元素的宽高问题,结合头像的使用,追问 img 的图像显示,加载,空白图配合(css 背景)
  • 垂直居中方案,追问 flex 的容器高度、项目缩放
  • 手写数组扁平化
  • promise 输出题
  • 判断 null 和 undefined,判断数组
  • 写排序,快排,轴的选取有什么考究
  • 为什么要对搜索栏做防抖处理,如果用户的输入不定性太大,怎样尽可能避免无用请求
  • 反问

总结:平时项目开发过程视觉写得多,但是钻研得不如 js 深,导致面试官追问 css 和 UI 这一块被问得有点懵,但还是尽量答上我的理解。这次面完没有立刻打电话,反而以为寄了

(通过)HR面,3.25,20min:

  • 自我介绍
  • 为什么从学习 java 转到学习前端
  • 校园里最有成就感的项目,自己的职责
  • 项目中解决的最大的困难
  • 三个词形容自己
  • 自己与岗位的契合度
  • 实习时间
  • 有什么其他的面视流程,对岗位的意愿度
  • hr 介绍薪资福利
  • 反问

总结:总体来看,技术面的面试官喜欢根据场景来举例和提问,所以不同场景会伴随不同的难度,感觉自己至少能答个七成。面试官都比较和善,善于引导,面试过程更像是在探讨问题,氛围相对挺轻松的(用的快手自主开发的轻雀,发现体验不错)

携程-酒店(offer)

面试过程:

  • 2.25 投简历
  • 2.28 测评,拖到 3.3 才做
  • 3.10 笔试,四道题,a了 2.7/4
  • 3.16 一面
  • 3.28 二面
  • 3.30 HR 面
  • 4.11 收到oc电话
  • 4.15 收到 offer

(通过)一面,3.16,55min:

  • 自我介绍
  • 了解的技术栈,怎么看待前端开发这个职位
  • 输入 url 到页面显示的过程
  • 对重排和重绘的理解,如何优化渲染,项目中怎么入手
  • 浏览器缓存如何优化,etag 和 last-modified 区别
  • 怎么避免更新后使用到旧缓存,联系到 webpack 的哈希命名
  • 一万条数据渲染到页面上,怎么保持流畅
  • 写个数组乱序,命令式和声明式的写法区别
  • 箭头函数和 function 区别,new 构造过程,proto

总结:问题都偏向于优化方面,虽然不多,但聊了挺久,一些比较长的叙述还是有点口胡。面试官人很好,一些场景题会进行引导,整体来说还行吧。项目场景这一块亟待加强,最近项目确实写少了。

(通过)二面,3.28,55 min:

  • 自我介绍
  • 是否了解 Typescript
  • 写个异步函数,支持顺序多次调用,并接受值
  • 说说事件循环,对宏任务和微任务的了解,为什么要分宏任务和微任务
  • http 缓存
  • 对 webpack 的理解;module、bundle 和 chunk 的区别;如果打一个包/打多个包/异步引入打包/强制异步打一个包,该怎么设置;是否实现过 loader 或 plugin
  • 项目难点介绍(可视化平台的组件嵌套,节点的缓存、diff 追踪),是否测试过使用 diff 算法后优化的效果
  • 反问

总结:出师不利,第一个异步题没写出来,一下子蒙了。。后面就都答得还不错,不太会的内容也根据自己的理解来答了,尽量往自己熟悉的点去引,希望弥补一下惨不忍睹的第一印象

(通过)HR面,3.30,20min:

  • 自我介绍
  • 介绍一下项目中最有成就或难度的点
  • 学校里现在在做的项目情况怎么样,聊了下自己所在的开发团队
  • 为什么选择前端
  • 有没有考研深造的打算
  • 有什么其他在面视的流程,意愿程度
  • 到岗时间
  • 反问(福利、部门、转正、结果通知什么的)

阿里云-云网络(挂)

面试过程:

  • 2.17 投简历
  • 2.19 一面
  • 3.12 二面

(通过)提前批一面,2.19 ,35min:

  • 介绍自己
  • 介绍在学校做的这些项目
  • 前端如何协作,代码管理
  • 对时间复杂度的理解
  • 盒模型的理解
  • flex 布局的理解
  • http 的请求方式?get 和 post 区别?响应码?
  • 301 302 重定向后的过程
  • 数组遍历方式?map 和 forEach 区别
  • sql 语句的 groupby 的作用
  • 对 react 了解得多不多
  • 反问:阿里云咋样,工作内容,氛围,用的技术
  • 然后聊到怎么学前端的,以及之前的学习经历(还学过java)

总结:春招第一面,开门红,聊得酣畅淋漓,面试官也很友好和善,就像学长一样,还挺开心。后来问的面试结果,面试官说已经指派了,应该就是过了

(通过)提前批二面,3.12,35min:

  • 自我介绍,问了下本科课程
  • 为什么学前端,偏向于写视觉还是逻辑
  • 使用过什么原生 JS 框架或原生项目
  • 对 DOM 的理解,为什么要有 DOM
  • vue 和 react 的区别,前两者相比原生 JS 框架优势在哪
  • 对 jsx 的理解,相比 html 的性能如何
  • 对 Promise 的理解,Promise 是惰性的吗
  • 盒模型
  • cookie 和 session 的区别
  • http 的无状态,如何让服务端在后面的请求中辨认 cookie 和用户(没太听懂,没答上来)
  • 问了项目状况,学习用还是运营的
  • 反问

总结:不温不火,有部分卡壳了,理了理之后答了很多。隔了太久没面了,变得有点慌。HR面挂。

阿里云-ECS弹性计算(挂)

面试过程:

  • 3.30 转入 ecs部门
  • 4.8 一面

(锁HC)一面,4.8:

  • 自我介绍
  • 介绍项目难点(算法平台balabala),一些反问
  • 怎么没用 React
  • 怎么跟后端协调数据的
  • 为什么用 websocket
  • 用的什么代码调试模块(codemirror
  • 怎么实现的可视化追踪,对 virtual dom 的理解
  • 了解 vite 吗
  • webpack 打包遇到的困难,怎么解决
  • 写题,出题之前让我比较一下阿里的测评代码平台和我项目中的代码调试平台
  • 一段代码的 ast 语法树生成,怎么设计节点数据结构
  • 简单计算器的解析
  • 反问

总结:聊了半小时的项目,然后写半小时的设计题,挺有深度的,面试官也平易近人,感觉在一块讨论问题。然后得知又是从一面开始。。。算了,来一个面一个,全当聊天学习了,面到六月都无所谓。后来面试官问我考研or就业,我说就业,他就打电话过来,跟我聊了聊,觉得太可惜,因为透露说 hr 那边学历卡的死,我大概率会被挂(跟云网络一样),太可惜了,强烈建议我考研后再出来,给了我很多建议。感慨万分!

钉钉(挂)

面试过程:

  • 2.20 投简历
  • 2.24 一面
  • 2.27 二面

(通过)一面,2.24,35min:

  • 自我介绍
  • 介绍小程序,以及开发难点,如何协同服务端
  • 三栏布局
  • tcp 三次握手,第三次握手的作用(有点含糊)
  • 对 ajax 的理解,ajax 的不足(含糊);跨域怎么解决,jsonp 的原理(不会),postMessage
  • 是否看过 vue 源码,v-model 的实现原理
  • 使用虚拟 dom 目的;相比不用虚拟 dom ,性能一定更好吗;vue 的性能下限和上限(自己结合 vue 的原理说了一下)
  • 实习时间问题
  • 做题:版本号字符串比较(一开始错了,后来怕时间来不及,直接口述思路了)
  • 反问

总结:面试官很温和,个别追问很有深度,反正不是我面经碰到过的,结合之前学的东西思索一番才能答上一些

(挂)钉钉二面(leader 面),2.27,20min:

  • 自我介绍
  • 成绩咋样,拿过什么奖学金
  • 参加的实验室项目
  • 讲讲最有成就感的项目
  • 数据库范式,左连接和右连接(忘
  • 面向对象的特点
  • 平衡二叉树,为什么要这么设计(裂
  • 常用的排序算法(冒泡、选择、快排)
  • web 性能优化(我自己限定了一些范围来答,不然太宽泛了,但是感觉还是答得含糊
  • 用户体验的切入点有哪些(一下子脑子空白,还是说得很含糊
  • 考不考研
  • 有没有其他部门或集团以外的面视

总结:leader 很亲切,问题很奇怪,好多内容我也没特别准备,答得他开始抹脸。感觉还是很考验综合素质的,下次投简历前我先把“了解数据库”什么的给删了。虽说这科班素养被我抛到脑后,是我的问题,但感觉还是 emmmm

百度(挂)

面试过程:

  • 3.22 投简历
  • 3.29 笔试 2h,19 单选、1 多选、3 编程题(ac 2.5/3)
  • 4.8 发在线测评
  • 4.10 一面
  • 4.10 二面

(通过)一面,4.10,60 min:

  • 自我介绍
  • 介绍团队和项目的情况
  • 介绍项目难点
  • js 的数据类型
  • dom 的常用操作,直接操作 dom 和 vue 框架操作的区别
  • 跨域方案
  • http 响应头
  • h5 的新标签
  • 做题:字符流第一个不重复数

总结:面试官挺累的,我一直叭叭叭地说,他问一个问题被我延展出去说了好多,说到他都用不着追问了,所以问得不多,也被我硬面了一小时,顺利过了

(挂)二面,4.10,45 min:

  • 自我介绍
  • 项目难点(第 n 次说了,麻了)
  • 怎么管理代码,用过 gitLab 吗
  • websocket 了解吗,什么特点,跟 http 的区别 (有点忘了,答得面试官不太满意)
  • axios 怎么做的封装,ajax、fetch 和 axios 的区别(答得含糊),ajax 状态码与 http 状态码的关系
  • https 怎么实现安全传输(这个倒是说得很详细)
  • 写题:一个时钟组件,从秒数转换为日时分秒,渲染到页面上(写的时候有点恍惚,dom 许久没写了)

总结:头一次是女面试官,问了网络请求的一些问题,给忘了,没答好。最后手写题也没写好,然后二面结束,没约三面,面试结果备注感谢支持、官网状态变成共享中,算是寄了。

小米(等二面)

面试过程:

  • 2.20 投简历
  • 2.24 一面

(等二面)一面,2.24,45min:

  • 介绍自己
  • 实习时间安排
  • 稍微聊了下自己的小程序
  • git 的工作流程
  • 梯形的实现(一种方法就行)
  • 项目里怎么使用的响应式开发
  • cookie、localStorage、sessionStorage,怎么删除页面的 cookie
  • flex 的理解,flex-shrink 为 0 是什么情况
  • inline、block、inline-block
  • map 和 weakMap 的区别,接着说垃圾回收
  • ES Module 和 Commonjs 的区别
  • 浏览器页面的渲染流程
  • 上下文执行栈
  • es6 的特性(两个就行,我说的 var/const/let、promise 和 async/await)
  • 继承
  • 1000个元素找最大的5个(我说快排),堆排序的稳定性
  • vue 组件的更新过程
  • vue 的 v-key 的作用
  • 组件的 v-model 怎么实现
  • 了不了解 React
  • 反问

总结:问得挺广泛的,经典的基础八股面,但是毕竟那会儿刚开始面,会紧张,这么大量的八股,容易嘴巴打结。面试官有夸奖个别回答得很全面,但感觉自身问题还是挺多的,八股都背不明白了,脑中梳理的还是不够系统。


往期推荐:

让开发效率倍增的 VS Code 插件

React + TypeScript:如何处理常见事件?

前端周刊第 18 期

不可错过的实用前端工具

你不知道的 CSS 父选择器

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存