-
编码能力:(一面基础知识)写代码能力是基本功,Java语言本身,从最简单的数据和链表hash数据结构,到泛型,多线程,并发的理解,对JVM,内存使用对理解,对Java运维的理解等等。语言本身外,社区里常用的框架是否可以十分清晰的了解,包括spring,包括他实现的ioc,aop,orm,web机制是否有清楚的认识,有丰富的经验等等。
-
对常用中间件的理解 (一面基础知识)毕竟在一个大系统中,各种中间件是是否常见的,缓存中间件,消息中间件,例如 redis、memcache、rmq这些。要理解常用中间件使用场景,使用姿势(例如redis的常用命令),甚至包括他的一些运维。一旦出了问题,除了专门的运维人员,也需要你参与问题的排查,因为有时候这些中间件出现问题,是不当的使用姿势引起的。
-
架构、业务落地能力 (二面架构能力)前面提到了语言本身,各种中间件。如果你有很好的业务抽象能力和架构思维,就可以把一款部门内部产品很好的设计并实施了。这点蛮难的。想必都有过接手现有项目的经历吧,有时候真恨不得把之前的设计者拿出来批斗。作为一个设计者,你能否做到当下一个接手它的人会说一句,这个系统设计的真好,稳定又可拓展,理解起来也很容易。这需要很多能力,除了对现有系统的理解,还包括对未来可能发生变化的理解
如何探查你的架构能力呢?讲一讲你过去项目中你最了解的或者你设计的觉得最负责的系统,1.画一画架构图,2.用到了什么技术。3.遇到什么困难,如何解决。 -
沟通协作毕竟一个部门内部产品,是不可能由一个人完成的,所以需要沟通协作,把设计好的方案,要和2-3个小伙伴一起实施,包括同样身份的后端人员,前端人员,产品等角色。这个级别的人可能会参与带2-3个人,例如应届毕业等,所以你自己对知识的把握,分享精神,leadership都是很好的加分项。
总的来说呢,到这个阶段,代码真的只是你技能桶中的一个最长的,或者最长的之一。而其他软技能,会显得越来越重要。