历经两个月20应届社招终于结束了,今天主要分享一下走社招的个人成长经验总结,首先做一个自我介绍。

本人双非本科学历(省内叫“二本”,省外叫“三本”),今年2020应届毕业生,四级考了三次未过。大学做过省内的软件比赛,省赛感觉对就业没啥用,大二做移动端 Android 开发,大三开始转到前端,从零自学前端不到一年半,在二线城市有四个月的实习经历。

由于学校环境因素,错过春招和秋招,校招完全错过,不对,好像这野鸡大学没有校招吧,所以凭着运气想走走社招,看看社招的水深不深。

由于学历限制,社招要想约到面试很难,即便你很强,但是大部分好的公司为了减少招聘筛选范围成本,简历大概率会被pass 掉。社招和校招给我最大的差距就是,公司能不能给你一个面试展现自我的机会。

社招总共面了 6 家,5 家自己海投,1 家内推。5 家拿到 offer,最后选择了内推的那一家。

下面是个人社招面经,小鹿可以保证所有经历和总结的真实性和现实性。由于每个人的技术水平和成长经历不同,不敢保证一定对你有所帮助。

6 个面试中其他 4 个面试内容相对于简单或趋近于正常水平,其余两个有点挑战性。

公司一、二:笔试 + 面试(30-60min)

笔试题如下(其中一家,另一家忘记了):

一般笔试通过后,会进行线上视频或者与电话语音面试,前两个公司大多数问是一些前端简单基础问题和实际项目。

  • 自我介绍

  • 平常项目用什么来布局?给你两个 div 嵌套,有几种方式实现垂直居中?(大约说了四五种)

  • 如何实现两边固定,中间自适应布局?(双飞翼或者圣杯)

  • 各自有什么区别?都是如何实现的?

  • Flex 布局又是如何实现上述效果的?

  • 数组的常用方法有哪些?(ES5、ES6中)

  • 闭包了解不,说说什么是闭包?

  • 闭包的作用(保护、保存)

  • 应用场景?你在项目中分别应用到哪些地方?(选项卡、团队合作)

  • HTML 中 input 中 type 属性有几种?(当时说了三种,其他忘记了)

  • flex 布局中,你经常使用的属性有哪些?

  • 浏览器到页面呈现经过了哪些过程?(DNS、TCP三次握手、构建 DOM、构建 CSSOM 树、合成渲染树、渲染绘制,如果放开说,能说半个小时到一个小时)

  • 说说你看过的 Vue 源码内容。(从双向绑定到依赖收集再到批量异步更新,吧啦吧啦说了一大些)

  • 开源项目后台 java 自己写的吗?(数据库用到的是 mysql,服务器用到的 tomcat)

  • 有没有实习时候的项目展示地址?(公司内部,不开源)

  • 问了我其中一个项目,你项目中主要负责写哪些功能?(组件封装,说白了就是造轮子,颜色选择器、下拉框、数字框等)

  • 你的优势是什么?(技术上:前端性能优化 其他:社区影响力 + 善于总结和分享 + 业务能力 + 沟通能力)

  • 实际项目中遇到的性能优化问题,如何解决的?(从发现问题、然后定位问题、最后解决问题说起)

以上是普遍小公司喜欢问的最基础的技术知识点,尤其是一些 API,其实每个人的回答都一样,所以看不出面试者之间的差距,一般给的薪资也是正常水平,表示很无感。

我简历上写的熟悉 Vue 源码和 Webpack 源码以及设计模式和性能优化相关内容,但是并没有被仔细问到,可能面试官对源码不感兴趣,可能对业务更感兴趣吧。

PS:个人感觉面试问 API 有点多余,有些 API 虽然记不住,但是项目中用到基本搜一下就可以,没必要死记硬背的。

公司三:面试(1h)

公司三是一个偏向于复杂数据处理业务相关的,对数据处理能力要求很高,所以整个面试过程直接对于一个实际的复杂数据处理业务为题。

当然,限时 45 分钟,整个过程面试官是需要监控你的桌面的,对实际的业务数据处理考察很高。

主要是对数据的扁平化处理以及数据格式等转变,当时的题目处理的数据业务逻辑类似于三级数据联动。

面试官说用什么技术都可以,当时用原生 JS 做的,时间到了,并没有做完。可能四个月没有手写代码了,有点生疏了,所以,面试就此结束。(当是不应该用原生 js,做起来比较慢)

公司四:笔试 + 面试(1h)

公司是个创业公司,但是没想到从笔试到面试,基本都是对算法考察,后来才知道是个大佬。最后顺利拿到 offer,并给到期望薪资。

1、笔试

笔试面试,是一道 leetcode 上的题,有关数组的。一个无序数组中两个数之和等于给定的值 k。

直接写了哈希表的优化方案,笔试筛选过了之后第二天直接线上视频面试。

2、视频面

  • 自我介绍

  • 看你用过 Git,知道 git 的底层原理内部数据结构吗?

  • 平常用到哪些命令?(常用的命令,实习的公司用到的是 SVN)

  • Git 和 SVN 的优缺点?知道 Git 的某个高级用法吗?(忘记是哪个命令了)

  • 来做到算法题吧。面试官将提前准备好的题目发给我。

感觉是笔试题的升级版本,找出一个无序数组中多个相邻数据和等于给定的值 k 的值。

面试官说可以写代码也可以先说说思路?我先将代码写了一遍,然后根据代码讲给面试官,面试官说可以,问我当前代码的时间复杂度为多少?能不能可以优化?

空间换时间,借助哈希表将时间复杂度降到 O(n),然后面试官开始问项目相关问题。

  • 项目中,如何做的性能优化?

  • 还有其他优化方案吗?

  • 你的优缺点是什么?缺点如何去弥补的?

  • 你的期望薪资是多少?

反问环节

这次面试,小鹿是有备而来的,面试前我去公司的产品 PC 端以及移动端发现了不少的 bug,最低级的开发问题,是控制台中存在很多日志信息的输出以及错误的弹出。

公司主要做什么业务的?前端面临的挑战是什么?前端团队多少人?为什么公司产品有这么多的 bug 和问题?

面试官首先介绍了一下自己,清华大学毕业,美国 MBA 留过学,在字节跳动待过几年。(这么厉害,咋来创业公司了,好奇)

后来和说了原因,大厂业务相对比较成熟,试错成本很高。之所以来创业公司,可以从零开发一个产品,学到的东西多。后来谈到自学方面,面试官说技术提高和大厂没有绝对的关系,还是主要看自我提升和不断学习,说白了,在哪都一样,主要还是看自己。

关于产品 bug,是因为之前公司的产品是给外包出去的,最近打算自己找人重构开发,这些 bug 都是外包的开发人员留下的。(这锅甩的好,哈哈哈~)

面试官人很好,也很坦诚,把公司目前真实的状况一一和我解释清楚了。后来按照我的期望薪资给了 offer,我也很有意向去这样一个公司,因为在这种公司会成长很快。

公司五:笔试+三面(3h)

这个公司主要通过朋友内推,如果走社招海投,我这学历估计门都没有。

1、笔试

一道天猫的算法题。

2、7.28 一面(1h):

以为没有后续了,不料,三天过后迎来了一面。

  • 自我介绍

  • 面试官说先做到题吧,腾讯会议分享屏幕全程监视,题目如下:

说实话,当时看到题目有点懵逼,对于一个英语四级没过的人,题目都是英文的,当时有点不知所措。但是平常算法题的训练方法也是看的英文题目,没想到关键时刻就用上了。

读完题目之后,和面试官确认了一下题意,然后开始写代码。写了大概 15-20 分钟后,我开始做边界条件测试,测试完几个边界条件之后,这时,面试官说这样可以了。

然后开始根据简历,开始问一些技术问题。

  • MVVM 和 MVC 以及 MVP 的区别?(MVP 之前开发安卓的时候接触过,忘记了)

  • 双向绑定的原理?(之前手写过,就把实现过程说了下)

  • 父子通信的方式?如果让你实现父子组件双向绑定,你如何设计?(额......,回答到了 input 双向绑定了)

  • Vuex 的几个模块说一下?

  • Action 如何异步使用的?(顺便说了下为什么有 Action 以及和 Mutation 的区别)

  • 垃圾回收

  • 为什么使用垃圾回收(内存泄漏)

  • 垃圾回收方法(2012年之后,用到了标记清除,因为引用计数存在问题)

  • 如何手动管理内存(全局引用类型手动设置 null)

  • 闭包(什么是闭包,闭包的作用,保护和保存,项目中哪里使用到闭包两个作用,分别举例)

  • 什么是BFC,如何创建 BFC(说了记住的一点,面试官说没关系)

  • 算法题中 delete 一个对象属性key 和 value 什么区别?

  • 如果在浏览器控制台中输入 delete 会发生什么?(我扯到了内存和堆,后来面试官解释了一波,什么不会发生,尴尬)

  • 什么是冒泡和捕获事件?

  • 冒泡和捕获的顺序问题?(说了一个实际问题)

  • 说说 async,项目中如何使用的?(说到了下底层实现原理,Generator和 promise 的语法糖)

  • HTTP 了解哪些?(主要展开说了 HTTP 缓存)

  • 项目中组件库,封装过哪些组件?(颜色选择器、下拉框、特殊数字框等)

  • 项目中遇到的性能优化问题,如何解决的。(首屏渲染缓慢问题和原生性能优化问题)

  • Webview 与 JS 交互的几种方式;

  • 对混合开发有了解吗?(没做过)

面试过程中,记住的只有上边这些,然后到了反问环节,就问了一个问题,给这次面试做个评价。

面试官首先说了自己的经历,说和我经历有点相同,后端干了三年转到前端。后面说的对我评价有点高,我对你评价是你的技术相当于前端两年的开发经验。

PS:感觉面试官太看得起我了,我个人对于开发经验的看法是,开发经验不仅仅是从基础的掌握深度和算法来衡量的,最主要的是业务能力,而业务能力在面试中很难一下就考察出来,而且大部分应届生没有接触过太过的实际项目,所以这一点还是很难衡量出来的,也是应届生最缺乏的东西。

虽然我个人从大二接触企业实际项目,但是不至于到两年开发经验水平,可能每个人角度不同,技术高度不同,这里就不多强调了。

不一会,HR 打来电话,一面过了,明天同一时间准备二面。

3、7.29 二面(40min)

可能是前端的主要负责人,问的比较深。

  • 自我介绍

  • 看到简历中有读过 Vue 源码,问 Vue3.0 即将发布,有什么新特性?(其实我想说的是研究过 Vue2.0 的源码和核心原理)

  • 看你看过 webpack 源码,说一说。(之前自己实现过简易版的 webpack,从打包后的文件收起,webpack 分析预处理,AST 语法解析再到打包好的文件,以及 loader 和 Plugin 如何处理的文件)

  • 项目中手写过 loader 吗?(额,没有......)

  • HTTP/TCP 了解哪方面内容?(主要深入说了下 HTTP 缓存和四种缓存位置,分别适用于什么场景下)

  • 离线缓存有什么特点

  • 你个人优势是什么?(性能优化)

  • 说说你对性能优化有哪些认识?(从项目出现的首屏渲染问题,然后讲到 webpack 性能瓶颈,六七种解决方案,然后就是 Vue 项目的性能优化,大概说了五六种)

  • Node 了解不?(项目中只简单写过接口)

  • 然后问了一些 JS 相关的知识点,具体忘记了

  • 未来的个人规划?(争取往全栈发展)

  • 最后问了下期望薪资

二面很多地方都会逐渐深入问了很多,明显感觉有点吃力,这时候自我估么着会凉凉。

反问环节,主要问了下面试官自己哪方面掌握的不太好,即使没过,也能有不少收获。

面试官回答,有些源码的原理还是不怎么深入,HTTP 没有过多展开问你,作为应届生的话,总体感觉掌握这个程度还算可以。

以为要凉凉,过了一会 HR 打来电话,二面通过,明天下午三点会有三面。

4、7.30 三面(1h)

以为最后一面是 HR 面,后来面完才知道是技术总监。面试前和我说,这次面试不会过多问技术问题。

  • 自我介绍

  • 班级成绩排名(前几名,面试官夸了下,学习还挺好)

  • 怎么安排实习和上课的时间(这两者没有同时发生过)

  • 大学学了哪些课程?有没有在项目中用到。(说实话,三本,课上能讲给你啥,能入门就谢天谢地了,大多数老师没有实战经验)

  • 简历上写了熟悉网络原理,说说哪个方面?(http缓存,强缓存和协商缓存,从 HTTP1.0 说到 HTTP1.1 吧啦吧啦说了一大些)

  • 排序熟悉吗?有没有在项目中用到过?

  • 快排的时间复杂度?

  • 归并呢?哪个更好?(说了快排,顺便说了下理由,面试官说正想问你理由,你竟然提前说了)

  • 说说你知道的排序有几种?(说了十种,冒泡、选择、插入、计数、基数、桶、堆、快排、堆等)

  • 项目中用到过什么排序?(说了 Array.sort API 的内部原理实现,一般项目中,不会自己写排序)

  • 你认为算法重要吗?为什么?实际项目中用到什么算法?(在封装组件的时候用到了树和递归,比如多级下拉树)

  • 学习一门新语言你是怎么学习的?(What、How、Why)

  • github 自己在写吗?现在还更新吗?动画怎么做的?为什么会分享这些算法解题思路?(自己在维护,面试期间没有更新,分享第一为了做复盘总结,第二,帮助别人)

  • 说说在实际项目中用到的tcp/http相关知识。(HTTP 缓存)

  • 三次握手和四次挥手了解吗?

  • HTTP在哪一层?

  • 五层模型了解吗?分别是?每层对应的协议是?

  • CDN了解吗?说说看?(简单说了下,让我再多多去了解下)

  • 场景提:给你一个网站,首次渲染很慢,如何定位问题,如何进行优化?(分别从 webpack 方面、Vue方面、网络方面以及缓存方面还有 *** 依次做出回答)

  • 最后,目前有没有offer,期望薪资是多少?(有 offer)

反问环节

前端主要做什么的?(金融大数据分析与处理,前端对算法和大数据处理有较高要求)

最后问了下什么时候给通知,最早两天后。因为之前答应一家两天后入职,如果这家能过就去这家,反正挺纠结的。最后朋友和我说,正在讨论对你接下来的培养计划,然后我就拒绝之前那一家了,周日晚上收到正式 offer。

总结

通过这些社招面试,收获了很多,尤其是对自己的一个技术定位,接下来如何去规划学习路线。

从上一家实习裸辞到现在,差不多四个月的时间,然后再家收完秋一直在找工作状态。有时候真的是缺一个机会,这个机会有时候真的靠运气,天时地利人和嘛。

能不能拿到机会靠运气,拿到机会能不能过,我认为靠的是实力,实力来自于日积月累的努力和能力。

走社招我最大的一点感悟分享给你们的是“优势”。

你算法牛B算优势,你项目经验也算优势,网络原理强也算优势,自己从零开发一个小产品到推广也算优势......

从社招海投,到面试自我介绍,都不断突出自己优势,才会让面试官欣赏你。因为社会很现实,往往以偏概全,想小鹿这种学历低的,简历看都不看。你说学历低不代表能力差,但是公司为了筛选成本低,肯定先 985、211优先,招聘要求明确规定的。

高要求

面试了这么多家,在面试中验证了一个问题,平常做啥事都要以最高要求为准,在关键时刻会有不同的效果。

比如算法,很多人认为前端大多数用不到算法,所以就忽略了,万一以后遇到了前端有关算法的工作,那么机会基本会在手中溜了。

我个人认为属于那种比较偏笨的人,对于刷算法,真的不是我强项,能做的就是反复刷,反复总结,反复看,有些东西看多了,自然而然成了下意识,逐渐成为了自己的东西。

自学经验

其实我大三从安卓转到前端确实稍微晚了点,自学方面可以说是一个野生的前端。

记得面试官问了一个问题,我印象很深,平常自学喜欢看书还是视频?我的回答是,只有对自己有益,无论是书籍还是培训机构资料还是付费的,我都会买来看,对自己知识体系查缺补漏。

而且掌握一个知识点,要足够的深入,二面的时候,我个人明显感觉很吃力的,要深入到知根知底,这也是你的优势所在。不然每个人面试背的都一样,那就没啥区别了。

面试技巧

无论面试官问你什么问题,你要引导面试官往你会的方面说,之前小鹿写的「前端面试小册」为什么会有知识线,因为面试官一个关键词,我们都可以说它半个小时到一个小时,这很能在面试中凸显出你的优势所在。

而且会出现一个出乎意料的结果,你能说的基本说到了,面试官突然发现这个知识点没啥可以问到你了,而且好感度明显上升。

对于面试准备,我真的没有太多时间去充分准备,只能把我能够学到的掌握起来,然后表达清楚给面试官这就足够了。

最后一个必杀技

这所有的一切,我都记录在之前写的文章中,包括很多面试知识点,自学方法,之前都基本写到过,之所以我写出来,是因为我觉得有价值,值的分享给他人看。所以,有空没空的,多翻翻之前的文章,说不定哪次面试就能碰见了~

大部分的面试题基本在之前的前端小册中总结过,但是还远远不够的,应届社招很注重项目经验和实战,所以配上实战食用更佳!

社招这一路走来,比想象中的要难,巴菲特有句话叫做,在别人贪婪时恐惧,在别人恐惧时贪婪,整个社招,历时四个月,我一直在等待一个机会,机会来了,把握住,那么结果不会太差。

以后就是社会人了,留言的老铁都嚣张点!图片

©著作权归作者所有:来自51CTO博客作者mb5fe1601ede528的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 老大,我可以在实际项目中尝试新技术吗?
  2. 入职一个月,我在项目中犯了的哪些错?
  3. 项目经理小姐姐非要给我讲一讲,项目开发规范和流程!
  4. 项目版本上线,小鹿获得最佳 Bug 奖!
  5. 原理 + 代码|手把手教你用Python实现智能推荐算法
  6. 【项目分析】度宇宙初体验
  7. 12个令人惊奇的CSS实验项目 [每日前端夜话(0x1D)]
  8. Github | 推荐一个Python脚本集合项目
  9. DBSCAN密度聚类算法(理论+图解+python代码)

随机推荐

  1. 0926MySQL中ICP索引下推
  2. 【转载】----CentOS 6.5下安装MySQL 5.6.
  3. 安装mysql5.7解压包中遇见的问题
  4. Linux 下整合Apache+tomcat+mysql
  5. Web分页显示数据
  6. Navicate for MySQL 的一点细节问题
  7. 请求卡在ActiveRecord :: QueryCache中间
  8. MySql-5.5安装包及文档
  9. Mysql_案例1:查询出每个部门工资最高的员
  10. 填充数据库的返回值