2023年6月20日发(作者:)
Java⾼级架构师,都需要掌握哪些技术栈?最近很多⼈问我,你们公司还缺⼈么,你们⽤哪些技术栈,有哪些是你们⽐较关注技术重点?作为负责技术⾯试的我,每天⾯对数⼗甚⾄上百封简历,肯定要优先做⼀轮筛选。那么哪些技术点或⽅向在筛选或⾯试时,会给我留下深刻印象呢?我觉得优秀的,有潜质的程序员可以从以下⼏点来体现。⼀. 性能调优⼏乎每个JAVA后端开发程序员,都会在⾯试时碰到诸如如何性能调优的问题,如何回答好这个问题,不仅仅是考察对JVM,内存模型等的理解,更看中的是碰到性能问题时,排查问题的⽅法论和思路。典型的⼀个场景是:在压⼒测试时,发现FullGC频率很⾼,如何解决?此类问题⼀般从以下⼏点⼊⼿:1. 观察GC⽇志,判断是否有内存泄漏,或者存在的内部不合理点。此处要求能熟悉各种linux命令,可以快速查看和定位。2. 调整JVM 参数,如新⽣代,年⽼代⼤⼩,S0和S1⼤⼩⽐例,不同垃圾回收器的采⽤。并结合业务特点做进⼀步分析。这⾥不但要求扎实的JVM内存模型和理论,还要求对JVM的各种参数设置⽿熟能详,并能实践操作。3. Dump内存,做进⼀步的对象分析。4. 压测脚本的编写,性能问题解决前可以发现问题,并能在问题解决后真实的验证。此类优化不能⽤照本宣科式的回答,⾯试官⼀定会问实际中操作的场景,和解决问题的思路。虽然性能问题的原因是多种多样的,但是解决问题的思路和⽅法论是可以明确的。⼆. ⽹络框架的理解和使⽤⼤家⼀定都听过或使⽤过⽹络异步框架Netty,甚⾄使⽤netty框架开发过⼀些应⽤和功能。但是⼤部分⼈仅限于对Netty的使⽤,甚⾄仅仅知道其他⼀些开源框架使⽤了Netty,但是在资深⾯试官眼⾥,Netty有很多值得学习和借鉴的地⽅,使⽤过Netty并且能对Netty的⼀些原理有⼀定的了解且能学以致⽤的Java程序员格外受欢迎。⼀般来说,要求较⾼的⾯试官和技术经理喜欢从Netty的设计模式⾓度深⼊的考察技术⼈员对⽹络开发和相关理论的理解如:1. Netty的Reactor模型如何设计,反应在应⽤⾥的模型是如何(见下图)。Java⾼级架构师,都需要掌握哪些技术栈?2. Netty的pipeline 责任链如何使⽤,业务场景中是否有类似的实践经验。3. 项⽬中有⽆使⽤Netty,并利⽤Netty进⾏私有化协议设计。同学们不仅要求能使⽤Netty,通过阅读其源码,理解其中的精髓,并能应⽤在⾃⼰的实践项⽬中,这个才是亮点和加分项。三. 开源服务化RPC框架的理解和使⽤互联⽹经过⼗⼏年的发展,早已经从单体应⽤发展为服务化应⽤,⼤⼚⾥系统和服务尤其如此。拿经典的dubbo 服务化框架举例,当前市⾯上有很多dubbo相关的⽂章和介绍,这⾥撇开不谈,从技术负责⼈的⾓度来,我会更关⼼下⾯有关⼏个dubbo相关的问题。1. 技术选型:为什么选择dubbo,⽽不选择其他如spring cloud框架?我认为可以从如下考虑:A)业务的特点以及可预见的后续的发展。作为⾼级技术⼈员,必须需要对业务的的发展做预计和规划。B)可⽤性要求,是否需要达到4个99(99.99%),需要⽀撑的峰值QPS,是否有业务的集中爆发点,如电商⼤促C)团队的成熟度,⼀个成熟的团队可以很好的hold住复杂的开源框架,甚⾄做定制化开发。技术选型话题虽然宽泛,但是最能体现体现技术⼈员的综合能⼒,尤其结合业务特点后对技术框架深度和⼴度的驾驭能⼒。2. Dubbo底层⾛的是什么协议,如何处理异步转同步?⼤部分的Java开发都会直接使⽤dubbo,⽽不会去关⼼其底层⼀些技术细节,但是⼀些细节,如dubbo如何对对象进⾏序列化,⽤了哪些序列化⽅式,这些在分布式项⽬中对提⾼应⽤的处理速度,减少⽹络开销,都很⼤帮助。同时RPC框架⾥如何将异步转同步,也是需要技术⼈员⾮常关注的⼀⾯,⾥⾯相关的设计模式,多线程程⾼并发场景都是很多业务系统⾥真实需要和借鉴的。3. Dubbo在⾼并发⾼可⽤等实践场景需要认真考虑的其他问题使⽤了dubbo后,很多⼈觉得万事⼤吉,其实并不是这样,下⾯⼏点还需要关⼼,并且这些就是体现你价值的地⽅A) dubbo依赖了zooKeeper,但是万⼀ZooKeeper宕机了怎么办B) 如果ZooKeeper假死,客户端对服务端的调⽤是否会全部下线,如果是该如何避免C) 如何监控duubo的调⽤,并做到优雅的客户端⽆感发布同学们可以⾃⾏思考,答案不是唯⼀,⽹易有很多类似的项⽬,设计的很好,⾮常值得思考和借鉴。⾃⾝多年的⾯试体会1.项⽬中尽量多思考,迎难⽽上,如碰到复杂的性能,内存泄露等问题的问题,往往是提升⾃⼰的机会,千万要仔细研究解决,可以参考其他解决类似问题的⽂章和实践经验,对技术深度的提升是很⼤的,关键时候可以让你的⾯试官突然觉得⾯⽿⽬⼀新。2.重视解决问题的思路和⽅法,很多时候技术⼈员可以快速设计⼀个系统或解决⼀个问题,但是在资深⼯程师或⾯试官眼⾥可能并不是最优⽅案。如何解决?很多技术⼈员的项⽬和技术相对单⼀,长久以往,容易造成技术思路和视野的狭窄,接触不到⾏业最新思路和动态或者当前疑难问题的最佳解决⽅案。
2023年6月20日发(作者:)
Java⾼级架构师,都需要掌握哪些技术栈?最近很多⼈问我,你们公司还缺⼈么,你们⽤哪些技术栈,有哪些是你们⽐较关注技术重点?作为负责技术⾯试的我,每天⾯对数⼗甚⾄上百封简历,肯定要优先做⼀轮筛选。那么哪些技术点或⽅向在筛选或⾯试时,会给我留下深刻印象呢?我觉得优秀的,有潜质的程序员可以从以下⼏点来体现。⼀. 性能调优⼏乎每个JAVA后端开发程序员,都会在⾯试时碰到诸如如何性能调优的问题,如何回答好这个问题,不仅仅是考察对JVM,内存模型等的理解,更看中的是碰到性能问题时,排查问题的⽅法论和思路。典型的⼀个场景是:在压⼒测试时,发现FullGC频率很⾼,如何解决?此类问题⼀般从以下⼏点⼊⼿:1. 观察GC⽇志,判断是否有内存泄漏,或者存在的内部不合理点。此处要求能熟悉各种linux命令,可以快速查看和定位。2. 调整JVM 参数,如新⽣代,年⽼代⼤⼩,S0和S1⼤⼩⽐例,不同垃圾回收器的采⽤。并结合业务特点做进⼀步分析。这⾥不但要求扎实的JVM内存模型和理论,还要求对JVM的各种参数设置⽿熟能详,并能实践操作。3. Dump内存,做进⼀步的对象分析。4. 压测脚本的编写,性能问题解决前可以发现问题,并能在问题解决后真实的验证。此类优化不能⽤照本宣科式的回答,⾯试官⼀定会问实际中操作的场景,和解决问题的思路。虽然性能问题的原因是多种多样的,但是解决问题的思路和⽅法论是可以明确的。⼆. ⽹络框架的理解和使⽤⼤家⼀定都听过或使⽤过⽹络异步框架Netty,甚⾄使⽤netty框架开发过⼀些应⽤和功能。但是⼤部分⼈仅限于对Netty的使⽤,甚⾄仅仅知道其他⼀些开源框架使⽤了Netty,但是在资深⾯试官眼⾥,Netty有很多值得学习和借鉴的地⽅,使⽤过Netty并且能对Netty的⼀些原理有⼀定的了解且能学以致⽤的Java程序员格外受欢迎。⼀般来说,要求较⾼的⾯试官和技术经理喜欢从Netty的设计模式⾓度深⼊的考察技术⼈员对⽹络开发和相关理论的理解如:1. Netty的Reactor模型如何设计,反应在应⽤⾥的模型是如何(见下图)。Java⾼级架构师,都需要掌握哪些技术栈?2. Netty的pipeline 责任链如何使⽤,业务场景中是否有类似的实践经验。3. 项⽬中有⽆使⽤Netty,并利⽤Netty进⾏私有化协议设计。同学们不仅要求能使⽤Netty,通过阅读其源码,理解其中的精髓,并能应⽤在⾃⼰的实践项⽬中,这个才是亮点和加分项。三. 开源服务化RPC框架的理解和使⽤互联⽹经过⼗⼏年的发展,早已经从单体应⽤发展为服务化应⽤,⼤⼚⾥系统和服务尤其如此。拿经典的dubbo 服务化框架举例,当前市⾯上有很多dubbo相关的⽂章和介绍,这⾥撇开不谈,从技术负责⼈的⾓度来,我会更关⼼下⾯有关⼏个dubbo相关的问题。1. 技术选型:为什么选择dubbo,⽽不选择其他如spring cloud框架?我认为可以从如下考虑:A)业务的特点以及可预见的后续的发展。作为⾼级技术⼈员,必须需要对业务的的发展做预计和规划。B)可⽤性要求,是否需要达到4个99(99.99%),需要⽀撑的峰值QPS,是否有业务的集中爆发点,如电商⼤促C)团队的成熟度,⼀个成熟的团队可以很好的hold住复杂的开源框架,甚⾄做定制化开发。技术选型话题虽然宽泛,但是最能体现体现技术⼈员的综合能⼒,尤其结合业务特点后对技术框架深度和⼴度的驾驭能⼒。2. Dubbo底层⾛的是什么协议,如何处理异步转同步?⼤部分的Java开发都会直接使⽤dubbo,⽽不会去关⼼其底层⼀些技术细节,但是⼀些细节,如dubbo如何对对象进⾏序列化,⽤了哪些序列化⽅式,这些在分布式项⽬中对提⾼应⽤的处理速度,减少⽹络开销,都很⼤帮助。同时RPC框架⾥如何将异步转同步,也是需要技术⼈员⾮常关注的⼀⾯,⾥⾯相关的设计模式,多线程程⾼并发场景都是很多业务系统⾥真实需要和借鉴的。3. Dubbo在⾼并发⾼可⽤等实践场景需要认真考虑的其他问题使⽤了dubbo后,很多⼈觉得万事⼤吉,其实并不是这样,下⾯⼏点还需要关⼼,并且这些就是体现你价值的地⽅A) dubbo依赖了zooKeeper,但是万⼀ZooKeeper宕机了怎么办B) 如果ZooKeeper假死,客户端对服务端的调⽤是否会全部下线,如果是该如何避免C) 如何监控duubo的调⽤,并做到优雅的客户端⽆感发布同学们可以⾃⾏思考,答案不是唯⼀,⽹易有很多类似的项⽬,设计的很好,⾮常值得思考和借鉴。⾃⾝多年的⾯试体会1.项⽬中尽量多思考,迎难⽽上,如碰到复杂的性能,内存泄露等问题的问题,往往是提升⾃⼰的机会,千万要仔细研究解决,可以参考其他解决类似问题的⽂章和实践经验,对技术深度的提升是很⼤的,关键时候可以让你的⾯试官突然觉得⾯⽿⽬⼀新。2.重视解决问题的思路和⽅法,很多时候技术⼈员可以快速设计⼀个系统或解决⼀个问题,但是在资深⼯程师或⾯试官眼⾥可能并不是最优⽅案。如何解决?很多技术⼈员的项⽬和技术相对单⼀,长久以往,容易造成技术思路和视野的狭窄,接触不到⾏业最新思路和动态或者当前疑难问题的最佳解决⽅案。
发布评论