不少Java程序员,在在应聘一些中大型互联网公司的Java工程师岗位时,经常会遇到如下困惑。

这些同学说自己也做了精心准备,网上搜集了不少Java面试题。

然而实际去互联网公司面试才发现,人家问的,和你准备的根本对不上号,面试现场经常弥漫着尴尬的气氛,最后的面试结果也是不言而喻!

先来体验一个真实的面试连环炮

那么,为什么这些兄弟会出现这种情况呢?下面和千锋广州Java小编一起来看看吧!

首先,我们来看看真实的一二线互联网公司面试现场,看看大厂面试官是如何发问的。

简单来说,现在一些中大型互联网公司的面试官,在面试候选人时,一般都会采取连环炮的策略来深挖一个候选人的技术水平。

举个例子,比如说看你简历上写了熟悉消息中间件(MQ技术)。那么可能我们就会有一个类似下面这样的连环炮式发问:

说说你们公司线上生产环境用的是什么消息中间件?

那你们线上系统是有哪些技术挑战,为什么必须要在系统里引入消息中间件?

你们的消息中间件技术选型为什么是RabbitMQ?

为什么不用RocketMQ或者是Kafka?技术选型的依据是什么?

你们怎么保证消息中间件的高可用性?避免消息中间件故障后引发系统整体故障?

使用消息中间件技术的时候,你们怎么保证投递出去的消息一定不会丢失?

你们怎么保证投递出去的消息只有一条且仅仅一条,不会出现重复的数据?

如果消费了重复的消息怎么保证数据的准确性?

你们线上业务用消息中间件的时候,是否需要保证消息的顺序性?

如果不需要保证消息顺序,为什么不需要?假如我有一个场景要保证消息的顺序,你们应该如何保证?

下游消费系统如果宕机了,导致几百万条消息在消息中间件里积压,此时怎么处理?

你们线上是否遇到过消息积压的生产故障?如果没遇到过,你考虑一下如何应对?

你们用的是RabbitMQ?那你说说RabbitMQ的底层架构原理,逻辑架构、物理架构以及数据持久化机制?

你们RabbitMQ的最高峰QPS每秒是多少?线上如何部署的,部署了多少台机器,机器的配置如何?

你们用的是Kafka?那你说说Kafka的底层架构原理,磁盘上数据如何存储的,整体分布式架构是如何实现的?

再说说Kafka是如何保证数据的高容错性的?零拷贝等技术是如何运用的?高吞吐量下如何优化生产者和消费者的性能?

看过Kafka的源码没有。如果看过,说说你对Kafka源码的理解?

你们用的是RocketMQ?RocketMQ很大的一个特点是对分布式事务的支持,你说说他在分布式事务支持这块机制的底层原理?

RocketMQ的源码看过么,聊聊你对RocketMQ源码的理解?

如果让你来动手实现一个分布式消息中间件,整体架构你会如何设计实现?

上面仅仅是MQ相关技术问题的一部分,实际上,一个比较好的面试官的问题,就是从技术面、技术点、项目实践几块来抽丝剥茧的发问。

技术广度的考察

首先考察候选人技术面的完整性,因为工作中是需要具备一定的技术视野的,不能说光知道消息中间件,但是分布式缓存却一无所知。

类似于以前高考的时候,你语文特别好,结果物理特别差,那也是不太合适的。

所以工程师首先要避免自己的技术短板,尤其是三到五年经验的同学,已经彻底度过了自己人生的职场生涯的初期小白入门菜鸟阶段。

所以,务必在工作三到五年的时候,保证自己的技术绝对没有任何短板,整体技术栈要或多或少都知道一些,不能出现盲区。

比如,我现在问你,你们公司有没有什么业务场景是可以用NoSQL的?现在国内各个公司用NoSQL的技术都有哪些选型?具体NoSQL可以解决什么问题?

如果你一问三不知,这就是典型的技术短板,你至少需要大概知道,每个技术一般在什么情况下用,怎么来用,解决的是什么问题。

因此,上面说的消息中间件、分布式缓存、海量数据、分布式搜索、NoSQL、分布式架构、高并发、高可用、高性能这些技术。并不是说真的要求工作几年的同学都要精通到源码层面。

而是说你工作几年以后,应该有一定的技术广度,开阔的技术视野。

底层技术的考察

现在很多互联网大厂都会有基本功的考察,举个例子,Java虚拟机的核心原理、内存模型、垃圾回收、线上FullGC卡顿性能优化、线上OOM内存溢出问题你处理。

Java并发中的volatile、锁优化、AQS源码;

Netty背后的IO、网络相关的知识。

其实这种底层技术,是线上高负载大型系统的架构设计和开发,必须要具备的。

因为底层技术不扎实,很多中间件或其他高阶的技术,都无法深入理解其原理。

而且很多时候,解决线上系统的生产故障,都需要这些技术。因此,底层技术的掌握是一个优秀工程师必须具备的素养。

技术深度的考察

此外,我们一定会深入考察候选人平时工作中熟悉的以及常用的一些技术。

举个例子,比如你项目里用了Redis或者是Elasticsearch。

只要你用过了,而且是你某个项目里的核心技术,那么一定会用连环炮式的发问,深入各种细节、底层、生产环境可能遇到的技术挑战。

总之,就是要用压力测试出来你在这块技术水平掌握的到底有多深,实践经验有多强。

一个好的面试官,自己本身技术功底扎实,是可以对一个技术问出一连串的连环炮的,就比如上面的那个消息中间件的连环炮发问。

而且只要面试官在一个技术上的深度超过候选人,那么通过不断加深的发问,是可以考察出来一个候选人在自己最熟悉的技术领域的技术深度的。

举个例子,比如说你对一个技术的掌握是否达到了源码级别?

是否对某个框架,或者是中间件深入的理解底层的源码实现,从源码级别说清楚他的架构原理?

是否对这个技术有过线上的高可用部署,承载过高并发流量的访问?

是否对这个技术在线上生产环境解决过各种各样的复杂技术挑战?

是否基于这个技术落地到你的业务系统中,设计出各种复杂的系统架构?

通过这种连环炮,可以非常好的考察出某个候选人对技术深度的掌握。

技术深度的考察是中大型互联网公司面试官对一个高级/资深的候选人必须考察的。

因为如果一个人工作5年以上,来应聘高级职位的话,那我们绝对是要求他对至少一个技术领域有着较为深入的研究的。

比如说起码你得深入阅读过某个热门技术的核心源码,有一定的技术功底,可以解决一些复杂的线上故障。

技术广度决定了你可以利用各种技术来做项目,但是技术深度决定了你的技术功底。

你未来学新东西有多快,线上系统出了故障你能否快速定位和解决,你能否基于对技术的深刻理解为公司的项目设计和开发出复杂而且优秀的架构出来,这都取决于技术深度。

总结

小编小结一下,本文我们用一个面试连环炮,引出了平时中大型互联网公司面试官是如何发问的。

然后从技术广度、底层技术、技术深度几个角度说了一下,我们一般如何考察候选人的技术。

知己知彼、百战不殆,面试也是如此,你只有真正了解了面试官的选拔标准,考察范围,才能更好的进行针对性的准备,成为行走的“offer收割机”

Java面试,你遇到哪些困境相关推荐

  1. 百度统计 java 实现思路_2019社招阿里、腾讯、蚂蚁金服「四面」Java面试真题分享...

    在过去很长一段时间内,国内互联网一直处于三足鼎立状态,BAT即百度.阿里巴巴.腾讯.而在最新的互联网企业价值榜上,百度却被蚂蚁金服挤出前三的位置. 能够进一线互联网公司,是大部分程序员奋斗的目标,有很 ...

  2. Java面试通关要点汇总集【终极版】

    原文地址:梁桂钊的博客 博客地址:blog.720ui.com 年前,我整理的 Java面试通关要点汇总集 获得了很多读者的肯定,谢谢大家支持.事实上,笔者结合自己过往的面试经验,整理了一些核心的知识 ...

  3. Java面试通关要点

    Java面试通关要点 2018-03-23 梁桂钊 占小狼的博客 占小狼的博客 占小狼的博客 微信号 whywhy_zj 功能介绍 Java进阶技术干货.实践分享,跟着狼哥一起学习JVM.性能调优,欢 ...

  4. 2020社招阿里、腾讯、蚂蚁金服「四面」Java面试真题分享

    在过去很长一段时间内,国内互联网一直处于三足鼎立状态,BAT即百度.阿里巴巴.腾讯.而在最新的互联网企业价值榜上,百度却被蚂蚁金服挤出前三的位置. 能够进一线互联网公司,是大部分程序员奋斗的目标,有很 ...

  5. 2019社招阿里、腾讯、蚂蚁金服Java面试真题

    在过去很长一段时间内,国内互联网一直处于三足鼎立状态,BAT即百度.阿里巴巴.腾讯.而在最新的互联网企业价值榜上,百度却被蚂蚁金服挤出前三的位置. 能够进一线互联网公司,是大部分程序员奋斗的目标,有很 ...

  6. 别再找借口了!找不到工作还不好好学一下这份16W字Java面试合集

    背景 前两天在朋友圈发了一条招人的感慨,关于大厂招人和小公司招人的区别. 大厂:有影响力,有钱,能够吸引了大量的应聘者.因此,也就有了筛选的资格,比如必须985名校毕业,必须35岁以下,不能5年3跳, ...

  7. java面试常见问题之Hibernate总结

    1  Hibernate的检索方式 Ø  导航对象图检索(根据已经加载的对象,导航到其他对象.) Ø  OID检索(按照对象的OID来检索对象.) Ø  HQL检索(使用面向对象的HQL查询语言.) ...

  8. 2021年Java面试题目最新总结【90%面试会踩的坑】

    学会java技术之后大家面临的最多的问题就是面试这关,求职面试java岗位是否能够成功是直接影响我们的工作机会的,所以对于Java程序员面试你准备好了吗?今天小编汇总了一下关于Java程序员面试,90 ...

  9. Github 一夜爆火:这份金九银十 Java 面试手册我给跪了

    这几天给筒子们整理了一份<Java面试手册>,106页,目前大约6万字左右,初衷也很简单,就是希望在面试的时候能够帮助到大家,减轻大家的负担和节省时间. 废话不多说,本手册目前为第一版,后 ...

  10. Java面试参考指南(二)

    2019独角兽企业重金招聘Python工程师标准>>> 访问修饰符 对于基本的OOPS(面向对象)概念,请看Java面试参考指南的第一部分.访问修饰符规定了一个类如何访问另一个类及它 ...

最新文章

  1. JavaScript 变量
  2. python2和python3同时存在如何使用pip
  3. cjson 对象是json数组型结构体_cJSON创建并解析json结构体 | 学步园
  4. 小甲鱼OD学习第21讲
  5. 反思快速在新项目中找字段的方法
  6. python获取键盘输入_python如何获取键盘输入
  7. 开灯问题java小结_n个灯,k个人的开灯问题java实现
  8. 安装默认报表服务器虚拟目录,报表服务器虚拟目录(Reporting Services 配置)
  9. “大鳄”伪装小职员,涉案金额达 5 亿!全球最大游戏外挂案告破
  10. 【EF】Entity Framework 6新特性:全局性地自定义Code First约定
  11. VGG19识别CIFAR10数据集(Pytorch实战)
  12. php调用纯真ip,PHP调用纯真IP数据库返回具体地址
  13. 【SAP】-常用简称中英日对照表
  14. java 判断是否闰年_输出月份天数_Java判断闰年平年并输出某月的天数
  15. 方正锐利重磅升级到12.0版本,包装印前处理更加便捷、高效!
  16. 大二实训(二)问答题
  17. uni-app 二维码转base64 分享
  18. javqhc木马的清除方法
  19. 使用开源软件替换现有的盗版软件
  20. Codeforces Round #637 (Div. 2) - Thanks, Ivan Belonogov! C. Nastya and Strange Generator

热门文章

  1. ssh 隧道 mysql_通过SSH隧道进行MySQL连接
  2. python中复制n次字符串_Python 字符串操作方法大全
  3. 所有开源项目免费使用,GitHub 内置 CI/CD 终于来了!
  4. 玩游戏时计算机ram,计算机的32G RAM是否必要? 8G,16G,32G内存游戏,生产率测量比较...
  5. 删除或关闭Word中的超链接
  6. Akka(16): 持久化模式:PersistentFSM-可以自动修复的状态机器
  7. html5透明图片格式,支持png透明图片解决方法图
  8. 雪夜游西湖记 文/一个会写诗的程序员
  9. 微信小程序 滑块验证小demo
  10. 阿里云千亿营收背后,一个新生态正蓬勃发展