计算机网络:
tcp/udp的区别
三次握手四次挥手
http和https的区别:
http是明文的,https=http+ssl加密
get和post的区别:
get:参数放到url里面,所以请求会被浏览器缓存,url长度受限,
post:参数放到请求体里面
设计模式:
能实现:
单例
工厂
代理
能看懂:
适配器
观察者
模板
java基础:
抽象类和接口的区别:
抽象类:
抽象类可以提供成员方法是实现细节,接口不可以。
如果一个类继承了一个抽象类,那它一定是这个抽象类的种类,例如:猫是动物。
接口:
抽象类中的变量可以是任何类型的,接口中的变量只能是常量public static final。
接口是一种规范,实现了某一个接口,就拥有了这个接口的技能。
单继承多实现。
java有哪些类型:
byte、short、int、long、float、double、char、boolen
java中的char占2个字节,采用Unicode编码
new String("ABC")创建了几个对象?
两个,一个是new String,另一个是"ABC"。但是如果"ABC"在字符串常量池里存在,那只会创建new String一个对象。
线程有哪些状态:
6种:
初始化new
运行Runnable
阻塞Blocked,拿到🔒后阻塞别的线程。
等待Watting,如果不被cpu唤醒,那它将处于无期限等待状态。
超时等待time_watting,等待超时后,过一段时间会自动唤醒,不必被cpu主动唤醒。
终止End
java中常见的异常:
空指针异常
下标越界异常
类转化异常
数字格式化异常
输入输出流异常
类找不到异常
数据库异常
数据库:
数据库分库分表:
500万条,2GB
mysql有哪些索引:普通索引、唯一索引、主键索引、组合索引、全文索引。
mysql有哪些引擎:
InnoDB:支持事务、支持外键、支持崩溃修复和自增列,读写效率差,占用空间大。
MyISAM:5.1以前默认的引擎。读取效率较高,占用数据空间较少,但不支持事务、不支持行级锁(写入效率低)。
MEMORY:重启后数据会丢失。
NoSql:
Redis:
缓存雪崩:
假如有一个热点数据过期了,同时有很多针对这个热点数据的请求,noSql中没有,那么就会从mysql中生成到noSql中,每一个访问请求都会去生成noSql缓存,就会导致mysql崩溃。
解决方案:
更新锁机制:
对生成noSql缓存上🔒。
后台更新机制:
缓存的有效期设置为永久或者很长,后台线程进行定时更新。
缓存击穿:
热点数据过期,大量请求请求mSql。
缓存穿透:
noSql没有,mySql也没有,
消息队列:
rabbitMQ
搜索引擎:
ElasticSearch
容器:
Docker
负载均衡:
nginx
工作中:
常见的异常
参考视频:【自学编程】JAVA速成学习路线 | 快速上岸直达面试_哔哩哔哩_bilibili