(一)、Java基础扎实
- Java基本语法
- IO和NIO
- 泛型和反射
- 集合
- 多线程和并发
- 虚拟机和垃圾回收器
(二)、5年及以上的Java Web相关开发经验
- Spring IOC
- Spring AOP
- Spring TX
- Spring Web
- Spring MVC
- Mybatis
- Spring WebFlux (加分项)
- Netty (加分项)
(三)、熟悉Linux下常用的命令
- 文件和目录
- 磁盘空间
- 用户和群组
- 文件权限
- 打包及压缩
- 文本处理
- 网络
- 系统信息
(四)、熟悉分布式、缓存和消息机制
- 微服务
- 分布式事务,CAP和BASE,柔性事务和TCC事务,幂等和补偿
- 分布式锁
- 缓存穿透及缓存雪崩
- 缓存一致性
- 消息机制
(五)、熟悉数据库
- 至少熟悉一种关系型数据库,如:Mysql或Oracle
- 至少熟悉一种缓存数据库,如:Redis或Memcached
- 了解非关系型数据库,如Mongo、ElasticSearch和Mongo等基本架构,熟练使用其API
(六)、熟悉常用的分布式中间件
分布式和微服务是当前的主流,也是未来的趋势,实际项目工作中是不可或缺的。
这方面技术主要包括:Dubbo、Spring Cloud、Spring Boot、RabbitMQ、Kafka等,了解其基本原理和使用方法。
(七)、熟悉常用设计模式
良好的、可扩展的代码一定会运用大量的模式来提高代码的灵活性,增强代码的可扩展性。对于OOP来说,SOLID原则和GoF23种设计模式是其中最经典和最基础的模式,我们需要熟练把握,并能举一反三。
SOLID原则
- 单一职责原则
- 开闭原则
- 里氏替换原则
- 接口隔离原则
- 依赖反转原则
GoF23种设计模式
- 单例模式
- 模板模式
- 策略模式
- 组合模式
- 享元模式
- 简单工厂模式
- 工厂方法模式
- 抽象工厂模式
- 门面模式
- 构建者模式
- 装饰模式
- 观察者模式
- 过滤器模式
- 其他
(八)、具有良好的代码规范
良好的代码规范可带来许多好处:
- 提高代码可读性
- 增加代码扩展性
- 增强代码维护性
- 提高团队协作能力
要养成良好的代码习惯,需要比较长时间的的训练、经验和实践,只有在真实项目中才能体会良好代码习惯带来的各项好处,也能避免不好代码带来的各项弊端。
(九)、良好的沟通能力和学习能力,热衷于技术
有人说技术人员只需要技术厉害、能解决问题即可。但是我想说的是,不仅仅如此,良好的沟通能力和学习能力也是必不可少的。为什么这么说呢?
首先,随着软件规模的扩大,软件参与人员将变得更多,如果团队内的人员没有好的沟通交流能力,将很难协作互助,产出实际需求的功能实现。
当前技术好并不能代表将来技术好,当前技术差并不能代表将来技术差,学习是为将来技术好做出的最好铺垫和基石。
而学习的动力又是什么呢?对技术的热情和追求!还记得阿里巴巴对人才需求比较看重的几点吗?还是好奇心、学习能力。
(十)、有性能优化经验的优先
对于Java开发来说,主要体现在以下几点:
- 服务器性能优化
- 数据库性能优化
- 大型系统性能优化
(十一)、有大型分布式、高并发、高负载、高可用系统设计开发经验,中间件开发经验者优先
目前市面上很少有公司有大体量和高并发相关的业务,正是基于这一点,才会显示出这方面人才的可贵。以我的经验来说,只有了解并专业学习过这方面的知识,才会在机会或挑战来临的时候把握住,从而增强自己的实践实战能力。
在做好公司本职工作之外,我们若能在开源社区贡献自己的一份力量,也会增加我们的闪光点和眼界。中间件,是最能体现基础是否扎实、专业知识广度深度是否足够的一个方面。
网友评论