中科曙光二面面经/成都base/高性能计算/Java开发

中科曙光二面

应该是leader面,对面开了摄像头,俺的压力有点大,面试官说时间有限,一共就面了20分钟左右。

1.讲一下JVM里的数据结构,如果产生异常会在哪里产生异常?有哪些解决方案?

JVM的运行时数据区域主要包括以下几个部分:

  1. 方法区 (Method Area):这部分用于存储已被加载的类信息、常量、静态变量和即时编译器编译后的代码等数据。
  2. 堆 (Heap):这是JVM所管理的最大一块内存区域,用于存放对象实例,几乎所有的对象实例都会在这里分配内存。
  3. 虚拟机栈 (Java Virtual Machine Stacks):每个线程都有一个私有的栈,随线程创建而创建。栈里保存了方法调用的栈帧,每次调用一个方法时都会为该方法创建一个新的栈帧并压入栈,方法返回时该栈帧出栈。
  4. 本地方法栈 (Native Method Stacks):本地方法栈与虚拟机栈所发挥的作用是非常相似的,它们之间的区别不过是虚拟机栈为虚拟机执行Java方法(也就是字节码)服务,而本地方法栈则为虚拟机使用到的Native方法服务。
  5. 程序计数器 (Program Counter Register):当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。

异常来源:

  1. 堆溢出 (OutOfMemoryError):当堆中无法再为新的对象分配内存时,会抛出这个异常。解决方案:可能的解决方法包括增加堆内存的分配(使用-Xms和-Xmx参数)、优化代码来减少对象的创建、或者使用Profiler工具检查是否有对象泄露。
  2. 栈溢出 (StackOverflowError):当线程请求的栈深度大于虚拟机所允许的深度时,抛出这个异常。解决方案:可能的方法包括减少方法调用的深度,优化递归逻辑,或者增加栈内存的分配(使用-Xss参数)。
  3. 方法区溢出 (OutOfMemoryError):当方法区无法满足内存分配需求时,会抛出这个异常。解决方案:增加方法区的分配大小(例如,使用-XX:PermSize和-XX:MaxPermSize参数,取决于你使用的JVM版本和类型)或者检查类加载逻辑,确保没有意外地加载过多的类。

总结:

JVM为Java程序提供了运行时数据存储的地方。当这些地方无法满足程序的需求时,JVM会抛出异常。处理这些异常的关键是识别异常的来源,然后采取适当的措施,这可能包括为JVM分配更多的资源或优化代码来减少资源的使用。

2.Error和Exception有什么不同吗?

3.堆和栈中都会OOM,那么这两种OOM引起的原因有什么不同吗?

堆和栈中的异常情况

  • 堆溢出 (OutOfMemoryError):堆是用于存储Java对象的地方。当堆中没有足够的空间分配新对象时,JVM会抛出OutOfMemoryError异常。 引起的原因:常见的原因是程序中创建了大量大生命周期的对象,并且垃圾收集器无法及时回收这些对象。还可能是因为JVM的堆内存设置过小。
  • 栈溢出 (StackOverflowError):栈是用于存储局部变量、方法调用等的地方。每当一个方法被调用,一个新的栈帧就会被添加到栈顶。当栈的大小超过了JVM允许的深度,会抛出StackOverflowError引起的原因:常见的原因是程序中有无限的递归调用。

确切地说,栈中通常不发生OutOfMemoryError,而是StackOverflowError

4.JVM栈主要是做啥的?

5.A方法调用B方法,B调用C方法,请问在栈中表现是什么?

6.入栈会入一些什么东西吗?

7.方法区会存什么东西?

8.类的加载机制?

9.MySQL索引的数据结构说一下

10.为什么矮胖的B+树,IO就会少?

11.这种数据结构适合全文索引吗?

MySQL的全文索引

  • 数据结构:MySQL全文索引基于倒排索引(Inverted Index)实现。这是一种在文档检索系统中常见的数据结构,用于存储一组文档中每个词及其位置的映射。
  • 用法和声明:MySQL提供了FULLTEXT索引,主要用于InnoDB和MyISAM存储引擎。可以通过以下语句创建:
CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    ...
    FULLTEXT(column_name)
);

B+树与全文索引:虽然MySQL常用B+树作为其主要的索引结构,但对于全文索引,它使用倒排索引。B+树主要用于范围查询,而全文索引是为了提高文本搜索的效率。全文索引中,每个唯一的词作为一个键,指向出现该词的文档或文档中的位置。

举例: 假设我们有一个名为articles的表,其中有一个名为content的文本列。我们可以创建一个全文索引:

ALTER TABLE articles ADD FULLTEXT(content);

之后,可以使用MATCH AGAINST进行搜索:

SELECT * FROM articles WHERE MATCH (content) AGAINST ('search_term');

总的来说,MySQL的全文索引为文本搜索提供了高效的方法,而不是使用传统的B+树结构,而是采用倒排索引结构。

12.数据仓库和普通数据库有什么不同?

一周后oc了。但是经了解,HR说一个月有三个周六要加班,22个工作日有10个工作日要加班到晚上9点,所以我想去的意愿并不是很大。

#中科曙光#
全部评论
佬多久投的呢?
点赞
送花
回复
分享
发布于 2023-11-07 09:36 四川
佬,想问一下 你收到oc以后大概多久收到的offer啊? 我也是投的成都的曙光昨天刚收到oc
点赞
送花
回复
分享
发布于 2023-11-08 09:26 四川
滴滴
校招火热招聘中
官网直投
加班费全额?
点赞
送花
回复
分享
发布于 2023-11-14 16:17 北京

相关推荐

Gaussdb是什么数据库Gaussdb和Doris有什么区别数据湖和数据仓库有什么区别hudi中你们用的哪种表类型hudi怎么实现实时数据更新的HIVE有哪些模块知道HIVE的thrift吗,有什么好处生产中是用哪种方式连接HIVE的,会用jdbc连接吗知道哪些spark的运行模式yarn-client和yarn-cluster的区别是什么,从中选一个运行模式具体介绍下select a,sum(b) where c>0 group by a。spark中是怎么实现的,你觉得这个语句什么情况下会出现数据倾斜,怎么优化它spark中小文件你怎么处理的我想将数据只写入到10个文件里面,怎么处理,distribute by cast(rand()*10 as bigint)怎么将a字段的值一样的数据写入到同一个文件,并最后只生成5个文件 distribute by mod(a,5)Spark中的Job、stage、task是什么关系spark的Job可以并行执行吗,stage可以并行执行吗,什么情况下stage可以并行执行,举个stage并行执行的例子Flink怎么处理积压的Flink的Exect-Once怎么实现的java的内存空间分哪些怎么让栈空间溢出,怎么让元空间溢出工作中会遇到内存溢出的问题吗内存溢出了你会怎么去分析知道哪些序列化方式,Serializable和protobufprotobuf与Serializable序列化的区别了解数据库连接池吗,是什么原理了解线程池吗,介绍下你知道的SpringBoot相对于Spring MVC的优点Spring中的注解了解哪些数据库的事务知道吗事务的隔离级别有哪些,默认是那种隔离级别你觉得你们公司目前有哪些方面可以改进的,比如工作上的改进、平台上的改进你工作中遇到了哪些难题,怎么解决的作为你的同事,你觉得你能带来什么好处你最近有去学习什么新东西吗,从中学到了什么为什么想来我司所在城市你未来的职业规划是什么#社招面经#
点赞 评论 收藏
转发
2 7 评论
分享
牛客网
牛客企业服务