临近毕业,浑浑噩噩了三四年,即将踏出校门,此时的内心说不恐惧和迷茫是假的,但是作为祖国未来栋梁之才的我,还是非常淡定的拿出了“你不知道的JavaScript”,认认真真的学了起来,虽然此时的思绪完全不在学习上…
经理:小周,你去帮李晴调一下bug,咱们的产品今天要上线,尽快做完,大家早点回家。
我:好的,没问题,交给我吧!
晴:周哥麻烦你了,这个功能实在是太复杂了。
我:没事,小case,看我的!
然后我十指在键盘上飞快的奔跑,一行行的代码就像一件完美的艺术品,一点点展示在我的眼前…不到半个小时,搞定!
晴:周哥你太厉害了,我一天多都没搞出来,你这么一会就解决了,你帮了我一个大忙,今晚请你吃饭!
哇咔咔,美女,晚上,请吃饭,是不是会发生点什么…(#^.^#)
叮铃铃…,此时电话突然响了起来,打段了我一辈子的好事(•́へ•́╬)
我:喂?您好!
HR:您好,请问是周先生吗?
我:是的,您是哪位?
HR:我是美团的HR,看到您有投递给我们前端开发岗的简历,想约您参加我们的电话面试,不知道您现在是否方便?
我:(此时内心非常的激动,美团啊!!)有时间,有时间,我需要准备什么吗?
HR:这样的,我先向您了解一下基本情况,稍后通知我们的技术主管负责给您进行技术上的面试。
这样聊了三分钟左右的,在学校表现、是否毕业、发展规划、所学专业等,和HR结束通话后大约五分钟,电话再次响了起来…
我:喂,您好!
面试官:周先生是吧,我是美团这边的前端技术主管,我这边先了解一下你技术掌握的情况。面试官:你了解ES6吗?能不能说一下它和ES5的区别?
我:(此时我的内心有点小激动,这个问题我这几天一直在看,然后满怀信心的说)
我认为,ES6相对于ES5来说语法更加严谨了(更像JAVA语言了),我之前看过阮一峰
老师的教程,对于ES6研究了很多,ES6在ES5的基础上增加了很多新的语法,这些语法
非常有助于我们的开发,所以现在框架中都是基于ES6来开发的。
ES6中新增加了:
1.let/const:这样可以形成块级作用域,不存在变量提升的特点
2.新增加箭头函数,除了使用...arg代替了被遗弃的arguments以外,箭头函数中
没有了this,用到的this都是其上下文中的this指向。
3.新增加解构赋值,可以让我们可以快速把从服务器端获取的多维数据中的部分信息
解构出来。
4.新增加class来管理类和继承
5.新增加Promise来管理异步编程
...
此时的我非常兴奋,这个问题上聊了很多,对着面试官侃侃而谈
面试官:你基础掌握的还不错,你刚才提到了继承,除了ES6中的继承,你还知道其它的继承方式吗?
这个问题我之前看过,但是平时练习中很少用到继承,所以有点遗忘,此时我的大脑飞快的运转…
我:继承这个我记得不是很清楚了,我大概想起了一些,貌似还有原型继承、call继承吧…
面试官:恩,是有这两种,还有一种“寄生组合继承”,在项目中应用也比较多,你回去可以看一下。
我:好的,稍等一下我记下来。(虽然咱没答好,但是要让面试官看到咱的努力和认真,(#^.^#))
面试官:你对Promise了解多少?
我:了解的还可以,我和您简单说一下吧。
Promise是ES6中新增加的,用来管理异步的类,基于Promise我们可以有效的管理异步
编程,解决回调地狱问题。
Promise中有三种状态:pending-进行中、resolved-已完成、rejected-已失败,当
异步请求成功会执行resolved,失败会执行rejected
执行resolved会把放在then中的方法执行,执行rejected会把放在catch中的方法
执行。
面试官:如果我有好几个then或者catch,那么第二个及以后的then或者catch什么时候执行?catch和then中的第二个方法区别是啥?
我:….面试官:你了解Promise A+规范吗?
我:…
接下来问了我一些关于REACT/VUE框架的问题,也问了一些CSS3的问题,CSS3的回答的还不错,毕竟自己学习了很久,REACT和VUE在基础知识方面回答的还可以
1. REACT和VUE的生命周期函数(钩子函数),什么时候用?
2. VUE中常用的指令?
3. REACT和VUE中组件之间信息传递的方式?(重点是回答出redux或者vuex)
4. ...
但是在REACT和VUE的一些深入理解上挂掉了
1. REACT中JSX语法的渲染和解析原理
2. DOM-DIFF算法
3. MVVM和MVC实现的原理
4 ....
面试官:你的基础方面掌握的还可以,但是对于JS/ES6以及框架原理方面欠缺的太多了,建议你回去好好的研究一下,现在不仅是我们,包括其他公司面试的时候要求都比较严了,我们希望招聘一些技术不错的中高级前端开发者。
面试官:我这边就先这样吧,我会把面试情况反馈上去,到时候如果可以,会约你二面的。
我:好的,非常感谢您,和您面试我收获到了很多东西,我会认认真真的去研究的。
此时我的内心有点崩溃
现在前端市场发生了什么?为啥面试要求这么高啊,原本以为作为祖国的栋梁之才,自己踏踏实实,戒掉游戏,戒掉女朋友,一心专注技术的学习,能够找到一份不错的工作,但是现在看来,自己学习的东西还是太肤浅了......
于是我到知乎和各大技术论坛各种去搜,去看看目前前端开发到底需要什么技能才算过关。搜索过程中,有人说前端饱和了,对此我是嗤之以鼻的,毕竟我的很多学长和朋友,都找到不错的工作,而且公司还在大量招聘前端开发。那么问题来了,自己之所以没能找到合适的工作,肯定是掌握的技术距离市场要求有所欠缺,为此我花费了大量的时间去整理,目前市场上对前端开发的要求有哪些!
首先看一下BAT岗位级别和薪酬待遇
阿里
百度
腾讯
再谈市场形势
现在很多公司招聘前端开发(即使是实习),基本上都要求 P4+及以上了,P5的水平想找一份前端,还是很so easy的,所以接下来我的努力方向就是P5,想要具备这个水平,我们需要掌握下面这些技术。
1.原生JS(ES6)
闭包和堆栈内存以及在项目中的应用
面向对象:尤其是类的封装继承和多态,最好能够封装一些简单的插件,有阅读过部分类库或者插件的源码
设计模式:单例、原型、发布订阅、Promise等
事件代理
ES6常用的语法:重点在于和ES5的区别
ES6中的Promise,这个问的特别多,需要大家去看看Promise A+规范,把Promise彻底吃透(我一个在阿里的朋友和我说,你要是能用JS自己写出一个Promise [也就1千多行代码]),面试肯定必过了!!
......
2.AJAX和跨域
掌握HTTP和TCP通信机制:三次握手,四次挥手、浏览器缓存、DNS缓存等
掌握很多前端性能优化的方案
掌握AJAX的基础原理:尤其是对于HTTP状态码的解读
掌握多种跨域方案,最好能深知其原理,例如:JSONP、CROS、反向代理、webpack proxy代理等
掌握axios、fetch等
......
3.移动端开发
熟练掌握H5/CSS3(尤其是CSS3动画和3D效果实现)
掌握Hybrid混合APP开发,能够调取微信的JS-SDK接口
最好会小程序开发
目前会一些webGL和canvas也是加分项
......
4.框架和自动化及全栈
熟练掌握至少一种框架:REACT或者VUE,掌握全家桶的应用
vue-cli、vue、vue-router、axios、vuex、vue element等
create-react-app、react、react-dom、react-router、redux、react-redux、dva、ant design等
掌握MVVM和MVC渲染的原理
掌握DOM-DIFF算法
掌握REDUX或者VUEX的原理
webpack方面自己能够进行简单的配置(能够看懂脚手架的配置项,并且自己可以修改成为自己想要的,例如:配置各种环境)
会一些node是加分项
....
梳理完成这些技术体系,我的内心是
好在现在社区中关于前端的资料已经很多了,在很多地方都可以快速恶补这些知识,例如:
掘金: https://juejin.im/
segmentfault: https://segmentfault.com/
MDN: https://developer.mozilla.org/zh-CN/
gitHub: https://github.com/
stackoverflow:https://stackoverflow.com/
......
建议大家平时和我一样,多去逛逛,现在IT行业发展的确实不错,作为一个来自于农村的男孩子,学历不是很高,将来想在大都市有所作为,能够立足成家,还是要下苦功夫,好好学习,天天向上的。O(∩_∩)O哈哈~
如果大家感觉看文章学起来不是容易理解,我这边也找了很多的视频资源,其中有一些讲解的还是非常不错的,大家如果有想要的,可以加我的微信,我把网盘地址和密码发给大家。
[还有好多呢]
[想要的,扫码加我微信就可以哈]
本文分享自微信公众号 - 高性能服务器开发(easyserverdev)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
来源:oschina
链接:https://my.oschina.net/u/3318202/blog/4583161