绝不误人子弟!零基础应该选择学习Java、PHP,还是前端?_php前端与java前端-程序员宅基地

技术标签: 面试  java  编程语言  人工智能  大数据  编程技术  

上周,有读者私信我说,“二哥,零基础该选择 Java 还是 PHP 啊?”


我瞬间就误了!PHP?世界上最好的编程语言?

后来,又有读者私信问我,“挺纠结的,不知道该选前端还是 Java?”


真不好选,因为“男怕入错行,女怕嫁错郎”,初学者纠结这个问题也是情有可原。

首先来说说 PHP,Web 蛮荒的年代,PHP 真的是王者姿态,连 Java 可能都要礼让三分,但近些年,PHP 只能做一些速成型的外包项目了,如果想增加更多的业务,想在性能上有所改善,PHP 就真的很难了!

所以,本着不误人子弟的原则,我推荐选 Java。前端的事,随后再说。

对于编程新村的同学来说,最重要的是找到工作,对吧?你要是给我说,你是凭借着一腔热血才学编程的话,我还真的是将信将疑。

毫无疑问,就找工作而言,Java 首屈一指!

我刚去编程语言排行榜(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 的网站,真的非常不错,截个图给你感受下。
风格贼舒服!还能做任务和打游戏,学习起来也更轻松自在一些。记住一点,编程是一门手艺活,不动手是学不会的。尽量把网站上的代码都敲一遍,你就会发现自己在技术层面突飞猛进。

https://codegym.cc/zh/quests/tutorial?transition=force

Java 基础当中,除了数据类型、运算符、表达式、输出和输入、程序结构、控制循环、数组、方法、传参、IO、异常处理、泛型、注解、反射这些偏基础的内容,难点就两个,一个是并发编程,一个是 Java 虚拟机。

关于并发编程,我之前画过一张思维导图,可以按照里面的知识点,一个个过一遍。


Java 虚拟机涉及到的有 Java 虚拟机内存结构、垃圾收集策略与算法、内存分配与回收策略、Java 虚拟机性能调优、类文件结构、类加载机制等等,可以先看一看周志明老师的《深入理解 Java 虚拟机》,一开始啃起来可能会比较痛苦,但如果能硬着头皮多啃一啃的话,面试的时候就会容易得多。工作后,如果能解决一些性能问题,领导也会对你刮目相看。

学 Java 基础的时候,可以到 B 站上白嫖培训机构的视频,比如说尚硅谷和动力节点的。但培训机构出的视频有一个问题就是,内容繁多,过于偏重基础,真正核心的内容讲的不多,也不够深入。为什么这么说呢,我给大家分析一下,就明白了。

拿动力节点的来说:

https://www.bilibili.com/video/BV1Rx411876f?from=search&seid=1705641531822657605

844 节,真塔喵的多,怎么办呢?学的过程中,可以跳过,或者倍速下面这些内容:

  • JDK 的安装
  • PATH 环境变量的配置
  • 变量
  • 数据类型
  • 循环控制语句 if、if-else、while
  • MyEclipse
  • 等等

我没列举完,比较多,你自己在看的时候要注意下。

遇到一些不太会的知识点,或者看不懂的,可以按照关键字搜一下,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),描述处理网页内容的方法和接口,一名合格的前端得了解:

  • 浏览器提供的符合 W3C 标准的 DOM 操作
  • 浏览器的差异性、兼容性(Chrome、Safari、IE 等等)
  • 可以使用 Node.js 搭建前端运行环境
  • 可以使用 Node.js 操作文件、操作数据库等等

注: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 大佬的刷题笔记,一定要下载下来刷一刷(可以点击下面的链接去下载)。

他喵的,BAT 大佬的这份刷题笔记太强了!

2)热衷于 ACM

3)尝试 Unix、Linux 环境下编程

4)醉心于网络编程和多线程编程,对 TCP/IP、HTTP 等网络协议有很深的理解

好了,今天的分享就到这吧。吹个牛逼,二哥影响力已经扩散到两岸三地了,正在服兵役的小哥哥,加油呀!

我是二哥呀,希望能给学弟学妹们一些帮助和启发,记得点赞哟~

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qing_gee/article/details/117326717

智能推荐

Python 实现C、C++程序注释英文翻译插件_针对c语言注释进行翻译-程序员宅基地

文章浏览阅读760次。Python 实现C、C++程序注释英文翻译插件。3.此文缺少访问超时等待续翻译代码段,暂时没空添加。2.安装核心功能包translators。1.参数3个,源文件、目标文件、翻译模式。4.编写正则表达式分析文本内容。3.编写文本输入输出函数。6.Keil实践提示。_针对c语言注释进行翻译

环形子数组的最大和-程序员宅基地

文章浏览阅读418次,点赞10次,收藏7次。至此,我们可以使用以上方法求解出环形数组的最大子数组和。特别需要注意的是,本题要求子数组不能为空,我们需要在代码中做出相应的调整。第一种情况的求解方法与求解普通数组的最大子数组和方法完全相同,读者可以参考53号题目的题解:最大子序和。求解普通数组的最大子数组和是求解环形数组的最大子数组和问题的子集。从子数组 [3] 和 [3,-2,2] 都可以得到最大和 3。的最大前缀和,将它们相加更新答案。数组和枚举后缀的时间复杂度为。最多只能包含固定缓冲区。构成最大子数组和的子数组为。构成最大子数组和的子数组为。

Flutter溢出滚动_flutter 超出滚动-程序员宅基地

文章浏览阅读4.8k次。外部再加层SingleChildScrollView属性this.scrollDirection = Axis.vertical,//滚动的方向,垂直或水平this.reverse = false,// 是否反转,如果是垂直滚动的话,reverse默认为false,表示先看上面。如果reverse为true,则先看底部。this.padding,// 内边距bool primary,// 是否使用默认的controllerthis.physics,this.controller,//可以控制初_flutter 超出滚动

我的世界服务器换披风的网站,minecraft我的世界局域网换皮肤和披风-程序员宅基地

文章浏览阅读3.7k次。minecraft很多人不知道皮肤和披风怎么换,装了mod也没用,皮肤有人说必须要正版,也是胡扯。那该怎么换呢?下面是学习啦小编收集整理的minecraft我的世界局域网换皮肤和披风,希望对大家有帮助~~minecraft我的世界局域网换皮肤和披风工具/原料minecraft电脑版skinme方法/步骤1进入http://www.skinme.cc/#./mod_index?&_suid=..._minecraft披风网站

python按钮虚化_深度学习与图像处理之:人像背景虚化-程序员宅基地

文章浏览阅读457次。简单实现思路:对图像内容进行分割,提取人像对图像背景进行模糊化处理将人像和背景重新合成在这里,使用DeepLabV3模型对图像内容进行分割并提取人像,实现的代码如下:import numpy as npimport tensorflow as tfimport cv2from deeplabmodel import *def create_pascal_label_colormap():color..._python 图像处理 深度学习

随便推点

Linux 网络命令知多少-程序员宅基地

文章浏览阅读326次。在一片漆黑的界面下,我们该如何查看和配置系统网卡、IP地址、路由等信息呢?最传统基本的网络命令,几乎所有旧的发行版都支持的配置命令:ifconfig查看系统的所有网卡及IP配置信息:ifconfig禁用网卡:ifconfig eth0 down,启用网卡:ifconfig eth0 up为网卡配置IP地址:ifconfig eth0 192.168.1.56 netmask 255.255.255.0Ifconfig命令的替代者,最新版本的linux发行版都支持:查看系统的所有...

论文笔记 | 语义解析相关论文_a syntactic neural model for general-purpose code -程序员宅基地

文章浏览阅读1.7k次。文章目录1. Language to Logical Form with Neural Attention2. Abstract Syntax Networks for Code Generation and Semantic Parsing3. A Syntactic Neural Model for General-Purpose Code Generation4. Tree-structured Decoding with Doubly-recurrent Neural Network5. Seman_a syntactic neural model for general-purpose code generation,

MySQL基础教程——创建数据库并插入数据-程序员宅基地

文章浏览阅读1.8k次,点赞4次,收藏12次。本节将介绍 MySQL 新建数据库,新建表,插入数据以及基本数据类型的相关知识。本节实验将创建一个名为mysql_shiyan的数据库,其中有两张表employee和department。1. 准备再安装并配置好MySQL的Linux系统上,先用以下两条命令打开 MySQL 服务并使用 root 登录:# 打开 MySQL 服务sudo service..._创建名为xn的数据库,在该数据库下创建集合dsj,并在dsj集合中插入下列文档

Hadoop FS 常用命令详解_hadoop fs mkdir-程序员宅基地

文章浏览阅读5.1k次。1、概述Hadoop文件系统(FS)提供了各种shell命令,与shell命令类似,可用于同分布式文件系统(HDFS)进行交互,以管理HDFS集群中的文件和数据。2、Hadoop FS常用命令(1)创建目录用法:hadoop fs -mkdir <paths>示例:创建单个目录:hadoop fs -mkdir /home/myfile/dir1创建多目录:hadoop fs -mkdir /home/myfile/dir1 /home/myfile/dir2(2._hadoop fs mkdir

int gd = DETECT, 显示错误未定义标识符”DETECT“-程序员宅基地

文章浏览阅读1.1k次。DETECT是一个在graphics.h头文件中定义的常量,用于在初始化图形模式时指定使用自动检测功能。你在使用DETECT之前没有包含graphics.h头文件或者在编译时graphics.h文件没有找到,因此导致编译器无法识别DETECT标识符,出现了“未定义标识符”的错误提示。你需要在使用DETECT之前包含graphics.h头文件,例如:#include <graphics...._未定义标识符detect

00-C语言语法_00,,c-程序员宅基地

文章浏览阅读830次。C语言语法变量变量对应这内存中的一段内存。 从内存的角度看变量,变量包括:内存地址(变量首地址)、变量名、变量类型(即变量大小)、变量值等。关键字auto自动变量:是函数的参数 ,和 在函数体内定义的局部变量。函数的形参及代码块中定义的变量都属于auto变量,这是C语言中应用最广的一种变量,这类变量是栈分配的,是动态分配存储空间的。举函数形参为例,当调用该函数时,为形参分配存储空间,当函数调用结束时,系统就自动释放这些存储空间。对**代码块中定义的变量(包含函数中定义的变量),当执行到_00,,c