Java基础
- 说下面向对象四大特性
- Java语言有些特点
- 什么是Java程序的主类?应用程序和小程序的主类有何不同?
- 访问修饰符public,private,protected,以及不写(默认)时的区别?
- float f=3.4;是否正确?
- Java有没有goto?
- &和&&的区别?
- Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?
- 用最有效率的方法计算2乘以8?
- 什么是Java注释
- Java有哪些数据类型
- final 有什么用?
- final finally finalize的区别
- String str = "i" 和String str = new String("1")一样吗?
- Java 中操作字符串都有哪些类?它们之间有什么区别?
- Java中为什么要用 clone?
- 深克隆和浅克隆?
- new一个对象的过程和clone一个对象的区别?
- Java中实现多态的机制是什么?
- 谈谈你对多态的理解?
- 构造器(constructor)是否可被重写(override)?
- 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
- String类的常用方法有哪些?
- char型变量中能否能不能存储一个中文汉字,为什么?
- this关键字的用法
- super关键字的用法
- this与super的区别
- static存在的主要意义
- static的独特之处
- static应用场景
- static注意事项
- break ,continue ,return 的区别及作用
- 在Java中定义一个不做事且没有参数的构造方法的作用
- 构造方法有哪些特性?
- 静态变量和实例变量区别
- 静态方法和实例方法有何不同?
- 什么是方法的返回值?返回值的作用是什么?
- 什么是内部类?
- 内部类的分类有哪些
- Java中异常分为哪些种类?
- hashCode 与 equals (重要)
- hashCode()介绍
- 为什么要有 hashCode
- 抽象类和接口(Java7)的区别
- Java 8的接口新增了哪些特性?
- 重写和重载的区别
- ArrayList和LinkedList有什么区别?
- HashMap是怎么实现的?
- HashMap在Java7和Java8中的实现有什么不同?
- HashMap有时候会死循环,你知道是什么原因吗?
- ConcurrentHashMap是怎么实现的?
- 静态代理和动态代理的区别
- JDK动态代理和CGLIB动态代理的区别
Java多线程
- 说说synchronized的实现原理
- ReentrantLock与synchronized的区别
- ReentrantLock实现原理
- Java原子类AtomicInteger实现原理
- Java线程池实现原理
- ThreadLocal实现原理
- InheritableThreadLocal原理知道吗?
- 说一下synchronized锁升级过程
- 了解过什么是“伪共享”吗?
- “伪共享”出现的原因是什么?
- 如何避免“伪共享”?
- Java里的线程有哪些状态?
- 什么是悲观锁?什么是乐观锁?
- 怎么停止一个运行中的线程?
- 说一下你对volatile的理解?
- 并发编程三要素?
- 线程池的优点?
- CyclicBarrier和CountDownLatch的区别
- 什么是CAS?
- CAS的问题
- 什么是AQS?
- AQS支持几种同步方式?
- 什么是自旋锁?
- 什么是多线程的上下文切换?
- 什么是线程和进程?
- 程序计数器为什么是私有的?
- 虚拟机栈和本地方法栈为什么是私有的?
- 并发与并行的区别?
- 什么是线程死锁?如何避免死锁?
- sleep() 方法和 wait() 方法的区别和共同点?
- 为什么我们调用 start() 方法时会执行 run() 方法,为什么我们不能直接调用 run() 法?
- 什么是线程安全问题?如何解决?
- 什么是活锁?
- 什么是线程的饥饿问题?如何解决?
- 什么是线程的阻塞问题?如何解决?
- synchronized 关键字和 volatile 关键字的区别
- 说一说几种常见的线程池及适用场景?
- 线程池都有哪几种工作队列?
- 什么是线程安全?
- Java中如何获取到线程dump文件
- Java中用到的线程调度算法是什么?
- Thread.sleep(0)的作用是什么?
- 单例模式的线程安全性
- Semaphore有什么作用?
- Hashtable的size()方法中明明只有一条语句"return count",为什么还要做同步?
- 同步方法和同步块,哪个是更好的选择?
- 高并发、任务执行时间短的业务怎样使用线程池?并发不高、任务执行时间长的业务样使用线程池?并发高、业务执行时间长的业务怎样使用线程池?
Java虚拟机
- 说一下JVM的内存结构?
- 栈帧里面包含哪些东西?
- 程序计数器有什么作用?
- 字符串常量存放在哪个区域?
- 你熟悉哪些垃圾收集算法?
- Java里有哪些引用类型?
- JVM怎么判断一个对象是不是要回收?
- GC Roots 有哪些?
- 你知道哪些GC类型?
- 对象都是优先分配在年轻代上的吗?
- 你了解过哪些垃圾收集器?
- 说说CMS垃圾收集器的工作原理
- 说说G1垃圾收集器的工作原理
- 说说ZGC垃圾收集器的工作原理
- ZGC收集器中的染色指针有什么用?
- 说说类加载的过程
- 说下有哪些类加载器?
- 什么是双亲委派机制?
- 双亲委派机制可以被违背吗?请举例说明。
- Tomcat是怎么打破双亲委派机制的呢?
- Java对象的布局了解过吗?
- 什么情况下会发生栈内存溢出?
- JVM新生代中为什么要分为Eden和Survivor?
- JVM中一次完整的GC流程是怎样的,对象如何晋升到老年代?
- 什么是指令重排序?
- 什么是内存屏障?
- 什么是happen-before原则?
- 说说你知道的几种主要的JVM参数
- 怎么打出线程栈信息?
- 为什么需要双亲委派模式?
- 怎么打破双亲委派模型?
- 说一下堆和栈的区别
- Java 8 为什么要将永久代(PermGen)替换为元空间(MetaSpace)呢?
- 说一下Java对象的创建过程
- 对象的访问定位有哪几种方式?
- 说一下堆内存中对象的分配的基本策略
- Minor Gc和Full GC 有什么不同呢?
- Java会存在内存泄漏吗?请简单描述。
- 如何判断一个类是无用的类?
- 介绍一下类文件结构吧!
- 说一下 JVM 调优的工具?
- JVM调优命令有哪些?
- JRE、JDK、JVM 及 JIT 之间有什么不同?
- 程序计数器为什么是私有的?
- 如何判断一个常量是废弃常量 ?
Java IO
- Java 中有几种类型的流?
- 什么是 java序列化?
- 如何实现 java 序列化?
- 字节流和字符流的区别?
- PrintStream、BufferedWriter、PrintWriter的比较?
- 什么是节点流,什么是处理流,它们各有什么用处,处理流的创建有什么特征?
- 流一般需要不需要关闭,如果关闭的话在用什么方法,一般要在那个代码块里面关闭比较好,处理流是怎么关闭的,如果有多个流互相调用传入是怎么关闭的?
- 什么是BIO
- 什么是NIO
- 什么是AIO
- 同步与异步
- 阻塞与非阻塞
- 同步、异步、阻塞、非堵塞
- 通道是个什么意思?
- 缓冲区是什么意思?
- IO多路复用的底层原理
MySQL什么是索引?
1.什么是索引?
2.索引是个什么样的数据结构呢?
3.Hash索引和B+树索引有什么区别或者说优劣呢?
4.在建立索引的时候,都有哪些需要考虑的因素呢?
5.了解过哪些存储引擎?各有什么优缺点?
6.说一下什么是事务的ACID属性吧
7.事务的隔离级别了解过吗?
8.说说InnoDB的索引原理
9.说说InnoDB的MVCC机制
10.有了解过“回表”的概念吗?什么情况下会出现“回表”?
11.MySQL索引的类型
12.有做过MySQL的索引优化吗?
13.什么是聚簇索引?
14.InnoDB有聚簇索引吗?MyIsam呢?
15.MyIsam的数据是怎么存储的?
16.InnoDB的数据是怎么存储的?
17.InnoDB主键索引跟非主键索引在数据存储上的差异
18.InnoDB删除某条记录后,内部会怎么处理?
19.InnoDB如果没有设置主键的话,它内部会怎么处理?
20.为什么InnoDB一定会生成主键?
21.MySQL分库分表了解过吗