曾经老师看不起的前端开发,现在却斩获多份大厂 offer,最终走进阿里

相信你们看到这样疑惑的标题,必定会有不少的问号。什么是前端开发?为什么会被老师看不起?又如何走进阿里的?前端

别急,咱们一个一个来回答。git

回答这些问题以前,我先作个自我介绍,我是来自中南林业科技大学计算机科学与技术专业的一个很普通的大三同窗。我是一名很普通的前端玩家,凭借过人的运气,最终在 2020 年春季校园招聘,斩获了阿里腾讯等多家互联网大厂的实习 offer,并最终选择走进阿里。github

什么是前端开发?

在软体架构和程序设计领域,前端是软体系统中直接和用户交互的部分,然后端控制着软件的输出。将软体分为前端和后端是一种将软体不一样功能的部分相互分离的抽象。web

—— 引用自维基百科面试

维基百科的解释已经至关到位:前端是软件系统中直接和用户交互的部分算法

那么试想一下平时咱们用的软件,哪些是与你直接接触的?编程

没错,就是你看到的可操做的部分。你网上冲浪看到的每个网页,你用过的每个小程序,你手机上安装的每个 APP,甚至电脑上安装的客户端程序,均可以被称为前端。小程序

前端是一个大且宽泛的概念,涉及到的知识以及体系众多,光网页开发语言,就要学习至少 3 门(HTML,CSS,JavaScript),更别说小程序、APP 和客户端了。除此以外,数据结构和算法、计算机网络,前端的工程化、性能优化等知识也是必不可少的。后端

伴随网络带宽不断提升和浏览器、WebView 的不断发展,前端业务日益复杂化和多元化,前端开发已经由以 WebPage 模式为主转变为以 WebApp 模式为主了,朝着界面美观、交互丰富且性能更好的方向大步迈进。浏览器

为什么会被老师看不起?

曾几什么时候,在某次操做系统的课堂上,老师说了一句:前台(前端)一个初中生花一个星期就能学会,大家还专门去搞这个是很丢脸的。

可想而知,我是多么不堪。一个初中生花一个星期就能学会的内容,我却花了一年多的时间去学习和沉淀。同时也说明了一个问题:科班的老师对于前端开发广泛存在偏见。

存在偏见是能够理解的:

  • 大多数科班的老师醉心于教学和学术研究,已经不多去关注技术的发展,对前端还存在只是切图的刻板印象。

  • 前端近几年的发展十分迅猛,发生了许多翻天覆地的变化。

众所周知,前端开发者一般都被人称为切图仔,这也是不少前端开发者对本身的称呼。事实确实如此,不少前端开发者都还停留在简单的切图的阶段。从设计师处拿到设计稿,而后用代码来还原设计稿。这确实是不少前端开发者在工做中作的事情。这也致使了前端开发,在科班的老师眼里是如此的不堪。

可是除了切图之外,前端开发者还须要掌握哪些技能呢?

前端知识图谱

数据结构和算法能够说是全部开发者必备的技能了,同时也是一门大而广的学科,篇幅限制就不展开了。

本人也才疏学浅,暂时只能整理出这么些知识点了。面试可能会考察到的知识点,就是前端开发者除了切图,还须要掌握的知识点或技能,有些属于应用层面,有些则须要深刻原理。

如今还敢说一个初中生一个星期就能学会嘛

更况且,在阿里,切图的工做大部分均可以使用 AI 自动完成,AI 甚至还能够实现部分交互逻辑,那么做为一名前端开发者,有什么技能是 AI 没法替代的?

imgcook 由设计稿一键智能生成代码

双十一模块 79.34% 的代码是怎样智能生成的

如何走进阿里?

众所周知,阿里是国内最顶尖的互联网公司,拥有着国内甚至世界范围内顶尖的技术,由全球最大的电子商务需求驱动。而我加入的淘系技术团队,被称为东半球体量最大,实力最强的前端团队

那么我是如何披荆斩棘,最终走进阿里的呢?后面都是满满的干货,建议精读

走进阿里 = 50% 基础 + 20% 项目 + 10% 思考总结 + 10% 面试技巧 + 10% 运气

这就是走进阿里的公式。

50% 基础

基础是很是重要的。

万丈高楼平地起。

若是基本的语言使用还存在问题,那么第一轮就会被筛,就更不可能有后面的故事了。

基础的学习,知识点都在上面的思惟导图里面,里面列出的每个二级分支,都属于必知必会的,就不详细讲了,这里主要介绍一下一些我看过的还不错的基础知识书籍:

  • HTML & CSS:《HTML5 与 CSS3 基础教程》(我叫它兔子书,由于封面上有一只兔子)
  • JavaScript:《JavaScript 高级程序设计》(又称 JS 红宝书)、《ES6 标准入门》、《你不知道的 JavaScript》(不建议初学者看,且建议看英文原版)
  • 数据结构 & 算法:《啊哈!算法》(生动有趣)、《学习 JavaScript 数据结构与算法》(很是基础的算法教程)
  • 计算机网络:《计算机网络》(谢希仁著)、《图解 TCP/IP》(反复看,最好二刷甚至三刷)、《图解 HTTP》(反复看,最好二刷甚至三刷)
  • React:React 官方文档、《深刻浅出 React 和 Redux》
  • Vue:Vue 官方文档、《深刻浅出 Vue.js》
  • Node.js:《深刻浅出 Node.js》(不建议硬啃)

我猜到有些同窗可能会说这么多书上哪找,我就帮大家省去找书和买书的时间吧:

密码:70zc

20% 项目

项目是证实你动手能力的重要凭据。基础知识学完了,学扎实了以后,就要开始动手作项目了。把书本上学到的基础知识,一行一行写到代码里面,加深本身印象的同时,你会发现一句话:

纸上学来终觉浅。

不少同窗不知道上哪找项目,也不知道作什么项目,这里我给几点建议:

  1. 不建议再作什么仿饿了么仿美团仿携程了,也别再作什么后台管理系统了,这种类型的项目,面试官看一眼就知道没有技术含量,也不会有本身的思考。由于这种类型的项目,大多数状况下省略了需求分析和文档制做的过程,仅仅只是编码实现。这种类型的项目只适合学习使用,并不适合应聘,除非你在此基础上加入了不少技术性的内容。好比使用一些新特性对项目进行重构,并产出了很多技术上的总结和思考。
  2. 跟招聘要求契合度不高的项目能够作,但不建议写在简历上。好比你找前端的工做,搬了一个 Java 的课程设计到简历上,就不合适了。
  3. 建议紧跟时事,作一些与时事相关的项目。好比新型冠状病毒肺炎疫情可视化地图、疫情期间没法出门云祭祖的小程序(笑)之类的。
  4. 建议尝试接一些公司企业或是老师的项目。一般状况下,这些项目都会具备必定的挑战性,且有时间要求,但收益也会至关可观(对于学生来讲)。在作项目的过程当中你会了解到整个开发的具体流程:需求对接-原型设计-编码实现-文档制做-测试发布,这对我的的成长是很是有帮助的。
  5. 建议先加入一些中小型公司,作一些难度不大的项目,学习公司对代码风格和质量、工程化、性能优化方面的要求,同时尝试将其引入到本身的项目中。

举一个很简单的例子:目前市面上对于咱们学校课表支持自动导入的 APP 很少,可是课表又是刚需,怎么办?

这个时候就能够本身作一个,作项目的过程当中确定也会遇到一些问题,服务了同窗们的同时,丰富了本身的简历,提高了本身的实践能力。参考学校 @倪小白同窗 的例子,他的林大课表就作的很不错。

10% 思考总结

项目作完了,必需要思考总结。咱们作的每个项目,不管是否可以搬上简历,都要按期作思考总结。最好每周总结一次,若是作不到每周一次就两周一次,时间跨度不要太长,实在没空一个月作一次总结,但不能不作。

项目总结一般分这么几个部分:

  1. 上周的开发过程当中遇到了哪些问题?
  2. 问题如何解决的?
  3. 涉及到哪些知识?
  4. 有没有更好的方法?

上面这些是每周作的思考总结,当项目彻底作完结项的时候,也要对整个项目作思考总结:

  • 技术栈:项目用到了哪些技术,简单罗列一下。
  • 体验&交互:项目总体的体验如何,动画效果是否流畅,交互方式是否人性化,出现问题是告警是否丰富,有没有还作的不够的地方。
  • 性能:页面首次加载时间为多少,发起网络请求到可交互的时间是多少,是否存在过分的回流重绘,有没有能够优化的地方。
  • 开发效率:项目是如何推动的,若是是团队项目,质量是如何把控的,若是是单人项目,效率是如何把控的。
  • 工程化:自动化部署,打包构建优化,代码规范,commit 规范等。

10% 面试技巧

面试技巧虽然说只占 10%,可是事实上,面试技巧直接影响到了你基础和项目部分的发挥。

首先咱们要明确什么是面试?又为何会有面试?

面试是面试官经过相互交流来了解求职者的方式。面试产生的缘由是用人单位须要在较短期内快速肯定求职者的各方面能力以及潜力。

那么,既然明确了什么是面试以及面试产生的缘由,咱们就应该能明白一点:

面试是一个双向选择的过程。

纵使大部分同窗都是拼了命的想要拼进大公司,认为面试只是公司单向选择的过程。但事实上,你在不知不觉中也在对公司作了选择。

大部分的互联网公司的实习生面试流程都至少有 3 轮2 轮技术面 + 1 轮 HR 面

这是比较基本的面试流程,可是事实上大厂一般都会有 4-5 轮3-4 轮技术面 + 1 轮 HR 面

那咱们把面试流程进行拆解,一般是这样的一个流程:

  • 1-2 面一般是基础考察,从各个方面考察你的基础知识是否扎实,基本不会涉及到你的项目,基本上会围绕你简历上的技能树提问。
  • 3-4 面一般是动手能力考察,结合你的项目,考察你对项目的理解,在项目中遇到的问题,如何解决的,以及一些对项目的思考沉淀。其中也会穿插一些跟项目相关的基础知识。
  • HR 面一般是问一些我的性格,学习生活状况或者家庭状况等比较私人化的问题,固然,不排除从奇怪的角度提问的状况。

流程大体是这样,那么咱们来说一些技术面的技巧:

  • 自我介绍必定要提早准备好,必定要有亮点,体现你与其余同窗不一样的地方,你的优点是什么,给面试官留下必定印象的同时,也能让面试官顺着你的优点准备后续的问题。举个例子,若是你以为你在面试阿里以前,有其余公司的实习经历,并且公司规模不小,这段经历是你的优点。那么你就能够在自我介绍的时候明确告诉面试官。面试官就颇有可能在后续的提问环节中对你这段实习经历发问,这样就能在面试一开始就把面试的节奏把握在本身的手中。

  • 面试官全部的问题,基本上都是围绕你的简从来提的,或是从简历上延伸出来的。因此不熟悉的知识别往简历上写!比较熟悉的知识点写了解,很是熟悉的知识点写熟悉,熟练使用但不了解原理的写熟练使用。这样面试官看了你的简历描述,就不会在你不擅长的方向为难你。

  • 遇到面试官提问你不会的状况怎么办?答案是,实话实说直接说不会。这样可以让面试官快速肯定你的知识和能力范围。若是你似懂非懂,非要说一些不必定正确的答案,那么你就犯了班门弄斧的大错了。做为一名实习生/应届生,缺少工做经验,不可能面面俱到,有不懂的再正常不过了,面试官绝对不会由于偶尔一两个知识点不会而挂了你。固然,这也有例外,那就是必知必会的知识点你不会

  • 当面试官连续两个问题你都没能答上来,或者都答得没让面试官满意,这个时候你就要当心了。这种状况说明你的面试节奏已经被面试官所掌控,一般状况下这场面试就提早宣告凉了。可是!咱们有技巧,从新将面试节奏掌握在本身手里。咱们大能够直接跟面试官说:xxx 我确实了解的不够深刻,从此必定努力补上,您能够问我其余知识点,好比 xxx 我就了解的比较深刻。一般状况下,面试官听到你这么一说,他颇有可能会对你的这个“深刻”的程度感兴趣,因而会接着你的话说一句:嗯好,那你跟我讲讲 xxx 吧。就这样,话锋一转,面试节奏又回到了你的手上,这个时候你就能够拿出你提早准备好的杀手锏,说到就连面试官都不了解的地步!固然,不排除有些面试官可能比较缺少经验,或者就是要硬刚,那就莫得办法了(哭泣)。

  • 面试结束以后通常会有一个时间面试官容许你向他提问,这个时候应该提一些什么问题?答案是,能够提问你在此次面试没有回答好的知识点,与面试官一同交流,又或是提问一些你最近的遇到的问题或者你本身的思考,与面试官一块儿讨论。总之,这个环节你要表现出一个学习者的态度,这一点很重要!纵使你在面试中的表现不是那么惊艳,但若是你在这个时候表现出的态度很是诚恳,是一个不错的加分项。由于实习生/应届生招聘,尤为是实习生招聘,面试官更加看重的是一个学习的能力

  • 最后的一点,是我我的以为最重要的,就是无论面试的时候多紧张,必定要笑!必定要笑!必定要笑!笑能很大程度缓解本身的紧张,也能给面试官带来一个积极乐观的好印象。

目前我掌握的面试技巧大概就这么多了,若是各位看官们还有其余的奇技淫巧,欢迎点击在 GitHub 上编辑此页补充!

10% 运气

说实话,运气强求不得(笑哭)。

有些时候面试官正好问到你很是熟悉的部分,那么面试结果一般都是很不错的,相反就会特别沮丧。

心态

心态应该是整个面试流程中最最重要的了。

还记得前面说的那句话吗?

面试是一个双向选择的过程。

若是你在某一次面试中,面试官给的压力很大,而且最后还没能经过,你确定会很是很是沮丧,甚至会怀疑人生,这个时候心态很是容易发生变化,自信心崩溃。

咱们只须要知道一点:

公司没有选择你,并不必定是由于你能力不行,更大的缘由是你没达到公司对某方面的技能要求,记住,仅仅只是某方面

好比公司想招一个对 React 技术栈更加了解的同窗,而你的技术栈是 Vue,那么你经过的几率可能会比其余了解 React 技术栈的同窗要低一点,但这并不表明你的能力比了解 React 技术栈的同窗差。

保持自信的态度,不断面试不断总结,查漏补缺,必定会有好结果的,由于:

若是你本身都对本身的能力产生了怀疑,就没有人能相信你了!

跟我一块儿面试阿里的 @17 级地信 1 班罗霁鑫 小伙伴就是一个很是好的例子:

起初他不是颇有信心,由于本身是非科班的,并且学校出身也很差,已经准备考研准备了好几个月了。

后来我把淘系内推的连接发给了他,问他要不要试一试,反正试一试最多耽误一个月考研,而后他鼓起勇气试了一下。

最后的结果你们应该都能猜到,咱们都进了终面并最后走完了全部的流程,拿到了阿里的 offer。

最后的最后

我为何会取一个如此有争议的标题呢?

我并非想怼那些对前端开发存在偏见的人,而是想让你们知道:

前端实际上是一个很是综合的方向,并无想象中那么简单。前端在近些年也很是热门,伴随着 5G 技术的发展,前端必定会更加受欢迎。

任何一个职业都有它存在的理由,还请不要戴着有色眼镜看待!

最后就引用一句话:(掘金好像有敏感词限制)

咱们都在努力奔跑,咱们都是追梦人。

送给你们一张壁纸,它一直是我电脑和 iPad 的壁纸:

壁纸

致学弟学妹

插播一条广告,目前我在学校的ACM 编程爱好者运营技术工做室,正在召集一批对前端感兴趣的学弟学妹,为前端的发展贡献一点点小小的力量。

我和 @17 级地信 1 班罗霁鑫 同窗两我的是今年咱们学校进入阿里的前端实习生,但咱们但愿这只是前端在咱们学校的开始而不是结束。

咱们会带一批喜欢前端的学弟学妹,并为你们提供学习指导,等你们到了须要找实习的时候,咱们还能够为你们提供各类互联网大厂的内推资格

若是你也想加入东半球实力最强的前端团队,能够加我阿里师兄的微信:wuxiaorui86,我和 @17 级地信 1 班罗霁鑫 同窗两我的就是在师兄的帮助下走到最后的!若是已经有幸加入了东半球实力最强的前端团队,师兄还会辅导你的转正答辩,转正率几乎 100%

若是文件连接失效了或者想加入软件协会又或是跟我同样的追梦人的话能够关注咱们的公众号:Hello FE,咱们会按期在公众号发一些本身的学习心得~

公众号

除了个人这篇文章,个人同门师兄弟也作了总结,面向非科班的同窗:

还有面向在技术选择方面存在顾虑的同窗:

@阿联

相关文章
相关标签/搜索