专注Java教育14年 全国咨询/投诉热线:444-1124-454
赢咖4LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 职业指南 HR的犀利问答题:中级Java面试题

HR的犀利问答题:中级Java面试题

更新时间:2023-01-13 11:30:32 来源:赢咖4 浏览724次

小编发现不少同学在网上求助找一些相关的Java中级面试题,但比较烦人的是,很多给出的面试题不是没有正确答案就是没有解析过程,也就导致了我们需要花费很多的时间去搜集整套的合适的面试题。今天小编的这套题目大全,包含了一些大厂的经典面试题,不管你现在是应届生还是实习生亦或是企业在职者,都可以进行参考:

中级java面试题

1、什么是方法内联?

为了减少方法调用的开销,可以把一些短小的方法,比如getter/setter,纳入到目标方法的调用范围之内,就少了一次方法调用,速度就能得到提升,这就是方法内联的概念。

2、你对线程优先级的理解是什么?

1、 每一个线程都是有优先级的,一般来说,高优先级的线程在运行时会具有优先权,但这依赖于线程调度的实现,这个实现是和操作系统相关的(OS dependent)。我们可以定义线程的优先级,但是这并不能保证高优先级的线程会在低优先级的线程前执行。线程优先级是一个 int 变量(从 1-10),1 代表最低优先级,10 代表最高优先级。

2、 Java 的线程优先级调度会委托给操作系统去处理,所以与具体的操作系统优先级有关,如非特别需要,一般无需设置线程优先级。

3、 当然,如果你真的想设置优先级可以通过setPriority()方法设置,但是设置了不一定会该变,这个是不准确的

3、Java是否需要开发人员回收内存垃圾吗?

大多情况下是不需要的。Java提供了一个系统级的线程来跟踪内存分配,不再使用的内存区将会自动回收

4、说说Java 垃圾回收机制

在 Java 中,程序员是不需要显示的去释放一个对象的内存的,而是由虚拟机自行执行。在 JVM 中,有一个垃圾回收线程,它是低优先级的,在正常情况下是不会执行的,只有在虚拟机空闲或者当前堆内存不足时,才会触发执行,扫面那些没有被任何引用的对象,并将它们添加到要回收的集合中,进行回收。

5、62、volatile 变量和 atomic 变量有什么不同?

Volatile变量可以确保先行关系,即写操作会发生在后续的读操作之前, 但它并不能保证原子性。例如用volatile修饰count变量那么 count++ 操作就不是原子性的。

而AtomicInteger类提供的atomic方法可以让这种操作具有原子性如getAndIncrement()方法会原子性的进行增量操作把当前值加一,其它数据类型和引用变量也可以进行相似操作。

6、JVM 内存区域

JVM 内存区域主要分为线程私有区域【程序计数器、虚拟机栈、本地方法区】、线程共享区域【JAVA 堆、方法区】、直接内存。

线程私有数据区域生命周期与线程相同, 依赖用户线程的启动/结束 而 创建/销毁(在 Hotspot VM 内, 每个线程都与操作系统的本地线程直接映射, 因此这部分内存区域的存/否跟随本地线程的生/死对应)。

线程共享区域随虚拟机的启动/关闭而创建/销毁。

直接内存并不是 JVM 运行时数据区的一部分, 但也会被频繁的使用: 在 JDK 1.4 引入的 NIO 提供了基于Channel与 Buffer的IO方式, 它可以使用Native函数库直接分配堆外内存, 然后使用DirectByteBuffer 对象作为这块内存的引用进行操作(详见: Java I/O 扩展), 这样就避免了在 Java堆和 Native 堆中来回复制数据, 因此在一些场景中可以显著提高性能。

7、JVM 有哪些运行时内存区域?

1、 The pc Register,程序计数器

2、 Java Virtual Machine Stacks,Java 虚拟机栈

3、 Heap,堆

4、 Method Area,方法区

5、 Run-Time Constant Pool,运行时常量池

6、 Native Method Stacks,本地方法栈

8、Spring中Bean的作用域有哪些?

1、 Singleton:Bean以单例的方式存在

2、 Prototype:表示每次从容器中调用Bean时,都会返回一个新的实例,prototype通常翻译为原型

3、 Request:每次HTTP请求都会创建一个新的Bean

4、 Session:同一个HttpSession共享同一个Bean,不同的HttpSession使用不同的Bean

5、 globalSession:同一个全局Session共享一个Bean

9、String str=”aaa”,与String str=new String(“aaa”)一样吗?

1、 不一样的。因为内存分配的方式不一样。

2、 第一种,创建的”aaa”是常量,jvm都将其分配在常量池中。

3、 第二种创建的是一个对象,jvm将其值分配在堆内存中。

10、什么是建造者模式

1、 建造者模式:是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的方式进行创建。

2、 工厂类模式是提供的是创建单个类的产品

3、 而建造者模式则是将各种产品集中起来进行管理,用来具有不同的属性的产品

建造者模式通常包括下面几个角色:

1、 uilder:给出一个抽象接口,以规范产品对象的各个组成成分的建造。这个接口规定要实现复杂对象的哪些部分的创建,并不涉及具体的对象部件的创建。

2、 ConcreteBuilder:实现Builder接口,针对不同的商业逻辑,具体化复杂对象的各部分的创建。 在建造过程完成后,提供产品的实例。

3、 Director:调用具体建造者来创建复杂对象的各个部分,在指导者中不涉及具体产品的信息,只负责保证对象各部分完整创建或按某种顺序创建。

4、 Product:要创建的复杂对象。

以上就是“HR的犀利问答题:中级Java面试题”,你能回答上来吗?如果想要了解更多的Java面试题相关内容,可以关注赢咖4Java官网。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>