Reaper 的2020春招实习之路- 字节 阿里 CVTE | 掘金技术征文

3,551 阅读13分钟

自我介绍

本人双非大三非科班渣渣一枚,大一一开始在学PS/PR/AE等,大一下开始学前端吧,不过前期学习方式比较有问题,大二才开始系统性学习,前期走了不少弯路,所以本身技术也不算同届里比较出色的,大三上选修课 all in 换来的大三下课程少,决定进行实习。在二月复习前端一周多之后,二月中旬开始陆续面试,面试了三家公司,目前流程都算顺利,整体结果如下:

  • 字节跳动-Data 已入职
  • 阿里巴巴-钉钉 意向书get
  • CVTE-前端开发 offer

以下是我总结的一些面试过程的一些问题

字节跳动

一面 (1h 视频)

  • 自我介绍
  • 介绍项目 【扯了很多方面,给自己挖了不少坑】
  • happypack 原理 【多进程打包 又讲了下进程和线程的区别】
  • css module 【给样式开启模块化 避免样式污染】
  • React 的Loadable核心 (import() 本质上和 React.lazy和Suspense原理相似)
  • Dynamic Import (Loadable的原理之一)
  • 微前端路由设计 多个SPA 根据URL变化改变 路由解决方案 【自己答得是用Nginx做匹配 本质上不算是SPA内进行改进,面试官说可以用Dynamic Import】
  • React.memo 原理
  • Fibonacci 函数 之后进行进行memory优化 【要求不能改参数和执行方式】
  • Redux Vuex Context 原理比较
  • Redux Context 的区别 和使用场景
  • hook的限制 hook能否用于受控组件【ref】
  • function组件和class 组件
  • 如何进行图片压缩
  • 常见了处理文件的 Loader 【答了 file-loader url-loader】
  • koa 的原理 与express 的对比
  • http 缓存 强缓存 和协商缓存 缓存的过程 服务端的操作

整体题目难度还行,但是面试官很会深入挖掘知识点的原理,原理答得不是很好,经常被面试官问道无言以对,不过面试官会稍作提示引导回答方向,我还是把我了解到的尽量都答了出来。

二面 (40min 视频)

一面完其实心态有点炸,不小心直接从房间退出了,后面hr打了电话突然说是二面面试官进房间发现我不在,于是赶快进入面试房间开始二面

  • 算法 快排 原理和优化 分析复杂度 【手撕代码】
  • HMR 热更替原理
  • 双向绑定原理
  • 跨域 产生原因 解决方案 解决方案有什么缺点
  • TCP 为什么可靠
  • TCP 的拥塞控制是怎么做的
  • 二叉树先序中序 生成后序 【手撕代码】
  • 对上面这个算法的优化

二面面试官貌似不是做前端的,所以基本也没有问一些前端的知识点,大多都是算法和网络,头条一直也都比较注重算法,所以二面基本上都是基于算法的。二面面试官很好,一般会先等我把思路讲完后先肯定我的思路的一些优点,在写代码的过程中去引导我在自己的代码上进行一些优化。大家写完代码的过程中可以对自己的代码进行优化的思考,写完后将优化点进行指出和讲解,之后进行优化。

三面 (1h 视频)

三面是leader面

  • 自我介绍
  • 实习时间 能实习多久
  • 前端学习方法 学习路径 如何进行实践
  • 如何设计一个小程序架构 底层如何实现【原理 + 实现方法】
  • 非js写的Node.js模块是如何使用Node.js调用的 【代码转换过程】
  • 如何写一个移动端html抖音界面和刷视频的功能实现 【手撕代码】
  • 三栏布局 右侧固定左侧和中间自适应 【手撕代码】
  • 输入URL到展示页面的过程 【比较全面的问题】
  • 介绍下 http 协议 【非常宽泛 会根据你说到的点进行深问】
  • 除了都会哪些后端语言 【一开始说自己用Node.js,面试官又问有没有其他的,楼主大学学过java,不过没怎么实践过】
  • Mysql的存储引擎 【这个直接不知道了 TAT】
  • 做过那些前端的性能优化实践
  • 通过哪些平台进行性能测试 【我说的Lighthouse】
  • 做过的项目的一些难点和扮演角色

三面完其实心里很没底,两个场景设计题感觉自己的设计方案还是有瑕疵的不是面试官想要的,并且问到mysql存储引擎直接无言以对了,感觉自己知识的广度还是有一定欠缺。最后问到性能优化正好自己之前优化过自己的博客网站做过相关的实践,所以还算是力挽狂澜吧,答得很详细。

hr面 (电话)

其实一开始三面完感觉心里是凉凉的,面试完也没有hr联系进行hr面试预约,但隔了一天后接到了hr的电话,进行了hr面试的预约,心里总算平静下来。

  • 个人介绍
  • 考研 or 就业
  • 学习路线与学习方法
  • 入职时间 实习时间

整体就是和hr小姐姐聊天,没什么特别的,也就不赘述了。

字节后记

自己个人还是比较幸运的吧,一面原理面答得不算太好,二面算法面答得不错,三面的时候前面场景设计设计的略有瑕疵,不过最后的性能优化方面力挽狂澜的一波也算成功上岸。这里要提醒大家,字节对算法有一定要求,大家面试前一定要刷一些题,一般每一面都会手撕算法,楼主本身算法并不好,从十二月开始从《剑指Offer》和LeetCode 锻炼算法,总结了一套题解和源码,供大家参考 ——LeetCode题解

阿里巴巴 钉钉

预选面试 (视频 直接开局三道题 40min)

  • 随机字符串生成
  • 比较版本号
  • 日志上报 (操作节流)

整体做的还可以 虽然一开始有一些小问题 不过面试官稍作提醒后都找出来了 后面稍微沟通了一下我的个人信息 之后加了面试官小哥哥微信 开始预约下一面了

一面 (钉钉 视频 转 语音 1h)

因为是面试钉钉部门 所以直接使用的钉钉的视频面试,不过面试官小姐姐网络不是很好,视频一段时间后转语音

  • 自我介绍
  • 隐式转换的场景 不同类型值得相互操作
  • JS中的继承方法
  • 原型链
  • call 和 apply 的区别
  • 介绍下 let const
  • 箭头函数
  • 介绍下 Promise
  • Generator (引入 async 进行搭配说明)
  • 使用框架的经历 (Vue 和 React)
  • Vue 和 React 的区别
  • 双向绑定
  • 学习前端的经历 如何学习
  • 浏览器的渲染特性 浏览器的进程 渲染进程里的线程
  • 浏览器渲染HTML文件的过程 (输入URL到展示页面的后半部分)
  • Web网络安全
  • 跨域
  • 有自己的脚手架? 如何搭建的
  • webpack 的打包原理 [感觉有点答非所问了]
  • webpack 打包出来的文件是什么 [匿名函数]
  • 问项目
  • 介绍了下钉钉的业务

一面是个小姐姐,整体沟通十分轻松,后面和我讲了挺多和钉钉业务相关的和钉钉的未来发展方向

二面 (钉钉 视频 30min)

二面是一个 P8 大佬,整体面试氛围比较轻松,和大佬交谈甚欢,一些细节问题记不清了,大致的问题如下

  • 自我介绍
  • 介绍一下都做过什么项目
  • 介绍一下自己做的最复杂的项目 详细介绍一下
  • 性能优化的方面
  • webpack
  • 学习和实习如何安排

HRG (钉钉 视频 30min)

二面完给我安排了一个hr面试,当时比较懵逼,说不是还有大佬面和交叉面吗?不过Hr说是第一个实习生进入到hr侧的,就安排了面试。

  • 个人介绍
  • 未来规划 & 学前端的初衷与动力
  • 有在面试其他公司吗? Offer 选择
  • 杭州还是北京?
  • 考研 or 就业?
  • 家人是否同意实习 学校学业如何安排

三面 (钉钉 视频 40min)

三面是钉钉P9大佬

  • 自我介绍
  • 项目 老生常谈了 这点不细讲了
  • 你理解的前端未来发展方向
  • 微前端的设计架构
  • 微前端的优点是否存在弊端?
  • 想做toB还是toC?
  • 一些钉钉的业务介绍....

交叉面 (电话 40min)

交叉面是淘系智能化的大佬

  • 自我介绍
  • 介绍一个自己参与度最高 从0开始的项目的详细介绍(我从产生做项目的想法开始讲...)
  • 通过项目总结了哪些优化方面,能够在未来的开发中受用?
  • 介绍React (思想,框架带来的优化,新特性,源码-fiber diff)
  • 项目性能优化的实践
  • 写项目中是否总结了一些方法来帮助日后工作方面
  • 对前端智能化了解么?(讲了之前看了淘系的 imgcook 面试官说他就是做imgcook 的 当场班门弄斧)
  • 讲了对 imgcook 的一些思考
  • 面试官评价说整体学的还可以,但缺少对知识和方法的总结,感觉说的很对。

阿里后记

整体面下来,钉钉的面试官是我相处最融洽,整体沟通下来基本没有什么压力,并且一面面试官管理后续的面试,每次面试完都会和我沟通感受,并且有下一步结果时第一时间通知我,这里要给小姐姐一个大大的❤,阿里整体下来技术难度不算太高,但是考察面很广,包括业务视角+技术水平+沟通能力,是对你的一次全方位考核。面试阿里前可以锻炼一下自己的业务方面的能力,比如分析分析自己的项目这些。

CVTE

CVTE 最早是12月多的时候做了笔试题,通过后一直没音以至于我已经逐渐淡忘了还投过这个公司了😂 二月中旬在午休的过程中突然接到了面试电话,懵逼中完成了一面。。。

一面 (电话 40min)

  • 自我介绍
  • 箭头函数和普通函数区别
  • 函数作用域
  • 介绍下ES6的新特性 let var const 区别
  • this指向问题
  • HTTP缓存类型 强缓存 协商缓存 Etag 的生成依据
  • 缓存成功后发送304的好处 HTTP 状态码 200 和 304 的区别 (是否还携带资源)
  • 输入URL到展示页面
  • TCP三次握手
  • 跨域问题遇到过么 CORS解决方案的 options请求 如何避免重复的preflight 【Access-Control-Max-Age: 86400】
  • Cookie 了解么 都做什么 http-only知道么
  • promise问题
  • 性能优化方面 如何性能优化
  • 网站优化 20s - 2s 都做了什么
  • 虚拟DOM的特点
  • react-redux的实现原理 connect的组件如何获取到state变化。 (react context)

二面 (视频 40min)

  • 自我介绍
  • 如果有一个项目,做完后客户反应加载很慢,你会如何解决?
  • Vue 和 React 的区别?什么情况下用Vue 和 React ?
  • 使用过 React Hook吗?Hooks的好处?
  • 介绍一下 HTTPS
  • 了解 HTTP 2.0 和 HTTP1.x 有什么区别
  • 疫情在家,最近都在学什么
  • 有想过想发展的方向么?
  • 一道算法题 最接近的三数之和

综合面试 (视频 30min)

综合面试前会先填一份补充的简历 主要就是一些基础问题 和个人未来发展,还有的就是把补充简历重新问了一遍。

截屏2020-03-02下午9.06.18.png

综合面试通过之后就接到offer call 了,不得不说CVTE的待遇真的香,高于平均水平的工资,三餐+官方宿舍,但是感觉还是核心业务在硬件,权衡利弊后还是选择放弃了。

面试过程的一些总结

作者的春招目前为止,一路绿灯(当然也是因为投的比较少),不过我觉得也和我做了比较充足的前期准备有关,所以各位同学,面试前一定要留有充足的时间对自己的知识进行一次梳理,我这里比较推荐的方法是构建自己的知识框架图(可以用思维导图等形式),在复习前先对自己进行一次梳理,能够比较快的找到自己的强势点和薄弱点,强势点要多准备,用来在面试中攻坚,薄弱点要争取补足,避免面试踩坑。

此外,在面试的过程中也要多总结,每次面试完都要把这次面试过程总结一下,想一下哪里回答的不够恰当,哪里能做到更好,举我自己面试的例子,CVTE的综合面试中,我因为之前没有经历过这方面的面试,导致整体答下来还是踩了不少坑的,后续对这方面进行总结,在后面的面试过程中问到个人规划以及HR面试都游刃有余。

并且,尽量要在面试中掌握主动权,一般的校招实习面试,面试官是很倾向于把主动权交出去让面试者来发挥的,所以一定要掌握住机会,在适当的时间点插入自己擅长的部分,然后就是你的 showtime,但注意,擅长的部分一定要足够熟练与准确,不然擅长部分犯了一些很致命的错误,是非常减分的,以我个人来说,我个人对React理解程度相较于Vue要更深一些,所以面试官在问到Vue时,我会先讲一些基础方面的东西,之后我会引到ReactVue在这个方面的一些不同,后续就逐渐把话题引到了React上,整体下来也就相对到了自己比较熟练的部分。

也祝诸君能够在2020年的春招顺利上岸!


互助区

如果对我面试的三个部门有兴趣的话也可以联系我帮助内推:

  • 字节跳动 投递连接 投递了的同学可以私聊我 方便后续查进度👌
  • 阿里巴巴-钉钉 私聊,我帮你把简历直推我的面试官(小姐姐,人超好)
  • CVTE 有兴趣的同学帮助提供HR wx,我推荐的其他同学都比较快预约了面试,效率惊人