背景
大家好,我叫小黑,非重点大学毕业生,大四下学期开始自学计算机专业,毕业后在广州的4399做前端开发。
虽然说是做前端,但其实我做的很多,很多时候都要自己写后端界面、数据库,部门经理也希望我做后端,所以一年后我就打算换个工作,专心做前端。
Yupi:我并不是名校的学生,大四的时候才开始自学计算机专业,找了一份前端的工作,也就是说我付出了很多努力。而且工作之后,我还能坚持自己的学习方向,有明确的目标,这很珍贵。
面试前准备1.简历
校招简历不需要写项目、实习经历,有些公司甚至允许985学历的应聘者入职。但社招更注重技术和业务维度,如果是商业巨头,还可以弥补技术方面的不足,考虑的维度比校招更加多维。所以简历作为第一步,是至关重要的一步,在开始求职之前,先把简历准备好。
Yupi:对于名校的学生来说,简历上没有项目或者实习经历可能还好。但是对于比较普通的大学的学生,我建议你们多做项目,尽快找实习,不然简历上就没有亮点了!我会分享我的简历写作技巧和模板,在公众号【程序员Yupi】后台回复“简历”即可获取。
2.算法
LeetCode 主要练算法,你不一定能写出中考题,但是你一定有常见算法的思维。面试季保持对算法的思考非常重要,不仅体现在写算法题上,还能帮助你在和面试官交流一些源码思路的时候,更加流畅的表达和讲述。
作者的复习思路(菜鸟的思路)是好记性不如烂笔头,一道题一定要在7天内重写一遍,避免受到遗忘曲线的影响。对于一些比较难的、经常考的题目,建议多写几遍,才能记住思路。写题的时候,不必拘泥于一道题,如果做不出来,就多看同类题,学习算法思想,理清思路,然后再做,一定要找到解题的感觉。

四月和五月的简单练习
小黑也提到,好记忆不如好笔,学算法一定要多写,不光要写代码,还要写解题思路,这样有利于强化记忆和复习。
有关我如何学习算法的更多信息,你可以阅读这篇文章:
3. 审查和准备
因为我的主要求职目标是前端,所以主要复习了前端,也复习了一些后端的知识。
前端:计算机网络(http、tcp、响应头请求头等)、前端三剑客(HTML、CSS、JavaScript)、Vue框架(源码)、Webpack(常见优化思路)、微前端(架构及发展趋势)、node(Koa框架)、设计模式(主要是MVVM与MVC)。
后端:数据库、Redis、Linux系统、Nginx等。
只要阅读几十位伟大专家的面试经历,您就准备好了。
审查材料及时间安排如下:
第 1 阶段
4 月份,我专注于基础,检查遗漏并进行弥补。我寻找有良好总结的博客或 Github 项目。我推荐我男朋友的(不太好)日记:
使用方法:

朝阳日记
他的博客总结的很全面,分类很完善,我复习基础的时候基本每天都看四五个小时,对于我这种基础知识比较薄弱的新手很友好,推荐大家看一下。
第二阶段
5月份的复习主要集中在框架和业务优化方面,组织了几次模拟面试,发现自己对Vue完全不熟练,于是把Vue文档和源码分析从头到尾看了几遍,慢慢理解了一些面试官的问法。
对于业务优化,要总结日常业务中遇到的坑和优化点,比如优化首屏加载,可以从多个维度来讲,组织语言的时候尽量从各个点出发,不要把各个点混在一起讲,否则就算你说对了,面试官也会觉得你的思维很乱。
5月份基本都在复习框架,以及看一些高级的常考主题比如ES6,Webpack等等。算法是贯穿整个求职周期的,所以这个月也简单复习了一下。
Vue源码分析:
更详细的知识点我之前收藏了一篇大佬写的文章,第一、二部分基本覆盖了所有前端Js的知识点,给有兴趣的同学做指导:
点评要点总结:
优越的:
中间:
Yupi 认为这是非常好的复习路线。先打好基础,然后由浅入深的看框架,结合项目和工作实践分析框架(中间件)的作用。整个过程中,不断复习算法,看面试经验。
对于想要学习前端的朋友,也推荐大家看一下我整理的内容,帮助大家快速了解前端的关键知识。
4. 好书推荐
阅读一些好书可以帮助你理清一些枯燥的知识点,比如关于计算机网络和 JS 的一些概念性的东西(作用域等)。下面是几本可以在面试季前多看的好书,帮助你复习和理解:
你不知道的 JS 知识(第 1、2、3 卷)
推荐理由:非常好的一本,把js讲得口语化,语言风格幽默,例子较多,容易理解。

《你不知道的 JavaScript》(第一卷)
高级 JavaScript 编程(又称红皮书)
推荐理由:入门级教材,初学者必读

高级 JavaScript 编程
《Tcp/Ip协议族》
推荐理由:这是一本大佬推荐的好书,对TCP的握手和挥手讲的非常详细,如果在面试的时候能这样描述,说不定能赢得面试官的好感。
“简单理解节点”
推荐理由:Node 文档还是偏向应用的,有用的时候才看,读起来有点难,可以先从这本书开始。
《深入浅出Webpack》(尚未开通,计划近期开通)
《ES6入门教程》
推荐理由:阮老师的作品,只是看过,不多赘述

ES6 入门教程
另外还找了一些课程看,最好是一些计算机网络方面的课程,比如Bilibili上有些老师的网课,也很不错。
使用方法:
这几页在我第二次百度面试谈网络的时候给了我很大的帮助,面试官对这一点也比较满意。
Yupi:这些都是前端方向的经典书籍,可以在编程导航()里免费下载。
接下来我来分享一下我参加腾讯、阿里巴巴、百度等大公司多轮面试的经历。
腾讯云面试经历(工作地点:西安) 1.第一次面试
刚刚开始复习,虽然题目很简单,但是真的被折磨死了==
自我介绍
介绍一个满意的项目,亮点(模块化思维)
你能反应过来吗?(没有,我还没学过)
其他技术栈(react、angularJs、jquery、vue3 掌握)
Vue 掌握程度(掌握工具,了解其中的一两种)
Vuex 简介,工作原理(回答的不好,评论不多)
eventBus介绍,与vuex的比较,优缺点
如果没有vuex会有什么问题?(组件值传递;避免频繁请求)
频繁的后端请求让人压力很大。有什么方法可以避免吗?
答:1.防抖,限流 2.本地缓存或者sessionStorage
另问:无法使用缓存保存怎么办?答:Node中间件不接受请求
还有问题: 没有 vuex 怎么缓存? 回答: 那用全局变量啊?
另一个问题:我必须使用全局变量吗? 答案:不,但我不知道还有什么...
元件值传递方式(8种,详见朝阳日记)
EventBus 介绍,业务场景,与 vuex 的对比,优缺点,你对 EventBus 熟悉吗?(回答:不熟悉,这部分比较关键,很详细)
子组件如何修改父组件的值(通过 v-model 或 $emit)
无法使用 v-model(相当于询问 v-model 如何工作)
v-model:语法糖,本质上是双向绑定,@input(onInput事件)
Vue 与 defineProperties 双向绑定的弊端(顺便解答一下 Vue3 优化)
你知道vue3吗?(没有,我还没开始学)为什么用.value来读取值?
跨域的常见原因,同源策略的作用,如果没有跨域会怎么样(XSS攻击,CSRF攻击会比较容易)
XSS 和 CSRF 攻击
为什么说CSRF攻击是利用网页和浏览器信任呢?
我回答了“cookies”,但是面试官不满意,还有其他的吗?我回答了“同域”,但是后来我又回来说“跨域,同源信任”,还是感觉不对。
跨域方法(JSONP、设置请求头)
JSONP 的缺点
多个跨域请求头如何设置(数组) 前端响应头的格式是怎样的(我回答的是来源,面试官也说基本正确)
前端到后端请求详细流程(301、302、304......)
选项预检请求功能(免费……完全不熟悉)
函数式编程与面向对象编程的区别,优缺点(再次免费……)
闭包是函数式编程吗?(是的)
补充项目(多线程 gif 压缩、web worker)
避免二次请求,一次功能(我回答了防抖和http2.0进程限制,但是面试官说没有后者问得那么深)
要求评估(面试官回答说他们的技术栈是React,很少用Vue,应聘者的Vue基础不深,需要巩固一下,不过一年经验就够了,需要慢慢积累)
面试的结果在意料之中,几天后显示面试失败,不过我收到了一封感谢信。
Yupi:你能把面试问题和回答记录得那么清楚详细,说明你在面试后立即复习过。这是一个非常好的习惯。面试后一定要积极总结,因为每一轮的问题都可能在后续的面试中再次遇到。
阿里巴巴-创新集团UC事业部面试经历1.第一次Leader面试
面试官原来是我内部的推荐人,也是部门领导,看上去气场很强,但我还是专心听讲,没有被吓到。
自我介绍
疯狂提问公司项目、业务,遇到的问题,如何提高运营留存率等(撕逼业务半小时)
您是否对机器进行过压力测试? 大概的读取或写入容量是多少? (答案:数十万,读取和写入的组合)
累计充值接口实现时如何保证实时性?
看到你项目中写了vue,问你一个关于vue的问题(终于正常问了),v-if和v-show的区别(就这些)
osi七层模型(面试前没看,面试官笑我是不是忘了)
webpack
公司结构是怎样的?
公司数据库是怎么部署的?(分布式部署,一台源机器做映射)
反问句(商业、建筑)
整个面试体验非常糟糕,感觉整个过程都只是既定的计划,不像是面试。可能老板面试就是这样的吧。面试完面试官告诉我会再找一个人横向对比(指养鱼)。6月7号下午我收到了复试通知,6月8号晚上进行了复试。
百度 - 百度云盘事业部面试经历
在群里认识了一位百度云的朋友,说百度云在扩招,让我去试试。不得不说,虽然百度的招聘体系不太好(经常被一些HR实习生欺负),但面试体验非常好,和面试官聊得很开心。点赞!
导师
自我介绍
你在学校学过哪些课程?学过多少数据结构?栈和队列有什么区别?
CSS 垂直居中
弹性布局
网格布局
移动布局、移动适配
介绍ES6(我花了十多分钟讲了weakMap,weakSet,promise等)
Promise源码介绍,面试官自豪地说我居然真的写过
怎么学习,看什么书(balabala),小红书好用吗,说说你的感受
项目问题
从断点恢复文件传输的思路
Node、koa框架,开始撕逼业务
反问句
第一次的谈话还是比较随意的,面试官对我的项目还是挺感兴趣的,也跟我聊了一些商务上的事情,面试体验还是不错的,更像是一次技术交流而不是面试。
Yupi:这一轮面试是典型的一对一,重点考察基础知识,也会问一些业务场景的问题,所以基础还是要打好。
与业务运营部负责人的第二次面试
看了其他朋友的面试经历,本以为第二轮面试会偏向业务一些,没想到被背叛了(哭)。
自我介绍
状态码304如何设置?Cache-control有多少个属性?
TCP 和 UDP 之间的区别
TCP如何保证数据稳定性?(谈三次握手、滑动窗口、慢启动、拥塞控制、超时重传、快速重传)
CDN原理,CDN回源怎么做(之前很困惑,因为在我们公司CDN是划到运维层的)
如何扫码登录?手机和PC都需要建立长连接吗?
SSO 单点登录
大家做过小程序吗(我大学做过),它和H5有什么区别,为什么没有DOM操作,JS加载和页面加载是同时进行的吗?
webpack 介绍了 tree-shaking css-treeshaking 插件和 loader 的区别,你有没有手写过插件?
进程与线程的区别,以及线程之间的通信方式
流、节点流的概念
如何使用node读取20g文件
node 和 php 的区别
vue-if 和 v-show
Vue 模板渲染(源代码)
父子组件的挂载
公司项目花絮(解答了前端共享进程池)
我什么时候可以开始工作?你对新公司有什么期望?
提问环节
毫无疑问,这一战我伤痕累累,虽然通过了第二轮面试,但面试官深挖了一些原则,问了不少业务场景问题,看来我还需要好好学习~

三位部门经理面试
面试环境很吵,有好几次我都没听清楚面试官说了什么。当时家里的网络不是很稳定,不过总体来说对话还可以。涉及一些开放式的讨论话题,只要回答合理、真实,我就可以自由表达。
自我介绍
描述你的优点和缺点
描述您曾经从事过的最困难的项目。
你为什么想换工作?
技术栈不一样,有想过重构吗?难度在哪里?
定位你的团队
您遇到的商务沟通问题有哪些解决方案?
如果离开百度,你想获得什么技能?
职业规划
新公司的理想资源
如何形成自己的商业方法论
您对使用百度网盘产品有什么建议吗?
对加班的看法
反问(部门架构、技术分享周期、团队领导方式)
和部门经理聊了一会,发现部门经理比较重视个人职业发展,整个部门比较偏向技术交流,技术氛围很浓厚,招的人都是好马。这一刻,心里只想为百度跳动。

四面 hr面
主要就是了解一些个人信息,年薪,去北京的意向等等,比较常规。
结果
6月7号晚上,我收到了百度的offer电话,当时也在面试阿里巴巴,所以就谈了一下薪资,很有可能去百度北京(农村小伙子进城了)。第一次社招的旅程就此结束。分享好运,祝大家秋招顺利!
以上就是小黑的分享,他非大学专业,非专业,自学半年后在一家4399公司找到了一份前端工作,工作一年后得到了多家大公司的面试机会,并成功拿到了百度的offer。这些经历看似顺利,但从他的面试经历和我之后与他的交流中,我发现小黑身上有很多优秀的品质,比如:

我和小黑的交流
虽然进大公司也是需要天时地利人和,但是我说了,运气也是实力的一部分,小黑就是靠着自己的努力,才一步步走到前台,然后主动出击,最后拿到了这份诱人的offer,敬佩!

最后祝大家节日快乐!如果觉得这篇文章不错,希望大家点赞+支持,给我一点创作的动力❤️

先前的建议