文章目录
- 1. Java 基础
-
- 1.1 Java语言的三大特性是什么?
- 1.2 重载与重写的区别
- 1.3 接口和抽象类的区别是什么?
- 1.4 说一下final关键字的作用
- 1.5 说一下String,StringBuilder和StringBuffer的区别
- 1.6 说一下Java中的==与eaquels的区别
- 1.7 Java访问修饰符有哪些?都有什么区别?
- 1.8 Object 中有哪些方法?其中clone(),怎么实现一个对象的克隆,Java如何实现深度克隆?
- 1.9 BIO、NIO、AIO
- 1.10 集合
- 1.11 Java多线程与并发编程高频问题
-
- 1.11.1 说说什么是线程安全?如何实现线程安全?
- 1.11.2 Synchronized和ReentLock的区别是什么?
- 1.11.3 Synchronized和volatile的区别
- 1.11.4 synchronize锁的作用范围
- 1.11.5 Java中线程的状态有哪些?线程间的通信方式有哪些?
- 1.11.6 sleep后进入什么状态,wait后进入什么状态?
- 1.11.7 sleep和wait的区别?
- 1.11.8 start方法和run方法有什么区别?
- 1.11.9 什么是乐观锁,什么是悲观锁?
- 1.11.10 Java中创建线程的方式有哪些?
- 1.11.11 ThreadPoolExecutor 线程池的参数、工作原理?
- 1.11.13 ThreaLocal知道吗?
- 1.11.14 Runnable接口和Callable接口的区别
- 1.11.15 synchronized、Lock、ReentrantLock、ReadWriteLock
- 1.11.16 介绍下CAS(无锁技术)。
- 1.11.17 volatile关键字的作用和原理
- 1.11.18 创建线程池的4种方式
- 1.11.19 分布式环境下,怎么保证线程安全
- 2. JVM
- 3. Spring 框架
- 4. SpringMVC 框架
- 5. SpringBoot 框架
- 6. SpringCloud 框架&微服务
- 7. Mybatis 框架
- 8. Redis 缓存
- 9. Mysql 数据库
- 10. Rabbit MQ 消息队列
-
- 10.1 RabbitMQ是什么?
- 10.2 AMQP是什么?
- 10.3 AMQP协议3层?
- 10.4 AMQP模型的几大组件?
- 10.5 说说生产者Producer和消费者Consumer?
- 10.6 为什么需要消息队列?
- 10.7 说说Broker服务节点、Queue队列、Exchange交换器?
- 10.8 如何保证消息的可靠性?
- 10.9 交换器4种类型?
- 10.10 生产者消息运转?
- 10.11 消费者接收消息过程?
- 10.12 在何种场景下使用了消息中间件?
- 10.13 生产者如何将消息可靠投递到MQ?
- 10.14 MQ如何将消息可靠投递到消费者?
- 10.15 如何保证RabbitMQ消息队列的高可用?
- 11. Elasticsearch 搜索引擎
- 12. 分布式体统的设计与应用
- 13. Linux 操作系统
- 14. 项目介绍
- 15. 设计模式
1. Java 基础
1.1 Java语言的三大特性是什么?
1.2 重载与重写的区别
1.3 接口和抽象类的区别是什么?
接口(interface)和抽象类(abstract class)是支持抽象类定义的两种机制。
接口是公开的,不能有私有的方法或变量,接口中的所有方法都没有方法体,通过关键字interface实现。
抽象类是可以有私有方法或私有变量的,通过把类或者类中的方法声明为abstract来表示一个类是抽象类,被声明为抽象的方法不能包含方法体。子类实现方法必须含有相同的或者更低的访问级别(public->protected->private)。抽象类的子类为父类中所有抽象方法的具体实现,否则也是抽象类。
相同点:
(1)都不能被实例化
(2)接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法后才能实例化。
不同点:
(1)接口只有定义,不能有方法的实现,但java 1.8中可以定义default方法体,而抽象类可以有定义与实现,方法可在抽象类中实现。
(2)实现接口的关键字为implements,继承抽象类的关键字为extends。一个类可以实现多个接口,但一个类只能继承一个抽象类。所以,使用接口可以间接地实现多重继承。
(3)接口强调特定功能的实现,而抽象类强调所属关系。
(4)接口方法默认修饰符是 public,抽象方法可以有 public、protected 和 default 这些修饰符(抽象方法就是为了被重写所以不能使用 private 关键字修饰!)。
(5)接口被用于常用的功能,便于日后维护和添加删除,而抽象类更倾向于充当公共类的角色,不适用于日后重新对立面的代码修改。从设计层面来说,抽象是对类的抽象,是一种模板设计,而接口是对行为的抽象,是一种行为的规范。
1.4 说一下final关键字的作用
final关键字可以修饰类、方法和属性。
当final修饰类的时候,表明这个类不能被继承。final 类中的所有成员方法都会被隐式地指定为 final 方法。
当final修饰方法的时候,表明这个方法不能被重写。
当final修饰属性的时候,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。
1.5 说一下String,StringBuilder和StringBuffer的区别
1.6 说一下Java中的==与eaquels的区别
1.7 Java访问修饰符有哪些?都有什么区别?
Java中的修饰符有public private protected
1、public:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用
2、private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可以使用。
3、protected:protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private。
追问:怎么获取private修饰的变量
回答:private通过反射获取,可以设置setAccessable为true实现
1.8 Object 中有哪些方法?其中clone(),怎么实现一个对象的克隆,Java如何实现深度克隆?
1.9 BIO、NIO、AIO
1.9.1 NIO
1.9.2 NIO 和 BIO 对比
1.10 集合
1.10.1 Java中的集合框架有哪些?
Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。
Collection 接口又有 3 种子类型,List、Set 和 Queue,再下面是一些抽象类,最后是具体实现类,常用的有 ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、TreeMap、LinkedHashMap 等等。
1.10.2 ArrayList和LinkedList的底层实现和区别?
ArrayList底层使用的是 Object数组;LinkedList底层使用的是 双向链表 数据结构。
ArrayList:增删慢、查询快,线程不安全,对元素必须连续存储。
LinkedList:增删快,查询慢,线程不安全。
1.10.2.1 说说ArrayList的扩容机制?
通过阅读ArrayList的源码我们可以发现当以无参数构造方法创建 ArrayList 时,实际上初始化赋值的是一个空数组。当真正对数组进行添加元素操作时,才真正分配容量。即向数组中添加第一个元素时,数组容量扩为 10。当插入的元素个数大于当前容量时,就需要进行扩容了, ArrayList 每次扩容之后容量都会变为原来的 1.5 倍左右。
1.10.3 HashMap的底层实现原理
1.10.4 Java中线程安全的集合有哪些?
1.10.5 说一下ConcurrentHashMap的底层实现,它为什么是线程安全的?
1.10.6 HashMap和Hashtable的区别
1.10.7 HashMap和TreeMap的区别?
1.10.8 HashMap和ConcurrentHashMap的区别
1.11 Java多线程与并发编程高频问题
1.11.1 说说什么是线程安全?如何实现线程安全?
1.11.2 Synchronized和ReentLock的区别是什么?
1.11.3 Synchronized和volatile的区别
1.11.4 synchronize锁的作用范围
1.11.5 Java中线程的状态有哪些?线程间的通信方式有哪些?
1.11.6 sleep后进入什么状态,wait后进入什么状态?
sleep后进入Time waiting超时等待状态,wait后进入等待waiting状态。
1.11.7 sleep和wait的区别?
1.11.8 start方法和run方法有什么区别?
1.11.9 什么是乐观锁,什么是悲观锁?
1.11.10 Java中创建线程的方式有哪些?
1.11.11 ThreadPoolExecutor 线程池的参数、工作原理?
1.11.13 ThreaLocal知道吗?
1.11.14 Runnable接口和Callable接口的区别
Callable和Runnable的区别(面试常考),看完就懂