当前位置: 首页 > news >正文

Java技术面试(一面)

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 类库时&#


http://www.mrgr.cn/news/3162.html

相关文章:

  • 抽象类与抽象方法
  • AC自动机-1
  • Linux中的exec族函数
  • C语言钥匙迷宫2.0
  • 前端css 动画过渡类型以及不同写法
  • Unity扩展 Text 彩虹文本
  • SpringBoot+OSS文件上传
  • 处理 NPU 张量构造的警告与错误的指南
  • Linux 多线程
  • 基于树莓派的智能AI网关接入豆包流程:HTTP/HTTPS、MQTT、Flask、Web可视化(代码示例)
  • 【2024国赛速成系列】建模手三天必成计划
  • 交流220V转5V100MA非隔离降压芯片应用在烧水壶上的设计与实现
  • [Linux网络】基本网络命令socket编写TCP应用层实现简易计算器
  • [Meachines] [Medium] Popcorn SQLI+Upload File+PAM权限提升
  • 测试用例、测试流程模型、测试方法详解 超详细分解
  • 一款搭载远翔FP5207芯片的大功率音箱,蓝牙音箱的组成和拆解展示
  • 零基础5分钟上手亚马逊云科技核心云架构知识 - 权限管理最佳实践
  • 使用 Python 读取 Excel 和 CSV 数据并保存到数据库
  • TensorFlow库详解:Python中的深度学习框架
  • WPF Mvvm