又到一年一度的跳槽求职高峰季,很多人问我,你们公司还需要人么,你们用的技术栈是哪些,有哪些是你们比较关注技术重点?

没错,作为负责技术面试的我,面对数十甚至上百封简历,肯定要做一轮筛选。究竟哪些技术点或方向在我筛选或面试时,留下深刻印象呢?

我觉得优秀的,有潜质的程序员可以从下面几点体现。

1. 性能调优

几乎每个JAVA后端开发程序员,都会在面试时碰到诸如如何性能调优的问题,如何回答好这个问题,不仅仅是对JVM,内存模型等的理解,更重要的是碰到性能问题时,排查问题的方法论和思路。

典型的一个场景是:在压力测试时,发现FullGC频率很高,如何解决?

此类问题一般从以下几点入手:

1. 观察GC日志,判断是否有内存泄漏,或者存在的内部不合理点。此处要求能熟悉各种linux命令,可以快速查看和定位。

2. 调整JVM 参数,如新生代,年老代大小,S0和S1大小比例,不同垃圾回收器的采用。并结合业务特点做进一步分析。这里不但要求扎实的JVM内存模型和理论,还要求对JVM的各种参数设置耳熟能详,并能实践操作。

3. Dump内存,做进一步的对象分析。

4. 压测脚本的编写,性能问题解决前可以发现问题,并能在问题解决后真实的验证。

此类优化不仅仅是照本宣科式的回答,面试官一定会喜欢问实际中操作的场景,和解决问题的思路。因为性能问题的原因是多种多样的,但是解决问题的思路和方法论是可以明确的。

网易十几年的互联网开发和几乎囊括了互联网的各个产品和业务场景,在性能优化和调优这块积累了丰富和独到的实践经验,很有代表和可参考性。

2. 网络框架的理解和使用

大家一定都听过或使用过网络异步框架Netty,甚至使用netty框架开发过一些应用和功能。

但是大部分人仅限于对Netty的使用,甚至仅仅知道其他一些开源框架使用了Netty,但是在资深面试官眼里,Netty有很多值得学习和借鉴的地方,使用过Netty并且能对Netty的一些原理有一定的了解且能学以致用的Java程序员格外受欢迎。

一般来说,要求较高的面试官和技术经理喜欢从Netty的设计模式角度深入的考察技术人员对网络开发和相关理论的理解如:

1. Netty的Reactor模型如何设计,反应在应用里的模型是如何(见下图)。

2. Netty的pipeline 责任链如何使用,业务场景中是否有类似的实践经验。

3. 项目中有无使用Netty,并利用Netty进行私有化协议设计。

同学们不仅要求能使用Netty,通过阅读其源码,理解其中的精髓,并能应用在自己的实践项目中,这个才是亮点和加分项。

3. 开源服务化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.重视解决问题的思路和方法,很多时候技术人员可以快速设计一个系统或解决一个问题,但是在资深工程师或面试官眼里可能并不是最优方案。如何解决?

很多技术人员的项目和技术相对单一,长久以往,容易造成技术思路和视野的狭窄,接触不到行业最新思路和动态或者当前疑难问题的最佳解决方案。

总结:想成为进阶架构师,那么资源肯定也是少不了的,如果你对技术提升很感兴趣,小编在这里提供了一份针对架构进阶视频资料,资源分享包括但不限于(分布式架构、高可扩展、高性能、高并 发、Jvm性能调优、Spring,MyBatis,Nginx源码分析,Redis,ActiveMQ、、Mycat、Netty、Kafka、Mysql 、Zookeeper、Tomcat、Docker、Dubbo、Nginx)。

群内提供免费的Java架构学习资料,QQ群:643459718

转载于:https://juejin.im/post/5cc15490e51d456e2446fcd2

看BAT技术面试官如何挑选Java程序员相关推荐

  1. java三年技术差_3年经验Java程序员面阿里P6 差距在哪里

    虽然这位小伙伴觉得自己工作三年了,结果阿里连面都不面就把自己挂了,这让自己感到很伤心.但是还是有网友觉得,三年不到p6,很正常啊,明年再面就没有问题啦! Java程序员3年经验面阿里P6,2面连面都没 ...

  2. 四轮面试阿里菜鸟网络 Java 程序员,失败经历记录分享!

    >>号外:关注"Java精选"公众号,回复"面试资料",免费领取资料!"Java精选面试题"小程序,3000+ 道面试题在线刷, ...

  3. 如何准备阿里社招面试,顺谈Java程序员学习中各阶段的建议

    引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容 ...

  4. 社招面试如何准备,java程序员学习中各个阶段的建议

    第一个问题:阿里面试都问什么? 这个是让LZ最头疼的一个问题,也是群里的猿友们问的最多的一个问题. 说实话,LZ只能隐约想起并发.JVM.分布式.TCP/IP协议这些个关键字,具体的问题真的是几乎都没 ...

  5. 面试官吐槽:“Python程序员就是不行,”网友:我能把你面哭信不

    近两年,Python一下子火了起来,很多公司都想赶上这"一下子"的热潮,招聘到大牛人才.但是,最近一个HR在社交网站的吐槽又火了: 那么问题来了,市面上为什么鲜有企业满意的优秀的P ...

  6. 面试官吐槽:“Python程序员就是不行!”网友:我能把你面哭!

    最近几年,Python莫名火了起来,很多公司都想赶上这"莫名"的热潮,招聘到大牛人才.但是,最近一个HR在社交网站的吐槽又火了: 那么问题来了,市面上为什么鲜有企业满意的优秀的Py ...

  7. html5程序员面试官如何提问,前端程序员第二轮面试的10个问题

    近日,w3cschool app开发者头条上分享了美团前端程序员第二轮面经,引来了不少程序员粉丝们的围观. 在分享面经之前,不妨先了解一下前端面试应该做好哪些准备呢? 0.前端面试加分 前端面试git ...

  8. 面试官为什么那么抵触程序员培训?

    首先大部分公司都抵触的是培训出来还没有能力把事情做好的程序员,有很多非科班出身的程序员,很多都是从培训机构出来的,这是进入行业最快的方式,但是很多培训出来的人把心思用再包装项目和简历上. 之前公司招过 ...

  9. 最近面试一个6年 Java程序员,一个问题都答不上!

    最近看了很多简历,很多候选人年限不小,但是做的都是一些非常传统的项目,想着也不能通过简历就直接否定一个人,何况现在大环境越来 越难,大家找工作也不容易,于是就打算见一见. 在沟通中发现,由于年限不小, ...

最新文章

  1. 利用三层交换机实现VLAN的通信实验报告
  2. pandas.get_dummies函数用法详细解答(实践)
  3. 成功解决NameError: name ‘norm‘ is not defined
  4. 字典、列表、元祖、字符串的综合(1)
  5. Kotlin实战指南十四:协程启动模式
  6. datagridview 筛选_【Excel】如何用通配符快速筛选到所需信息
  7. 计算机教师职称申报工作总结,个人评定一级教师工作总结
  8. matlab18a,Matlab R2018a安装详解
  9. Lady Gaga ft.Beyonce- Telephone
  10. 二维数组及以上维度的数组,本质是一维数组?(C语言)
  11. ubunt之一些问题解决办法
  12. java redis 字节_Redis Java
  13. matlab 同态滤波
  14. 1005打印任务取消不了 hp_1005打印任务取消不了 hp_解决hp1005打印机无法打印故障...
  15. 微星笔记本电脑安装Linux(Ubuntu)系统–失败
  16. 科幻作品中强大的计算机和人工智能有哪些?
  17. 深度学习-TextDetection
  18. POI对Word操作参考
  19. WARNING: too many parse errors
  20. 如何将过长的链接放到excel里面

热门文章

  1. iOS11和iPhone X的适配
  2. 利用正高Dolphin智能广告监测系统做好违法广告监测
  3. 借力大数据 物流迈向智能化
  4. JAVA学习笔记--4.多线程编程 part1.背景知识和内存模型
  5. 通过修改注册表提升SSD性能(Intel 5系列芯片组)
  6. 解决在VS(winform)程序中无法在调试时修改代码的问题(也就是“编辑并继续”功能无效)...
  7. Windows 能干而 Linux 干不了的事情,那就是不需要干的事情(转贴)
  8. go语言实现图片合成
  9. pek (北大oj)3070
  10. dubbo 部分 配置的关系-dubbo github 官方案例