一、等级划分

1.初级水平(认知理解技术为主)

业务部分

1.正确的理解产品经理的需求和设计,并对相应的细节提出一定的质疑,有效的完成业务开发。

2.根据产品原型自己独立进行设计,包括项目流程设计,数据库设计,接口设计等。

3.能够定位线上问题,并提供合理的解决方案。

技术部分

1.Java基础扎实,并对其中的高级部分有一定了解如锁,反射等,能够熟练使用三大框架或者springboot进行基本的业务开发,熟悉MVC架构

2.sql能够熟练掌握,如子查询,mybatis的复杂查询。

3.熟悉常用的设计模式

2.中级水平

简介

1.利用技术解决复杂的业务场景并对技术的原理有较深的理解

2.独立负责项目的业务流程和存储设计

业务部分

1.能独立的完成项目整个流程设计开发,对项目中的难点能提出有效的解决方案,

并指导初级工程师进行开发和解决提出的难点。并对常用的设计方案利弊都有自己的见解。

2.能分析出产品需求的合理性,以及对产品或者测试提的解决思路能够分析利弊并采用最佳方案

3.较好的跨部门沟通能力,能够解决部门与部门之间的协助问题。

技术部分

1.对常用框架的原理有较清晰的理解,对缓存,并发,MQ,分布式等复杂技术有着深入理解
能够掌握其设计思想和所用到的设计模式。
2.能够进行性能优化,代码规范,代码中含有相应的设计模式,无不规范的代码

3.高级水平

简介

1.技术领导

技术和管理

1.能对需求进行架构设计,对产品需求的可实现性和规模难度进行评估,对技术进行选型以适应最合适的场景。

作为某个项目的领导,带领团队完成项目,并对项目产生的问题承担第一负责人,并且能提前预知可能出现的问题,并提出解决方案。

2.有自己的开源项目,可以写出自己的组件,对开源的框架能够进行二次编写,java核心技术有着非常深入的理解

3.指导和评审初级工程师的技术方案,存储设计,代码评审等

4.排查线上各种问题,并给出和决定实现方案

能力评估

1.专业能力

1.需求评审能力

不是理解产品经理的能力,而是理解产品和业务本质的能力

2.技术设计能力

3.代码能力

4.运维,优化,重构能力

2.通用能力

1.信息检索能力

2.问题沟通能力

4.架构师(部门领导)

1.能管理开发,测试,产品等核心人员,制定团队目标,为部门和公司产生盈利。

2.对开发及相关人员引导制定okr,使下属有技术提升。
3.建设团队文化,使团队内部互帮互助,外部和谐共处,并解决必要的内部和外部矛盾,引领团队健康有序发展。
其发展战略可以参考下图:

二、技术向管理转型

相关条件

1.技术能达到中型互联网公司高级和初级架构师水平,且通过个人努力长期技术也很难有所突破,认同团队管理的价值。

2.身体上受不了高压工作强度,希望通过语言交流和管理来解决实际问题。但作为技术经理,所承担的压力并不比开发者小。

3.对底层纯技术并没有非常痴迷的热爱,普遍会出现长期专研底层感到非常梏燥乏味。且基本功和学历并不十分出众。

4.没有在技术性公司或者业务型公司中担任中间件团队或者基础架构团队,且已无法填补里面的经验。此时建议向业务架构师和技术经理角色转变。

5.高并发,高可用,海量用户等高级业务可遇不可求,并不是大部分公司所具备的。那么作为程序员,他的终极目标是在哪里?那种百里挑一的机遇并不可求。应过度到技术经理去适配合适的角色。

个人的独有特点

1.对演讲感兴趣,喜欢历史与人文感情。
2.能和人进行基本的沟通交流。不说多么热爱与人打交道,但至少内心底层是有渴望与人交流的需求

转型准备

1.有意识的训练自己的沟通能力与为人处世能力。

2.有意识的训练自己的领导能力和与领导相处的能力。

3.持续保持对技术的热爱,但切莫过于钻牛角尖越陷越深。

三、实战感悟

1.Java本身其实是一种编程语言,你也可以把它当成一门数学学科。其核心是逻辑推理。如果在产品设计时,如果用中文都无法把逻辑整理清楚,编程时思路肯定也是不清晰的。

2.写代码前最好把思路先用一个文本写下来,这样思路就清晰了,写出的代码维护起来也容易。就相当于你做数学题时要先打草稿一样,代码写上去了改动肯定比你在草稿上改动的成本大多了。

同样要学会使用画图等方式清晰的表达自己的设计,而不是思路不清晰就开始写代码

3.重难点先入,人的精力前期是充沛的,到了项目后期时间短,用后期短时间做较为复杂的业务,出bug的概率是很大的。而且对应编程来说,简单的业务实质是不需要的编程的,对应开发者来说,它就是一个体力活而已。

4.产品需求在评审前好好梳理,这样评审时可以早一点发现问题,否则开发过程中发现问题解决的成本会越堆越大,越到后面越不好解决。当然如果能遇上逻辑思维强的产品协作中将会大大减少成本,但好的产品可遇不可求啊!

5.对于远程调用一定要打日志,因为你不知道别人是怎么玩的,而且出问题的概率是不可控的。所以一定要对异常进行捕获,并打印入参和回参。

6.接口设计好后一定要让客户端,即前后端联调时先检查,因为设计好后客户端肯定会检查的,早一点发现,早一点调整,否则到了后面,调整的难度会越堆越大。

7.对于互联网公司,性能要求非常非常高,所以对于数据库的操作越简单越好,因为优化一个复杂查询的成本还是很高的,甚至尽可能不要做内存计算相关的操作,慢SQL是很容易被检测出来的

8.对应if else,如果条件在两个以内,可以使用。如果三个以上建议使用状态设计模式,即最原始的switch case

9.好代码的一些思考:

1.结构清晰,是基于模型的设计,能清晰的联想到对应的流程图。2.bug很少,且排查容易。3.接口逻辑尽量不要太多,如果接口逻辑复杂,可以考虑拆分接口,即保证接口的原子型4.利用到相关的设计模式5.面向对象的编程思维,懂得类的单一职责,懂得拆分类

10.熟悉业务方法总结

1.页面流程1)整体部分:熟悉业务的整体流程,模块拆分
2)枝节部分:重点熟悉业务的关键流程,如上下游流程,数据写入流程2.表梳理
1)熟悉业务的核心模型
2)表与表之间的关联关系梳理,明白哪些是主表哪些是关联表3.接口梳理A:入参和反参模型梳理
B:代码结构梳理
C:设计模式总结
D:核心接口流程图4.排查问题时总结流程

11.不要相信“任何人”,不要相信测试,她不一定能测出bug,到了线上环境,最后排查问题的还是开发自己,且还有可能会背锅。不要相信兄弟部门,谁知道他对接口会做哪些处理,按照的你要求去审核他的入参和反参吧,一定要对他的异常进行捕获。

12.程序员在设计时全局把控能力的思考

1.角度的转换,占在产品全局的角度,而不是某个需求的角度。即由被动形转为主动形,比如想一想如果是你来设计架构你会如何设计。2.判断此产品的未来价值,考虑代码的可扩展性

13.代码自测bug多解决方案思考

1.写完整:A:定义一个dubbo接口,就一定要把入参和反参对象进行序列化,provider和reference配置一定要进行配置,只要一套流程就要一次性写完在写其他部分,而不是东写一句西写一句,容易遗漏和出错

14.复杂接口和简单接口思考

1.复杂接口实质就是多个简单接口冗余到了一起。其本质还是是否遵循的类的单一职责,是否存在的一个类干了其他类要做的事情。2.对于存储在不同的表或者微服务下的数据如果要做分页查询,如何做?针对这种场景就应该思考哪一个是主表或者主服务,方案一以主表作为分页查询,副表作为筛选条件进行分页查询。方案二内存分页。

四、技术储备

1.core java:

a:编程特点:封装,继承,多态。

b:并发:aqs,cas,锁

c:网络基础:socket

d:集合数据结构原理

e:jvm性能调优

2.spring

2.1.基础:
IOC,DI,AOP原理深入理解

2.2.spring-ORM
1)spring与mybatis的整合
2)spring与redis的结合:spring-data-redis

2.3.spring-context
1)spring的事务管理,日志管理。

2.4.spring-webService
1)spring MVC原理深入理解,架构图待续

2)rop

2.5.springBoot
可以简化spring的xml配置,通过注解的形式进行bean的注入和管理.

如何集成tomcat,创建starter

2.6.分布式服务
1)springCloud
2)dubbo
3.建模
3.1UML建模工具

3.ORM框架

3.1.mybatis

推荐学习途径:书籍《mybatis技术内幕》徐郡明

存储

1.数据库

关系数据库
1)mysql

2)oracle

非关系型数据库(nosql)
1)redis
2)monodb

其他核心中间件

1)elastic search

2)click hourse

6.版本控制工具
1)maven

2)git

3)svn

7.格式解析
xml解析的几种方法
1)dom4j
2)sax
3)dom
json解析

8.前端
如今企业大多已采用前后端分离的架构,故前端知识了解即可如html,js,css。

9.反向代理

nginx

Java难点分析

1.jvm调优

2.分布式治理

3.db调优

五、面试感悟

1.面试官主要考察的是你对核心技术原理的理解程度和理解能力,以达到如果项目上出现了对应的问题,你是否能利用你所掌握的技能解决对应的问题。

2.对于中间件,你的大部分精力应该是掌握它的设计思想和核心原理,而不是代码本身,如果你掌握它的设计思想,相信你也能写出一套轻量级的类似中间件。

3.对于中间件的源码,你核心要想的是为何它要这么写?它使用哪些设计模式和设计思想?对你后续写代码有何参考和学习

4.二面专题

1.到了二面,一般为部门leader或者架构师,此时他的核心更多的是你的上限,如架构能力,底层深入的程度

5.如果你想展示你的技术能力,最好要有与之匹配的项目,这样将更让人信服。所以多多珍惜遇到项目中的难点问题,和大胆的尝试去做有挑战力的项目吧。

6.面试造火箭,工作修拧螺丝。对应初中级的开发来说,确实是这样,但对于高级和架构角色的开发来说,出了问题最终还是的由他们解决。

如果不懂底层原理和抽象发散,出了问题如何办,如果你不懂其底层原理,你敢用这门技术吗?

六、学习思考

1.中间件的思考

1.任何中间件应该是先有架构图才会有源码,而不是先写代码然后画架构图。
所以无论是写中间件还是读中间件源码,流程顺序不要搞反了

2.新技术使用探索流程:

1.粗列的看一看有哪些功能2.查看博客和官方使用文档,如果没有,就去找,就去问。3.根据文档,进行本地演示

3.学习源码的思考

1.如果读了源码你没有收获到它的设计流程和设计思想,那么你就白读了,所以还是弄懂原理之后再去看源码吧

java发展规划与感悟相关推荐

  1. 学习java的心得感悟--Linux的文件操作命令

    Linux的文件操作命令 ** 第一周 来说一说学习Java的心得感悟吧!!! 1.我觉得学习java一个是循环渐进得到,有始有终的按部就班,脚踏实地,java是一门有着阶梯性的一门语言,要按java ...

  2. 泥瓦匠之 Java 的成长感悟

    2019独角兽企业重金招聘Python工程师标准>>> Spring For All 垂直技术社区(spring4all.com),是国内首个 Spring .Spring Boot ...

  3. 构建Java体系之感悟系列(一)

    前言:很长时间没写博客了,目前大三,通过这段时间的学习,对技术有了宏观上的视野,对Java的生态体系也有了较深的理解,所以停止了动笔主要是因为发觉之前自己的知识体系有很大的漏洞,IT所有技术的学习就好 ...

  4. 关于java的一些感悟(java优缺点和建议)

    前些天,在CSDN上看到了一个消息,说是ASP.NET AJAX 成功在Linux上运行,这一点对我触动很大,而且引发了我许多感叹,所以想写出来分享一下. 首先,先谈谈我对java的一些认识.我选择j ...

  5. 毕业两年Java工程师总结感悟及未来规划

    毕业之后没有总结过自己,就像工作一年的总结啊,毕业一年的总结啊,从来没有落实文档上,只是在脑海里存在,觉得一点都都不对自己负责,眼看着自己快毕业两年了,必须得总结一下我这两年来的心路历程,和未来的规划 ...

  6. php转java知乎_php程序员来谈谈php和java

    本人一直以来从事PHP互联网开发,之前用过Thinkphp,不过最近几年一直用Yii2.最近由于公司要开发一套OA系统,所以开始用JAVA在做(php开源的工作流引擎真的太烂,自己开发一套又没时间), ...

  7. 转载精品:工作8年的普通专科生程序员的一些感悟

    工作8年的普通专科生程序员的一些感悟 斗者_2013 2020-05-28 00:27:23 33311 已收藏 787 原力计划 分类专栏: 程序人生 文章标签: java 软件开发 感悟 程序人生 ...

  8. C语言与Java的异同

    C语言与Java的异同 作者:终南   <li.zhongnan@hotmail.com> 自工作以来,先用VB.ASP这些编程:后来转用Java,对面向对象的语言有了些许了解,如今又主要 ...

  9. 你知道怎么样学习java吗?

    在慕课网上的原文.原文地址:http://www.imooc.com/article/9257 Java是个平台,我只想说说我对学好Java的一点看法,希望对初学者有所帮助. 1.1 思考一下 学习J ...

最新文章

  1. [整理]ADB命令行学习笔记
  2. time and value
  3. synchronized细节问题
  4. SAP Spartacus 自定义 PageResolver 的用法
  5. (计算机组成原理)第二章数据的表示和运算-第四节1:算数逻辑单元和电路基本知识以及基本逻辑运算和全加器还有串行、并行加法器
  6. shell 日志统计常用脚本
  7. 7-1 宿舍谁最高? (20 分)
  8. 全站黑白悼念代码,几行代码全网站黑白色
  9. mac + win ,用python一行代码批量下载哔哩哔哩视频
  10. 备案域名基础知识,网站备案新政策
  11. 攻壳机动队中的塔奇克马有灵魂吗?烧脑深度思考,慎点
  12. 《Linux防火墙(第4版)》——1.5 主机名和IP地址
  13. PMP试题 | 每日一练,快速提分 8.6
  14. sql server2008R2 ,全球国家sql
  15. 给定字符串A和B,输出A和B中的最大公共子串。
  16. Java开发环境与搭建
  17. 嵌入式分享合集108
  18. 微软计划为 Chrome 添加光标浏览模式
  19. 用友通-财务报表维护
  20. 424、电梯监控无线桥解决方案及注意事项

热门文章

  1. 文章品读:基于多个指标的多目标优化随机排序算法(SRA)
  2. 共享单车简史:曙光在何方
  3. 供配电系统怎么进行主接线图设计
  4. 机房动环监测主机原理、选型
  5. asp.net(c#)的一个非常非常奇怪的问题
  6. 库卡KUKA-MoveJ()/MoveL()-运动程序-私有库
  7. 瑞萨芯片程序移植到华大芯片,运行过程中出现HardFault
  8. 保研面试C语言题目,【保研】面试真题1000道.pdf
  9. C/C++编程: Anonymous unions(匿名联合)
  10. labview自动生成html,labview 报表生成范例