这篇文章不适合拿到 BAT 的大佬及自制力特别差的人

本文只是提供复习的思路,以及我自己的一些面经,并没有具体的题目

<>基本情况

据说先把 offer
亮出来才能吸引你们看下去。目前一共有五个。分别是顺丰,拼多多,远景智能,老虎证券和贝壳。其实拿到拼多多以后很多笔试面试就没有继续参加了,比如苏宁,虎牙的面试都没有去。还有一些直接笔试就拒了。因为过了也不会去,所以也就不败人品了。

再说一下我的情况吧,本科专业是矿物加工,当时连 c 语言都没学过,只学过一门你们可能听都没听过的
VB。然后考研考到了计算机的专业,两年,所以已经过去一年多了。然后刚开始的话也不是做前端,其实真正接触前端开发是去年 11
月左右。但是真的开始系统的学习应该是今年 4
月左右。因为其实实验室开发的话用的东西不难,很多东西用不到,所以当时直接开发问题也不是特别大,但是现在看起来真是太菜了。比如今年四月左右尝试了一下腾讯的实习,因为实验室和自己技术的原因,所以只尝试了这一家。不过你们就可以通过这一家判断出我当时的水平了。当时有这么一题,写一个闭包,每次调用的时候自加
1。怎么样是不是很简单,那我当时是怎么写的呢
var a = 0; function add1(){ return a++; }
没错,我就是这么写的,今年 4 月的时候。所以也应该大概知道我当时的水平吧。

之所以说这些呢,是给大家打个气,菜没关系,但是不能一直菜。所以也是告诉大家,如果真想学好,并且有兴趣的话是可以学好的。先说一下我准备的过程吧,给大家做个参考。

<>准备过程


大概就是实习结束之后就开始准备了。因为那时还有课,实验室还有项目,所以复习的比较慢,花了大概两个月左右把红宝书看了第一遍,基本上每一章都看了。这个过程虽然记住的东西不多,而且很多东西可能理解不了,但是会让你多很多东西有个基本的概念。为第二遍做准备。没错,这本书看一遍远远不够,你还要看第二遍,而且要整理,最重要的是
复习
。我相信看一遍的人很多,看第二遍的人也有。但是看的时候整理并且经常复习的人可能并没有那么多。当然第二遍整理的时候你需要有复习的思路(后面我会提供给大家,可以做个参考)。第二遍的时候不能有不理解的地方了,原型,继承,原型链,执行上下文,垃圾回收,作用域链书上讲的不清楚,看不懂的去网上找,还是不懂自己用例子测试。第二遍一定要弄懂,除非你想来第三遍。第二遍的话总结只总结重点的几章我就整理了九万多字,并且那段时间每天早上都会复习一下,8
点复习,9
点左右结束,其实有点太多了。导致自己都快背下来了。后来的话感觉每天把前一天整理的复习一下,每个星期把所有的复习一下可能更合适一些,也有更多时间看别的。

那段时间除了看这个的话还在看 vue 和 webpack,ES6 标准入门,图解 http(稍微翻了一下 http
权威指南)。后来因为感觉自己一个跨专业的基础比较差,所以还是把精力放在基础上比较好,就暂时把 vue 和 webpack 放下了。开始看你不知道的
JavaScript。ES6 标准入门的话也不用都看,也是要有重点的看,当然这些都是针对找工作来说的。还是一样的,总结和复习缺一不可。

后面的话开始看你不知道的 JavaScript,解决了我对于 this 指向的疑惑,刚开始的话看上中两卷就好,后面有时间可以再看下。


然后提前批就开始了。因为自己本身算跨专业,加上没有实习,学习的时间不长,所以从开始的时候就积极投简历了。不管是什么岗位,我都建议提前批开始投递简历,当然,是在我前面说的那些准备工作都做的差不多的情况下。如果你什么都没做,我觉得可能安心复习是更好的选择。

开始面试以后,肯定有好多东西不会,可以通过写面经,总结的方式来弥补自己的缺陷,不能面完了就结束了。这样同样的问题你永远不会。比如刚开始我对
BFC,防抖节流,性能优化等根本不了解,后面的话也通过面试,面试完查资料了解了。这里想说的就是不懂就要问,要查,而不是过。

后面的话自己了解的东西就比较多了,高性能 js,js 忍者秘籍,前几天的话也是刚看完 js 函数式编程,最近又把 http
抓包实战看完了,了解了抓包相关的东西。

前面的话是自己复习的一些经历。里面对框架说的比较少,这里说一下原因。首先我是跨专业的,基础差,基础都没打好怎么看框架。比如你让一个会用 jquery 的
ajax 的人封装一个原生的 ajax,可能他们不会,但是我会。所以框架固然重要,但是基础是最重要的。当然框架里面的一些好的思想你还是要了解的。比如虚拟
dom,diff 算法,vue 双向绑定实现这些东西。你可以没用过框架,但是这里面的原理你需要花时间去了解。

<>复习思路

下面是我从开始找工作时整理的一些面经,大家可以参考一下。

2018 秋招前端面试总结 <https://blog.csdn.net/zhang6223284/article/details/81273180>


有些可能没有,因为现场面的时候是连着面的,所以没有整理的时间,回去的时候都忘的差不多了,而且大多数都是类似的问题,可能少数几个不一样,也不值得整理了。所以有些可能没有。

其实开始复习之前也整理过别人的面经,大致都差不多。我这里就不提供具体的问题了,因为有好多人整理过了,所以可以参考他们。但是
你在看别人整理的内容之前,最好自己已经了解一部分了
。因为别人整理的东西为了简洁可能会把一些帮助理解的东西去掉,所以相当于你看到的只是结论。你看别人整理的东西的时候,最好是用来查缺补漏,而不是用来学习。

<>JavaScript 基础

重点 js 高级程序设计 3 - 7 章,10 - 13 章,21 章

首先,基础知识一定要扎实。怎么样算扎实呢,举个例子吧,每个对象都有的 tostring 和 valueOf,谁能说出什么情况下触发哪一个
var obj = {} console.log(obj); console.log(+obj); console.log(obj=={}); console
.log(obj==={}) console.log(obj=='test') console.log(obj==='test')
很多人只是过了一下,就比如别人整理的东西上面肯定不会说的特别详细,他只是给你个结论,所以你亲自试过吗?怎么试呢,其实很简单啊
var obj = { toString:function(){ console.log('toString') return Object.
prototype.toString.call(this) }, valueOf:function(){ console.log('valueOf')
return Object.prototype.valueOf.call(this) } } alert(obj); alert(+obj); alert(
obj=={}); alert(obj==={}) alert(obj=='test') alert(obj==='test')
很简单就能测试出来什么时候用 valueOf 和 toString 了。


再比如数组哪些方法会改变原数组,哪些不会。其实这些书上都有,但是没有专门总结。因为总结不是书的事,书只负责教你知识,总结是你自己的事。一辈子不总结,一辈子都记不清。因为我也是从这种状态走过来的,所以希望大家学完一点东西以后总结一下,过段时间看一下。

如果你这两个都想的磕磕绊绊可能得看一下基础部分的内容。

<>网络

重点图解 http,极客时间的趣谈网络协议,博客

基础差不多了,还要看网络的东西,如果做开发的话,前后台都需要好好了解网络的知识。具体有 http,http
2.0,https,dns,cdn,tcp,缓存,跨域,安全,本地存储这些东西。前面那些计算机网络的东西可以通过图解 http
来做个大概的了解。这里想推荐极客时间的一门课程趣谈网络协议。如果有想试听的可以加我微信,通过我的链接购买的返利我也会返还给你,微信和链接放在最后。因为我之前也是特别头疼网络这方面的东西,不过听了以后就感觉好多了,甚至还能说下
quic
协议来装个逼。每天早上,中午晚上去学校实验室的路上听一下,反复听,这点东西听一个月就算弱智也能听会了。当然也要自己总结一下,因为有些讲的不是那么清楚,比如
https 的 pre-matser
那里,这就需要你自己去查一下。对于跨域,缓存,安全这些东西网上一找一大堆,我自己也整理过,所以也不是特别难,可能刚开始了解的不多,会觉得好难,其实看下来以后会觉得没那么难。这里特别要注意的就是
cookie 的一些属性,需要记一下。

<>html 和 css

css 权威指南 2、3、7、8、10 章,w3c,博客

html 首先要理解语义化,然后就是一些语义化的标签。语义化的好处,新增的一些特性。给你一个页面结构要能使用语义化标签准确还原。

css 这部分的话其实考的比较多的是一些实际的东西,但是首先基础你要知道。比如最基本的盒模型,还有一些 css3
新增的选择器,属性等。然后最经常的就是让你实现三栏两栏布局,所以基本的布局方式你也要了解吧。然后就是垂直居中,移动端适配等考的比较多。这些东西其实都是需要自己整理,然后一段时间复习一下。

<>ES6

重点 ES6 标准入门 2、3、7、11、14、16、18、19、22、23

ES6 重要且常用的特性基本都在这里面的,具体常问的有 let const,class,箭头函数,promise,async await,module
模块化。

<>算法

重点剑指 offer!!!

面试考的算法题 90% 都是剑指 offer 上面的,所以剑指 offer 也一定要好好刷,经常刷,刷完了继续刷。这样面试的时候 90%
以上的算法题就没有问题了。但是如果笔试想表现的好一点的话可能就得刷 leetcode
了。但是我觉得还是得首先把基础概念弄懂了再刷比较好,最近极客时间也新开了一门算法课。想报名的可以通过我的链接,加我微信,返利我也会返给你。当然,算法是长时间的事,就算不是为了面试也建议一段时间刷几题。

<>框架

博客,视频

框架方面虽然我暂时了解的不多,但是下半年也准备花时间在这上面还有 nodejs 上面。就算你不会,下面这几个问题你也要弄懂。

mvvm 和 mvc 的区别,双向绑定原理,虚拟 dom、diff 算法,spa 原理。

<>模块化、工程化

这一块的话 ES6
标准入门里面有,让后网上也很多,最主要的是自己实现一下,然后比较里面的不同。因为实验室技术比较落后,这方面的东西没有用过,所以我也只是通过简单的 demo
测试过他们中的一些区别,了解的也不是特别深。但是一定要亲自动手实现。这样才能加深自己对这方面的理解

这些东西你准备好的话,基本一面就没问题了。但是如果想进大厂的话,计算机基础,后台的东西你都要有所了解,因为大家能力都差不多,所以面试官最重视的还是你的基础。

<>总结

刚开始的时候肯定是看书,形成完整的知识体系。然后针对某些重点逐个攻破。最后的话可以看一些他人整理的资料,面经,查缺补漏,经常总结。这里面最重要的就是经常复习
,有代码一定要写代码。最忌讳的就是看完就结束,不总结,不复习,这样知识留存率太低了,可能你暂时记下来了,但是过段时间就忘了。重要的函数要背下来,比如我经常每天隔几天写一下深拷贝,防抖节流,compose
函数,apply,bind,call 的实现等。这些常用的我觉得考到的可能比较大,并且能加深自己的理解。


当然了,通过写博客的形式来总结最好不过了,因为有人与你互动,所以能够提高你的学习积极性,但是需要注意版权的问题,从书上整理的内容如果大规模引用的话,最好标注出处。而且如果有面试官问到的话,经常写博客也是个加分项。接下来准备把计算机基础,算法,框架,nodejs
这些东西补一补。虽然秋招结束了,但是学习是一辈子的事情。

<>附:书单及面经

书单:JavaScript 高级程序设计,你不知道的 JavaScript 上中,ES6 标准入门,CSS 权威指南,DOM
编程艺术。(可选)JavaScript 忍者秘籍,高性能 JavaScript,深入浅出 nodejs,高效前端。

面经:2018 秋招前端面试总结 <https://blog.csdn.net/zhang6223284/article/details/81273180>

微信及链接: