Juconcurrent 学而不思则罔,思而不学则殆。

怎么算是Java高级开发工程师


(一)、Java基础扎实

  1. Java基本语法
  2. IO和NIO
  3. 泛型和反射
  4. 集合
  5. 多线程和并发
  6. 虚拟机和垃圾回收器

(二)、5年及以上的Java Web相关开发经验

  1. Spring IOC
  2. Spring AOP
  3. Spring TX
  4. Spring Web
  5. Spring MVC
  6. Mybatis
  7. Spring WebFlux (加分项)
  8. Netty (加分项)

(三)、熟悉Linux下常用的命令

  • 文件和目录
  • 磁盘空间
  • 用户和群组
  • 文件权限
  • 打包及压缩
  • 文本处理
  • 网络
  • 系统信息

(四)、熟悉分布式、缓存和消息机制

  • 微服务
  • 分布式事务,CAP和BASE,柔性事务和TCC事务,幂等和补偿
  • 分布式锁
  • 缓存穿透及缓存雪崩
  • 缓存一致性
  • 消息机制

(五)、熟悉数据库

  1. 至少熟悉一种关系型数据库,如:Mysql或Oracle
  2. 至少熟悉一种缓存数据库,如:Redis或Memcached
  3. 了解非关系型数据库,如Mongo、ElasticSearch和Mongo等基本架构,熟练使用其API

(六)、熟悉常用的分布式中间件

分布式和微服务是当前的主流,也是未来的趋势,实际项目工作中是不可或缺的。

这方面技术主要包括:Dubbo、Spring Cloud、Spring Boot、RabbitMQ、Kafka等,了解其基本原理和使用方法。

(七)、熟悉常用设计模式

良好的、可扩展的代码一定会运用大量的模式来提高代码的灵活性,增强代码的可扩展性。对于OOP来说,SOLID原则和GoF23种设计模式是其中最经典和最基础的模式,我们需要熟练把握,并能举一反三。

SOLID原则

  • 单一职责原则
  • 开闭原则
  • 里氏替换原则
  • 接口隔离原则
  • 依赖反转原则

GoF23种设计模式

  • 单例模式
  • 模板模式
  • 策略模式
  • 组合模式
  • 享元模式
  • 简单工厂模式
  • 工厂方法模式
  • 抽象工厂模式
  • 门面模式
  • 构建者模式
  • 装饰模式
  • 观察者模式
  • 过滤器模式
  • 其他

(八)、具有良好的代码规范

良好的代码规范可带来许多好处:

  1. 提高代码可读性
  2. 增加代码扩展性
  3. 增强代码维护性
  4. 提高团队协作能力

要养成良好的代码习惯,需要比较长时间的的训练、经验和实践,只有在真实项目中才能体会良好代码习惯带来的各项好处,也能避免不好代码带来的各项弊端。

(九)、良好的沟通能力和学习能力,热衷于技术

有人说技术人员只需要技术厉害、能解决问题即可。但是我想说的是,不仅仅如此,良好的沟通能力和学习能力也是必不可少的。为什么这么说呢?

首先,随着软件规模的扩大,软件参与人员将变得更多,如果团队内的人员没有好的沟通交流能力,将很难协作互助,产出实际需求的功能实现。

当前技术好并不能代表将来技术好,当前技术差并不能代表将来技术差,学习是为将来技术好做出的最好铺垫和基石。

而学习的动力又是什么呢?对技术的热情和追求!还记得阿里巴巴对人才需求比较看重的几点吗?还是好奇心、学习能力。

(十)、有性能优化经验的优先

对于Java开发来说,主要体现在以下几点:

  1. 服务器性能优化
  2. 数据库性能优化
  3. 大型系统性能优化

(十一)、有大型分布式、高并发、高负载、高可用系统设计开发经验,中间件开发经验者优先

目前市面上很少有公司有大体量和高并发相关的业务,正是基于这一点,才会显示出这方面人才的可贵。以我的经验来说,只有了解并专业学习过这方面的知识,才会在机会或挑战来临的时候把握住,从而增强自己的实践实战能力。

在做好公司本职工作之外,我们若能在开源社区贡献自己的一份力量,也会增加我们的闪光点和眼界。中间件,是最能体现基础是否扎实、专业知识广度深度是否足够的一个方面。

参考链接


上一篇 CAS的实现原理

Content