首先常用api(String,StringBuffer/StringBuilder等)

1.集合类,线程类

2.Servlet(很少用纯粹的servlet写,但你要懂,因为很多框架都是基于servlet封装的)

3.json,xml读写

4.数据库访问(CRUD,事务,连接池)

5.http请求(HttpClient)

6其他,包括常用框架,设计模式,面向对象

初级程序员会这些就可以写项目了。后期遇到的问题就会复杂得多,要靠各种经验和知识的积累。

除了要掌握的20%以外还要掌握些什么知识才能游刃有余。下面说说我接触(使用)过、的东西吧。

java以分布式应用丰富的生态闻名,在分布式系统中逃不过CAP的抉择。早早了解一些分布式一致性协议paxos、raft等。学习zookeeper的原理和使用场景(metadata、分布式锁、leaderEletion… etc)

RPC框架在SOA架构中起着重要的作用,好好探究终是有好处的,在这里推荐阿里巴巴的dubbo框架,同时会netty、mina等网络库

Hadoop系列 Storm Spark 等离线\实时计算框架

ElasticSearch\SolrCloud 分布式搜索 ELK 日志相关的东西对这些比较敏感,当然在更多的场景使用ES也是有很多的

消息队列 kafka\MetaQ RabbitMQ 恩,昨天ZeroMQ(不完全算作MQ)的作者选择安乐死了,愿天堂没有痛苦

然后就是各种基础知识,编程语言、网络方面、数据库、数据结构和算法。不要觉得任何一项都精通了,敢说精通的知乎能有几个。

1.学会使用eclipse,svn等IDE和工具(不用说了吧,主要是看你工作的地方,比如大家用eclipse你想用IntelliJ IDEA也可以,但是刚工作肯定很多不懂,这时候暂时还不要标新立异的好,出了问题好问。当然你是ide大神请无视)

2. 刚入职还接触不到核心工作,就让我先改改页面什么的,作为web开发html、css、和javascript不用精通,至少需要了解用法和语法吧,虽然 有前端工程师,但是这个肯定也是要了解的(自己公司小项目组,各个都被逼成全栈了)。javascript其实还是很强大的,但是刚开始不用写的很深,很 多轮子可以用,比如easyui,正如@王大胖 所说的

会查阅官方文档

知道用法往网页里嵌,然后后台按格式把数据传到前台就好。

3. 然后开始逐步往后台写了,熟悉下设计模式,如果太多太难理解可以先理解工厂模式,写一个接口再用一个或若干个实现类实现这个接口,需要用的时候在根据需要 来确定用哪个实现类。(一开始不理解这么做这么繁琐有什么用,但是自从上次项目的数据库从oracle换成mysql就知道这么做其实大有用处)一般项目 开发都会用到设计模式,不了解可能会摸不清楚整个项目的架构,无从下手。

4.不同公司用的框架不一样,但struts,spring还是用 的比较多的,所以这两个东西还是比较熟悉的好,不然你可能连整个项目的架构都不清楚,不要说自己写,连改都很难入手。比如项目的跳转是怎么配的,哪个配置 文件代表了什么。(一开始我把项目本地跑起来以后我连主页在哪是哪个文件怎么进去的都不清楚T.T,一直在找index.jsp然后才知道项目用 freemarker做的,是一个ftl文件)

5.web项目要操作数据库的工作是少不了的了,自己跟的项目没用hibernate,主要用的是StringBuffer拼接sql,如果从事web开发,sql还是要比较熟的。按带我的小哥说,sql这么厉害,就没有sql完成不了的事。

<!–(这句正确与否观望中,但是一开始做一个抽取功能,自己把所有的人抽到程序里再抽,后来直接用sql抽了返回抽中的结果就好了,越用越发现sql真的猴犀利呀)–>

提醒,不应该用sql在数据库里做太多事,具体解决方法可以参考之前提的另外一个问题

请问多个功能需要同批数据是在程序里面遍历好还是sql数据库返回好? – 编程

但是sql的重要还是不言而喻的

6. 自己感觉做web项目设计高深算法的可能做的比较深才会遇到,更多的是对字符串和数值格式的操作,比如后台从数据库抽出来到前台怎么展示,用户输入的数据 怎么怎么存到数据库里,所以最好熟悉下字符串的操作,分割呀合并呀,String转float、int什么的,日期格式呀什么的。

如果公司有专业运维,服务器部署什么的交给他们就好了,如果没有就最好还是了解下,远程连接呀,linux的一些简单的命令呀,tomcat呀什么的

当然作为一个提供分布式服务接口的java工程师,需要熟练具备以下技能点:

1、java基本语法:最好能偶尔使用java8 lambda简化代码逻辑,google的guava库等等

2、docker基本使用:如今越来越多的公司选择将服务部署在docker上,构成独立的服务云平台,而且docker操作和资源调度分配很爽的。

3、消息队列:kafka、rabbitmq、notify、metamq等等,消息队列作为处理高吞吐量,不计较及时结果的应用场景的工具非常受欢迎。所采用的实际应用手法就是消息队列+补偿机制。

4、zookeeper或Etcd:这俩种都是分布式服务提供服务的注册中心,通过它们可以实现多服务多机器部署且实现负载均衡。

5、RPC:远程调用的场景使用越来越广泛,特别在分布式服务中更加离不开它。它能使多个服务间的调用如同调用本地方法一样简便。针对RPC的实现使用较为广泛的有Thrift、protobuffer等。

6、Netty:是一个高性能、异步事件驱动的NIO框架。能为RPC提供高性能的调用

7、git和maven等项目管理及依赖包管理的工具,这是协作开发的基础。

8、Redis:差点忘了这个必知必会的技能...Redis作为高性能的内存数据库,基本覆盖了访问量大的服务缓存。当然memcached前几年用的也居多,不过功能可被Redis替代。除了缓存也可以提供分布式锁机制。

最近去面试Java的东时学员整理:

0、 集合框架:源码阅读,重点理解 HashMap,ArrayList 等常用集合类;

1、 并发包:理解 ConcurrentHashMap 原理,线程池,异步并发,锁;

2、 IO / NIO;

1、面向流与面向缓冲

Java IO和NIO之间第一个最大的区别是,IO是面向流的,NIO是面向缓冲区的。 Java IO面向流意味着每次从流中读一个或多个字节,直至读取所有字节,它们没有被缓存在任何地方。此外,它不能前后移动流中的数据。如果需要前后移动从流中读取的数据,需要先将它缓存到一个缓冲区。 Java NIO的缓冲导向方法略有不同。数据读取到一个它稍后处理的缓冲区,需要时可在缓冲区中前后移动。这就增加了处理过程中的灵活性。但是,还需要检查是否该缓冲区中包含所有您需要处理的数据。而且,需确保当更多的数据读入缓冲区时,不要覆盖缓冲区里尚未处理的数据。

2、阻塞与非阻塞IO

Java IO的各种流是阻塞的。这意味着,当一个线程调用read() 或 write()时,该线程被阻塞,直到有一些数据被读取,或数据完全写入。该线程在此期间不能再干任何事情了。Java NIO的非阻塞模式,使一个线程从某通道发送请求读取数据,但是它仅能得到目前可用的数据,如果目前没有数据可用时,就什么都不会获取,而不是保持线程阻塞,所以直至数据变的可以读取之前,该线程可以继续做其他的事情。 非阻塞写也是如此。一个线程请求写入一些数据到某通道,但不需要等待它完全写入,这个线程同时可以去做别的事情。 线程通常将非阻塞IO的空闲时间用于在其它通道上执行IO操作,所以一个单独的线程现在可以管理多个输入和输出通道(channel)。

3、选择器(Selectors)

Java NIO的选择器允许一个单独的线程来监视多个输入通道,你可以注册多个通道使用一个选择器,然后使用一个单独的线程来“选择”通道:这些通道里已经有可以处理的输入,或者选择已准备写入的通道。这种选择机制,使得一个单独的线程很容易来管理多个通道。

3、 Java SE 基础:主要是一些基本概念和语法细节,如 equals 和 hashcode 作用,访问修饰等;4. SSH 框架:IoC 和 AOP 的原理,涉及概念有动态代理和反射;

5、 设计模式:常见的会画 UML,例如徒手撸各种单例实现,JDK 里面涉及的设计模式;

6、 Socket 编程。

当然,你去的话也可能不是这些,大体上脱离不了这些范围内的知识点,在编程工作中需要的,你自然会去学,不必局限自己必须学会什么才能工作,但是,这些20%的基础你必须掌握。

面试题:Java程序员最常用的20%技术 已看1的更多相关文章

  1. Java程序员最常用的8个Java日志框架

    转自:http://www.codeceo.com/article/8-java-log-framework.html 作为一名Java程序员,我们开发了很多Java应用程序,包括桌面应用.WEB应用 ...

  2. 转:Java程序员最常用的8个Java日志框架

    作为一名Java程序员,我们开发了很多Java应用程序,包括桌面应用.WEB应用以及移动应用.然而日志系统是一个成熟Java应用所必不可少的,在开发和调试阶段,日志可以帮助我们更好更快地定位bug:在 ...

  3. Java基础学习总结(40)——Java程序员最常用的8个Java日志框架

    作为一名Java程序员,我们开发了很多Java应用程序,包括桌面应用.WEB应用以及移动应用.然而日志系统是一个成熟Java应用所必不可少的,在开发和调试阶段,日志可以帮助我们更好更快地定位bug:在 ...

  4. 月薪 30K Java 程序员,需要掌握哪些技术?

    转载自:Java3y 1-5年的Java程序员,薪资区间大致是在15-25K左右,那有没有可能提前达到30K的薪资呢?有人说这只能是大企业或者互联网企业工程师才能拿到.也许是的,小公司或者非互联网企业 ...

  5. java程序员应该熟悉的20个有用的库(转)

    优秀且经验丰富的Java开发人员的一个特点是API的广泛知识,包括JDK和第三方库.我花了很多时间学习API,特别是在阅读Effective Java 3rd Edition之后,Joshua Blo ...

  6. JAVA程序员_常用英语

    干程序员这行实在是离不开英语,干程序员是一项很辛苦的工作,要成为一个高水平的程序员尤为艰难.这是因为计算机软件技术更新的速度越来越快,而这些技术大多来源于英语国家,我们在引进这些技术时往往受到语言障碍 ...

  7. Java程序员应该知道的20个有用的lib开源库

    一般一个经验丰富的开发者,一般都喜欢使用开源的第三方api库来进行开发,毕竟这样能够提高开发效率,并且能够简单快速的集成到项目中去,而不用花更多的时间去在重复造一些无用的轮子,多了解一些第三方库可以提 ...

  8. java程序员应该知道的20个有用的库

    https://blog.csdn.net/weixin_43923408/article/details/87885668

  9. 做为一个Java程序员,你需要哪些傍身的技能?

    最近总有些断断续续的思考,想想从我入行以来,我到底学会了什么,做成过什么,以后要做什么,如何提升自己······· 工作3年了,常听人说3年,5年,10年是程序员的坎,每过一个都会有新的想法,新的改变 ...

随机推荐

  1. 【占位】HihoCoder1317 跳舞链

    跳舞链 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho最近遇到一个难题,他需要破解一个棋局. 棋局分成了n行,m列,每行有若干个棋子.小Ho需要从中选择若干行使得 ...

  2. 十五、python沉淀之路--eval()的用法

    一.eval函数 python eval() 函数的功能:将字符串str当成有效的表达式来求值并返回计算结果. 语法:eval(source[, globals[, locals]]) -> v ...

  3. LINUX TCP套接字详细配置

    提高服务器的负载能力,是一个永恒的话题.在一台服务器CPU和内存资源额定有限的情况下,最大的压榨服务器的性能,是最终的目的.要提高 Linux系统下的负载能力,可以先启用Apache的Worker模式 ...

  4. jQuery的ajax跨域实现

    今天有人问我跨域ajax请求是否可以发送,之前没接触过此类问题,没答上,后来查了下,以下备忘. 我在本地建了三个站点,并设置了host文件模拟跨子域和跨全域 coolkissbh.com blog.c ...

  5. php+JQuery+Ajax简单实现页面异步刷新 (转)

    页面显示如下: JQueryAjax.html中的代码如下(用的较为简单的$.post) <html> <head> <meta charset="UTF-8& ...

  6. Dedesql数据库类详解(二次开发必备教程)(转)

    http://www.dedecms.com/help/development/2009/1028/1076.html 织梦DedeCMS的二次开发不仅仅是会写写织梦的标签,会制作织梦的模板.很多时候 ...

  7. oracle驱动包maven下载失败解决

    oracle是付费的,因此jar包也不是随便让人下的,这就给maven的下载和编译带来了麻烦,因为我们没法从maven仓库直接拿来用.解决办法就是先从别的地方获取jar包,再放到本地仓库里去,这样运行 ...

  8. Linux常用命令(个人使用频率较高)

    1,日志查看 tail(cat) -f|grep ERROR(任意字符) filepath (任意行数) -f|grep ERROR(任意字符) filepath 2,查看目录&授权 file ...

  9. 你知道PING功能是怎么实现的吗

    以太网的协议有层,而每层都包含有更多的协议.所谓协议,通俗的讲就是通信双方约定的规则. 今天我们介绍一些一个听起来陌生却有很常用的协议,ICMP协议. —ICMP是(Internet Control ...

  10. Quartz.net 2.x 学习笔记02-Quartz.net 2.x在MVC站点中结合Log4net的使用

    Quartz.net 2.x在MVC站点中结合Log4net的使用 首先新建一个MVC的空站点: 第二步,添加Quartz.net的引用 在搜索处输入quartz.net搜索安装即可(目前是2.3) ...