https://zhuanlan.zhihu.com/p/124278272
)Java对象创建的过程
https://zhuanlan.zhihu.com/p/143743569
讲解一下CMS垃圾回收器的具体回收过程以及特点
java.class是在哪种类加载器里面
新生代survivor为什么要分两部分
老年代的回收算法有什么
cms介绍一下
full gc发生在什么时候
多线程如果多次调用start会怎么样
什么情况下会触发full gc
Java web框架
============================================================================
spring
AOP IOC 的原理
看过Spring的源代码吗(了解很少)
)spring注解
https://blog.csdn.net/u010648555/article/details/76299467
@Component :标准一个普通的spring Bean类。 @Repository:标注一个DAO组件类。 @Service:标注一个业务逻辑组件类。 @Controller:标注一个控制器组件类。 这些都是注解在平时的开发过程中出镜率极高,@Component、@Repository、@Service、@Controller实质上属于同一类注解,用法相同,功能相同,区别在于标识组件的类型。 @Component可以代替@Repository、@Service、@Controller,因为这三个注解是被@Component标注的。如下代码
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Controller {
String value() default "";
}
)spring 生命周期(不会),spring循环引用(不会),mybatis底层流程(没搞懂问题,不会)
拦截器和过滤器的区别?
②拦截器不依赖与servlet容器,过滤器依赖与servlet容器。
③拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。
④拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。
⑥拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。
权限管理问了一个小问题,表示不会。
controller层,访问一个url的过程是怎样的
bean的生命周期、bean互相依赖怎么实现
说一下spring,把你了解的都说一下(说了自己的理解、spring的优点、注解、@autowired@resource区别、IOC、AOP等)
两种动态代理的区别
MVCC
https://juejin.cn/post/6871046354018238472
Spring中的三级反转
怎么通过注解注入的@Autowird,@Resource等
接口和抽象类的设计思路(面试官提到Spring中的约定大于配置)
Spring-bean的循环依赖以及解决方式
dispatcherservlet流程
mybatis
说一下Mybatis(说了优点、resultMap/resultType区别,#/$)
为什么要用Mybatis,最大的好处是什么
Tomcat
)类加载以及双亲委派介绍一下,tomcat类加载器了解吗(不了解)
https://www.cnblogs.com/aspirant/p/8991830.html
不遵循双亲委派
数据库
=====================================================================
https://blog.csdn.net/qq_17623363/article/details/115014444
)mysql读的时候加锁么(我说读锁,面试官说读的是快照,不加锁,我就又提到MVCC)
https://cloud.tencent.com/developer/article/1169873
B+树相对B树的优势?
联合索引的底层实现是?
主键索引、二级索引、联合索引的区别;
假设有联合索引(a,b,c),判断下面哪些用到联合索引
select * from A where a=x and b=x;
select * from A where a=x and c=x;
select * from A where b=x and c=x;
下面两个查找那个效率高?这题我直接不知道
select * from A where a=x and b=x order by c;
select * from A where a=x and c=x order by b;
使用explain解析sql,里面的using where 和using index分别是什么意思?
选择索引的时候,mysql如何决定使用哪一个索引?
linux里面死锁了,有什么方法可以解决?
什么是事务
数据库的隔离级别
怎样防止大事务,及处理办法
如何防止sql注入
mysql的存储引擎
mysql有哪些索引
)聚集索引和非聚集索引的区别
https://blog.csdn.net/riemann_/article/details/90324846
说一说联合索引和覆盖索引
InnoDB和MyISAM的区别
mysql使用B+树索引而不使用B树或者hash索引
事务隔离级别,脏读和幻读如何解决的。
数据库隔离级别以及可能产生的问题
分别解释脏读,不可重复度,幻读(不可重复读和幻读的区别在哪里)
数据库中的聚合函数
innoDB底层索引和行锁、表锁的关系
B+树和B树的区别,为什么要使用B+树不用B树?
红黑树有了解吗,和平衡二叉树有什么区别
mysql的innodb引擎吗?相比于其他引擎有什么优缺点
索引的底层实现是怎么样的
为什么用B+树,其他的哈希数组或者其他树不能存储吗
MySQL的binlog undo redolog
为什么innodb是RR的级别
有一个很大的表,有客户id和订单号两列,需要分表 现在我主要的功能是要查看每个客户ID有什么订单,还有就是订单号属于哪个用户,我怎么分表合适
了解缓存嘛
联表查询sql语句
介绍一下数据库的聚簇索引和非聚簇索引的区别,它们底层的数据结构是什么?为什么不用B树?
介绍一下数据库的四种隔离机制以及他们能分别解决什么并发事务带来的问题?什么是幻读,什么是不可重复读?
数据库是如何解决幻读的?原理是什么?(这里要深入回答MVCC实现原理和间隙锁)
如果说缓存了一个热数据,突然过期失效了。请求全部打在了数据库上会导致服务器崩溃,这里有什么比较好的解决办法?(先说一下这种情况是缓存击穿,然后我的回答是设置热数据永不过期)
乐观锁和悲观锁
数据库的乐观锁怎么实现(具体一点)
mysql主从复制说一下,为什么这样做
long sql怎么优化,比如:分页查询速度很慢
用主键索引和唯一索引有什么区别
加很多间隙锁的问题
如果解决mysql中的死锁问题(面试官的意思是用队列控制,相当于公平锁)
计网
====================================================================
TCP
https://luo-shaoxiong.gitee.io/erxiong-demo/#/./docs/%E7%BD%91%E7%BB%9C
)TCP协议是如何保证可靠的
https://blog.csdn.net/liuchenxia8/article/details/80428157
校验和
序列号
确认应答
超时重传
连接管理
流量控制
拥塞控制
)time-wait作用?用哪个命令可以查看?
可靠地实现了TCP全双工连接的终止
为使旧的数据包在网络因过期而消失
负载均衡
)负载均衡有哪些算法
https://zhuanlan.zhihu.com/p/151835622
hash 随机 轮询 权重轮询 权重交叉轮询
Nginx 默认的负载均衡策略就是一种改进的加权轮询策略
其他
)cookie session区别 用户信息存在哪
https://blog.csdn.net/chen13333336677/article/details/100939030
)讲一下https。为什么要采用混合加密的方式?相对于直接采用非对称加密效率是快了还是慢了
https://luo-shaoxiong.gitee.io/erxiong-demo/#/./docs/%E7%BD%91%E7%BB%9C
用户在浏览器发起HTTPS请求(如 https://www.mogu.com/),默认使用服务端的443端口进行连接;
HTTPS需要使用一套CA数字证书,证书内会附带一个公钥Pub,而与之对应的私钥Private保留在服务端不公开;
服务端收到请求,返回配置好的包含公钥Pub的证书给客户端;
客户端收到证书,校验合法性,主要包括是否在有效期内、证书的域名与请求的域名是否匹配,上一级证书是否有效(递归判断,直到判断到系统内置或浏览器配置好的根证书),如果不通过,则显示HTTPS警告信息,如果通过则继续;
客户端生成一个用于对称加密的随机Key,并用证书内的公钥Pub进行加密,发送给服务端;
服务端收到随机Key的密文,使用与公钥Pub配对的私钥Private进行解密,得到客户端真正想发送的随机Key;
服务端使用客户端发送过来的随机Key对要传输的HTTP数据进行对称加密,将密文返回客户端;
客户端使用随机Key对称解密密文,得到HTTP数据明文;
后续HTTPS请求使用之前交换好的随机Key进行对称加解密。
RSA
)http状态码3xx是什么?302和303的区别是什么
常见的HTTP相应状态码:
200:请求被正常处理
204:请求被受理但没有资源可以返回
206:客户端只是请求资源的一部分,服务器只对请求的部分资源执行GET方法,相应报文中通过Content-Range指定范围的资源。
301:永久性重定向
302:临时重定向
303:与302状态码有相似功能,只是它希望客户端在请求一个URI的时候,能通过GET方法重定向到另一个URI上
304:发送附带条件的请求时,条件不满足时返回,与重定向无关
307:临时重定向,与302类似,只是强制要求使用POST方法
400:请求报文语法有误,服务器无法识别
401:请求需要认证
403:请求的对应资源禁止被访问
404:服务器无法找到对应资源
500:服务器内部错误
503:服务器正忙
)HTTP协议了解吗?说一下请求头有哪些内容
HTTP Request Header 请求头
Accept:指定客户端能够接收的内容类型。
Accept-Charset:浏览器可以接受的字符编码集。
Accept-Encoding:指定浏览器可以支持的web服务器返回内容压缩编码类型。
Accept-Language:浏览器可接受的语言。
Accept-Ranges:可以请求网页实体的一个或者多个子范围字段。
AuthorizationHTTP:授权的授权证书。
Cache-Control:指定请求和响应遵循的缓存机制。
Connection:表示是否需要持久连接。(HTTP 1.1默认进行持久连接)
CookieHTTP:请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器。
Content-Length:请求的内容长度。
Content-Type:请求的与实体对应的MIME信息。
Date:请求发送的日期和时间。
Expect:请求的特定的服务器行为。
From:发出请求的用户的Email。
Host:指定请求的服务器的域名和端口号。
If-Match:只有请求内容与实体相匹配才有效。
If-Modified-Since:如果请求的部分在指定时间之后被修改则请求成功,未被修改则返回304代码。
If-None-Match:如果内容未改变返回304代码,参数为服务器先前发送的Etag,与服务器回应的Etag比较判断是否改变。
If-Range:如果实体未改变,服务器发送客户端丢失的部分,否则发送整个实体。
If-Unmodified-Since:只在实体在指定时间之后未被修改才请求成功。
Max-Forwards:限制信息通过代理和网关传送的时间。
Pragma:用来包含实现特定的指令。
Proxy-Authorization:连接到代理的授权证书。
Range:只请求实体的一部分,指定范围。
Referer:先前网页的地址,当前请求网页紧随其后,即来路。
TE:客户端愿意接受的传输编码,并通知服务器接受接受尾加头信息。
Upgrade:向服务器指定某种传输协议以便服务器进行转换(如果支持。
User-AgentUser-Agent:的内容包含发出请求的用户信息。
Via:通知中间网关或代理服务器地址,通信协议。
Warning:关于消息实体的警告信息
HTTP Responses Header 响应头
Accept-Ranges:表明服务器是否支持指定范围请求及哪种类型的分段请求。
Age:从原始服务器到代理缓存形成的估算时间(以秒计,非负)。
Allow:对某网络资源的有效的请求行为,不允许则返回405。
Cache-Control:告诉所有的缓存机制是否可以缓存及哪种类型。
Content-Encodingweb:服务器支持的返回内容压缩编码类型。。
Content-Language:响应体的语言。
Content-Length:响应体的长度。
Content-Location:请求资源可替代的备用的另一地址。
Content-MD5:返回资源的MD5校验值。
Content-Range:在整个返回体中本部分的字节位置。
Content-Type:返回内容的MIME类型。
Date:原始服务器消息发出的时间。
ETag:请求变量的实体标签的当前值。
Expires:响应过期的日期和时间。
Last-Modified:请求资源的最后修改时间。
Location:用来重定向接收方到非请求URL的位置来完成请求或标识新的资源。
Pragma:包括实现特定的指令,它可应用到响应链上的任何接收方。
Proxy-Authenticate:它指出认证方案和可应用到代理的该URL上的参数。
refresh:应用于重定向或一个新的资源被创造,在5秒之后重定向(由网景提出,被大部分浏览器支持)
Retry-After:如果实体暂时不可取,通知客户端在指定时间之后再次尝试。
Serverweb:服务器软件名称。
Set-Cookie:设置Http Cookie。
Trailer:指出头域在分块传输编码的尾部存在。
Transfer-Encoding:文件传输编码。
Vary:告诉下游代理是使用缓存响应还是从原始服务器请求。
Via:告知代理客户端响应是通过哪里发送的。
Warning:警告实体可能存在的问题。
WWW-Authenticate:表明客户端请求实体应该使用的授权方案。
)一次TCP连接上能传多少个http请求?(实际上问的就是长连接短连接,分类讨论即可)
在 HTTP/1.1 中 Connection 默认是 keep-alive 故可以进行多个http请求(长连接)
https://blog.csdn.net/ywlmsm1224811/article/details/96436768
)用UDP进行传输的话,假设要发送1000M的文件,但是接收限制是800M,能传成功吗?如果能成功,怎么传?如果不成功,说出不成功的理由。(这里我答的是不成功,回答的理由是UDP是没有拆包功能的,所以会直接传输失败。面试官点头说了个好的,我也不知道对不对)。
)为什么要CA认证,这么做的意义是?
HTTPS需要使用一套CA数字证书,证书内会附带一个公钥Pub,而与之对应的私钥Private保留在服务端不公开;
客户端收到证书,校验合法性,主要包括是否在有效期内、证书的域名与请求的域名是否匹配,上一级证书是否有效(递归判断,直到判断到系统内置或浏览器配置好的根证书),如果不通过,则显示HTTPS警告信息,如果通过则继续;
借助CA机构和系统根证书的机制保证了HTTPS证书的公信力。
)拥塞控制
)输入url发生了什么
https://zhuanlan.zhihu.com/p/43369093
)IP地址和MAC地址关系,为何需要两个地址
https://blog.csdn.net/zs18753479279/article/details/115611132
os
====================================================================
进程和线程的通信(管道,信号量等)
管道的区别
信号量底层是如何工作的(没答出来,估计特别扣分,因为楼主是典型的八股文选手,操作系统能问这么多是我没想到的)
内存溢出和内存泄漏
内存泄漏memory leak :是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。
内存溢出 out of memory :指程序申请内存时,没有足够的内存供申请者使用,或者说,给了你一块存储int类型数据的存储空间,但是你却存储long类型的数据,那么结果就是内存不够用,此时就会报错OOM,即所谓的内存溢出。
二者的关系
内存泄漏的堆积最终会导致内存溢出
内存溢出就是你要的内存空间超过了系统实际分配给你的空间,此时系统相当于没法满足你的需求,就会报内存溢出的错误。
内存泄漏是指你向系统申请分配内存进行使用(new),可是使用完了以后却不归还(delete),结果你申请到的那块内存你自己也不能再访问(也许你把它的地址给弄丢了),而系统也不能再次将它分配给需要的程序。就相当于你租了个带钥匙的柜子,你存完东西之后把柜子锁上之后,把钥匙丢了或者没有将钥匙还回去,那么结果就是这个柜子将无法供给任何人使用,也无法被垃圾回收器回收,因为找不到他的任何信息。
内存溢出:一个盘子用尽各种方法只能装4个果子,你装了5个,结果掉倒地上不能吃了。这就是溢出。比方说栈,栈满时再做进栈必定产生空间溢出,叫上溢,栈空时再做退栈也产生空间溢出,称为下溢。就是分配的内存不足以放下数据项序列,称为内存溢出。说白了就是我承受不了那么多,那我就报错。
讲一下死锁的条件;讲一下破坏死锁的条件;口头描述一个死锁例子
僵尸进程和孤儿进程
设计模式
======================================================================
说一说有哪些常用的设计模式
单例模式
(注意多线程中的实现)
策略模式
适合多个算法的程序设计:
https://www.runoob.com/design-pattern/strategy-pattern.html
分布式框架
=======================================================================
redis
redis的基本数据类型
为什么要使用redis
怎么样能确保缓存中数据和主存中数据的一致性
redis速度为什么这么快
redis内存模型?(回答的很浅)
Redis清理过期数据的机制是什么
项目当中我是如何保证缓存和数据库的一致性的?(延时双删策略)延时双删中为啥要延时?第二次删除为什么不在写完直接删除?如何应对缓存删除失败的情况?(这里我答了用中间件消息队列)
缓存穿透是什么
如何避免缓存穿透
布隆过滤器
怎么保证缓存和数据库的一致性
zookeeper
消息队列考点