愤怒!竟然还有学校在教这些破玩意

共 4997字,需浏览 10分钟

 ·

2021-05-20 02:56

昨天,有个读者私信我说,“老师正在教 Swing,这个知识点还需要学习吗?”

说句实在话,刚看到这个问题的时候,我是想骂娘的!不是骂读者啊,你懂得,骂学校,骂老师。但我硬是掐着自己的大腿忍住了,很客气地回复了一句“对,甚至可以不学”。

有点点到为止的味道。

我之所以这么委婉,是希望读者不要对学校的老师心存偏见,影响了后面的学习进度。但我内心其实是非常愤怒的,都什么时候了,Java 中的 Swing 早被淘汰了,哪个项目还会用这玩意编写客户端界面呢!

学 Swing、AWT 这些图形化组件纯属浪费时间!

可能有些老师也没真正在公司里实战过,拿本书就上来教,导致学生把大量的时间浪费在不需要学习的知识点上,以至于毕业找工作的时候,能力达不到招聘的要求。

有些学校很装逼的,老师都是拿自己的书来讲课的,反正我大学那会就是,觉得老师挺牛逼的呀,都自己出书了!后来等我自己出书了,才发现,原来出书也没什么难的呀(嗯,我在装逼)!

有些学校还不错,会选一些计算机专业的经典著作,比如说各种黑皮书作为教材。我只能说,能在这样的学校里待着的同学都是幸运的。

怕就怕,有些老师把教材直接拿过来不做过滤。不管是《Java 编程思想》还是《Java 核心技术卷 1》,里面都有大量的篇幅介绍 Swing、AWT 这些,但有工作经验的人都知道,这些在工作中是完全不用的东西。

我在推荐这两本书的时候,都会明确指出,不要去学这些东西,直接跳过,甚至可以直接撕掉。

希望出版社的编辑朋友们再版这些书的时候,能把这些不用的东西剔除掉,以免影响了初学 Java 的读者。当然了,我知道,这很难做到,删了等于书就变薄了,计算机专业领域的书都一本比一本厚,一本比一本贵!删了估计就卖不到这个价了,血亏。

那对于初学者来说,该怎么办呢?

当然是多关注一下真正有实力的编程大佬们,比如说我的好朋友 JavaGuide、江南一点雨等等,以及二哥我(加粗、加感叹号)!!!!!!!!!!

有问题,直接过来问,然后就知道学习的重点了!比跟着某些老师瞎学要强多了。

这不,刚好有编程新手过来问问题,二哥特别热情,还顺带做了一次心理按摩,帮助读者缓解压力,疏通脉络。

接下来,我来重点说说,怎么才能找到实习工作。

二哥的读者群体里有很大一部分都是大学生,所以如果你今天看了这篇文章,并且看到了这里,OK,恭喜你,直了,不不不,值了!

找 Java 后端的实习工作,首先要明白一点,校招不同社招,不会要求太多的项目经验,这一点,看似很浅显的道理,但往往很多学弟学妹容易在这一点上纠结,我缺项目经验啊,要狠狠地补,结果把计算机基础方面的学习给抛之脑后了,导致拣了芝麻丢了西瓜,得不偿失。

临到毕业季,很多公司就会到学校去校招,标准其实很简单,Java 方面能做一些简单的增删改查就行,但学习能力一定要强,基础一定要扎实,方便后面培养。因为刚入职的新人,靠谱的公司都会安排师父带,还会安排一定量的培训,公司是不怕你项目经验不足的,怕的是你学习进度跟不上。

我当年在外企实习的时候,就是,一上来,直接给两个月的时间,做个小项目,我当时被安排的是做个仿 Win7 的计算器(源码和成品还放在 CSDN 的资源库里),嗯,当时用的 Swing 做的界面,但那已经是 12 年前的事了!等过了辞退阶段,公司就安排了很多培训,培训编码规范了、开发流程了等等这些。

差不多工作了一年半的时候,我做了小组 Leader 的时候,还给新人培训过好多次,讲 Flex 是怎么用的。嗯,这玩意也被淘汰了!

(时不时就透露出我是一名 old 码农的浓烈气息)

好了,不废话了。来说下 Java 后端实习生的最基本的要求。

第一,经常用的工具一定要熟练

比如说 Intellij IDEA 一定要能熟练地使用。**如果你想写出质量杠杠的 Java 代码,又想追求开发效率,用 Intellij IDEA 准没错!**可以去 GitHub 上看一下 Intellij IDEA 中文版的教程,快捷键设置了、代码模板了、常用插件了,这些都有详细地说明。

https://github.com/judasn/IntelliJ-IDEA-Tutorial

我举个简单的例子,像 **CheckStyle、Alibaba Java 代码规范、SonarLint 这三个插件是一定要装的,可以极大程度上保证代码质量。**除了这 3 个,还有呢:

这些都能在很大程度上提高编写代码的效率。

比如说 Git 一定要能熟练的使用。大家都知道,版本控制系统非常重要!!!!!!

即便你只是一个人在编码,它也可以帮助你创建项目的快照、记录每个改动、创建不同的分支等等。如果你参与的是多人协作,它更是一个无价之宝,你不仅可以看到别人对代码的修改,还可以同时解决由于并行开发带来的冲突。版本控制系统有很多,其中最突出的代表就是 Git。

想要把 Git 学好的话,可以看一下 Pro Git 中文版 PDF,可以说是学习 Git 的最佳教程,因为作者就是 Git 的一个主要实现的贡献者。

我之前有写过一篇《牛逼的 Git》,大家可以点击链接跳过去看一下,里面有提供 Pro Git 的下载地址。

第二,Java 基础一定要扎实

像 Java 的数据类型、Java 的运算符、Java 的流程控制、Java 的面向对象、Java 的异常处理,这些都是最基础的东西,是初学 Java 的时候必须掌握的知识点。

然后是 Java 集合框架、Java IO、Java 网络编程、Java 多线程并发、Java 虚拟机,这些是 Java 中比较核心的知识点,也是必须要掌握的。

Java 集合框架中,像 ArrayList 与 LinkedList 之间的差别,HashMap 的数据结构、工作原理、哈希冲突、扩容过程、拉链法导致链表过深时为什么不用二叉查找树而选择红黑树、Java 8 时 HashMap 发生了什么变化、HashMap & ConcurrentHashMap 的区别等等,是面试的时候考察的重点。

多线程并发算是 Java 基础当中的难点之一,需要掌握的知识点我用思维导图列一下。

还有 Java 虚拟机,要学的知识点有:Java 虚拟机内存结构、垃圾收集策略与算法、内存分配与回收策略、Java 虚拟机性能调优、类文件结构、类加载机制等等。

怎么学呢?推荐大家一本书,就一本书,周志明老师的《深入理解 Java 虚拟机》,一开始啃起来可能会比较痛苦,但我必须得负责任的告诉你,多啃一啃,面试的时候很容易就把面试官给惊艳了。

第三,掌握 MySQL 数据库。

先来看一下 MySQL 的知识体系,还是用思维导图的形式。

对于基本的 SQL 语句,推荐《SQL 必知必会》这本书,很薄,很快就能学完了。然后是《MySQL 必知必会》,讲的很全,但很简练,非常适合零基础的学弟学妹。如果想更深入的学习 MySQL 的话,推荐两本书,《高性能 MySQL》和《MySQL 技术内幕:InnoDB 存储引擎》。

如果英语功底比较扎实的话,推荐看 MySQL Tutorial 这个英文网站教程,遇到阻碍的话,可以借助一下谷歌翻译。

https://www.mysqltutorial.org/

如果你有一台自己的服务器(学生购买的话也比较便宜)的话,可以到阿里云大学上学习,里面有 18 门免费课程,从 SQL 到 NoSQL,从自建到云上数据库,一站式学习+自测。

第四,掌握 Spring 系列框架

想成为一名合格的 Java 后端开发工程师,Spring 的系列框架是必须得掌握的,yyds。从 SSM(Spring+Spring MVC+MyBatis)到 Spring Boot,再到 Spring Cloud,都得会用。

事实上,Spring 早已成为 Java 后端开发的行业标准,如何用好 Spring,是 Java 程序员的必修课之一。由于 Spring 的快速发展,它逐渐从一个轻量级的开发框架变成了一个“庞然大物”,越来越笨重,导致搭建一个应用程序的成本越来越高,于是 Spring Boot 就应运而生了,它能帮助开发者快速搭建出一个独立应用,只需要很少的配置就可以了。可以毫不夸张的说,Spring Boot,牛逼!

Spring Cloud 利用 Spring Boot 的开发便利性,巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,可以说,Spring Cloud 的诞生,又一次解放了Java 程序员的生产力。

关于 SSM 的学习,可以看下江南一点雨在 B 站上的视频,能为后面学习 Spring Boot 打下坚实的基础。

https://www.bilibili.com/video/BV1NX4y1G7wx

我来简单介绍一下 SSM 具体是什么。

1)Spring 是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。它可以装载 Bean,也就是 Java 中的类,包括 Service、Dao 里面的;利用控制反转这个机制,我们就不用在每次使用类的时候用 new 关键字声明并初始化。另外,Spring 事务管理也是开发中常用到的。

2)来看一下 SpringMVC 的工作原理:

  • 客户端发送请求到 DispacherServlet(分发器)
  • 由 DispacherServlet 控制器查询 HanderMapping,找到处理请求的 Controller
  • Controller 调用业务逻辑处理后,返回 ModelAndView
  • DispacherSerclet 查询视图解析器,找到 ModelAndView 指定的视图
  • 视图负责将结果显示到客户端

3)MyBatis 是一个支持普通 SQL 查询,存储过程和高级映射的持久层框架。它对 JDBC 做了封装,让数据库底层操作变的更透明了。MyBatis 的操作都是围绕着一个叫 sqlSessionFactory 的实例展开的,通过配置文件关联到各个实体类的 Mapper 文件,再由 Mapper 文件映射每个类对数据库所需要执行的 SQL 语句。

关于 Spring Boot、Spring Cloud 的学习,可以看纯洁的微笑的博客,访问量在千万级别以上,影响了无数的初学者,我也是被影响者之一。

至于说 Redis、Dubbo 等等等等,我就不再强调了,就上面的这 4 个最基本的要求,就够喝一壶了。还有像算法与数据结构、操作系统、编译原理、计算机网络、计算机组成原理等等这些通用层面的,我也不再一一强调了。大学阶段,有时间就搞这些,如果学校已经安排了这些课程,那就更好了,学,一定要学!


大学时光说短不短,说长不长,作为过来人,真的是感觉一眨眼就过去了;对于正在读大学的学弟学妹们来说,正是青春的好时光,有很多事情要做,忙着社交,忙着拓展,忙着锻炼,忙着课业,忙着恋爱,忙不得开交。怎么在这么多事情的夹缝中努力学习呢?

就是一定要学会做减法,不该学的内容就不要再花时间学习了。像前面提到的 Swing、AWT 这些东西早已经被淘汰了,还有像 Applet、JSP 这种的,如果大学还在教这些,真的是学生的不幸。

与其把时间花费到这些没用的知识点上,真不如:

1)痴迷于数据结构与算法

算法题就好像科举考试时代背的八股文,是知识改变命运的代表作。你不刷,就很过算法题这一关,因为不仅要考,还能提高你的编程功底。我一直给大家推荐的 Java 版的 LeetCode 刷题笔记,一定要下载下来刷一刷。

吃完 300 道 LeetCode 题后,我胖得快炸了!

2)热衷于 ACM

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

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

好了,今天的分享就到这吧。

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

浏览 42
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报