文章目录
- 一、Java基础篇
- 1.接口和抽象类的区别
- 2.重载和重写的区别
- 3.==和equals的区别
- 4.异常处理机制
- 5.HashMap原理
- 6.想要线程安全的HashMap怎么办?
- 7.ConcurrentHashMap原如何保证的线程安全?
- 8.HashTable与HashMap的区别
- 9.ArrayList和LinkedList的区别
- 10.如何保证ArrayList的线程安全?
- 11.String、StringBuffer、StringBuilder的区别
- 12.hashCode和equals
- 13.面向对象和面向过程的区别
- 14.深拷贝和浅拷贝
- 15.多态的作用
- 16.什么是反射?
- 17.Java创建对象得五种方式?
- 二.Java多线程篇
- 1.进程和线程的区别,进程间如何通信
- 2.什么是线程上下文切换
- 3.什么是死锁
- 4.死锁的必要条件
- 5.Synchrpnized和lock的区别
- 6.什么是AQS锁?
- 7.为什么AQS使用的双向链表?
- 8.有哪些常见的AQS锁
- 9.sleep()和wait()的区别
- 10.yield()和join()区别
- 11.线程池七大参数
- 12.Java内存模型
- 13.保证并发安全的三大特性?
- 14.volatile
- 15.线程使用方式
- 16.ThreadLocal原理
- 17.什么是CAS锁
- 18.Synchronized锁原理和优化
- 19.如何根据 CPU 核心数设计线程池线程数量
- 20.AtomicInteger的使用场景
- 三.JVM篇
- 1.JVM运行时数据区(内存结构)
- 2.什么情况下会内存溢出?
- 3.JVM有哪些垃圾回收算法?
- 4.GC如何判断对象可以被回收?
- 5.典型垃圾回收器
- 6.类加载器和双亲委派机制
- 7.JVM中有哪些引用?
- 8.类加载过程
- 9.JVM类初始化顺序
- 10..对象的创建过程
- 11.对象头中有哪些信息
- 12.JVM内存参数
- 13.GC的回收机制和原理
- 四.Mysql篇
- 1.MyIsAm和InnoDB的区别
- 2.mysql事务特性
- 3.事务靠什么保证
- 4.事务的隔离级别
- 5.什么是快照读和当前读
- 6.MVCC是什么
- 7.MySQL有哪些索引
- 8.聚簇索引和非聚簇索引的区别
- 9.MySQL如何做慢SQL优化
- 10.为什么要用内连接而不用外连接?
- 11.MySQL整个查询的过程
- 12.执行计划中有哪些字段?
- 13.哪些情况索引会失效
- 14.B和B+数的区别,为什么使用B+数
- 15.MySQL有哪些锁
- 16.Mysql内连接、左连接、右连接的区别
- 17.sql执行顺序
- 18.如何设计数据库?
- 19.where和having的区别?
- 20.三大范式
- 21.char和varchar的区别
- 22.InnoDB 什么情况下会产生死锁
- 23.MySQL 删除自增 id,随后重启 MySQL 服务,再插入数据,自增 id 会从几开始?
- 24.MySQL插入百万级的数据如何优化?
- 五.常用开发框架系列
- 1.什么是Spring?
- 2.IOC是什么?
- 3.AOP是什么?
- 4.如何定义一个全局异常处理类?
- 5.如何使用aop自定义日志?
- 6.循环依赖是什么,怎么解决的?
- 7.Bean 的作用域
- 8.Bean 生命周期
- 9.Spring 事务原理?
- 10.spring事务失效场景
- 11.spring事务的隔离级别
- 12.spring事务的传播行为
- 13.Spring IoC
- 12.spring用了哪些设计模式
- 14.SpringMV工作原理
- 15.springboot自动配置原理
- 16.springboot常用注解
- 17.spring的bean是线程安全的吗?
- 18.springcloud主要解决什么问题?
- 19.CAP理论
- 20.为什么不能同时保证一致性和可用性呢?
- 21.熔断限流的理解?
- 22.常用限流算法
- 六.Redis系列
- 1.redis为什么快?
- 2.redis持久化机制
- 3.Redis如何实现key的过期删除?
- 4.Redis数据类型
- 5.Redis缓存穿透如何解决?
- 6.Redis如何解决缓存击穿?
- 7.Redis如何解决缓存雪崩?
- 8.Redis分布式锁的实现原理
- 9.Redis集群方案
- 10.Redis集群主从同步原理
- 11.Redis缓存一致性解决方案
- 12.Redis内存淘汰策略
- 七.计算机网络系列
- 1.TCP/IP模型
- 2.浏览器输入地址后做了什么?
- 3.TCP三次握手
- 4.为什么TCP不能两次握手
- 5.TCP四次挥手
- 6.为什么要进入时间等待状态?
- 7.TCP 滑动窗口
- 8.TCP拥塞控制
- 9.TCP超时重传
- 10.TCP可靠传输的实现
- 11.TCP报头有哪些信息
- 12.状态码
- 13.http与https的区别
- 14.socket通信流程
- 八.linux系列
- 1.linux常用命令
- 2.linux的io模型
- 3.io模型:
- 4.IO多路复用详解
- 5.epoll的LT和ET模式
- 九.场景题
- 1.Java如何实现统计在线人数的功能?
- 2.电商网站可以分成哪些模块(或订单模块要完成哪些功能)?
- 十.其他(RabitMQ、数据结构与算法、nginx、git、jwt登录等...)
- 1.RabbitMQ如何保证消息不丢失?
- 2.RabbitMQ如何保证消费顺序
- 3.设计模式六大原则
- 4.设计模式分类
- 5.排序算法的时间复杂度
- 6.大量数据排名,采用什么数据结构
- 7.二叉树和堆之间联系或区别
- 8.平衡二叉树不平衡如何调整?
- 9.hash表冲突的解决方法
- 10.cookie和session的联系
- 11.Nginx反向代理是什么,负载均衡算法有哪些?
- 十一.秒杀项目相关问题:
- 1.项目流程
- 2.提升qps的操作
- 微学院相关问题
- 1.如何用springSecurity做的认证授权?
- 2.前后端联调经常遇到的问题:
- 实习中供应链项目的收获
- 1.熟悉了代码开发规范
一、Java基础篇
1.接口和抽象类的区别
相似点:
(1)接口和抽象类都不能被实例化
(2)实现接口或继承抽象类的普通子类都必须实现这些抽象方法
不同点:
(1)抽象类可以包含普通方法和代码块,接口里只能包含抽象方法,静态方法和默认方法,
(2)抽象类可以有构造方法,而接口没有
(3)抽象类中的成员变量可以是各种类型的,接口的成员变量只能是 public static final 类型的,并且必须赋值
2.重载和重写的区别
重载发生在同一个类中,方法名相同、参数列表、返回类型、权限修饰符可以不同
重写发生在子类中,方法名相、参数列表、返回类型都相同,权限修饰符要大于父类方法,声明异常范围要小于父类方法,但是final和private修饰的方法不可重写
3.==和equals的区别
==比较基本类型,比较的是值,==比较引用类型,比较的是内存地址
equlas是Object类的方法,本质上与==一样,但是有些类重写了equals方法,比如String的equals被重写后,比较的是字符值,另外重写了equlas后,也必须重写ha