前言:
Java知识点需要掌握
初中级 Java 程序员必须掌握的知识。
微服务思维导图
支付宝阿里官网Java高级开发工程师的招聘要求
如何提高应届实习生的个人竞争力?
前言:
我听说编程语言经常使用20%的技术。Java这20%的语言包括什么?参加培训两个月,还有两个月。如果你想在两个月后找到一份Java初级程序员的工作必须掌握什么,现在可以学习和销售什么?一个完整的Javaweb每个模块使用的具体模块和技术是什么?
Java知识点需要掌握
- java以其丰富的分布式应用生态而闻名,在分布式系统中无法逃脱CAP选择。提前了解一些分布式一致性协议paxos、raft等。学习zookeeper原理及使用场景(metadata、分布式锁、leaderEletion... etc)
- RPC框架在SOA架构起着重要的作用,好好探索是好的。这里推荐阿里巴巴dubbo框架,同时netty、mina等网络库
- ElasticSearch\SolrCloud 分布式搜索 ELK 当然,日志相关的东西对这些更敏感,在更多的场景中使用ES也是有很多
- 消息队列 kafka\MetaQ RabbitMQ 缓存 Redis/memcached .容器tomcat/jetty web服务器NGINX/OpenResty
- 然后是编程语言、网络、数据库、数据结构和算法等各种基础知识。不要认为任何东西都精通。有多少知乎敢说精通。
- = =事情太多了,我一时想不起来了。以上是业内常见的事情。不同的工作会遇到不同的问题,需要更多的工具和开源框架来解决各种鸡蛋疼痛的问题。然后你会有越来越多的东西,然后你不知道你会写什么。
- 掌握技能需要时间成本和学习成本。要成为一名好的程序员,不要害怕学习。你需要新技术才能跟上你的教育能力。你想在那些年学习struts2比springmvc高一点,现在基本没人用了。
许多初学者或者有经验的开发者都会陷入这个泥潭:不知道该学什么?
我认为最简单的方法就是去招聘官网看看公司要求什么技能,比如初级 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
微服务思维导图
这里小编总结了一份spring cloud有兴趣的朋友可以点击查看思维导图!可以获得思维导图点我领取。
支付宝阿里官网Java高级开发工程师的招聘要求
让我们来看看阿里巴巴官方网站支付宝Java招聘高级开发工程师,年薪至少40元w开始吧!从以下招聘信息可以看出,除了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。
去面试吧,祝你好运!
文章到这里就结束了!
以下是小编整理的一份大厂真题的面试资料,以及2020最新Java核心技术整理的资料集锦,需要领取的小伙伴可以点我 免费领取,编程的世界永远向所有热爱编程的人开放,这是一个自由,平等,共享的世界,我始终是这样坚信的。