目录:
Java需要掌握的知识点
初中级 Java 程序员必须掌握的知识。
微服务思维导图
阿里官网支付宝Java高级开发工程师的招聘要求
应届实习生如何提升你的个人竞争力
前言:
我听说编程语言,经常使用的是其中20%的技术。在Java这门语言中,这20%包括哪些内容?参加培训两个月了,还有两个月的时间,要想在两个月后,找到一份Java初级程序员的工作,有哪些是必须掌握的,有哪些是可以现学现卖的?一个完整的Javaweb项目,有哪些具体模块,每个模块用到的技术是哪些?
Java需要掌握的知识点
很多初学者或者有经验的开发者都会陷入这个泥潭:“不知道自己该学什么?”。
我觉得最简单的方法就是你去招聘官网上看看公司要求什么技能,比如初级 Java 工程师的招聘要求肯定和高级 Java 工程师的招聘要求不一样,阿里的 Java 工程师的招聘要求肯定和 普通公司的Java 工程师招聘要求不一样。
初中级 Java 程序员必须掌握的知识。
熟练掌握数据结构、算法、操作系统、计算机网络等基础知识熟练掌握Java编程、熟悉Java高并发开发手段、对JVM 虚拟机(Java内存区域、虚拟机垃圾算法、虚拟垃圾收集器、JVM内存管理)有一定研究熟练掌握SOA分布式系统开发,具有优化系统性能、提高系统并发量以及系统可用性的实际经验熟练掌握Spring、MyBatis、SpringBoot等框架的使用,熟悉 Spring 原理比如 Spring Bean 的创建原理、IOC和AOP的原理。另外,由于现在基本公司都是直接用 Spring Boot ,所以实战建议直接上手Spring Boot。SSM就算了吧,Spring 还是可以看一下。熟练掌握Dubbo、Zookeeper、常见的消息队列(比如Kafka、RocketMQ)的使用熟悉Linux 系统的使用,在Linux系统下具有实际的开发经验熟悉MySQL数据库的使用、常见SQL语句的书写以及常见的优化手段熟练掌握 Redis 了解Redis 常见的数据结构、Redis分布式缓存以及Redis分布式锁的实际应用与掌握 Spring Cloud +Docker+k8s了解Hadoop 生态相关技术中的 HDFS、Storm、MapReduce、Hive、Hbase
具体的知识点可以看这份阿里架构师花近十年时间整理出来的Java核心知识笔记
此份笔记覆盖了JVM、锁、并发、Java反射、Spring原理、微服务、Zookeeper、数据库、数据结构等大量知识点。
由于篇幅有限在此就只展示一下目录,需要完整版本可以看文末免费获取;
微服务思维导图
小编这里总结了一份spring cloud的思维导图,有兴趣的小伙伴可以点击看一下哦!
阿里官网支付宝Java高级开发工程师的招聘要求
我们再来看一下阿里官网支付宝Java高级开发工程师的招聘要求,年薪至少40w起步了吧!从下面的招聘信息可以看出,除去Java基础/集合/多线程这些,这些能力格外重要:
- 底层知识比如jvm :不只是懂理论更会实操;
- 面向对象编程能力 :我理解这个不仅包括“面向对象编程”,还有SOLID软件设计原则。
- 框架能力 :不只是使用那么简单,更要搞懂原理和机制!搞懂原理和机制的基础是要学会看源码。
- 分布式系统开发能力 :缓存、消息队列等等都要掌握,关键是还要能使用这些技术解决实际问题而不是纸上谈兵。
- 不错的sense :喜欢和尝试新技术、追求编写优雅的代码等等。
应届实习生如何提升你的个人竞争力
结合阿里、腾讯等大厂招聘官网对于 Java 后端方向/后端方向的应届实习生的要求下面几点也提升你的个人竞争力:
参加过竞赛( 含金量超高的是 ACM );对数据结构与算法非常熟练;参与过实际项目(比如学校网站)熟悉 Python、Shell、Perl 其中一门脚本语言;熟悉如何优化 Java 代码、有写出质量更高的代码的意识;熟悉 SOA 分布式相关的知识尤其是理论知识;熟悉自己所用框架的底层知识比如 Spring;有高并发开发经验;有大数据开发经验等等。
从来到大学之后,我的好多阅历非常深的老师经常就会告诫我们:“ 一定要有一门自己的特长,不管是技术还好还是其他能力 ” 。我觉得这句话真的非常有道理!
刚刚也提到了要有一门特长,所以在这里再强调一点:公司不需要你什么都会,但是在某一方面你一定要有过于常人的优点。换言之就是我们不需要去掌握每一门技术(你也没精力去掌握这么多技术),而是需要去深入研究某一门技术,对于其他技术我们可以简单了解一下。
这让我想到了我当年第一份工作,也是两个月从零学JAVA。当时就买了3本书,强啃了6周。记住一点,时间有限,别听网上很多大牛的,他们说的太杂。你要抓重点,你只要让人家知道,你足够初级开发就可以了,学了长长一个列表,个个不精,被面试官随便问起来,就糟了。倒不如抓住最基本的,反正你就是初级人员,只懂最基本的,是最正常的情况。
首先,学会一个J2EE服务器,tomcat+(Nginx或者httpd等web服务),学会的标准是,会下载,能启动,知道什么文件部署在什么地方,能看到启动画面,能知道最直接,最关键的配置文件名字和位置。你要了解下其他的服务器的名字,就足够了。有人叫你去学weblogic?那是坑你,2个月weblogic,你最多也只能懂十分之一。太重。
其次,学一个框架,以前SSH,现在SSM,这些都多余,你就只看spring MVC,因为所有的mvc框架都类似,你只要坚持你了解MVC,其他的我觉得是容易借鉴类推的,H和M,你就直接说,我没有项目经验,我是没有实际接触过的,我只了解一点点原理,这个不要花时间,最后去看几眼文档就可以了。spring MVC,就这么简单,一个就行。
然后是数据库,别赶时髦搞nosql,老老实实关系型,mysql就很好,坑浅应用多,最近连集群支持的都很好了,你只要强调一点,数据库,你不是DBA,你还不懂如何调优,如何调执行计划,你只懂增删改查,所以你要学的就是T-SQL,标准是你能手写带条件的增删改查,会复杂语句更好,稍微了解下sql效率方面的问题,为了面试也是可以。MSSQL在国内被鄙视的不行,如果有人叫你弄oracle,那又是太装,我手下一票的5年+程序员,其中有超过一半连oracle的AWR都不会读,有的连数据字典都不知道。
IDE不多谈,你总逃不过eclipse和几个大厂的东西。要用简单易用的,别花太多时间在这个上面。
设计模式你要稍微看一下,了解什么是设计模式,你大可以老实说,你根本刚入行,只是粗通工厂模式和单粒,其他的需要在工作中学习,这样既不会显得完全不懂,也不会出什么纰漏。
程序方面,jdbc需要了解下,相关的有连接字的写法,如何准备和获取结果,什么是resultset这类东西,当然,数据库连接的关闭和释放也是需要的。
类和抽象类和接口的关系搞清楚,继承和实现搞清楚,重载重写搞清楚这些都是基本概念。
EJB现在不太用了,稍微了解下,你可以用spring所以不用手写EJB了。spring除了MVC以外,还有很多项目,DAO可以看一下,比较初级。
由于java主要是B/S结构,无论是集成还是自己的前后端,你都要看一下http,整个http的生命周期是什么?存在哪些步骤和不同的application负责哪个阶段,相关的有几个request和response实体,包含什么是session了解下。
业务逻辑的话,上手仔细写几个例子就好了
前端你不需要了解太多,JSP+JS就足够了,你是程序员,不是前端的美工,不用去了解太多。jsp上有个容易忽视的基础点:tag到底是什么如何处理。jsp的生命周期这些也最好看一下。
基础的devops稍微了解下, git的代表,github可以注册一个账号,搞清楚本地repo和远程repo之间的关系即可。SVN更为简单一点。
Maven也要学习一下,主要是pom文件的几个主要的部分,尤其是depedency。
code smells方面手写万把行代码。自己有个感觉,不用去刻意背javadoc。
去面试吧,祝你好运!
文章到这里就结束了!
编程的世界永远向所有热爱编程的人开放,这是一个自由,平等,共享的世界,我始终是这样坚信的。
Java核心知识点和小编下面收藏的全部资料可以转发此文后添加免费领取;