面试题汇总
文章平均质量分 91
、楽.
放弃很容易,但坚持一定很酷!
展开
-
你会深克隆和浅克隆吗?
浅克隆:被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。深克隆:除去那些引用其他对象的变量,被复制对象的所有变量都含有与原来的对象相同的值。那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。换言之,深复制把要复制的对象所引用的对象都复制了一遍。如何实现克隆我们先不管深克隆、还是浅克隆。首先,要先了解如何实现克隆,实现克隆需要满足以下三个步骤对象的类实现Cloneable接口;覆盖Object类的clone()方法(覆..原创 2021-11-07 23:07:49 · 150 阅读 · 0 评论 -
你真的会Java泛型吗?
背景知识Java中的泛型,是JDK5引入的一个新特性。它主要提供的是编译时期类型的安全检测机制。这个机制允许程序在编译时检测到非法的类型,从而进行错误提示。这样做的好处,一方面是告诉开发者当前方法接收或返回的参数类型,另一方面是避免程序运行时的类型转换错误。泛型的设计推演举一个比较简单的例子,首先我们来看一下ArrayList这个集合,部分代码定义如下。public class ArrayList{ transient Object[] elementData; // non-priv原创 2021-11-08 12:20:20 · 153 阅读 · 0 评论 -
Java基础八股文(背诵版)
Java基础八股文(背诵版)Java 语言具有哪些特点?Java 为纯面向对象的语言。它能够直接反应现实生活中的对象。具有平台无关性。Java 利用 Java 虚拟机运行字节码,无论是在 Windows、Linux 还是 MacOS 等其它平台对 Java 程序进行编译,编译后的程序可在其它平台运行。Java 为解释型语言,编译器把 Java 代码编译成平台无关的中间代码,然后在 JVM 上解释运行,具有很好的可移植性。Java 提供了很多内置类库。如对多线程支持,对网络通信支持,最重要的一点是转载 2021-11-11 11:01:34 · 3780 阅读 · 0 评论 -
为什么 HashMap 的加载因子是0.75?
为什么HashMap需要加载因子?HashMap的底层是哈希表,是存储键值对的结构类型,它需要通过一定的计算才可以确定数据在哈希表中的存储位置:static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);}// AbstractMappublic int hashCode() { int h = 0;原创 2021-11-10 10:35:29 · 320 阅读 · 0 评论 -
两个对象值相同(x.equals(y) == true),但是可能存在hashCode不同吗?
面试题:两个对象值相同(x.equals(y) == true),但是可能存在hashCode不同吗?涉及到的技术知识(x.equals(y)==true),这段代码,看起来非常简单,但其实里面还是涉及了一些底层知识点的,首先我们基于equals这个方法进行探索。equals这个方法,在每个对象中都存在,以String类型为例,其方法定义如下:public boolean equals(Object anObject) { if (this == anObject) { .原创 2021-11-09 14:29:11 · 1160 阅读 · 0 评论 -
Java并发编程八股文
简述Java内存模型(JMM)Java内存模型定义了程序中各种变量的访问规则:所有变量都存储在主存,每个线程都有自己的工作内存。工作内存中保存了被该线程使用的变量的主存副本,线程对变量的所有操作都必须在工作空间进行,不能直接读写主内存数据。操作完成后,线程的工作内存通过缓存一致性协议将操作完的数据刷回主存。简述as-if-serial编译器会对原始的程序进行指令重排序和优化。但不管怎么重排序,其结果都必须和用户原始程序输出的预定结果保持一致。简述happens-before八大规则程序原创 2021-11-15 15:16:44 · 169 阅读 · 0 评论 -
final,finally,finalize还能这么玩?
面试题:final、finally、finalize的区别背景知识final/finally在工作中几乎无时无刻不再使用,因此即便是没有系统化的梳理这个问题,也能回答出一些内容。但是finalize就接触得非常少,接下来我们对这几个关键字逐一进行分析。finial 关键字final关键字大家都不陌生,但是要达到深度理解,还是欠缺了一些。我们从三个方面去理解final关键字。final关键字的基本用法深度理解final关键字final关键字的内存屏障语义基本用法final关键字,在.原创 2021-11-05 13:03:04 · 239 阅读 · 0 评论 -
RabbitMQ 面试题 持续更新~
1.RabbitMQ是什么?RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而群集和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。PS:也可能直接问什么是消息队列?消息队列就是一个使用队列来通信的组件2.RabbitMQ特点?可靠性: RabbitMQ使用一些机制来保证可靠性, 如持久化、传输确认及发布确认等。灵活的路由 : 在消息进入队列之前,通过交换器来路由转载 2021-10-12 22:49:26 · 492 阅读 · 0 评论