上周,有读者私信我说,“二哥,零基础该选择 Java 仍是 PHP 啊?”前端
我瞬间就误了!PHP?世界上最好的编程语言?webpack
后来,又有读者私信问我,“挺纠结的,不知道该选前端仍是 Java?”程序员
真很差选,由于“男怕入错行,女怕嫁错郎”,初学者纠结这个问题也是情有可原。web
首先来讲说 PHP,Web 蛮荒的年代,PHP 真的是王者姿态,连 Java 可能都要礼让三分,但近些年,PHP 只能作一些速成型的外包项目了,若是想增长更多的业务,想在性能上有所改善,PHP 就真的很难了!面试
因此,本着不误人子弟的原则,我推荐选 Java。前端的事,随后再说。算法
对于编程新村的同窗来讲,最重要的是找到工做,对吧?你要是给我说,你是凭借着一腔热血才学编程的话,我还真的是将信将疑。数据库
毫无疑问,就找工做而言,Java 数一数二!npm
我刚去编程语言排行榜(TIOBE,很是权威)截了一张图——关于近 10 年编程语言的变化。编程
能够看得出,Java 霸占这份榜单不少年,而且还会持续更久。一门编程语言能有这么顽强的生命力,他必定有别的语言所没有的优势,它与生俱来的竞争力是别的语言没法取代的。小程序
若是你决定选 Java 的话,能够先看看我整理的这份 GitHub 上星标 115k+ 的 Java 教程,里面涵盖了 Java 全部的知识点,包括 Java 语法、Java 集合框架、Java IO、Java 并发编程和 Java 虚拟机,内容很少,只讲重点。
GitHub 星标 115k+的 Java 教程,超级硬核!
尤为是对非科班的同窗而言,最困难的就是如何先进入这个行业,若是连门都进不来,找不到工做,那么再怎么努力,有什么用呢?
至于科班的同窗,很直白,咱们学编程的目的就是找工做,就是奔着高薪来的,若是临近毕业,若是连一份实习的工做都找不到,该有多难受!
Java 的就业岗位若是谦虚地说本身只能排第二,那没有其余编程语言敢说本身排第一。国内的一线互联网公司,好比阿里、美团、京东等等,后端都用的 Java。就别说中小型公司了,Java 的开源类库很是丰富,有着一个充满活力和积极进取的 Java 社区,借助这些类库可让开发者避免重复造轮子,尤为是有了 Spring Boot 以后,搭建一个独立的应用程序能够说是垂手可得,手到擒来。
更重要的是,Java 程序员的薪资客观啊,以北京为例。
虽然我是科班出身,但我始终以为,不论是科班仍是非科班,只要找到合适的学习路线,而后付出努力,找到一份趁心如意的工做并不是痴人说梦。对于程序员这个行业来讲,你付出一分努力,就会收获一份回报!
刚发现了一个在线学习 Java 的网站,真的很是不错,截个图给你感觉下。 风格贼舒服!还能作任务和打游戏,学习起来也更轻松自在一些。记住一点,编程是一门手艺活,不动手是学不会的。尽可能把网站上的代码都敲一遍,你就会发现本身在技术层面日新月异。
Java 基础当中,除了数据类型、运算符、表达式、输出和输入、程序结构、控制循环、数组、方法、传参、IO、异常处理、泛型、注解、反射这些偏基础的内容,难点就两个,一个是并发编程,一个是 Java 虚拟机。
关于并发编程,我以前画过一张思惟导图,能够按照里面的知识点,一个个过一遍。
Java 虚拟机涉及到的有 Java 虚拟机内存结构、垃圾收集策略与算法、内存分配与回收策略、Java 虚拟机性能调优、类文件结构、类加载机制等等,能够先看一看周志明老师的《深刻理解 Java 虚拟机》,一开始啃起来可能会比较痛苦,但若是能硬着头皮多啃一啃的话,面试的时候就会容易得多。工做后,若是能解决一些性能问题,领导也会对你另眼相看。
学 Java 基础的时候,能够到 B 站上白嫖培训机构的视频,好比说尚硅谷和动力节点的。但培训机构出的视频有一个问题就是,内容繁多,过于偏重基础,真正核心的内容讲的很少,也不够深刻。为何这么说呢,我给你们分析一下,就明白了。
拿动力节点的来讲:
844 节,真塔喵的多,怎么办呢?学的过程当中,能够跳过,或者倍速下面这些内容:
我没列举完,比较多,你本身在看的时候要注意下。
遇到一些不太会的知识点,或者看不懂的,能够按照关键字搜一下,Google 是第一选择,Bing 是第二选择,微信搜索是第三选择,度娘是第四选择。
CSDN 的 SEO 作的不错,有些文章的质量对学习仍是颇有帮助的(注意,我在吹 CSDN 的彩虹屁,哈哈哈)。
说完 Java,再来讲说前端吧。
前端这些年由于有 React 和 Vue,再加上安卓、Flutter、微信公众号、微信小程序等等,确实发展得挺好的,可谓一片盛世。
但不能抱着偏见去作选择,尤为是不能有这样的偏见:“前端比 Java 后端容易一些”,那可能一个 Java 后端的大神级的好苗子就没了。像同窗舍友说的那样,认为“学 Java 找实习来不及,学前端的话,可能性更大”,这种结论很不可取。作任何选择,都不能只停留在表面。
Java 后端的学习建议我前面已经说过了,接下来重点谈一谈前端,看看前端须要掌握的知识点都有哪些,我尽可能给你们梳理的完整一些。
前端开发是一个很是特殊的行业,它的历史并不长,但知识至关的繁杂(尤为是近些年),而且技术的迭代速度是其余技术不能相比的。与此同时,前端工程师也成为了研发体系中的重要岗位之一。
1)JavaScript
JavaScript 应该说是前端吃饭的家伙,深度、广度要兼备。基本上主流的前端框架都是基于 JavaScript 开发的,像 Vue,是由前端大神 @尤雨溪 开源的 JS 框架;像 React,是 Facebook 开发的一款 JS 库。下面这些知识点,是一名前端开发必需要掌握的。
2)HTML 和 CSS
随便打开一个网页,按下 F12 就能够看到大量的 HTML 和 CSS 代码。一个网页美不美观,能不能获得用户的喜欢,除了 UI 设计,除了 JavaScript 来控制逻辑,剩下就是 CSS 样式了。
3)运行环境
浏览器做为 JavaScript 的一种运行环境,为它提供了:文档对象模型(DOM),描述处理网页内容的方法和接口,一名合格的前端得了解:
注:Node.js 是一个可以在服务器端运行JavaScript 的跨平台运行环境
4)框架和类库
有一说一,前端的框架和类库真的是层出不穷,我学过的就有 Flex、ActionScript、jQuery、Bootstrap、TypeScript、React、Vue,有些已经淘汰了,有些快被淘汰了,有些是当下的主流。
对了,前端里还有 Flutter,一个由谷歌开发的开源移动应用软件开发工具包,用于为 Android、iOS、Windows、Mac、Linux、Google Fuchsia 开发应用。
吹个小牛逼,我以前还为京东大佬的《Flutter 实战入门》的书写过推荐序,虽而后来只在封皮上留下了这段话。
前端的 UI 组件也很是多,好比 Ant Design、EChart,还要掌握 GIS 开发框架,好比百度地图的 API,还有可视化开发框架,好比 Three.js、D3。
前端还须要懂一些计算机基础,好比说:
虽然大部分前端对数据结构和算法这部分知识有些欠缺,甚至抵触,但真的想要摸到更高的天花板,数据结构和算法是必会的。
另外,要熟练使用浏览器提供的调试工具,好比说 Google Chrome,还有微信基于 Chrome 内核魔改版的可用于调试公众号和小程序的调试工具。
前端再也不是单纯的写写 JavaScript 和 CSS,也须要工程化,因此须要理解 npm、yarn 等依赖包的管理原理,还有前端打包工具 webpack 的编译原理等等。
对了,还有性能优化这块。尤为是启动页,用户第一时间看到的,若是加载速度慢,页面的响应速度慢,用户可能就直接离开了。
我以前在作微信公众号的小商城时,可没少在首页的加载速度上下功夫,要压缩 CSS 和 JavaScript,要使用 CDN 内容分发,要减小 HTTP 请求的数量,要实现图片的懒加载,还要后端配合一些缓存等等。
这么一套前端的知识体系下来,是否是就不会再有那种刻板印象了,前端真的那么简单吗?懂的人永远不会说简单。
贴一张字节跳动的面试题吧,想走前端路线的同窗能够感觉下。
还有一张前端的技能图谱:
真乃学无止境也!
最后,简单说几句。
真没想到!愤怒!居然还有学校还在教 Java 的 Swing这篇文章会这么火!彻底超出了个人预期!
不少人在评论区喷我,看得我是内心笑呵呵~~~~
不必!不必!不必!
我一没打算让学校放弃教 Java,二没打算让 Intellij IDEA 的团队不用 swing 开发,我只是说两句内心话,能听得进去的,大学毕业后一会不会以为亏,毕竟国内的计算机高校仍是有一些问题存在的,若是不问青红皂白就忽略这些问题,我以为很可怕!
学校给不了的,我给了,你听进去了,多年之后你会来感谢我说的真心话,听不进去的,想喷的,随意,真的,开心就好。
最后的最后,仍是那句话,与其把时间花费到这些没用的知识点上,真不如:
1)痴迷于数据结构与算法
算法题就好像科举考试时代背的八股文,是知识改变命运的表明做。你不刷,就很过算法题这一关,由于不只要考,还能提升你的编程功底。我给你推荐的 BAT 大佬的刷题笔记,必定要下载下来刷一刷(能够点击下面的连接去下载)。
2)热衷于 ACM
3)尝试 Unix、Linux 环境下编程
4)醉心于网络编程和多线程编程,对 TCP/IP、HTTP 等网络协议有很深的理解
好了,今天的分享就到这吧。吹个牛逼,二哥影响力已经扩散到海峡两岸了,正在服兵役的小哥哥,加油呀!
我是二哥呀,但愿能给学弟学妹们一些帮助和启发,记得点赞哟~