不少人看到这个,估计说我是来炫耀的,实际并不是如此,看我一一道来:因为同窗在这边,因此过来看看,以纯屌丝形象脚踏一双人之托鞋,手拎着一个用了5年的箱子,穿着一件睡衣同样长的短袖,通过站了18小时火车,终于到了杭州火车站。到同窗那里,因为太累了,直接睡着了,到了次日,一大早就花了半个小时,投了一些本身比较心仪的公司。从九点就没睡觉了,到晚上7点为止接了30来个面试电话,不包括发邮件。
如今事情就来了,到目前有选择面试了7家,6家都拿到了offer,最后选择了一家工资13k,工做环境不错,有游泳馆、篮球场、健身房、包吃(中餐和晚餐)包住(两我的,两室一厅那种),就是加班严重。linux
说这么多,其实我主要想和你们分享一些面试经验。究竟哪些技术点或方向能给面试官留下深入印象呢?程序员
我以为优秀的,有潜质的程序员能够从下面几点体现。面试
须要清晰图片的能够到我首页进群免费领取!spring
几乎每一个JAVA后端开发程序员,都会在面试时碰到诸如如何性能调优的问题,如何回答好这个问题,不只仅是对JVM,内存模型等的理解,更重要的是碰到性能问题时,排查问题的方法论和思路。数据库
典型的一个场景是:在压力测试时,发现FullGC频率很高,如何解决?后端
此类问题通常从如下几点入手:设计模式
观察GC日志,判断是否有内存泄漏,或者存在的内部不合理点。此处要求能熟悉各类linux命令,能够快速查看和定位。
调整JVM 参数,如新生代,年老代大小,S0和S1大小比例,不一样垃圾回收器的采用。并结合业务特色作进一步分析。这里不但要求扎实的JVM内存模型和理论,还要求对JVM的各类参数设置耳熟能详,并能实践操做。
Dump内存,作进一步的对象分析。
压测脚本的编写,性能问题解决前能够发现问题,并能在问题解决后真实的验证。
此类优化不只仅是照本宣科式的回答,面试官必定会喜欢问实际中操做的场景,和解决问题的思路。由于性能问题的缘由是多种多样的,可是解决问题的思路和方法论是能够明确的。网络
你们必定都听过或使用过网络异步框架Netty,甚至使用netty框架开发过一些应用和功能。多线程
可是大部分人仅限于对Netty的使用,甚至仅仅知道其余一些开源框架使用了Netty,可是在资深面试官眼里,Netty有不少值得学习和借鉴的地方,使用过Netty而且能对Netty的一些原理有必定的了解且能学以至用的Java程序员格外受欢迎。架构
通常来讲,要求较高的面试官和技术经理喜欢从Netty的设计模式角度深刻的考察技术人员对网络开发和相关理论的理解如:
一、Netty的Reactor模型如何设计,反应在应用里的模型是如何(见下图)。
二、Netty的pipeline 责任链如何使用,业务场景中是否有相似的实践经验。
三、项目中有无使用Netty,并利用Netty进行私有化协议设计。
你们不只要求能使用Netty,经过阅读其源码,理解其中的精髓,并能应用在本身的实践项目中,这个才是亮点和加分项。
须要清晰图片的能够到我首页进群免费领取!
互联网通过十几年的发展,早已经从单体应用发展为服务化应用,大厂里系统和服务尤为如此。
拿经典的dubbo 服务化框架 举例,当前市面上有不少dubbo相关的文章和介绍,这里撇开不谈,从技术负责人的角度来,我会更关心下面有关几个dubbo相关的问题。
一、技术选型:为何选择dubbo,而不选择其余如spring cloud框架?
我认为能够从以下考虑:
A)业务的特色以及可预见的后续的发展。做为高级技术人员,必须须要对业务的的发展作预计和规划。
B)可用性要求,是否须要达到4个99(99.99%),须要支撑的峰值QPS,是否有业务的集中爆发点,如电商大促
C)团队的成熟度,一个成熟的团队能够很好的hold住复杂的开源框架,甚至作定制化开发。
技术选型话题虽然宽泛,可是最能体现体现技术人员的综合能力,尤为结合业务特色后对技术框架深度和广度的驾驭能力。
二、Dubbo底层走的是什么协议,如何处理异步转同步?
大部分的Java开发都会直接使用dubbo,而不会去关心其底层一些技术细节,可是一些细节,如dubbo如何对对象进行序列化,用了哪些序列化方式,这些在分布式项目中对提升应用的处理速度,减小网络开销,都很大帮助。
同时RPC框架里如何将异步转同步,也是须要技术人员很是关注的一面,里面相关的设计模式,多线程程高并发场景都是不少业务系统里真实须要和借鉴的。
三、Dubbo在高并发高可用等实践场景须要认真考虑的其余问题
使用了dubbo后,不少人以为万事大吉,其实并非这样,下面几点还须要关心,而且这些就是体现你价值的地方
A) dubbo依赖了zooKeeper,可是万一ZooKeeper宕机了怎么办
B) 若是ZooKeeper假死,客户端对服务端的调用是否会所有下线,若是是该如何避免
C) 如何监控duubo的调用,并作到优雅的客户端无感发布
你们能够自行思考,答案不是惟一!
项目中尽可能多思考,迎难而上,如碰到复杂的性能,内存泄露等问题的问题,每每是提高本身的机会,千万要仔细研究解决,能够参考其余解决相似问题的文章和实践经验,对技术深度的提高是很大的,关键时候可让你的面试官忽然以为面耳目一新。
重视解决问题的思路和方法,不少时候技术人员能够快速设计一个系统或解决一个问题,可是在资深工程师或面试官眼里可能并非最优方案。如何解决?
不少技术人员的项目和技术相对单一,长久以往,容易形成技术思路和视野的狭窄,接触不到行业最新思路和动态或者当前疑难问题的最佳解决方案。
对于渴望实现技术和职业成长的程序员,我为你们准备的两大福利:
福利1
整理本身的一些超有价值的架构进阶视频资料,以及「Java开发参考书籍」「Java开发学习图谱」「大数据容器数据库架构技术文档」等......
适听人群:Java初、中级开发工程师!
免费领取视频方式:
去个人首页,进群领取哦!