前言
看到这篇文章,有些朋友心里会有疑问,公号不是java的嘛,怎么分享前端的学习经验了?主要有以下几点原因:
多位公众号粉丝的提出的要求,对于大家提的要求会尽力满足
对于java/C++/前端,除了语言的不同外,其它面试考察的知识,比如计算机网络/操作系统等这些内容具有共通性,其它方向的学习干货对于java学习同样具有参考价值。
零.offer
阿里云-前端开发工程师
一.学习经验分享
1.1 为什么选择了这个方向?
机缘巧合开始做web开发,最后发现是兴趣所在。
大二的时候开始跟着老师做一个Java Web的项目,技术栈非常老,就是传统的jsp那一套,做的不亦乐乎,也让我走进了web开发的大门,那个时候既要用jQ和Bootstrap写前端,还要用Java写后台实现,后来两个方向都有所深入,前端开始用nodejs构建前端react项目,后端也有用Spring全家桶写一些东西,在大二暑假的时候思考了很多,最后选择了前端方向,选择的理由主要还是兴趣,发现自己写js比较开心。
1.2 具体是如何学习的?
学习的过程那就根据时间来吧~
第一阶段 大二暑假7月8月和9月 前端基础
这一阶段是我觉得我前端学习过程中最重要的一段时间,到现在还在从中受益。
重要的学习工具:有道云笔记。每天学习的知识都会通过电脑记录在上面,零碎的时间就通过手机端进行复习
暑假我留校,一个人在寝室每天刷基础,具体的做法有:牛客网HTML/CSS和JS两个专题反复刷,每个题必定做到知其然还知其所以然(给牛客的错题组卷功能一个五星好评)
菜鸟教程的HTML,HTML5,CSS,CSS3这4个专题全部过了一遍,常用的能做到不看文档就写出来
JS的基础知识我不看网上的资料,通过看《JavaScript高级程序设计》即著名的红宝书来学习,我之前做项目已经写了很长一段时间JS,但是知识点都是散的,通过看红宝书系统的学习把知识点串联了起来。(当然红宝书并没有看完,而且看的时候也跳了很多,很多知识直接看是看不懂的,很多我都是后来回来看才看懂的)
Node.js的学习:跟着一本书来的,书名忘了,直接上手框架的应用,跟着写了一个nodejs的后台管理系统demo,因为有之前JAVA写后台的基础和前端js语言的熟悉,所以这个过程并不是特别难,就是熟悉框架express的使用
前端框架React的学习:书名《深入React技术栈》这本书现在来看也是非常老了,尤其应用方面和代码实现方面,但是前2章对React的基础知识和概念以及后面Flux和Redux的概念讲解我个人觉得非常好,非常有助于新手入门。
到了9月,基础知识学习的差不多了我开始跟着网上的各种教程做一些小demo了,然后自己做了一个基于nodejs爬虫的信息汇总网站。
第二阶段 10-12月 实践&广度
这一阶段的学习最主要是两个:实践和广度。
10月我进入成都知道创宇开始实习,在一个大数据部门的前端可视化小组,小组技术栈是React.js+Hapi.js的js全栈。实践自然就是实际的代码编写能力了,这个就是参与到公司实际的项目里,多写多思考就会慢慢提高了。
广度主要是前端领域发展很快,有很多新东西,刚入门有很多需要学习和了解的,这个的具体做法有:
微信公众号:公众号见文章末尾,这两个公众号每天的文章我会在每天坐公交车去公司的路上认真读的,如果有必要或者有兴趣,到公司之后会深一步的学习,并写一篇相关的技术博文知乎:虽然现在知乎装逼气息太浓对新人不太友好,但是多看看大佬的回答总是能有收货的,至少能了解很多东西
看书:JS看了《你不知道的JavaScript》系列,node看了《深入浅出nodejs》
第三阶段 1月2月 计算机基础
这一阶段主要是计算机的基础(算法/计算机网络/数据库/操作系统),因为要准备春招了。
主要有:
回顾暑假学习的基础知识
算法:刷《剑指offer》
计网:这方面前端岗比较偏http,所以重点看了http,《http权威指南》没看完,太多了
数据库:刚好大三上那个学期有数据库课,所以知识点学习的很系统,就是额外看了一下B树,B+树,红黑树相关(这些现在都忘完了……)
操作系统:重点看了进程线程一块
第四阶段 3月4月 面试
这阶段就是刷面经……
第五阶段 5月6月7月8月 深度
这阶段已经去阿里实习了,自己学习的时间比较少,空闲时间就是进行知识点的深入以及回顾
1.3遇到困难时,如何解决?
第一阶段刷基础的时候基本任何问题都能在网上找到答案
第二阶段之后在创宇实习之后,就主要是leader,同事和网络了
1.4书籍/项目
看过的书籍:
《深入React技术栈》
《深入浅出nodejs》
《Node.js实战》
《http权威指南》(没看完)
《JavaScript高级程序设计》
《JavaScript权威指南》(这个当然没看完……那么厚)
《你不知道的JavaSctipt》
《JavaScript函数式编程》
《高性能JavaScript》
《HTML5与CSS3基础教程》
《深入浅出Mysql》(没看完)
《深入剖析nginx》(没看完)
《剑指offer》
学过的课程:
无
做过的项目:
只列前端相关以及春招之前的:
刚开始的:基于nodejs爬虫的信息汇总平台
在实习时做的项目:
周报系统
统一登录与权限配置系统
大数据可视化相关的
校内的一个项目:物联网数据监控管理系统
对零基础入门的学弟学妹们说一句话:基础很很很很很重要!
二.前端岗位春招总结
准备
其实我接触牛客网蛮早的,我在去年这个时候就潜水在讨论区,当时看到18的找实习,17的找正式工作,感触颇深,遂开始早早的做准备
准备的有以下几个方面:
2.1基础
牛客网上刷html/css,javascript两个专题
收集当时讨论区的各种面经,一条一条的看,不会的就去学
阅读经典书籍:<你不知道的javascript>,<深入浅出nodejs>等
公众号文章:推荐公众号见文章末尾
2.2项目
提前实习:10月进入一家小有名气的互联网公司实习
学校里的项目尽量用全新的技术栈去实现
受学长简历的影响,我从大二暑假就开始思考,简历上应该要写什么项目上去合适,应该写到什么程度,写上去的东西里面有自己不熟悉的吗,每个东西都去深入了解过了吗,所以后来春招没有遭遇过简历挂
2.3学习
其实我在17年之前都是在做java web相关的,web前端这一块的开发甚至还停留在jQuery+bootstrap,甚至还在前端js里面最原始的手段拼接过html字符串,也是在17年上半年在一个小公司实习的时候,逐渐转型做现代前端开发
下面我简单的写下我自己认为现在前端所应该具备的知识,也是我个人的相关学习经历,仅仅是我个人之见,如有异议还请见谅
(因为我没有做过移动端的开发,所以也没怎么接触过移动端的知识,万分抱歉)
我的前端技术栈是React技术栈,React的学习主要是以下几个方面:
入门:陈屹的<深入React技术栈>
React深入:项目问题的解决及社区各种文章
Redux入门:dva.js
Redux深入:Redux官方文档
面试中问到React相关的,大的方面大概有以下几个:
React生命周期及其相关钩子函数
React v16新特性
React diff fiber
React与其他库的结合(实际场景实际分析)
React性能优化
React ssr
Redux设计原则与flux架构
React与Redux源码相关
React与其他框架的对比
也用过vue,但是项目里深入的不够,面试的时候就说了vue不是很熟,所以遇到的问题不是很深入,学习的话基本上就是官方文档,相关的问题如下:
-vue双向绑定原理与源码
vuex和redux的异同
vue diff和react diff异同
vue生命周期及其相关钩子函数
从react和vue这两个现在主流的框架的相关问题可以看出,在面试时关于框架的问题一般都会涉及到底层实现和生命周期,状态管理等,所以一定要多看官方文档,千万千万不要出现只是用过就写在了简历上的情况,那样会彻底凉掉的
原生js的学习的话,主要是:
-
多看书!<你不知道的javascript>
<- 必看 es6: 阮一峰老师的开源书籍:ECMAScript 6 入门 (现在里面的内容还有es6后面的内容,公众号后台回复 感谢邱神 获取书籍网址)
深入理解js异步
Promise机制
async await
事件循环
宏任务微任务
..
html/css的学习,主要就是w3c的教程配合刷题,这个方面需要多花时间去记,如果有时间,可以自己去实现一些精美的效果那更好
接下来就是nodejs即后端,我身边很多前端er觉得nodejs是后端的,不需要学习也不需要接触,殊不知,现代前端其实就是JS工程师,所有能用JS做到的事都应该去尝试与学习,更别说现在前端这个大环境,JS全栈是有很大的优势的
学习的话,主要以下几个方面:
朴灵老师的<深入浅出nodejs> <- 必看
特点与I/O密集
v8内存管理(新生代老生代算法 内存限制)
Libuv
进程管理: cluster和pm2
框架: express和koa
框架深入: koa源码,很值得学习
数据库:MongoDB/Redis的应用及简单深入
既然说到了后端,那不可避免就要说到架构相关:
Nginx配置与特点
Rest架构与新的Graphql
应用部署Docker
可视化这一块,其实水很水,面试的时候只要不说是专门搞可视化的话,基本上也就停留在canvas和svg以及库的使用上,写写与js相关的东西
Canvas和SVG
D3.js
Echarts与G2,G6
Zrender
webgl
最后,最重要的我一直没有说,那就是计算机的基础,尤其<计算机网络>,<操作系统>,<数据结构与算法>这三大部分,相当重要!相当重要!相当重要!
三.面经
限于文章篇幅,公众号后台回复 感谢邱神 获取面经
四.实习体会分享
个人介绍:昵称:seekhow
专业:计算机类物联网方向
实习公司:阿里巴巴-阿里云
实习岗位:前端
公司部门业务介绍:平台研发部
技术栈介绍:React+Vue,Node+go,Weex+RN
能否转正:能
实习待遇:200+餐补+房补
公司大致性别比例:不太清楚,反正男多女少,不过比例也不是很悬殊
发展前景:好,具体就不细说了
实习体会:
实习了2个月了,快到转正的时候了,最近又在准备秋招,有点压力
技术氛围极好,从集团,到公司,到部门,再到小组,最后到个人,都有技术学习分享
整个部门现在就我一个实习生,组里其他人非常nice,感觉转正没什么问题,希望不是毒奶
入职第一周2天熟悉了小组技术栈,然后用一周半的时间快速独立完成了一个模块的前后端开发,入职之后的适应速度很重要
一个半月的时间被拉进了一个紧急项目组进行紧急开发,时间非常赶(留给开发的时间不到1个月),任务非常重(很被重视的项目,有多被重视,要给阿里云大BOSS演示。。),反正有一天直接没回去躺公司里睡了,实习建议还是租房近一点,贵一点无所谓,主要是回去方便,实习生本来时间就很紧,再交通耽误一下,还学个啥…
自我总结很重要。实习开始之后的做的每一件关于项目的事,我都有记录,每周每个月都会总结(写周报的时间顺带总结一下)主动性很重要。不要等着被安排任务,要自己超前完成任务,主动询问下一步安排或把做过的做的更好。实习就该如此。
和身边的人至少要和小组的人打好关系。最好了解他们的学校情况,校招还是社招进来的,以前在哪里读书或者在哪里工作,什么时候进来的,做过哪些项目,擅长哪些,不是刻意去查户口,而是看看可以从他们的历程里面学到些什么,对自己的实习和转正有什么帮助
然后肯定有人要问实习和秋招准备冲突怎么办?!凉拌,我现在也烦恼这个问题,感觉秋招凉了啊,水平还不如过年的时候
五.资源分享
分享两个我自己找工作期间经常看到公众号以及加入的前端交流群(公众号后台回复 感谢邱神 获取)
End
关于本号作者乔戈里亲历2019秋招,哈工大计算机本硕,百度java工程师,欢迎大家关注我的微信公众号:程序员乔戈里,公众号有3T编程资源,以及我和我朋友(百度C++工程师)在秋招期间整理的近200M的面试必考的java与C++面经,并有每天一道leetcode打卡群与技术交流群,欢迎关注。
3T编程资料等你来拿
等等,先别走![程序员乔戈里]公众号又有活动了!参与活动,不仅可以培养自己良好的习惯,还能拿到“现金红包与书籍奖励”,动作要快,姿势要帅!
戳我看详情
今日问题:
(辣条走起)对前端你想说些什么?
留言格式:
打卡xx天,答:xxx