2016年Java程序猿跳槽应该学哪些方面的技术!?

理由
举报 取消

毕业两年Java程序员,现阶段初级水平,但是学东西比较快自学能力比较好,现在入职一家小公司组织结构比较凌乱,年后打算跳槽,苦于技术不足想自学一部分深层次技术。不知道应该从哪里开始呢?望各路大神指点迷津!本人做过电商项目,现已可以带人开发小项目。

2017年6月13日 10 条回复 1131 次浏览

发起人:宋朝 初入职场

回复 ( 10 )

  1. kai liu
    理由
    举报 取消

    互联网产品、大型企业级项目常会用到的:

    • 并发处理技术。具体到Java上通常是涉及java.util.concurrent、并发锁机制、NIO等方面,当然最近比较火爆的Netty框架也可以作为高并发处理的备选方案之一,这需要对Java的线程调度机制有着比较深的理解。不过这些可能会涉及并发控制的对象(比如reentrantlock等)只能存在于一个JVM里的问题,一旦系统规模大到需要部署多个JVM来处理并发的情况,则需要采用共享session的技术(比如spring-session),或者尽可能将系统后台设计为无状态的服务,这需要对RESTful有着较深的理解。
    • 高可用、负载均衡技术。互联网产品、企业级应用通常要求一年里的Downtime控制在很小的范围内,这需要足够的高可用和负载均衡架构来支撑,这个一般和Java技术本身没太大关系,但却是一名初级程序员向高级程序员甚至是架构师CIO进阶的必备技术,因此可以适当了解一下Nginx、HAProxy等对这方面的支持。另外现在最“时髦”的做法是将应用docker化,配合ETCD、kubernetes等工具在容器的层面上实现高可用和负载均衡,当然这需要看实际的需求,最时髦的不见得是最适用的,要考虑构建成本。
    • 缓存技术。缓存应该是大型系统中或高并发条件下提高响应速度的亘古不变的真理(虽然也看到过淘宝搜索商品功能采用的大数据处理技术实现的零缓存的文章,但能达到淘宝的体量和技术水平一般不太可能),这方面的工具太多了,ehcache、memcached、redis……从Java的角度来讲,需要了解的一是Java对这些工具的连接器,二是缓存技术背后的JSR-107标准,可以参考spring-cache的实现,阅读一下源码加深理解。
    • 异步处理技术。这通常也是抵消高并发的处理手段之一,从Java的角度看最简单的异步处理就是新启动一个异步线程,这同样也需要对Java的线程调度有所了解,当然也可使用Spring中的@Async之类的也可以简单实现异步线程的处理。如果是非常消耗资源的业务处理,简单的异步线程是满足不了需求的,这就需要一些消息中间件来做这些异步处理了,消息中间件有很多,activemq、rabbitmq、kafka……需要了解的是Java对这些中间件的连接器。不过异步处理中最关键的是事务保证的问题,这可能需要对事务的两步提交有所了解。

    先说这么多吧,其它还有不少经常会用到的知识,像图片文件处理和读取(特别是现在各种二维码的需求)、日志处理、CDN之类的,随着项目需求一边实践是最好的学习方法。

  2. 甘明
    理由
    举报 取消

    netty(mina太老旧了)、play、asm、eclipse plugin、osgi、hibernate、spark、kafka、akka、scala、nodejs。

    多学学分布式技术、高可用性、流式计算、深度学习、函数式编程之类的、反正要学的东西还好多好多。

  3. 刘易友
    理由
    举报 取消

    那要看你是想找一个什么样的公司,

    一般的公司:

    建议学好Spring和Mybatis,所谓的学好,还没有到研究过其中的源码,只是了解其中某些重要的流程,此外了解一下Memcached、Dubbo、Redis,不要求了解但是要知道这些是干嘛的,在参加面试之前再把程序员面试宝典啃一遍就差不多了

    大公司:

    基础很重要、基础很重要、基础很重要。

    所谓的基础,包括并发、线程、网络、以及流行框架的源码和架构

    当然,项目经验很重要

  4. 昆吾
    理由
    举报 取消

    我跟前面几位同行的看法不同,可能不同人不同习惯方法也不一样,说说我的你参考一下。

    以下回答建立在基本知识足够的前提下,不适用于超级新手…

    我个人觉得我们程序员学技术不能单纯为了技术而学技术,程序员的功能是解决问题创造工具而不是学技术,学技术只是途径而不是目标。题主已经能够带人做项目了相信应该可以明白做产品技术只是一部分而不是全部。

    因此,如果想要学习更深层的技术,你首先应该有个驱动,我认为选择一个合适的领域,成为领域专家应该是一个很好的方法。

    鉴于题主已经做过电商项目,那不如选择一些相关的,例如研究一下搜索引擎,研究一下推荐系统,研究一下广告系统………这样的领域想成为技术专家自然会需要很深的技术功底,在实践的道路上也不会局限于某一点,也更加不会迷茫或者无所适从…

  5. 小红红
    理由
    举报 取消

    记录一下。Spring MVC, Spring, hibernate,Mybatis,Hadoop, Storm ,Spark,redis,activemq,kafka,elasticsearch。以上是我已经或正在或想要学习的。但最主要的还是基础。轮子日新月异

  6. DaemonSu
    理由
    举报 取消

    谢邀。

    工作两年正好是一个重要的时间节点。

    在这个时候我认为有几个比较重要的事情需要做:

    1:建立自己的技术体系之前可能学的东西比较零散,比较杂,这个时候是该将所学有体系的组织起来。

    2:基础。thinking in java 在啃几遍,jvm相关的东西再看看,框架的源码再拿出来翻翻,涉及到的设计模式是不是也重新温习一下。数据结构,算法,网络也适当的看看。

    3:就是一些企业级的应用技术了。比如消息中间件,服务中间件,如何建立高可用的应用等。这部分的内容需要去一个大一点的企业能力才能提升上来。

    4:是积累人脉和行业经验。其实这个是很多技术人员都忽略的一个方面,但是又非常重要。

  7. 展翅高飞
    理由
    举报 取消

    think in java 是本好书 里面很多深入的概念真心 难懂

  8. 张浩斌
    理由
    举报 取消

    反射,线程,nio(mina)

  9. 刘依然
    理由
    举报 取消

    两年就能带人了!膜拜!

  10. 猫头
    理由
    举报 取消

    各种技术口沫横飞,哎,浮躁

我来回答

Captcha 点击图片更换验证码