Java·JVM·JUC(六)
Java·JVM·JUC(六)
CAS 实现原理是什么?
JVM 是怎么去调优的?了解哪些参数和指令?
简述 Netty 线程模型,Netty 为什么如此高效?
什么是 Java 泛型,有什么作用?
JAVA 创建多线程的方法有哪些?
如何解决 Spring 的循环依赖问题?
简述 Synchronized,volatile,可重入锁的不同使用场景及优缺点
如何优化 JVM 频繁 minor GC
简述 Spring 的 IOC 机制
简述 Dubbo 服务调用过程
简述并实现工厂模式,工厂模式有什么常见问题?
产生死锁的必要条件有哪些?如何解决死锁?
String 为什么是 final 类型?
如何设计 Java 的异常体系?
常用的排序方式有哪些,时间复杂度是多少?
简述装饰者模式以及适配器模式
简述 HashMap 和 TreeMap 的实现原理以及常见操作的时间复杂度
如何设计一个线程池
Java 线程间有多少通信方式?
简述 Java 中 final 关键字的作用
手写生产者消费者模型
简述 HashSet 与 HashMap 的异同
深拷贝与浅拷贝区别是什么?
简述 Spring 的初始化流程
Java 缓冲流 buffer 的用途和原理是什么?
简述 Java 内置排序算法的实现原理
HTTP 中 GET 和 POST 区别
JDK 1.8有什么新特性?
有哪些解决哈希表冲突的方式?
简述 Zookeeper 基础原理以及使用场景
简述标记清除算法的流程
简述 SortedSet 实现原理
Java 有几种基本数据类型,分别占多少字节?
简述 HashSet 实现原理
数组与链表有什么区别?
简述偏向锁以及轻量级锁的区别
如何回收循环依赖的对象
Linux 实现虚拟内存有什么方式?
简述 Java 的序列化和使用场景
String 为什么是 final?
Java 多线程有几种实现方式
如何确定 eden 区的对象何时进入老年代?
Spring MVC 如何处理一个请求?
Java 中 arrayblockingqueue 与 linkedblockingqueue 的用途和区别
简述 Java 的 happen before 原则
SpringBoot 是如何进行自动配置的?
如何判断一个 Hash 函数好不好?
简述使用协程的优点
error 和 exception 的区别是什么?
简述生产者消费者模型
JVM 是怎么去调优的?简述过程和调优的结果
简述读写屏障底层原理
什么是堆内存异常?
简述有哪些同步锁以及它们的实现原理
什么是 Spring 容器,有什么作用?
如何设计一个无锁队列
如何停止一个线程?
在一个静态方法内调用一个非静态成员为什么是非法的?
Spring 是怎么解析 JSON 数据的?
Java 如何高效进行数组拷贝
成员变量和方法的区别?
阻塞队列都有哪几种,有什么区别?
Java 中如何进行 GC 调优?
MVC 模型和 MVVM 模型的区别
Cookie 和 Session 的关系和区别是什么?
简述 Java 的逃逸分析机制
new Integer 和 Integer.valueOf 的区别是什么?
简述 Java 中的自动装箱与拆箱
简单介绍 MyBatis,MyBatis 是如何实现 ORM 映射的
简述 Web socket 与 HTTP 的使用场景
由于通常情况下Socket连接就是TCP连接,因此Socket连接一旦建立,通信双方即可开始相互发送数据内容,直到双方连接断开。但在实际网络应用 中,客户端到服务器之间的通信往往需要穿越多个中间节点,例如路由器、网关、防火墙等,大部分防火墙默认会关闭长时间处于非活跃状态的连接而导致 Socket 连接断连,因此需要通过轮询告诉网络,该连接处于活跃状态。
而HTTP连接使用的是“请求—响应”的方式,不仅在请求时需要先建立连接,而且需要客户端向服务器发出请求后,服务器端才能回复数据。
很多情况下,需要服务器端主动向客户端推送数据,保持客户端与服务器数据的实时与同步。此时若双方建立的是Socket连接,服务器就可以直接将数据传送给 客户端;若双方建立的是HTTP连接,则服务器需要等到客户端发送一次请求后才能将数据传回给客户端,因此,客户端定时向服务器端发送连接请求,不仅可以 保持在线,同时也是在“询问”服务器是否有新的数据,如果有就将数据传给客户端。
Java 编译后的 .class 文件包含了什么内容?
一、类信息
一部分是描述类的信息,包括类的名字、修饰符(public或private)、父类、接口以及注解(annotation)。
二、变量信息
一部分是描述类变量的信息,包括每个变量的名字、修饰符、类型和注解(annotation)。
三、方法信息
一部分是描述类方法的信息,包括每个方法的名字、修饰符、参数的类型和返回值的类型、方法的注解(annotation),还包括编译后的、字节码形式的方法代码。
Java 中 int 的最大值是多少?
java int 类整数的最大值是 2 的 31 次方 - 1 = 2147483648 - 1 = 2147483647
可以用 Integer.MAX_VALUE 表示它,即 int value = Integer.MAX_VALUE;
Integer.MAX_VALUE + 1 = Integer.MIN_VALUE = -2147483648
简述封装、继承、多态的特性及使用场景
封装的意义
- 封装的意义在于保护或者防止代码(数据)被我们无意中破坏。
- 保护成员属性,不让类以外的程序直接访问和修改;
- 隐藏方法细节
继承的意义
主要实现重用代码,节省开发时间。
多态的三个条件:
- 继承的存在(继承是多态的基础,没有继承就没有多态).
- 子类重写父类的方法(多态下调用子类重写的方法).
- 父类引用变量指向子类对象(子类到父类的类型转换).
实现多态方式
- 接口多态性。
- 继承多态性。
- 通过抽象类实现的多态性。
题目答案均为转载,题目先后顺序按各大厂总出题次数排列!