Java技术面试(一面)
创始人
2024-09-25 20:55:58

1、相面对象

1、面相对象语言/Java三大特性是什么?

引出封装、‌继承和多态。

2、多态有哪些形式?多态使用过吗?

重载、重写,接口和抽象类的多个实现。考察工作经验、代码重构经验、习惯。

3、Java接口和抽象类有什么区别?你是如何选择使用的?

考察OOP的理解和工作经验(有没有使用抽象类写过一些模板方法、做过一些个设计等)。

2、Jvm

1、Java如何实现跨平台的?

不了解这个概念的可以换个说法:Java如何实现只需要编写一次代码,就可以在不同的操作系统上运行的?引出Jvm。

2、JVM主要的组成部分,以及每一个部分的作用是什么?
  • 1.类加载器(Class Loader):加载类文件到内存。Class loader只管加载,只要符合文件结构就加载,至于能否运行,它不负责,那是有Exectution Engine 负责的。
  • 2.执行引擎(Execution Engine):也叫解释器,负责解释命令,交由操作系统执行。
  • 3.本地库接口(Native Interface):本地接口的作用是融合不同的语言为java所用
  • 4.运行时数据区(Runtime Data Area)
  • 5、垃圾回收器。

直接回答运行时数据区的,酌情给分。

3、堆和栈的区别是什么?用来做什么用的?
4、Java内存溢出有哪些情况?
  1. 堆内存溢出(Heap Space Overflow): 堆内存是 Java 虚拟机用于存储对象实例的地方。当创建的对象过多,或者单个对象太大以至于堆无法分配足够的内存时,会发生堆内存溢出。可以通过 -Xmx-Xms 参数调整堆的最大和初始大小来预防堆内存溢出。

  2. 栈溢出(Stack Overflow): 每个线程在 Java 虚拟机中都有自己的栈空间,用于存储方法调用及局部变量。如果递归调用层次太深,栈空间溢出,就会导致栈溢出错误。可以通过调整线程栈的大小或优化递归算法来避免栈溢出。

  3. 方法区溢出(Method Area Overflow): 方法区用于存储类信息、常量、静态变量等数据。当加载的类过多或者超出了方法区的大小限制时,会发生方法区溢出。可以通过增大方法区的大小来缓解这种情况。

  4. 直接内存溢出(Direct Memory Overflow): 直接内存不是 Java 虚拟机堆管理的一部分,而是由操作系统分配和管理的。使用 NIO 类库时&#

相关内容

热门资讯

一只小龙虾何以引爆全球AI圈? AI正逼近“安全围栏”,人类要有“掀桌子”的能力 | 图源:即梦AI 作者/ IT时报 贾天荣 编辑...
柳州智能工厂里,奏响“春之歌” 年味渐浓,生产正忙。连日来,记者走进柳州3家智能工厂,探访人工智能与制造业深度融合的真实图景,聆听车...
骄成超声获得实用新型专利授权:... 证券之星消息,根据天眼查APP数据显示骄成超声(688392)新获得一项实用新型专利授权,专利名为“...
“太恐怖了!”字节最新AI视频... 智东西 作者 | 王涵 编辑 | 冰倩 智东西2月9日报道,2月7日,字节跳动AI视频生成模型See...
澳媒:全球Z世代正感受“中国气... 澳大利亚广播公司2月8日文章,原题:为什么社交媒体上的Z世代正经历“我的人生中‘很中国’的时光” 全...