来自从事Java十年的老架构师给大家的一些经验,Java工程师必看

一转眼从学校毕业已经超过10年了,从一名普通的程序员成长为500强企业的架构师,如今也开始做IT管理工作,可以算是一个过来人。这一路走来,自己有一些感悟,也看到其他人的一些经验教训,还有很多朋友不知道怎么从工程师成长为一名合格的架构师,我总结了一些我的人生经验,希望对那些处在迷茫中的年轻朋友们有些许帮助。同时也分享一套架构师的面试题,能答出80%其实已经算是一名合格的架构师了。

人生经验:尽早确定你想做的事情

一个人的职业生涯总是包含很多阶段,而每个阶段又是环环相扣,互为因果的。因此,我们总是能够看到一群同时毕业的人,经过10年后,各自的发展却迥然不同,有些人总能快人一步,提前到达职涯的新高,而有些人却慢人半拍,逐渐掉队。这其中,一定有运气等其他客观因素的影响,但仔细观察,我们会发现那些成功的人,往往是那些有着坚定目标,并持续努力的人。

因此,尽早确定你想做的事情——你的职业目标,意味着你可以获得比其他人更多的时间去努力。我们中绝大多数都不是天才,因此所能达到的成就,也就往往与你为达成这一目标所付出的时间成正比了。

作为一名技术人员,在我呆过的每个公司,都会有同事因为待遇或其他原因,放弃技术路线,转而成为一名业务人员。而我由于对技术的热爱,始终坚持从事技术相关的工作,随着经验与能力的累积,我成了公司的技术专家,反而获得了更好的升职机会。现在再回过头来看,正是由于我比较早地确定了自己的职业方向,并坚持下来,才在某些领域获得了比较优势,并取得现有成绩的。
 

文章持续更新,如果你想学习java更多知识和相关视频资料可以可以关注我私信【777】获取福利,项目源码,简历模板,学习路线图。或者点击这里免费领取

来自从事Java十年的老架构师给大家的一些经验,Java工程师必看_第1张图片

 

架构师面试:面试真题

经常面试一些候选人,整理了下我面试使用的题目,陆陆续续整理出来的题目很多,所以每次会抽一部分来问。答案会在后面的文章中逐渐发布出来,有兴趣的朋友可以持续关注我。

基础题目

  1. Java线程的状态

  2. 进程和线程的区别,进程间如何通讯,线程间如何通讯

  3. HashMap的数据结构是什么?如何实现的。和HashTable,ConcurrentHashMap的区别

  4. Cookie和Session的区别

  5. 索引有什么用?如何建索引?

  6. ArrayList是如何实现的,ArrayList和LinkedList的区别?ArrayList如何实现扩容。

  7. equals方法实现

  8. 面向对象

  9. 线程状态,BLOCKED和WAITING有什么区别

  10. JVM如何加载字节码文件

  11. JVM GC,GC算法。

  12. 什么情况会出现Full GC,什么情况会出现yong GC。

  13. JVM内存模型

  14. Java运行时数据区

  15. 事务的实现原理

技术深度

  1. 有没有看过JDK源码,看过的类实现原理是什么。

  2. HTTP协议

  3. TCP协议

  4. 一致性Hash算法

  5. JVM如何加载字节码文件

  6. 类加载器如何卸载字节码

  7. IO和NIO的区别,NIO优点

  8. Java线程池的实现原理,keepAliveTime等参数的作用。

  9. HTTP连接池实现原理

  10. 数据库连接池实现原理

  11. 数据库的实现原理

技术框架

  1. 看过哪些开源框架的源码

  2. 为什么要用Redis,Redis有哪些优缺点?Redis如何实现扩容?

  3. Netty是如何使用线程池的,为什么这么使用

  4. 为什么要使用Spring,Spring的优缺点有哪些

  5. Spring的IOC容器初始化流程

  6. Spring的IOC容器实现原理,为什么可以通过byName和ByType找到Bean

  7. Spring AOP实现原理

  8. 消息中间件是如何实现的,技术难点有哪些

系统架构

  1. 如何搭建一个高可用系统

  2. 哪些设计模式可以增加系统的可扩展性

  3. 介绍设计模式,如模板模式,命令模式,策略模式,适配器模式、桥接模式、装饰模式,观察者模式,状态模式,访问者模式。

  4. 抽象能力,怎么提高研发效率。

  5. 什么是高内聚低耦合,请举例子如何实现

  6. 什么情况用接口,什么情况用消息

  7. 如果AB两个系统互相依赖,如何解除依赖

  8. 如何写一篇设计文档,目录是什么

  9. 什么场景应该拆分系统,什么场景应该合并系统

  10. 系统和模块的区别,分别在什么场景下使用

分布式系统

  1. 分布式事务,两阶段提交。

  2. 如何实现分布式锁

  3. 如何实现分布式Session

  4. 如何保证消息的一致性

  5. 负载均衡

  6. 正向代理(客户端代理)和反向代理(服务器端代理)

  7. CDN实现原理

  8. 怎么提升系统的QPS和吞吐量

实战能力

  1. 有没有处理过线上问题?出现内存泄露,CPU利用率标高,应用无响应时如何处理的。

  2. 开发中有没有遇到什么技术问题?如何解决的

  3. 如果有几十亿的白名单,每天白天需要高并发查询,晚上需要更新一次,如何设计这个功能。

  4. 新浪微博是如何实现把微博推给订阅者

  5. Google是如何在一秒内把搜索结果返回给用户的。

  6. 12306网站的订票系统如何实现,如何保证不会票不被超卖。

  7. 如何实现一个秒杀系统,保证只有几位用户能买到某件商品。

软能力

  1. 如何学习一项新技术,比如如何学习Java的,重点学习什么

  2. 有关注哪些新的技术

  3. 工作任务非常多非常杂时如何处理

  4. 项目出现延迟如何处理

  5. 和同事的设计思路不一样怎么处理

  6. 如何保证开发质量

  7. 职业规划是什么?短期,长期目标是什么

  8. 团队的规划是什么

  9. 能介绍下从工作到现在自己的成长在那里

你可能感兴趣的:(程序员,Java,java面试,jvm,java,面试)