网站首页 程序人生 资源汇 学建站 源码 织梦模板 特效代码 技术手册 IT头条 电商 创业 运营 站长

特色栏目 视频下载 织梦模板 教程书籍 职业生涯 正能量 美图

当前位置: 主页 > 程序人生 > 学习心得 >

99%的面试官都会问到的Java面试题收藏挑错

2018-09-28 15:49 采编:程序人生 阅读 投稿赚币
前言 最近是招聘季,所谓金九银十,正是跳槽的好几节。今天,给大家整理了一些Java面试常考的经典题目,我们一道一道来分析一下。 经典面试题 1、谈谈你对 Java 平台的理解?Java

前言

最近是招聘季,所谓金九银十,正是跳槽的好几节。今天,给大家整理了一些Java面试常考的经典题目,我们一道一道来分析一下。

经典面试题

1、谈谈你对 Java 平台的理解?“Java 是解释执行”,这句话正确吗?

考点分析:对于这类笼统的问题,你需要尽量表现出自己的思维深入并系统化,Java 知识理解得也比较全面,一定要避免让面试官觉得你是个“知其然不知其所以然”的人。毕竟明白基本组成和机制,是日常工作中进行问题诊断或者性能调优等很多事情的基础,相信没有招聘方会不喜欢“热爱学习和思考”的面试者。

回归正题,对于 Java 平台的理解,可以从很多方面简明扼要地谈一下,例如:Java 语言特性,包括泛型、Lambda 等语言特性;基础类库,包括集合、IO/NIO、网络、并发、安全等基础类库。对于我们日常工作应用较多的类库,面试前可以系统化总结一下,有助于临场发挥。

下图是我总结的一个相对宽泛的蓝图供你参考。

 

 
 

 

2、对比Hashtable、HashMap、TreeMap有什么不同?

考点分析:上面的回答,只是对一些基本特征的简单总结,针对Map相关可以扩展的问题很多,从各种数据结构、典型应用场景,到程序设计实现的技术考量,尤其是在Java 8里,HashMap本身发生了非常大的变化,这些都是经常考察的方面。

 

很多朋友向我反馈,面试官似乎钟爱考察HashMap的设计和实现细节,所以今天我会增加相应的源码解读,主要专注于下面几个方面:

理解Map相关类似整体结构,尤其是有序数据结构的一些要点。

从源码去分析HashMap的设计和实现要点,理解容量、负载因子等,为什么需要这些参数,如何影响Map的性能,实践中如何取舍等。

理解树化改造的相关原理和改进原因。 

除了典型的代码分析,还有一些有意思的并发相关问题也经常会被提到,如HashMap在并发环境可能出现无限循环占用CPU、size不准确等诡异的问题。 

我认为这是一种典型的使用错误,因为HashMap明确声明不是线程安全的数据结构,如果忽略这一点,简单用在多线程场景里,难免会出现问题。

理解导致这种错误的原因,也是深入理解并发程序运行的好办法。对于具体发生了什么,你可以参考这篇很久以前的分析,里面甚至提供了示意图,我就不再重复别人写好的内容了。 

3、Java 提供了哪些 IO 方式? NIO 如何实现多路复用?

考点分析:在实际面试中,从传统 IO 到 NIO、NIO 2,其中有很多地方可以扩展开来,考察点涉及方方面面,比如:

基础 API 功能与设计, InputStream/OutputStream 和 Reader/Writer 的关系和区别。

NIO、NIO 2 的基本组成。

给定场景,分别用不同模型实现,分析 BIO、NIO 等模式的设计和实现原理。

NIO 提供的高性能数据操作方式是基于什么原理,如何使用?

或者,从开发者的角度来看,你觉得 NIO 自身实现存在哪些问题?有什么改进的想法吗?

IO 的内容比较多,专栏一讲很难能够说清楚。IO 不仅仅是多路复用,NIO 2 也不仅仅是异步 IO,尤其是数据操作部分,会在专栏下一讲详细分析。

4、后台服务出现明显“变慢”,谈谈你的诊断思路?

考点分析:今天我选择的是一个常见的并且比较贴近实际应用的的性能相关问题,我提供的回答包括两部分。

在正面回答之前,先探讨更加精确的问题定义是什么。有时候面试官并没有表达清楚,有必要确认自己的理解正确,然后再深入回答。

从系统、应用的不同角度、不同层次,逐步将问题域尽量缩小,隔离出真实原因。具体步骤未必千篇一律,在处理过较多这种问题之后,经验会令你的直觉分外敏感。

大多数工程师也许并没有全面的性能问题诊断机会,如果被问到也不必过于紧张,你可以向面试官展示诊断问题的思考方式,展现自己的知识和综合运用的能力。接触到一个陌生的问题,通过沟通,能够条理清晰地将排查方案逐步确定下来,也是能力的体现。

面试官可能会针对某个角度的诊断深入询问,兼顾工作和面试的需求,我会针对下面一些方面进行介绍。目的是让你对性能分析有个整体的印象,在遇到特定领域问题时,即使不知道具体细节的工具和手段,至少也可以找到探索、查询的方向。

我将介绍业界常见的性能分析方法论。

从系统分析到JVM、应用性能分析,把握整体思路和主要工具。对于线程状态、JVM内存使用等很多方面,我在专栏前面已经陆陆续续介绍了很多,今天这一讲也可以看作是聚焦性能角度的一个小结。

5、谈谈你的GC调优思路?

考点分析:今天考察的GC调优问题是JVM调优的一个基础方面,很多JVM调优需求,最终都会落实在GC调优上或者与其相关,我提供的是一个常见的思路。

真正快速定位和解决具体问题,还是需要对JVM和GC知识的掌握,以及实际调优经验的总结,有的时候甚至是源自经验积累的直觉判断。面试官可能会继续问项目中遇到的真实问题,如果你能清楚、简要地介绍其上下文,然后将诊断思路和调优实践过程表述出来,会是个很好的加分项。

专栏虽然无法提供具体的项目经验,但是可以帮助你掌握常见的调优思路和手段,这不管是面试还是在实际工作中都是很有帮助的。另外,我会还会从下面不同角度进行补充:

涉及具体的GC类型,JVM的实际表现要更加复杂。目前,G1已经成为新版JDK的默认选择,所以值得你去深入理解。

因为G1 GC一直处在快速发展之中,我会侧重它的演进变化,尤其是行为和配置相关的变化。并且,同样是因为JVM的快速发展,即使是收集GC日志等方面也发生了较大改进。

从GC调优实践的角度,理解通用问题的调优思路和手段。

面试者常犯错误

我在面试候选人中经常能体会到,有些面试者确实是认真努力工作,但坦白说表现出的能力水平却不足以通过面试,通常是两方面原因:

1、“知其然不知其所以然”。做了多年技术,开发了很多业务应用,但似乎并未思考过种种技术选择背后的逻辑。坦白说,我并不放心把具有一定深度的任务交给他。

2、知识碎片化,不成系统。在面试中,面试者似乎无法完整、清晰地描述自己所开发的系统,或者使用的相关技术。平时可能


相关标签:
程序人生if98.com,专注IT人成长、所需、职场,欢迎参与撰稿、分享资源!

扫一扫关注程序人生公众号

免责声明:本文内容由[程序人生]用户自行发布或编辑转载,本站不拥有所有权、不承担相关法律责任。 如发现有涉嫌抄袭的内容,可邮件 web@if98.com 举报,并提供证据,一经查实,本站将立刻删除涉嫌侵权内容。

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片

站长推荐文章

  • 我的编程之路:从好玩到玩好

    先解释下标题吧:好玩指的是爱好、觉得有趣,玩好指的是把事情搞定、让事物变得更好。 第一次接触电脑 我最早接触电脑是小学四年级的时候,一九九几年,那是一个秋天,有一位

    if98comzyq 2018-07-17 11:49:25发布 学习心得 335阅读 0 评论

  • 给未来程序员的15个顶级职业建议

    好吧,我觉得10条不够,应该有15条职业建议。不过首先,我想解释一下出色的职业生涯是什么样的。 他们的进步曲线并不是每个月都会上升一点的直线图形。(即便是普通人的职业生

    if98comzyq 2018-07-17 11:46:44发布 学习心得 317阅读 0 评论

  • 程序员你为什么迷茫?

    你曾经充满热情,是一位开源软件倡导者,你崇尚全栈工程师才有未来的理念,你渴望改变世界。但是现在你每天都处于焦虑之中,你每天不断地学习各种技术Kotlin、Swift、React Native、

    if98comzyq 2018-07-17 11:58:36发布 学习心得 190阅读 0 评论

  • 如何伪装成一个年薪20万刀以上的码农?

    年轻的程序猿朋友们,从东岸、中部、南加迁徙到硅谷的你,是否希望远处的美女向你投来崇拜的目光?希望身边的朋友觉得你很酷很牛逼?今天我们来聊聊如何在硅谷装成一个牛逼(

    if98comzyq 2018-09-28 11:27:16发布 学习心得 135阅读 0 评论

  • 程序员的工作总结

    在新的公司工作半年了时间飞逝,作为一名工程师,也要时刻对自己反省,这样才能够有所提升,在工作中我总结了一下几点,这个可能也是大家常见的一些问题,好记性不如烂笔头,

    if98comhcw 2018-06-13 11:59:41发布 学习心得 99阅读 0 评论

  • 做博士还是做一个专业的程序员?

    当我从大学毕业获得计算机科学学位的时候,我就想继续学习并获得博士学位。但是,我又想作为一个软件开发者去参与工作,所以我在这一行中工作了五年之后,又回去念了一年的博

    if98comzyq 2018-07-17 11:49:03发布 学习心得 98阅读 4 评论

阅读排行

论坛信息推荐 更多 >>

关于我们

微信公众号

扫码关注官方微信

返回顶部