全国协议5人面授小班,企业级独立开发考核,转业者的IT软件工程师基地 登录/注册 | 如何报名

免费领取试听课程

并获得专业顾问一对一进行选课辅导

课程名称不能为空
姓名不能为空
手机号码不能为空

领取成功

Java面试官通常会问哪些问题

常见问题 汉码未来 | java 面试

2021-09-18 14:58:11

一定要避免让面试官觉得你是个“知其然不知其所以然”的人。毕竟明白基本组成和机制,是日常工作中进行问题诊断或者性能调优等很多事情的基础,相信没有招聘方会不喜欢“热爱学习和思考”的面试者。

Java面试官通常会问哪些问题

一、Java基础

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

考点分析:

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

回归正题,对于 Java 平台的理解,可以从很多方面简明扼要地谈一下,例如:Java 语言特性,包括泛型、Lambda 等语言特性;


2、请对比 Exception 和 Error,另外,运行时异常与一般异常有什么区别?

考点分析:

分析 Exception 和 Error 的区别,是从概念角度考察了 Java 处理机制。总的来说,还处于理解的层面,面试者只要阐述清楚就好了。

在日常编程中,如何处理好异常是比较考验功底的,需要掌握两个方面。

第一,理解 Throwable、Exception、Error 的设计和分类。比如,掌握那些应用最为广泛的子类,以及如何自定义异常等。

很多面试官会进一步追问一些细节,比如,你了解哪些 Error、Exception 或者 RuntimeException?

⦁ 理解 Java 语言中操作 Throwable 的元素和实践。掌握最基本的语法是必须的,如 try-catch-finally 块,throw、throws 关键字等。与此同时,也要懂得如何处理典型场景。

 

3、谈谈 Java 反射机制,动态代理是基于什么原理?

考点分析:

这个题目稍微有点诱导的嫌疑,可能会下意识地以为动态代理就是利用反射机制实现的,这么说也不算错但稍微有些不全面。功能才是目的,实现的方法有很多。

总的来说,这道题目考察的是 Java 语言的另外一种基础机制:反射,它就像是一种魔法,引入运行时自省能力,赋予了 Java 语言令人意外的活力,通过运行时操作元数据或对象,Java 可以灵活地操作运行时才能确定的信息。而动态代理,则是延伸出来的一种广泛应用于产品开发中的技术,很多繁琐的重复编程,都可以被动态代理机制优雅地解决。

从考察知识点的角度,这道题涉及的知识点比较庞杂,所以面试官能够扩展或者深挖的内容非常多,比如:

考察你对反射机制的了解和掌握程度。

动态代理解决了什么问题,在你业务系统中的应用场景是什么?

JDK 动态代理在设计和实现上与 cglib 等方式有什么不同,进而如何取舍?

 

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

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

基础 API 功能与设计, 

InputStream/OutputStream 

和 Reader/Writer 的关系和区别。

NIO、NIO 2 的基本组成。

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

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

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

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


5、如何保证容器是线程安全的?ConcurrentHashMap 如何实现高效的线程安全?

典型回答:

Java 提供了不同层面的线程安全支持。在传统集合框架内部,除了 Hashtable 等同步容器,还提供了所谓的同步包装器(Synchronized Wrapper),可以调用 Collections 工具类提供的包装方法,来获取一个同步的包装容器(如 Collections.synchronizedMap),但是它们都是利用非常粗粒度的同步方式,在高并发情况下,性能比较低下。

另外,更加普遍的选择是利用并发包提供的线程安全容器类,它提供了各种并发容器,比如 ConcurrentHashMap、CopyOnWriteArrayList。

各种线程安全队列(Queue/Deque),如 ArrayBlockingQueue、SynchronousQueue。

各种有序容器的线程安全版本等。

具体保证线程安全的方式,包括有从简单的 synchronize 方式,到基于更加精细化的,比如基于分离锁实现的 ConcurrentHashMap 等并发实现等。具体选择要看开发的场景需求,总体来说,并发包内提供的容器通用场景,远优于早期的简单同步实现。


6、谈谈接口和抽象类有什么区别?

考点分析:

这是个非常高频的 Java 面向对象基础问题,看起来非常简单的问题,如果面试官稍微深入一些,你会发现很多有意思的地方,可以从不同角度全面地考察你对基本机制的理解和掌握。

比如:

对于 Java 的基本元素的语法是否理解准确。能否定义出语法基本正确的接口、抽象类或者相关继承实现,涉及重载(Overload)、重写(Override)更是有各种不同的题目。

在软件设计开发中妥善地使用接口和抽象类。你至少知道典型应用场景,掌握基础类库重要接口的使用;掌握设计方法,能够在 review 代码的时候看出明显的不利于未来维护的设计。

山东济南汉码未来想告诉大家:掌握 Java 语言特性演进。现在非常多的框架已经是基于 Java 8,并逐渐支持更新版本,掌握相关语法,理解设计目的是很有必要的。


以上就是汉码未来给大家分享的文章,希望对小伙伴们有所帮助,想要了解更多Java面试官通常会问哪些问题相关内容的小伙伴可以登录汉码未来官网咨询,主打5人小班,全程面授,主打Java开发,web前端开发等课程,有专业的授课老师为你答疑解惑。

    

分享到:



【免责声明】由于政策等各方面情况的不断调整与变化,本网站所提供的信息仅供参考,请以权威部门公布的正式信息为准。本网站在文章内容来源出处标注为其他平台的稿件均为转载稿,免费转载出于非商业性学习目的,版权归原作者所有。如您对内容、版权等问题存在异议请与本站联系,我们会及时进行处理解决。 删除,请联系客服。
相关推荐
为什么选择汉码未来