自学前端我只学这些够吗?好难
Posted 经海路大白狗
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自学前端我只学这些够吗?好难相关的知识,希望对你有一定的参考价值。
表弟也终于到了马上要大学毕业的时间,然后听说我在做前端开发工作,就想着能不能和我一起搞一搞。
我说这又不是小时候一起去地里抓兔子,说走就一起走,拿上工具一起走了,这得学啊。看着表弟期待的眼神,他问了我几个问题。
☆ 1 自己到底适合学习前端开发吗?
☆ 2 学哪些东西能够快点找到工作?
目录
一、自己适合学前端开发吗?
如果说你挺想学习的,但是有人阻拦你说你不适合学,那这个人一定是在放屁。我跟表弟说,除非你是聋哑傻呆人,可能工作几年后遇到瓶颈想要精进很难,但是如果想入门,还是没有问题的。
而且并非你学了前端就要做前端开发,以后你从事很多职业,有一些软件知识在身都是很有用处的。
而且学习编程语言可以锻炼自己的逻辑思维,哪怕以后做了销售或者做了其他的职业,有了软件基础,再加强了思维逻辑的判断,就算自己再差,总部至于自己完全不懂,出现被别人蒙了的情况吧。
而说道自己是否适合学习,我想再没有比前端更适合刚毕业的学生入门的开发语言了。其他开发语言在学习前还得理解很多知识点。而前端开发,前几课肯定是html标签,这么几个标签你就说还记不下来,不会往编辑器里写嘛。
唯一不同的是,可能有些人学的太快了,还没理解每个标签什么意思,就已经学到javascript去了。
可能是有技多不压身的想法,也可能是觉得时间紧迫,宝贵的不行,必须得在几个月时间内把前端的知识点都学完,不学完面试一问自己不会就不行。大可不必,大学毕业嘛,搞得这么狼狈,你说什么都会,那反而引起人家的关注,来吧,我问问你真知道还是假知道。
二、自学计划
1、HTML
仍然是HTML打头,这是基础中的基础。要理解每个常用标签的意思,去互联网上看看每个标签都用在了什么地方,并且在不适用CSS javascript的前提下,通过HTML标签语义化来完成一些网页的架构
2、CSS
这个整体自学步骤已经很多年了,步骤走向是不变的,但仍然要甚至每个css属性的含义,练熟,还要去网上看大家都是怎么用这个属性的。
然后就是结合HTML重复练习,练到什么程度呢?用简单的开发工具,比如sublime,不要带提示的,就是把单词自己一点一点的敲出来。不断的练习,只要HTML + CSS仍然不熟练就不往下学。
不要太担心着往下学,这2项绝对是前端核心的核心,很多人忽略了这一点,觉得这2项知识点最简单,匆匆学完就往下走了。而且市面上也有一种职业是“切图”,就是静态网页的生成,说白了就是HTML + CSS,这虽然是体力活,但如果工作接得上的话,收入也很不错的,还能做兼职。
3、javascript
到了这一项,前2项一定是特别熟练了,就像初中练五笔打字,到了打字的时候一定保证自己的词根已经非常熟练了。
那么这个时候再从基本变量的定义,语法,概念去入手,最初很多东西都是需要记忆的,然后是强化练习记忆,再然后是一些常用算法的练习,比如冒泡,二分法,100以内查找一些数字,再比如99乘法表,刚开始可以不必追求的特别完美,写出来写熟练了就可以。
然后是通过一些函数的执行去完成一些事情。这个时候你也没有必要太深的理解构造函数,闭包,什么觉得很拗口的概念,刚开始一切以实现自己的想法为准。你一定会有很多疑问点,那么你需要带着这些疑问点继续往下学习,边学边回头看一看疑问是否已经解除。如果到最后都没有解除,那可能真的是一个难题,或者当初自己就是钻了牛角尖,其实这本身并没有问题。
学习javascript,最日常的就是操作HTML,所以需要练习着创建一些元素,通过创建的元素实现一些基本的鼠标点击或者上移事件。
注意:一直到javascript这一步学完,一定是已经做过几个复杂一些的页面了,通过HTML + CSS,然后通过 js 达到一定的效果,可能是动画效果,可能是一些计算逻辑效果。
如果不熟练,一定要练熟了再继续往下学习。因为怕后面越积赞问题点越多,这就真的从入门到放弃了。
4、jquery
很多人都在提问,jquery还有没有必要学习。
jquery这个js库占领了市场那么多年,肯定是有其优点的,你说这么有优点的一个库,层占领了市场那么久,你在刚学完js的时候,就不想体验体验吗?或许体验过后这会让你觉得爱不释手。
但现在面试也不考jquery了,日产工作也很少用到jquery了,就把前面用javascript做的页面,再用jquery实现一遍就行了,从中体验一下用jquery是怎么实现的。
为什么还要从jquery这里走这么一遭呢?为何不直接开始学vue或者react呢?因为我们前端开发工作始终还是围绕DOM(或者说那些HTML标签)展开的,不管后续使用到什么前端框架,都脱离不开DOM的操作,虽然框架封装的越来越深了,让你越来越感受不到js原来的样子了。但使用jquery的过程,真正可以让你锻炼实现一个业务的时候那种逻辑性,可以说是javascript的一个升级版。这里主要是为了锻炼实现需求的逻辑能力。真正到了现在的vue或者react,很多时候可能就不是那么有逻辑性了。
jquery已经没有必要理解的太深了,用熟练了就可以了。
5、es6 + vue / react
为什么是或呢?vue和react不都要学吗?不是说好了技多不压身吗?
我敢保证,如果你大学毕业想学好前端,快速找到工作,刚开始给你灌输太多知识是个错误的选择。为什么很多人找工作,一问概念特别熟,这个词特别熟,问深一点就不会呢,就是觉得别人会了,这个知识点前端有了,我也得有,哪怕知道一下这个词也行啊。
相信我,把vue 或者 react 其中一项学好,把前几步实现的页面,再用vue实现一遍,首先是要用熟,体验vue的每个细节概念,钩子函数。当你用熟了以后,想了解原理就了解一下,想深入的看看就看一下,网上这么多说原理的专家。
当其中一个vue 或者 react熟透了,这个时候你还想为了适应找工作而学另外一个,那么我觉得是对的。
不过对于刚毕业的,如果哪个面试官还问的特别深的话,那可能是他那天心情不太好吧。
6、KOA
一看见这个词我就想起我们家那台康佳彩电了,由于疫情已经好久没回过家了。
对于刚毕业的你来说,不需要深入学习KOA,你所需要掌握的就是如果本地启动一个koa程序,给自己提供接口和数据,因为在学习jquery和vue的时候一定会涉及到发送HTTP请求,一定会异步获取数据。
这个时候又没有后端帮你写接口,所以KOA只需要掌握这一点就可以,给自己提供数据。
相信提供完数据,可以写接口的时候你一定很兴奋,即便我说掌握这么多就好,你也一定会更近一步的去接触他的。
7、刷面试题
这年头,做的日常工作跟面试题几乎不挂钩,面试官也不是咋想的,没有办法,社会风气就是这样,所以多刷一些面试题,再跟你自己已有的经验融合一下;
对于刚毕业的是你,前面那些基础的一定要非常熟练,可以保证你入职以后能够靠自己完成开发需求。
8、管住自己3个月
不管平时多么的爱玩游戏,管住自己3个月,猛烈自学3个月。你可以的,表弟
为了更有助于初学者学习,使初学者可以不必再花多余的钱去学前端开发,我自己开始录视频了,录得不好,但应该自学找工作没问题
自学Java找工作好难,为什么会这样?
无人理睬时,坚定执着。前路浩浩荡荡,万物皆可期待。
作为一名工作多年的老程序员,我面试过很多Java新人(应届生、工作一年左右的程序员)。
今天我就从我自己面试新人的角度来回答一下,我会把面试的知识点进行拆解,希望你看完之后,能从中找到学习 Java 的重点。
学习是为了找到工作、拿到 offer,这就有一个公式:
offer = 工作需要的技术栈 + 计算机基础知识 + 项目经验 + 加分项
让我们分别看看公式右边的这些方面具体是什么。
1. 工作需要的技术栈
工作需要的技术栈往往和特定语言以及配套的周边工具相关。
对 Java 技术栈来说,又可以分为以下几个方面:
1.1 基本语法
基本语法在面试里不是说会用 for 循环、if else 语句之类去写代码就行,而是利用基本语法去编写更合理、更规范、更可读的代码。
比如,是不是能让变量处于很合适的作用域?String、StringBuffer、StringBuilder 适合的应用场景是不是非常熟悉了?
如果对于 Java 的基础还很薄弱,推荐去看《Effective Java》,以便真的能够写出来好代码。
另外,为了能更加规范的写出高质量工程代码,推荐研究下阿里的《Java开发手册》。
1.2 常用数据结构
如果要想通过面试找到工作,Java 中一些常用数据结构一定要好好掌握。最常用的就是以下几种:
- LinkedList
- ArrayList
- Stack
- ArrayBlockingQueue
- LinkedBlockingQueue
- HashMap
- LinkedHashMap
- TreeMap
- ConcurrentHashMap
- HashSet
- TreeSet
以上列举出来的这些数据结构,不仅要熟练使用它们,更需要理解它们的原理。
知道了原理,才能证明你能灵活且正确的使用这些数据结构。所以,面试中经常会问这些数据结构的原理。
如果对这些结构的原理还不熟悉,这里推荐一本很老但是依然很有用的书《Java Generics and Collections》,它详细介绍了 Java 中各个集合的实现。
但是这本书没有中文版,如果英文书读的很痛苦,大家可以去网上搜索一些好的文章,也能达到相同的效果。
1.3 异步与多线程
现在只要编写高性能的代码,就离不开异步;只要在多核 CPU 下工作,就离不开多线程去平行执行任务。所以,异步和多线程是一位后端工程师必须掌握的核心技能。
而要达到找工作的水平,我认为至少满足如下几个条件:
- 能准确的理解进程和线程的概念
- 至少弄懂什么叫 race condition 和死锁之类的概念
- 需要理解 JVM 的内存模型
- 了解常见的多线程编程模式
对于异步和多线程,我也不用多说了,肯定是首先推荐去读懂《Java并发编程实战》,然后还有一本《图解Java多线程设计模式》。这两本书读透了,面试异步和多线程,基本你也没什么问题了。
1.4 IO 操作
这里说的 IO 操作,主要是利用 Java 去读写文件。
Java 的 IO 都在 http://java.io
包中,大概有 40 个流类。其实不用每一个都掌握,最基本的要求就是:
- 理解 IO 流的概念
- O 里哪些是字节流哪些是字符流
- IO 里哪些是节点流,哪些是处理流
- 哪些 IO 流带缓冲可以提高性能的
了解了这些东西,才能在实际开发中做到有的放矢,从而把 IO 用对用好。
推荐看下 《Java IO》和《Java NIO》这两本书。其中《Java NIO》有中文版,《Java IO》没有
1.5 常用框架
除了 Java 语言本身的语法和库啊什么的,要找到工作还请务必熟悉至少一套开发框架。
Java 最常用的框架就是:
- Spring
- Spring MVC
- Spring Boot
- Mybatis
- Netty
其实,Spring、Spring MVC、Spring Boot 都是 Spring 体系的。所以,要找后端工作,Spring 是必须要掌握的。有了 Spring 的基础,别的 Spring 体系可以即插即用的。
SSM 中的的 M——Mybatis 也最好掌握了,有数据库基础的话,Mybatis 学起来也不算难。
Netty 是一套网络框架,我估计初期用到的机会不多,但奈何有些面试官会问、会考,所以,若有闲暇功夫,推荐对它看个大概。
相关推荐的书有《Spring 5 开发大全》、《MyBatis技术内幕》、《Netty进阶之路:跟着案例学Netty》。
1.6 常用数据库
一般来说,找工作,熟悉一个数据库就好。推荐 MySQL,这是最常见的数据库(其次是 Oracle)。
要熟悉到什么程度呢?我认为最低水平要知道怎么用 MySQL 执行 CRUD 操作。但是这还不够保险,因为很多面试官为了防止新人删库跑路,会对面试者要求更高。
像在 CRUD 里,R 代表查询,是后端工程师最常打交道的操作。而查询用的又对又好是对工程师使用 MySQL 水平的重要标准。所以,面试官就希望面试者能对 MySQL 的索引原理有一定的了解,面试的时候也会经常问这类问题。
同样的道理,除了查询以外,CUD 即增、改、删是非常危险的,既可能影响性能,还可能出现各种误操作。所以,为了保证把人招进来,不会对数据库乱操作,面试的时候大概率会考察程序员对 MySQL 中的锁和 MVCC 的理解情况,明白怎么用才安全可靠。
如果对这些都不太熟悉,推荐看下《MySQL是怎样运行的》,对 MySQL 讲的非常透彻。
1.7 Linux 基本操作
现在只要想做后端工程师,就肯定避不开和 Linux 系统打交道。
基本的命令操作是肯定要熟悉的,比如:目录切换、设置环境变量、文件的增删查改等等。
除了这些基本命令,还要理解 Linux 中一切皆文件的概念。并且对于一些重要概念,比如:管道、重定向、标准输入输出、标准错误输出等,也要明白他们是什么东西。
有时候,还需要开发人员直接在线上机器去编辑文件,所以还要会用 Vi/Vim 去在线编辑一些文件。
另外,如果服务器有了问题,起码基本的查询性能的命令,也要会用。比如用 netstat、vmstat 等命令去查看下机器状态。
这些知识可以看下《鸟哥的Linux私房菜 基础学习篇 第四版》。
2. 计算机基础知识
除了技术栈以外,还需要面试者有扎实的计算机基础。这个计算机基础是考察面试者在学校的学习状况的,如果你计算机基础不好,那大概率说明你本身学习态度、学习能力至少有一项不太合格。
对 Java 后端工程师,咱们挑两个很重要的基础知识说说:
2.1 计算机网络
后端大部分的时候就是各种接口和协议,数据传来传去,总是需要关注到网络问题的。如果一个后端工程师,对 TCP 不熟悉,对 Http 一问三不知,那么谁能相信你是一个合格的后端工程师了呢?
对于计算机网络,我推荐好好看看《计算机网络(原书第7版)》这本书,在自己的头脑中,构建出一套完整的网络体系来。
2.2 操作系统
学完了计算机网络,接下来就是去好好学习下操作系统。学习操作系统就是去学习如何在复杂的情况下,去协调分配各种像 CPU、内存、IO 等这些竞争性使用的计算机资源。
学懂了操作系统,你心里就有了一套在复杂情况下,去管理协调资源的成熟套路和方法论。
而这些成熟的套路和方法论,最终都是你后面能成长为优秀的工程师,以及能应对各种复杂业务需求的核心竞争力。所以,操作系统学懂是很重要的。
如果对操作系统不熟悉,我推荐看下《操作系统导论》这本书,人民邮电出版社出版,王海鹏翻译的。
3. 做过的项目
面试官是如何在面试中考察你是否真的做过项目呢?
其实挺简单的,只需要问一下你做的项目中核心模块的业务流程,然后挑出这个业务流程中的一些技术难点或者技术特点,重点问你是怎么实现的,就能大概判断出你是否真的做过项目了。
至于项目,主流的项目有这么几类:
- 电商
- 社交
- 垂直领域平台
- 音视频平台
- 出行
- 门户
在面试前,最好去专门熟悉下不同类项目的核心流
程都有哪些。比如,电商的核心流程就有购物流程,社交的核心流程就有私聊、群发消息,出行平台则是人们叫车的这个过程。
而在这些核心业务流程里,一定有技术难点需要克服,比如:
- 购物车到底放在客户端还是服务器端?
- 放客户端,排序规则,缓存的更新策略你是怎么解决的?
- 而放在服务器端呢,你和客户端之间通信频率啊,客户商品的实时更新啊,又是怎么考量的?
这些没有经过实战,很难给面试官讲清楚。
所以,在应聘工作前,最好就是自己能去参与个项目,多学多问,多考虑为什么项目中需要这样做的道理。
如果真的参与不了,我推荐去 github 下载个开源的项目,然后弄清楚架构和业务流程,对于一些不懂得,可以问下开源的作者,或者去问下已经工作的前辈,又或者去专业的论坛问。
总之,一定要从我给的分类项目中找一个项目,去深入了解业务流程和对应的技术实现,以及实现背后的动机,只有这样,面试官才会真的认为你有了实战经验。
顺便在这里说一下,我目前是在职Java开发,如果在学习Java的过程当中有遇见任何关于学习方法,学习路线等方面的问题,你都可以 点击 Java技术讨论,这里面聚集了很多正在学习Java技术的初学者,也有不少从事Java开发岗的大佬,与Java相关的问题都可以随时发出来讨论。
4. 加分项
说完了项目经验,我再说说加分项(技术博客、开源项目、竞赛奖项等),加分项在去大厂应聘的时候尤其有用。
无论你是有开源项目还是有博客文章,都说明了一件事——你是一个爱学习、乐于分享的人。
大厂里,很重视的一件事就是分享。分享经验、分享技术、分享心得,这些都是大厂非常提倡的事情,如果在一群候选人里,你有加分项,别人没有,面试官会选谁不言而喻了吧。
所以,一定要经常性的对公众输出一些东西,文章啊、开源项目啊、竞赛分享啊,能输出什么输出什么。这样才能让面试官看到你有实力的证据以及你 open 的态度,从而在面试中占有更多的优势。
以上是关于自学前端我只学这些够吗?好难的主要内容,如果未能解决你的问题,请参考以下文章