专注Java教育14年 全国咨询/投诉热线:444-1124-454
赢咖4LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 职业指南 一些大厂高频出现的Java高级面试题及答案

一些大厂高频出现的Java高级面试题及答案

更新时间:2022-12-22 14:27:03 来源:赢咖4 浏览849次

2023新的一年已经开始,时间晃眼就过去了,有的同学已经为新年的跳槽早早做足了准备,而有的同学还在临阵磨枪中,想必看到这篇文章的你,也是为了新的开始而做准备呢吧,现在的问题是, 需要了解到什么样的面试题才能让我们后面的就业更加的顺利呢。这些都是小编整理的高频面试题,希望可以帮助到大家:

java高级面试题及答案

1、创建socket通讯的步骤?

1、 服务器程序创建一个ServerSocket,然后再用accept方法等待客户来连接

2、 客户端程序创建一个Socket并请求与服务器建立连接

3、 服务器接收客户的连接请求,并创建一个新的Socket与该客户建立专线连接

4、 刚才建立了连接的两个Socket在一个线程上对话

5、 服务器开始等待新的连接请求

2、Java 中 sleep 方法和 wait 方法的区别?

虽然两者都是用来暂停当前运行的线程,但是 sleep() 实际上只是短暂停顿,因为它不会释放锁,而 wait() 意味着条件等待,这就是为什么该方法要释放锁,因为只有这样,其他等待的线程才能在满足条件时获取到该锁。

3、程序计数器(线程私有)

一块较小的内存空间, 是当前线程所执行的字节码的行号指示器,每条线程都要有一个独立的程序计数器,这类内存也称为“线程私有” 的内存。

正在执行 java 方法的话,计数器记录的是虚拟机字节码指令的地址(当前指令的地址) 。如果还是 Native 方法,则为空。

这个内存区域是唯一一个在虚拟机中没有规定任何 OutOfMemoryError 情况的区域。

4、什么是线程调度器(Thread Scheduler)和时间分片(Time Slicing)?

线程调度器是一个操作系统服务,它负责为Runnable状态的线程分配CPU时间。一旦我们创建一个线程并启动它,它的执行便依赖于线程调度器的实现。时间分片是指将可用的CPU时间分配给可用的Runnable线程的过程。分配CPU时间可以基于线程优先级或者线程等待的时间。线程调度并不受到Java虚拟机控制,所以由应用程序来控制它是更好的选择(也就是说不要让你的程序依赖于线程的优先级)。

5、迭代器 Iterator 是什么?

Iterator 接口提供遍历任何 Collection 的接口。我们可以从一个 Collection 中使用迭代器方法来获取迭代器实例。迭代器取代了 Java 集合框架中的 Enumeration,迭代器允许调用者在迭代过程中移除元素。

因为所有Collection接继承了Iterator迭代器

java高级面试题及答案

6、线程的 sleep()方法和 yield()方法有什么区别?

1、 sleep()方法给其他线程运行机会时不考虑线程的优先级,因此会给低优先级的线程以运行的机会;yield()方法只会给相同优先级或更高优先级的线程以运行的机会;

2、 线程执行 sleep()方法后转入阻塞(blocked)状态,而执行 yield()方法后转入就绪(ready)状态;

3、 sleep()方法声明抛出 InterruptedException,而 yield()方法没有声明任何异常;

4、 sleep()方法比 yield()方法(跟操作系统 CPU 调度相关)具有更好的可移植性,通常不建议使用yield()方法来控制并发线程的执行。

7、Java 中能创建 volatile 数组吗?

能,Java 中可以创建 volatile 类型数组,不过只是一个指向数组的引用,而不是整个数组。意思是,如果改变引用指向的数组,将会受到 volatile 的保护,但是如果多个线程同时改变数组的元素,volatile 标示符就不能起到之前的保护作用了。

8、java中equals方法的用法以及==的用法

tech.souyunku.com/bluestorm/a…

9、如何创建一个json对象?

使用{}实例化一个json对象,json对象多个元素使用逗号隔开,每个元素都是一个键值对

10、如何判断对象是否是垃圾?

**引用计数:**在对象中添加一个引用计数器,如果被引用计数器加 1,引用失效时计数器减 1,如果计数器为 0 则被标记为垃圾。原理简单,效率高,但是在 Java 中很少使用,因为存在对象间循环引用的问题,导致计数器无法清零。

**可达性分析:**主流语言的内存管理都使用可达性分析判断对象是否存活。基本思路是通过一系列称为 GC Roots 的根对象作为起始节点集,从这些节点开始,根据引用关系向下搜索,搜索过程走过的路径称为引用链,如果某个对象到 GC Roots 没有任何引用链相连,则会被标记为垃圾。可作为 GC Roots 的对象包括虚拟机栈和本地方法栈中引用的对象、类静态属性引用的对象、常量引用的对象。

以上就是“一些大厂高频出现的Java高级面试题及答案”,你能回答上来吗?如果想要了解更多的Java面试题相关内容,可以关注赢咖4Java官网。

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

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