问:工作中,有时候实现一个功能,会去看有没有现成的轮子可用。对于重复造轮子与改造轮子有什么看法?

答:一定会的,其实这也是一个提高技术能力的方法,比如今天想做个日期转换的功能,JDK8有日期的新特性就会考虑直接使用LocalDate.now().format(DateTimeFormatter.BASICISODATE),

以前都是自己写个DateUtils。

如果已有的轮子不满足需求,我觉得可以基于已有的轮子进行改造,提供更多的特性。

在写代码的过程中,永远要思考的是现在业界的技术方案是如何做的,

现在的方案有什么优点或缺点,我能不能直接使用,不能使用的话,是否优化后可用,当然用的时候要了解它的实现原理,做到知其然知其所以然。

阿里级别薪资表

问:阿里的技术专家P7从招聘层面上来说,比如工作年限,过往经历,技术能力等需要达到怎样的要求,可否详细讲一下?

答:年限是5-10年,

技术能力有几个方面的要求,扎实的基础能力,在技术上要有技术亮点,用过的框架要知道其技术原理,能独立解决各种技术问题,具备分布式系统的开发经验,比较强的实战能力。

阿里的5要求能独立负责一个模块,6要求能独立负责一个系统,7要求能架构和负责多个系统,并规划系统的未来能力,在某个领域达到专家水平,可以是某个业务领域,也可以是某个技术领域。

独立这两个字要求很高,即遇到任何技术问题,你都能独立解决。

问:工作中,产品方案设计的时候,经常会存在多方分歧,有分歧就会存在妥协,如何合理的坚持自己的观点,如何合理的做出妥协?

答:方案没有对错,每个方案都有他的优点和缺点,要分析出别人方案的优点和缺点,肯定对方方案的优点,再针对缺点提出对方如何解决这个问题,还是说不解决这个缺点。一起讨论出最合适的方案,而不是要争论谁对谁错。

问:我就是在业务团队,偏技术。框架听起来很酷但遥远,能否带入门,给几个知识点?

答:在业务团队也可以做很多框架,比如可配置化支持业务的框架,自动生成添加删除修改页面的框架,业务数据校验的框架,

只要多思考如何快速支持业务,就能找到合适的业务框架。可以从几个点出发,配置化支持业务,页面自动生成,流程标准化等。

问: 最近在学习Spring源码,看了点书,可以跟着作者的思路看源码,但是看完不久就忘了,其实是没有太多的应用场景的,对于看源码,有什么好的方法吗?

答:可以用这个思路,比如让你来设计一个Spring框架你会如何来设计,Spring Core最重要的就是IOC和AOP,

自己可以尝试实现下简单的IOC和AOP功能,然后再去对比看下Spring是如何实现的,这样即使忘记了Spring的代码,但是仍然能基础其实现原理。

问:对于三十岁的程度员,如果还想再深入做技术,有什么建议?

答:技术人员一定要有危机感,无论多大年纪仍然要持续的学习,我也已经三十多了,每周会花点时间学习点技术。

但是年纪大了,其实时间不会那么多,所以要提高学习的效率,掌握一些学习方法和方法论,并且要静下心来持续的学习。

学技术什么时间都不晚,因为总有新技术冒出来,但是一些永远不变的技术可以优先学习,比如各种协议(TCP,HTTP,一致性hash协议),实现原理,算法等。

问:自己也实现过IOC和AOP的一些小案例,但是实现比较简单,IOC是基于一个Map来实现的,AOP使用CgLib实现,但是再看Spring Core的源码时,还是感觉很吃力,嵌套层次太多,Debug多次,还是比较吃力,怎么办?

答:技术人员一定要有个特质就是死磕,有的技术人员可能花2个星期解决一个技术BUG,就是对着源码一点点的看,要能入定。带着问题去看源码会更轻松点。

答:要给自己制定学习计划,

比如要学习哪些技术,每天学习什么,达到什么程度。

工作中用一些方式方法减少杂乱无难度的工作内容,比如白天不答疑,或只在固定的时间答疑,写FAQ减少答疑,少参与一些会议,不实时去回即时通讯软件。

问:你觉得三年经验应该具备什么样的技能?

答:我觉的作为一个开发经验三年经验来说应该要弄懂下面的知识大纲

微服务专题

作为阿里的p7当然要弄懂双十一项目;

要自己能够完全搞懂源码

分布式是必不可少的;

还要学会性能优化

问:上面的知识掌握了可以成为阿里P7的架构师吗?你对于如何学习上面提到的知识有什么建议吗?

答:完全掌握是可以的 ,但是会需要一个比较长的周期,大概是八到十个月左右,我有自己的一个技术分享群:629740746,我会每天在群里给大家分享一个架构的知识点,当然我也自己录制了一些完整的架构,还有一些bat面试点讲解的视频 ,今天作为一个福利,只要你们来我就免费的分享给大家

问:文章里面提到了架构能力,架构能力由什么组成?如何提高架构能力?又如何去设计一个架构?

答:这是个很好的问题,后续可能写一系列的文章来分享下我的看法。

架构分很多种,有业务架构,网络架构,数据架构及中间件架构。 架构能力最关键的是抽象能力,能抽象出系统中不变的部分形成领域模型。而变化的部分都是通过扩展实现的。有点像乐高积木,抽象出各种基本模块,就可以搭建你想要的东西。

那么如何提高架构能力?多学多思多实战,首先掌握架构模式和架构原则,比如分层架构,模块化,或者看些架构的书,《企业应用架构模式》等,然后看已有的系统架构,思考下该系统为什么要这样架构,遵循了哪些原则和模式,这个架构的优缺点有哪些。然后就是自己参与到架构中,和架构师一起讨论设计。

最新文章

  1. oracle导出一条二进制数据(二进制,long只能通过dmp导出)
  2. Camstar Portal modeling user guid --自定义用户菜单
  3. Node.js入门:模块机制
  4. 【代码笔记】iOS-评分,支持我们
  5. flask环境开发搭建
  6. Winform中如何实现子窗体刷新父窗体
  7. [AngularJS + Webpack] require directives
  8. Android单元测试初探——Instrumentation(转载)
  9. iOS NSDictionary、NSData、JSON等 数据类型相互转换
  10. 同行blog收集
  11. [译]Java 设计模式之工厂
  12. HtmlCleaner CleanerProperties 参数配置(转自macken博客,链接:http://macken.iteye.com/blog/1579809)
  13. 【2017集美大学1412软工实践_助教博客】团队作业3——需求改进&系统设计 成绩公示
  14. 201521123092《java程序设计》第十周学习总结
  15. codeforces#410C Mike and gcd problem
  16. Spark2.2(三十九):如何根据appName监控spark任务,当任务不存在则启动(任务存在当超过多久没有活动状态则kill,等待下次启动)
  17. SpringMVC Controller中注入Request成员域和在方法中定义中HttpServletRequest有啥区别
  18. Swift真机调试时报错dyld: Library not loaded: @rpath/libswiftCore.dylib
  19. JavaScript循环练习2
  20. Axon框架使用指南

热门文章

  1. mfc CListCtrl 报表格式
  2. 设计模式学习---UML常见关系的实现
  3. Linux下的openvpn配置 与 easy-rsa3的证书生成
  4. libgdx学习记录17——照相机Camera
  5. ansible自动化工具安装和简单使用
  6. 如何在一个电脑上同时使用两个Git的账号
  7. Teechart使用记录
  8. XML中<beans>属性
  9. DeepID人脸识别算法之三代
  10. Alpha冲刺——day4