JAVA开发工程师必须懂啥
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA开发工程师必须懂啥相关的知识,希望对你有一定的参考价值。
如题.. 除了熟悉编程.SOL 还有JSP 还有什么要掌握的.. 上了下招聘网站.大受打击.. 知识面实在是太窄了.. 网上招聘说要掌握和懂得的东西别说会.. 我听也没听过..唉..请回答的好心人辛苦点. 把需要知道和掌握的JAVA的相关技术全列出来.. 小弟把分都奉上..
java Netty实战课程java高性能分布式RPC教程课程 免费下载
链接:https://pan.baidu.com/s/1MpUM62h4nvHnUGMan-R6YA
Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程
参考技术A 其实最主要的还是扎实的基础知识和较强的编码能力以及逻辑能力,这是首先应该具备的。
java应用得最多的还是B/S开发,也有不少开发服务器的,不过在招聘网上几乎招java的都是开发web吧,你提到要掌握jsp,那么估计你应该是javaweb方向的吧及j2ee。
如果开发的话,要掌握的有:
熟悉一门数据库开发,最好是Oracle,当然很多人学习中都是用的mysql。
掌握最流行的轻量级框架SSH(struts2,hibernate,spring),框架太多了,但是这3个应用比较多,只要把这3个掌握了找工作基本问题不大了,因为有了这3个作为基础,你再学习其他框架也就是几天时间的问题了。
脚本语言也必须得会,比如JS(javascript),其实现在用纯JS开发的并不多了,所以建议你了解一下JS,然后学习JQuery,这是一个JS的封装库,很多功能用它现在起来很方便,而且学习也不困难。优秀的脚本也比较多,但是最好先把这个掌握到。
基本上具备上面的对你找工作来说比较容易了,当然每个公司用的技术并不一定相同,所以接下来就是一个再学习的过程,别给自己太大压力,先把上面的掌握到,你就可以出来找工作了。比如我自己,公司开发的系统Extjs,ibatis,spring MVC,我当时都没学过的,都是进了公司后才开始学习的,因为有了上面的基础,所以学起来就很快。加油!本回答被提问者采纳 参考技术B 1 计算机基础
这部分内容是计算机相关专业同学的课程,但是非科班的小伙伴(譬如在下)就需要花时间恶补了。特别是计算机网络,操作系统,数据结构这三门课程。
至于编译原理,个人大概懂一点就行了,我也只看过简单的概念和状态机相关的内容,并不是特别重要。
2 Java编程
这里的Java编程部分包含了很多内容。我们可以分别看看,大概归纳一下就是这几个部分。
Java基础
这里的Java基础包括基本语法,集合类框架,以及一些高级特性,比如反射,注解等等。
Java基础的知识点非常多,所以要真正搞懂也没有那么简单,另外,随着时间推移,一些新特性也需要得到我们的重视,比如时下流行的JDK8。
设计模式
我一直觉得设计模式可以和Java基础一块学,所以我也把它放在这里。当然,一些真正使用到设计模式的地方,譬如JDK的集合类,IO流等等,也需要你足够重视。
Java Web技术
Java Web技术包括J2EE,以及web框架,乃至一系列常用的组件。
1 J2EE主要包括的就是servlet,jsp这些比较复古的web开发组件了。虽然现在直接用它们的情况比较少,但是我们还是需要花一些时间去掌握它们的。
2 web框架常用的就是Spring了,相应的,hibernate和mybatis也需要了解一下。
3 同时,JavaWeb开发时的常用类库,比如jnuit单元测试,log4j日志工具,以及构建工具maven,都属于我们要掌握的范畴。
4 最后,要注意的是,Web相关的一些基本知识,比如HTTP协议,网络安全基础,也是我们要考虑的部分。
Java并发技术
Java的并发技术泛指Java的多线程技术,以及JUC包里的并发类,比如线程池,并发工具类,阻塞队列等等。
Java并发技术完全可以独立出来学习,是Java进阶知识的一大重点。
Java网络编程和服务器
这一块内容是Java中比较复杂但也很重要的一块内容。比如BIO,NIO,AIO的一些使用和原理,以及tomcat这类web服务器,甚至是netty这种网络编程框架,都是可以去了解和学习的内容。
Jvm基础与调优
JVM是提供Java程序运行的一个进程,学习JVM知识,也是我们的必经之路。除了看懂《深入理解jvm虚拟机》以外,我们还要学习的内容就是JVM调优,使用合适的工具诊断问题,最后解决问题。
这部分内容在面试中呈现的不仅仅是GC,内存分区,以及类加载器,也包括了我所说的JVM调优问题。
3 Linux
作为后台同学,常年被面试官问linux相关的问题,所以觉得学好linux还是蛮重要的,除了基本命令以外,最好还能了解一些shell脚本,甚至是内核相关的知识,这方面是我的一个弱项。
4 数据相关
在这个路线图里,数据部分囊括了非常多的数据源,我们可以来看看都有哪些是我们需要掌握的。
关系数据库Mysql
这个不必多说,人手都要会,不管是基础的crud,索引,抑或是进阶的存储引擎,分布式方案等,我们都需要对应掌握。
缓存
如Redis,memcache一类的缓存,作为后端开发者的我们也需要对应掌握,当然,它们的高级特性,以及分布式方案,也是必备的知识点。
搜索引擎
基于Lucene的solr,elasticsearch这类搜索引擎,本质上也是数据源,但是并不是后端必备的内容,不过学一学也没有坏处啦。
大数据
海量数据处理的场景越来越多,大数据技术如hadoop,storm等也越来越火,但是大数据应用一般会由专业的大数据工程师来做,所以我们学一些基本内容也就足够了。
5 算法和数据结构
算法一直是校招同学面前的一座大山,作为后端同学来讲,除了基本的数据结构算法以外,也要会一些高级的算法,譬如dp,搜索,贪心等等。
另外,通过LeetCode等题库来刷题的方式来巩固算法也是公认的好办法了。
6 分布式
最后一个部分,也是内容最多,覆盖面最广泛的部分了。分布式相关的技术实在太多了,我们这里也会做一下简单的归纳。
web架构
先了解web架构的发展会对分布式的学习有更好的理解,毕竟架构的发展也对应着分布式技术的发展。
分布式理论
这部分内容包括分布式的发展演化,base理论和cap理论等等,学习分布式技术之前,最好能对这部分概念有一定了解。
一致性问题
强一致性的解决方案:事务和锁,弱一致性的方案:消息队列。
分布式session
一个常见的问题,也有多种解决方案
分布式缓存
和上面说的缓存一样,只不过这里侧重缓存的分布式方案
分布式数据库
这里指的数据库的分布式方案,也包括hbase这种分布式数据库。
负载均衡
负载均衡也是一个值得探讨的话题,一般我们讨论的是七层和四层负载均衡。
消息队列
消息队列是一个比较复杂的分布式组件,我们可以了解常用消息队列比如amq,kafka等的实现。
服务化
服务化的核心包括rpc,服务注册中心等等。分布式服务相关技术也是后端同学必须掌握的内容。
虚拟化
虚拟化同样不是后端同学必须掌握的内容,只不过现在越来越多的服务部署方式使用的是docker和云服务的方式。所以了解一下也没有什么不好的。 参考技术C 如果想要成为一名合格的Java工程师,需要掌握以下几个基本技能:
1.CoreJava,就是Java基础、JDK的类库,很多童鞋都会说,JDK我懂,但是懂还不足够,知其然还要知其所以然,JDK的源代码写的非常好,要经常查看,对使用频繁的类,比如String,集合类(List,Map,Set)等数据结构要知道它们的实现,不同的集合类有什么区别,然后才能知道在一个具体的场合下使用哪个集合类更适合、更高效,这些内容直接看源代码就OK了。
2.多线程并发编程,现在并发几乎是写服务端程序必须的技术,那对Java中的多线程就要有足够的熟悉,包括对象锁机制、synchronized关键字,concurrent包都要非常熟悉,这部分推荐你看看《Java并发编程实践》这本书,讲解的很详细。
3.I/O,Socket编程,首先要熟悉Java中Socket编程,以及I/O包,再深入下去就是JavaNIO,再深入下去是操作系统底层的Socket实现,了解Windows和Linux中是怎么实现socket的。
4.JVM的一些知识,不需要熟悉,但是需要了解,这是Java的本质,可以说是Java的母体,了解之后眼界会更宽阔,比如Java内存模型(会对理解Java锁、多线程有帮助)、字节码、JVM的模型、各种垃圾收集器以及选择、JVM的执行参数(优化JVM)等等,这些知识在《深入Java虚拟机》这本书中都有详尽的解释,或者去oracle网站上查看具体版本的JVM规范。学习Java都需要掌握什么知识?
5.一些常用的设计模式,比如单例、模板方法、代理、适配器等等,以及在CoreJava和一些Java框架里的具体场景的实现,这个可能需要慢慢积累,先了解有哪些使用场景,见得多了,自己就自然而然会去用。
6.常用数据库(Oracle、MySQL等)、SQL语句以及一般的优化。
7.JavaWeb开发的框架,比如Spring、iBatis等框架,同样他们的原理才是最重要的,至少要知道他们的大致原理。
8.其他一些有名的用的比较多的开源框架和包,Netty网络框架,Apachecommon的N多包,Google的Guava等等,也可以经常去Github上找一些代码看看。暂时想到的就这么多吧,1-4条是Java基础,全部的这些知识没有一定的时间积累是很难搞懂的,但是了解了之后会对Java有个彻底的了解,5和6是需要学习的额外技术,7-8是都是基于1-4条的,正所谓万变不离其宗,前4条就是Java的灵魂所在,希望能对你有所帮助。
9.学会使用Git。如果你还在用SVN的话,赶紧投入Git的怀抱吧 参考技术D web的话就是 struct+spring+hibernate sql语句+数据库。
成为Java工程师,你必须知道这几个常用的开发工具
1、Clover
Clover是用于代码覆盖的一大利器,该工具用于应用程序测试的代码,我们可以在IDE或持续集成系统中运行Clover,该工具能让测试的运行速度更快。
2、Eclipse
尽管IntelliJ IDEA、NetBeans和一些其他的IDE正在日益普及,但是有调查表明,Eclipse仍然是几乎半数Java开发人员首选的开发环境,Eclipse是IDE领域的瑞士军刀,有着大量定制的接口和无数的插件。Eclipse的工作流程可分为三个方面:工作台,工作空间和视角。它们具体的作用分别是:工作台作为到IDE的出发点;工作空间将项目、文件和配置设置组合在一个单独的目录下;视角定义工具、视图和有效设置。
虽然新手开发人员可能会觉得相比Netbeans和IntelliJ IDEA,Eclipse使用起来更难,但Eclipse的灵活性,使其成为企业开发的首选IDE。
3、Elasticsearch
Elasticsearch提供了可以整合现有应用程序来驱动其与输入数据交互的工具。这款开源工具提供了实时搜索和分析引擎。
4、FindBugs
FindBugs是一个匹配编译代码模式,而非使用bug数据库的工具。当提供源代码时,FindBugs还可高亮显示检测出bug的代码行。
在它的3.0.1版本中,FindBugs继续保持着数以百计的bug描述。根据bug的严重程度,FindBugs将bug分为四个水平:相关的,令人困扰的,可怕的,以及最可怕的。除了图形用户界面,FindBugs还提供一个命令行界面,Ant任务,以及Eclipse插件。
5、VisualVM
VisualVM是一个集多功能于一身的Java故障排除工具。你可以使用VisualVM整合多命令行JDK工具。此轻便的工具有着惊人的分析能力。你可以在各种技术,如jvmstat、JMX和Serviceability Agent(SA)中使用VisualVM。VisualVM出名的是附加了API,以获得更多的数据,以及自动使用更快捷。
6、Sonarqube
Sonarqube是一个用来管理代码质量的开放式平台。基于Web的应用程序可以与Java应用程序进行配置。它提供了规则、警报、阈值、排除和设置功能。SonarQube允许用户将指标结合在一起,以及使用历史的措施混合。
以上几种工具是开发Java较常见的辅助开发工具,但是对于想学习Java的朋友来说,比较快的方式就是找一家像达内教育这样专业的培训机构来进行系统有效的学习,因为达内教育的导师不仅拥有丰富的开发和教学经验,而且在传授技术的同时还会将自己多年的工作经验和感悟分享给学员,丰富学员的实操经验,并为未来的职业发展道路打下坚实的基础。
以上是关于JAVA开发工程师必须懂啥的主要内容,如果未能解决你的问题,请参考以下文章