目录
Java基础
- JVM、JRE、JDK的关系。
- 什么是跨平台性?原理是什么。
- Java语言有哪些特点?
- 什么是字节码?采用字节码的最大好处是什么?
- 什么是Java程序的主类?应用程序和小程序的主类有什么不同?
- Java和C++的区别?
- Oracle JDK 和OpenJDK的对比。
- Java有哪些数据类型?
- switch是否能作用在byte上,是否能作用在long上,是否能作用在String?
- 最有效率的方法计算2乘以8。
- Math.round(11.5)等于多少?Math.round(-11.5)等于多少?
- float f=3.4,是否正确?
- short s1=1;s1=s1+1;有错吗?short s1=1;s+=1;有错么?
- Java语言采用何种编码方案?有何特点?
- Java注释的种类。
- 访问修饰符public,private,protected,以及不写(默认)时的区别。
- &和&&的区别。
- Java有没有goto。
- final有什么作用?
- final、finally、finalize的区别?
- this关键字的用法?
- super关键字的用法?
- this和super的区别。
- static的独特之处。
- static的应用场景。
- break、continue、return的区别及作用。
- 面向对象和面向过程的区别。
- 面向对象的三大特性。
- 什么是多态机制?Java语言是如何实现多态?
- 抽象类和接口的对比。
- 普通类和抽象类有哪些区别?
- 抽象类可以用final修饰吗?
- 创建一个对象用什么关键字?对象实例与对象引用有何不同?
- 在Java中定义一个不做事且没有参数的构造方法的作用?
- 在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是?
- 一个类的构造方法的作用是什么?若一个类没有声明构造方法,该程序能正常执行吗?为什么?
- 构造方法有哪些特性?
- 静态变量和实例变量的区别?
- 静态变量与普通变量的区别?
- 静态方法与实例方法的区别?
- 在一个静态方法内调用一个非静态成员为什么是非法的?
- 什么是方法的返回值?返回值的作用是什么?
- 什么是内部类?分类有哪些?
- 重载和重写的区别。重载的方法能否根据返回类型进行区分?
- ==和equals的区别是什么?
- HashSet如何检查重复?
- 对象的相等与指向他们的引用相等,两者有何不同?
- Java中常用的包有哪些?
- import.java和javax有什么区别?
- Java中IO流分为几种?
- BIO、NIO、AIO有什么区别?
- Files的常用方法有哪些?
- 什么是反射机制?
- 反射机制的优缺点?
- 反射机制的应用场景有哪些?
- Java获取反射的三种方法?
- 字符型常量和字符串常量的区别?
- String有哪些特性?
- String为什么是不可变的?
- String str=“i” 与 str=new String(“i”)一样么?
- String s=new String(“xyz”);创建了几个字符串对象?
- 如何将字符串反转?
- 数组有没有length()方法?String有没有length()方法?
- String类的常用方法有哪些?
- 在使用HashMap的时候,用String做key有什么好处?
- String和StringBuffer、StringBuilder的区别是什么?String为什么是不可变的?
- 自动装箱和拆箱。
- 序列化和反序列化,怎么让某个字段不序列化?
- 什么是注解?什么是元注解?
- 什么是泛型,有什么作用?
- 泛型擦除是什么?
- JDK8新特性有哪些?
- 异常有哪些分类?
- 字符串拼接的方式有哪些?
- 类之间有哪些关系?
- Object 类有哪些方法?
- 子类初始化的顺序
- HashMap为什么线程不安全?
- eques方法为什么确定的字符在前?
- 你能说说常用的单例模式么?
- 你能说一说简单工厂模式、工厂方法模式、抽象工厂吗?
Java集合容器面试题
- 什么是集合?
- 集合的特点?
- 集合和数组的区别?
- 常用的集合类有哪些?
- List、Set、Map三者的区别?List、Set、Map是否继承自Collection接口?List、Set、Map三个接口存取元素时,各有什么特点?
- 集合框架底层数据结构。
- 哪些集合类是线程安全的?
- 迭代器Iterator有啥用?
- 如何使用Iterator?
- 有哪些集合是线程不安全的?怎么解决呢?
- ArrayList和Vector的区别。
- ArrayList和LinkedList的区别。
- ArrayList的扩容机制。
- Comparable和Compartor的区别?
- 比较HashSet、LinkedHashSet和TreeSet三者的异同。
- HashMap和Hashtable的区别。
- HashMap和HashSet区别。
- HashMap和TreeMap的区别。
- HashMap JDK1.8之前的底层实现。出现了什么问题?
- HashMap JDK1.8的底层实现。
- HashMap的长度为什么是2的幂次方。
- HashMap的几种遍历方式。
- ConcurrentHashMap和Hashtable的区别。
- 什么是快速失败机制。
- HashSet的底层是什么?它为什么只传入一个参数?
Java多线程面试题
- 什么是进程和线程?他们的区别是什么?
- 程序计数器为什么是私有的?
- 虚拟机栈和本地方法栈为什么是私有的?
- 介绍一下堆区和方法区。
- 说说并行与并发的区别。
- 为什么要使用多线程呢
- 使用多线程可能会出现哪些问题?
- 线程的生命周期和状态。
- 什么是上下文切换?
- 什么是线程死锁?
- 如何避免线程死锁?
- 说说sleep()方法和wait()方法的区别?
- 为什么我们调用start()方法时会执行run()方法?为什么不能直接调用run方法?
Java多线程进阶面试题
- 说一说自己对于synchornized关键字的了解。
- 说说自己是怎么使用synchornized关键字的。
- 构造方法可以用synchornized关键字修饰吗?
- synchornized关键字的底层原理?
- 说说JDK1.6之后synchornized关键字底层做了哪些优化?
- 说一下锁的升级过程。
- 什么是自旋锁?
- 说说synchornized和ReentrantLock的区别。
- 讲一下JMM。
- 并发编程的三个重要性。
- 说一说synchornized关键字和volatile关键字的区别?
- 为什么要用线程池?
- 实现Runabble接口和Callable接口的区别。
- 执行execute()方法和submit()方法的区别是什么?
- 如何创建线程池?
- 线程池的七大参数。
- 说一下线程池的四种拒绝策略。
- 线程池的执行原理。
- JUC包中的原子类是哪4类。
- AtimicInteger如何使用。
- AtimicInteger类的原理。
- 静态变量 i 执行多线程 i++ 的不安全问题
- Lock 和 synchronized 有什么区别?
- 线程的创建方式有哪些?
- 线程有哪些方法?
- 如何关闭线程池?
- 谈一谈 ThreadLocal?
- 说一说sleep()、wait()、yield()、join()方法与区别。
- CAS的底层原理知道吗?
- 什么是ABA问题?怎么解决?
- 用过CountDownLatch吗?什么场景下使用?
- 用过CyclicBarrier吗?什么场景下使用?
- 什么是LockSupport详解?
- 你了解AQS吗?详细介绍一下。
并发容器面试题
- JDK提供的并发容器。
- 介绍一下ConcurrentHashMap.
- 介绍一下CopyOnWriteArrayList.
- 介绍一下ConcurrentLinkedQueue.
- 介绍一下BlockingQueue
- 什么是了乐观锁和悲观锁。
JVM面试题
- JVM的主要组成部分及其作用?
- 说一下JVM运行时数据区
- 深拷贝和浅拷贝。
- 说一下堆和栈的区别。
- Java中提供的几种对象创建方式。
- 对象创建的主要流程。
- 对象的内存布局了解吗?
- Java内存分配的两种方式。
- 保证线程安全的两种方式。
- Java对象的访问方式。
- Java会存在内存泄露吗?请简单描述。
- 简单描述Java的垃圾回收机制。
- 永久代和方法区的关系。
- 为什么要将永久代替换为元空间呢?
- String创建对象的两种方式?
- String类型的常量池的特殊性。
- 垃圾回收器的基本原理是什么?可以马上进行回收吗?有什么办法主动通知虚拟机进行垃圾回收?
- Java中都有哪些引用类型?
- 怎么判断对象是否可回收?
- 在Java中,对象什么时候可以被垃圾回收?
- JVM的垃圾收集算法。
- 说一下JVM有哪些垃圾回收器。
- 简述垃圾回收器是怎么工作的?
- 说一下类装载的执行过程。
- 虚拟机自带的类加载器有哪些?
- 什么是双亲委派机制。
- 什么是逃逸分析?栈上分配?
- ZGC 了解吗?
- 你知道哪些故障处理工具?
- 如何判断两个类是否相等?
Spring框架面试题
- 什么是Spring框架?
- 列举一些重要的Spring模块。
- 谈谈你对于Spring IOC的理解。
- Spring IOC的初始化过程。
- 说一说你对于Spring Aop的理解。
- Spring Aop和AspectJ有什么区别?
- Spring中的bean的作用域有哪些?
- Spring中的单例bean的线程安全问题了解么?怎么解决。
- 将一个类声明为Spring的bean的注解有哪些?
- @Component和@Bean注解的区别是什么?
- @RestController注解与@Controller注解。
- Spring中Bean的生命周期。
- 说说你对SprigMVC的理解。
- SpringMVC的工作流程。
- SpringMVC中用到了哪些设计模式。
- Spring事物管理的方式有哪几种?
- Aop中的术语(什么是连接点、切入点、通知(增强)、切面)?通知的类型有哪些?
- Spring提供IOC容器实现的两种方式。二者有何不同?
- Spring依赖注入的实现方式有哪些?
- Spring中常用的注解有哪些?
- ApplicationContext的实现类有哪些?
- Spring的循环依赖如何解决的?
Mybatis面试题
- 什么是Mybatis?
- Mybatis框架的优点。
- Mybatis框架的缺点。
- #{}和${}的区别是什么?
- 当实体类中的属性名和表中的字段不一样,怎么办?
- 模糊查询like语句该怎么写?
- 通常一个XML映射文件,都会写一个Dao接口与之对应,请问这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载么?
- Mybatis是如何进行分页的?分页插件的原理是什么?
- Mybatis是如何将SQL执行结果封装为目标对象并返回的?都有哪些映射形式。
- 如何执行批量插入?
- 如何获取自动生成的主键值?
- 在Mapper中如何传递多个参数?
- Mybatis动态sql有什么用?执行原理?有哪些动态sql标签?
- xml映射文件中除了常见的select|insert|update|delete|标签之外,还有哪些标签?
- Mybatis的xml映射文件中,不同的xml映射文件,id是否可以重复?
- 为什么说Mybatis是半ORM映射工具?它与全自动的区别在哪里?
- Mybatis实现一对一有几种方式?具体是怎么操作的?
- Mybatis实现一对多有几种方式?具体是怎么操作的?
- Mybatis是否支持延迟加载?如果支持,它的实现原理是什么?
- Mybatis的一级、二级缓存。
- 简述Mybatis的插件运行原理,以及如何编写一个插件?
- Mybatis中如何执行批处理?
MySQL 数据库面试题
- 什么是MySQL?
- 怎样查看数据库提供的所有存储引擎?
- MyISAM和InnoDB的区别。
- 什么是索引?为什么要创建索引?
- 索引这么多优点,为什么不对表中的每一列创建一个索引呢?
- MyISAM和InnoDB实现BTree索引的区别?
- 什么是事务?
- 事务的四大特性(ACID)。
- 并发事务会带来哪些问题?
- 事物的隔离级别有哪些?MySQL默认的隔离级别是什么?
- 分库分表之后,id主键如何处理?
- 数据库的三大范式是什么?
- 创建索引的原则。
- B树和B+树的区别。
- 一条SQL语句是如何执行的?
- 一条SQL是如何执行的?
- 索引的分类有哪些?如何创建索引、查看索引?
- MySQL的体系结构。
- 你是如何优化SQL的?
- VARCHAR 和 CHAR 的区别?
- DATETIME 和 TIMESTAMP 的区别?
- 数据类型有哪些优化策略?
Spring Boot框架面试题
- 介绍一下Spring Boot。
- 什么是Spring Staters?
- 如何在Spring Boot 应用程序中使用Jetty而不是Tomcat?
- 介绍一下Spring Boot的自动配置原理?
- SpringBoot的配置文件格式有哪几种?
- 怎么加载properties配置文件?
Redis 面试题
- 简单介绍一下Redis。
- 说一下Redis和Memcached的区别。
- 缓存数据的处理流程是怎么的?
- 为什么要用Redis作为缓存(为什么要用缓存)?
- 介绍一下Redis常见的数据结构以及使用场景。
- Redis为什么不使用多线程?
- Redis给缓存设置过期时间有啥用?
- 过期的数据删除策略了解么?
- Redis的6中淘汰策略。
- Redis持久化机制(怎么保证Reids挂掉之后再重启数据可以进行恢复)
- 介绍一下Redis的事物。
- 什么是缓存穿透?怎么解决?
- 什么是缓存雪崩?怎么解决?
- 如何保证缓存和数据库数据的一致性?
- Redis主从复制如何实现?
- Redis如何实现哨兵模式?
Nginx 面试题
- 什么是Nginx?
- 什么是反向代理,如何实现?
- 什么是负载均衡,如何实现?
- 负载均衡的策略有哪些?
- 什么是动静分离,如何实现?
Docker 容器面试题
- 查看哪些程序在后台运行?
- 关闭、开启、重启Docker容器命令
- 查看所有的容器
- 删除容器
- 删除镜像
- 拉取镜像
- 列出镜像