来自一个双非一本大学生的自述:
本人专业学的是电子信息科学与技术,说实话,虽然它是我的专业,但我对它不是很了解。高考结束根据就业率选择了这个专业,确实就业率很高(毕竟没有三方协议学校不给发毕业证,怎么办?很多人随便找个单位、场子签个劳动合同),一句话:垃圾。而自己在大二的时候就在想,这个专业毕业后能干嘛?如果我现在被迫辍学?我能靠它养活自己吗?答案是:不能。
比较庆幸的是自己通过朋友带动下从 3 月初(大三下学期)开始零基础自学前端,在 11 月初拿到字节跳动和多益网络的前端 校招 offer,历时 8 个月。与其他拿到大厂 offer 的同学比起来,我应该是比较菜的,嘿嘿。不过我是在没有基础,基本没人带的情况下,自己摸索学习的。通过不断笔试面试积累经验,在没有实习经历的情况下拿到大厂 offer。
结合他的经历给出如下指南,分为以下 7 个方面:
一、学习路线
结合个人经历整理的学习路线,总结了初级前端各项技术学习的先后顺序和侧重点,可以节省你们很多时间,避免你们走弯路和购买到一些没用的书籍资料。
下图是大致的学习路线图(有点长放大看)
知识脉络
1、前端三大基础(前期)(重点,中等难度)
前端三大基础,即 HTML(5),CSS(3),JavaScript 这三门技术。
Tips:JS 进阶部分可以在准备面试时再开始学。
2、前端框架(前中期)(重点,较难)
Vue 和 React 是目前在前端应用最广泛的两个开发框架,工作中一般都是用框架开发。两者是同级并列关系。个人觉得可以先学 Vue,等到第一篇的其他比较重要技术栈的学完了再学 React。
Tips:现在新项目一般都用 Vue 或 React,不太用 jQuery,所以 jQuery 可学可不学,一般也不怎么考;看视频学习入门会比较快,适合零基础的新手,直接看官方文档学习会比较难一些。有空还可以学一下 Vue 的 SSR 技术。
3、Node.js(中期)(次重点,中等)
Node 是一个让 JavaScript 运行在服务端的开发平台,可以让我们用前端的语法开发后端。很多前端岗位的要求会 Node.js。
深入浅出 Node.js
Tips: Node.js 和小程序开发一样,是加分项。不过比小程序重要一些。
4、小程序开发(后期)(选学,简单)
部分面试会问到,有时间还是学一下,而且小程序入门简单,没学过框架也可以学,之所以写后期是因为觉得比框架次要。
5、计算机基础
传统的计算机基础一般是指数据结构与算法,计算机网络,操作系统,数据库,计算机组成原理,编译原理等,作为前端开发入门者,我们只需要重点学习数据结构与算法和计算机网络即可。
Tips:应对工作和面试需要重点学习应用层的协议(HTTP(S),Websocket 等)。面试时 还会考察一些传输层的协议(TCP 和 UDP)。
6、前端工程化
有很多初学者或者还没有大公司经验的同学在写项目时都是单打独斗的,但更多的一线项目都需要至少 2~3 个甚至更多的人员一同参与开发的。而这种时候,因为每个人的水平和开发习惯都是不一致的,而这些不一致就直接导致整体研发效率和项目进度受到极大的影响。所以就需要一种能够让大家在一个水平线上进行开发的模式,工程化需求很有必要。
工程化协作
版本控制
Git:GitHub、GitLab、Coding……
SVN:BitBucket、Google Code……
代码样式检查工具 JavaScript/TypeScript:ESLint
测试工具
性能优化
单元测试:Karma、Jest、Mocha……
持续集成:CI
工程化开发工具
依赖包管理工具:npm、yarn
打包工具:webpack、rollup
脚手架工具:create-react-app……
二、项目
在校招中,想要拿到大公司的 offer,最好要有实习经历。没有实习经历,那简历上一定要有项目经历,这个是很必要的加分项。而且找实习的时候简历上也最好有项目经历。
如果找不到项目可以做,可以在网上买一些做项目的课程(实战课),学完后自己借鉴课程的项目,改进或者重新做一个项目。我是在 GitHub 上学了一门用 Vue 开发仿拼多多的前端的实战课,后来又学了一门用 Node.js 开发的服务端的实战课。然后把结合两门所学,自己做了一个仿美团网的项目,并且前端用 Vue 做,后端用 Node.js 做,使其成为一个自己完成的、全栈的项目(当然了,我这种级别的项目应对大厂校招其实只是勉勉强强罢了,好在大厂校招面试比较看重基础)。
其他方法我觉得可以是通过加入工作室、找计算机学院的老师、或者直接去网上找外包等方式来找项目做,具体我没去实践过,不是很了解。所以最好是大二、大三去找个实习,这样子就不会有项目经历和实习经历不足的困扰。
三、简历
如何写简历才能成为大厂敲门砖
我对于简历的理解是这样的,简历不用很复杂,它是一份「简单的简历」,作用是让阅读简历的人能够快速、准确地捕捉到「有用信息」。
你只要讲清楚你是谁、你在哪儿、你在干什么就可以了。
不对不对,应该是这三点:你是谁 你做了什么 你哪方面比较牛逼
样式 / 排版
样式
- 一页足矣:10 ~ 30 秒的时间,可能你的第二页简历永远不会被看到
- 留白原则:留白是中国艺术作品创作中常用的一种手法,在简历里也适用,每一行文字、每个模块之间都需要有一些间隔,使全篇更为协调和突出重点
- 标准字体:宋体即可,别用那些花里胡哨的字体
- 简历模板:弱视觉效果,黑白蓝灰四色即可,简单高效。但也别太简约啊,别用表格
简历模块
1. 个人信息
2. 专业技能 & 项目经验
3. 业务场景使用的技术
4. 实习 / 工作经历
5. 教育经历
教育经历这个模块,如果是实习生 / 应届生,应该将他放在个人信息和实习 / 工作经历之间,如果是社招,我觉得应该放在最后就好了,毕竟工作经历和项目经历才是重点。
个人信息
个人信息三要素:姓名、电话、邮箱
这是信息是 HR 以及面试官能联系到你的途径,如果因为电话和邮箱联系不上而失去面试机会,真的是太亏了。
如果方便的话,简历上也可以留个微信,毕竟万一出现电话联系不上的情况,面试官还能加你微信找到你。
除了三要素之外,如果你有自己的 GitHub 或者博客,并且觉得还挺不错的,也可以写上来。但是,如果是一个没有 repo,没有 commit 等的 GitHub,还是不用写上来啦。
专业技能 & 项目经验
专业技能就是你掌握的技术栈。
很多人专业技能是这样写的,并且占了简历的一半内容:
- 精通 js/html/css
- 熟悉 es6
- 精通 vue
- 熟悉 ant-design 来写页面
- 熟悉 webpack 和 bable
- …
这里有几个问题,也是写专业技能的时候最忌讳的:
1. 技术名词注意书写正确,bable 是啥,一看就不熟悉啊
2. 技术名词注意大小写,JavaScript / HTML / CSS / Vue.js 等等
3. 写着熟悉 xxx,精通 xxx,真的熟悉、精通吗
如果是我,我会这样用“了解 / 熟悉 / 精通”来描述我掌握的技术栈。
了解
会使用 / 用过
了解其思想
没有深入了解过
简单阅读过该技术的文档或者相关文章,知道这么一个东西
熟悉
有大量实践
有深入了解过原理,甚至阅读过源码
遇到复杂问题能够快速想出解决方案
他人提出问题时,可以快速想到答案或者思路
精通
深入理解原理
大量复杂场景实践经验
大量相关源码经验
可以指导他人
我有看过这样的实习生简历,专业技能里至少有 10 个以上的熟悉,3 个以上的精通。但是看他的项目经历,其实还是比较简单的,目测应该是不知道如何描述自己的技术栈。
个人建议,专业技能这里不用写太多,只要写上自己的项目经历里未提到的一些想让面试官了解的技术栈即可。
比如可能工作中是业务开发比较多,工程化涉及的比较少,但是你个人在工程化这块有所涉猎,研究的比较多,就可以把工程化写上,引导面试官来提问。
如果面试官感兴趣,会挑几个技术栈问你几个问题,如果答的也很棒,必须是妥妥的加分项。
当然,在这里写的技术栈都必须是你了解或者掌握的,否则被随便问两个问题就不会了,就变成减分项了。
总结:专业技能请慎重对待,有可能是你的加分项,也有可能是你的减分项。
项目经验:
- 简历上写的项目一定要特别熟悉,并且所涉及的技术最好能融合我们做过的项目,别看着别人项目牛逼,就拿来吹,面试和背调环节都可能穿帮的。即使没涉及到,你也可以这样说:已经做了主题切换,准备下一个版本上线;
- 项目的开发时间、开发人数要搞清楚,你负责哪些模块;
- 项目中所涉及的技术怎么描述,事先需要准备好,背下来;
四、简历投递
1、关于工作和实习
找工作和找实习是不一样的。找工作的主体是应届生(大四),对应到公司官网的投递选项是“校园招聘”。找实习的主体一般是大一到大三的学生,对应到公司官网的投递选项是“日常实习”。日常实习可能可以转正拿到 offer,也可能没办法转正,而参加校园招聘通过后便可以拿到 offer。不过实习经历是找工作的重要加分项。
日常实习一般全年都有在招,而校招(校园招聘)分为秋招和春招两波。秋招是在大四上学期,一般 7 月开始有提前批,8、9 月为正式批高峰期,10、11 月开始收尾。春招是在大四下学期开始,应该是 3、4 月开始(。建议积极参加秋招,最好是在秋招就拿到 offer,因为春招的招聘需求会小很多,竞争也很大。
2、学历问题
对于本科,在投递简历和面试大厂时,大部分公司不会太卡学历或专业。但是说实话,如果你的学历比我的还低很多的话,我就不确定会不会被卡简历了。不过按照我的方法去做,即使进不了大厂,校招进个中小厂是可以的,先进入这个行业,以后再找机会跳槽也是有可能的。
3、跨专业问题
有一些互联网公司校招可能会卡专业,不过如果有一本的学历,还是可以通过很多大厂的简历筛选门槛的,当然,前提是你简历的格式和内容过关。我参加过几个大公司的面试,基本感觉不到对跨专业者的歧视。所以不用害怕跨专业会被歧视之类的,主要还是看能力。能力不行不要老是归因到专业歧视上面去。
招聘信息来源
牛客网,公司官网,公司公众号,学校,一些校招公众号和校招群等。
五、笔试
大多数公司为线上笔试,笔试平台一般在牛客网,其次是赛码网,部分公司笔试平台是在公司自己的官网。少部分公司是宣讲会现场笔试。
题型
以选择题和编程题为主。大厂的笔试编程题一般占一半以上(如美团,腾讯笔试全部都是编程题)。
(1)选择题:前端相关知识,数据结构与算法,计算机网络,操作系统,数据库等。
(2)填空题:同上。
(3)简答题:前端相关,算法题。
(4)编程题:算法题(主),前端相关的手写代码题(次)。
笔试准备
怎么应对笔试,可以结合本指南自学篇和面试篇的相关内容,多去牛客网刷题。算法题是大厂笔试里面最重要的部分,多去 LeetCode 刷题即可。
六、面试
大公司校招面试一般有 3 – 4 轮(2 – 3 轮技术面 + 1 轮 HR 面)。也有少部分公司是技术面 + HR 面 + 部门终面。大部分公司都是线上面试,小部分公司是去公司现场面试。线上面试的平台主要有牛客网和赛码网,小部分是在公司官网。
面试考点
1)大公司面试主要考察前端基础、简历上的项目相关、前端框架、数据结构与算法、网络、前端工程化等。小公司一般不考计算机基础,比较考察前端相关的,不过总体难度还是比大公司低很多。(如果实习过,实习经历也是考核重点)
2)面试考察的知识点频率:前端基础 > 简历上的项目相关 >= 前端框架 >= 数据结构与算法 > 网络协议 > 前端工程化(如 Webpack,性能优化,上线部署之类的)等。
3)从一面二面考察的不同点来说,一面重视基础且比较容易过,二面的广度,深度和难度会加大,经常会问到项目,并且大概率要求手打代码(算法题或功能实现题)。
网上有很多公司的面经(面试经验)可以学习。
七、职业规划
作为一名前端工程师, 你的核心能力不是前端, 而是工程师, 前端 13 年前没有, 难道 20 年以后就能一直有么, 但是工程师已经存在很久了, 上面那些技术都是前端技术, 随着前端的消失他们也会消失, 但是作为一名工程师, 你的工程管理, 技术方案设计, 架构规划等等能力才是核心, 是不会随着某个领域消失而消失的, 这些能力是和整个大的软件工程体系绑定的, 拥有和算法, 计算机底层原理一样的生命力, 值得你不断的去学习和提升, 我相信只干前端, 你难过 35, 但是作为工程师, 你应该拥有更长的职业寿命。
因此当你抱怨公司小, 技术团队人数少, 氛围差, 技术栈老旧的时候, 天天只堆业务代码的时候, 你可能正在浪费时间, 而你睡过去的每一次需求评审, 或者糊弄过去的每一次业务迭代都是在浪费你成为更专业的前端工程师的机会
学习平台
LeetCode、牛客网、GitHub、MDN、掘金、菜鸟教程、B 站、阮一峰的个人博客、简书、CSDN、Bootstrap 中文网。
关于转行前端之前的疑虑?
1、前端岗位需求如何?前景如何?薪资如何?(这是对将转行业的必要考量)
现在互联网的大环境的发展如日中天,网络已经深入到每个人生活的各个方面。各种项目层出不穷,以及各种定制化的 UI 风格神马的,PC 端、手机端、mobile 端,各种兼容问题真的很浪费时间,大家在不断的摸索中发现,把 html+css+js 这部分工作独立出来一个新的岗位来处理,酱紫后端可以专注于数据接口的开发以及逻辑的处理,然后视觉 MM 们也可以不用熬夜码代码了。
当一个行业发展到一定程度形成产业的时候,它里面的环节一定会细节化的,让专业的人做更专业的事情,传统农业、汽车业,不都是如此么。所以,Web 前端必然在今后十年有很大的发展。
然而程序员需要不断的自我驱动,才不会被 IT 行业所淘汰。
web 前端开发工程师的薪资待遇平均工资已经突破一万,因为其他行业确实工资涨幅不大,所以必然会吸引了大批想要月薪过万的人来转行学习。
目前,北京、上海、广州、深圳等地 web 前端工程师的薪资待遇更是一飙再飙,Web 前端工程师待遇详见下图:
2、肯定会有人问培训班和自学哪个好?
相对于劝自学的,我反而是推荐你找一个专业的导师带带你,这样能逼着你快速进入状态,而且有人解答,比较系统,不然你自己摸索浪费太多时间,我当年就浪费了半年,而且自律这个东西真的是看自己,很多人是中途放弃,其实我也有很多次这种念头,但是还是忍住了,怕被当做 loser,还浪费了那么多时间。另一方面前端要学习的东西很多,可能你学到的只是入门基础,专业的老师和就业推荐会使你转行的道路轻松许多。
3、如何高效学习,学到何时才能够大概率就业?
听到过很多这样的说法,前端很简单,自学 1 星期就能做网页,这其实也不错(只要有公司要你,出问题时,给你足够的时间去解决,或者有人给你顶着,和你合作的人不嫌弃你的代码质量就行)本着对自己和公司负责的态度来说,你至少静态页面要做的很 6,像我上面提到的,做一个静态页面基本不会出现布局问题,也不用百度就合格了,具体时间看个人。
4、非科班会不会没发展?年龄大会不会被淘汰?
能力大于专业!前端开发是一份技术类工作,比起科班和非科班的背景,企业更看重的是程序员的开发水平,和解决问题的能力。
其实对于能不能转行到前端开发,年龄并不是绝对因素,从高等院校毕业出来的毕业生找不到工作的也有大把,所以这不是个年龄问题,也不是 " 行或不行“的选择题,而是看你有没有坚持下去的心。
我是云鹿,从事前端五年左右,在自学前端的伙伴也可以加入我组建的 零基础前端学习营,我会督促大家打卡学习,遇到问题可以一起探讨解决;还整理了一些学习资料,免费分享给大家学习使用;平时还会组织小项目,大家可以练习巩固基础。
原文链接:https://zhuanlan.zhihu.com/p/475722434