阿里架构师十年经验分享,你还在迷茫吗?

第一阶段:三年

我认为三年对于程序员来说是第一个门槛,这个阶段将会淘汰掉一批不适合写代码的人。这一阶段,我们走出校园,迈入社会,成为一名程序员,正式从书本上的内容迈向真正的企业级开发。我们知道如何团队协作、如何使用项目管理工具、项目版本如何控制、我们写的代码如何测试如何在线上运行等等,积累了一定的 开发经验,也对代码有了一定深入的认识,是一个比较纯粹的Coder的阶段。

第二阶段:五年

五年又是区分程序员的第二个门槛。有些人在三年里,除了完成工作,在空余时间基本不会研究别的东西,这些人永远就是个Coder,年纪大一些势必被更年轻的人给顶替;有些人在三年里,除了写代码之外,还热衷于研究各种技术实现细节、看了N多好书、写一些博客、在Github上分享技术,这些人在五年 后必然具备在技术上独当一面的能力并且清楚自己未来的发展方向,从一个Coder逐步走向系统分析师或是架构师,成为项目组中不可或缺的人物。

第三阶段:十年

十年又是另一个门槛了,转行或是继续做一名程序员就在这个节点上。如果在前几年就抱定不转行的思路并且为之努力的话,那么在十年的这个节点上,有些 人必然成长为一名对行业有着深入认识、对技术有着深入认识、能从零开始对一个产品进行分析的程序员,这样的人在公司基本担任的都是CTO、技术专家、首席 架构师等最关键的职位,这对于自己绝对是一件荣耀的事,当然老板在经济上也绝不会亏待你。

第一部分总结一下,我认为,随着你工作年限的增长、对生活对生命认识的深入,应当不断思考三个问题:

1、我到底适不适合当一名程序员?

2、我到底应不应该一辈子以程序员为职业?

3、我对编程到底持有的是一种什么样的态度,是够用就好呢还是不断研究?

最终,明确自己的职业规划,对自己的规划负责并为之努力。

关于项目经验

在网上经常看到一些别的朋友有提出项目经验的问题,依照我面试的感觉来说,面试主要看几点:项目经验+基本技术+个人潜力(也就是值不值得培养)。

关于项目经验,我认为并发编程网的创始人方腾飞老师讲的一段话非常好:介绍产品时面试官会考察应聘者的沟通能力和思考能力,我们大部分情况都是做产品的一个功能或一个模块,但是即使是这样,自己有没有把整个系统架构或产品搞清楚,并能介绍清楚,为什么做这个系统?这个系统的价值是什么?这个系统有哪些功能?优缺点有哪些?如果让你重新设计这个系统你会如何设计?

我觉得这就已经足以概括了。也许你仅仅工作一年,也许你做的是项目中微不足道的模块,当然这些一定是你的劣势且无法改变,但是如何弥补这个劣势?

从方老师的话中我总结几点:

1、明确你的项目到底是做什么的,有哪些功能。

2、明确你的项目的整体架构,在面试的时候能够清楚地画给面试官看并且清楚地指出从哪里调用到哪里、使用什么方式调用。

3、明确你的模块在整个项目中所处的位置及作用。

4、明确你的模块用到了哪些技术,更好一些的可以再了解一下整个项目用到了哪些技术。

在你无法改变自己的工作年限、自己的不那么有说服力的项目经验的情况下(这一定是扣分项),可以通过这种方式来一定程度上地弥补并且增进面试官对你的好感度。

关于专业技能

写完项目接着写写一名3年工作经验的Java程序员应该具备的技能,这可能是Java程序员们比较关心的内容。我这里要说明一下,以下列举的内容不是都要会的东西,但是如果你掌握得越多,最终能得到的评价、拿到的薪水势必也越高。

高可用

  • 负载均衡(负载均衡算法)

  • 反向代理

  • 服务隔离

  • 服务限流

  • 服务降级(自动优雅降级)

  • 失效转移

  • 超时重试(代理超时、容器超时、前端超时、中间件超时、数据库超时、NoSql超时)

  • 回滚机制(上线回滚、数据库版本回滚、事务回滚)

高并发

  • 应用缓存

  • HTTP 缓存

  • 多级缓存

  • 分布式缓存

  • 连接池

  • 异步并发

分布式事务

  • 二阶段提交(强一致)

  • 三阶段提交(强一致)

  • 消息中间件(最终一致性),推荐阿里的 RocketMQ。

队列

  • 任务队列

  • 消息队列

  • 请求队列

扩容

单体垂直扩容

  • 单体水平扩容

  • 应用拆分

  • 数据库拆分

  • 数据库分库分表

  • 数据异构

  • 分布式任务

网络安全

  • SQL 注入

  • XSS 攻击

  • CSRF 攻击

  • 拒绝服务(DoS,Denial of Service)攻击

少年,任重而道远,而现在有一个平台可以提供给你们学习,让你在实践中积累经验掌握原理。主要方向是JAVA架构师。如果你想拿高薪,想突破瓶颈,想跟别人竞争能取得优势的,想进BAT但是有担心面试不过的,可以加我的Java工程师学习交流群:795632998

猜你喜欢

转载自blog.csdn.net/weixin_42882439/article/details/83791079