目录
最近面试了一些公司,结合自己平时学习,整理了如下Java常问面试题,在这些基础题掌握基础上,能灵活运用于项目中,才能在面试中有更好的发挥。
一、计算机网络
1.三次握手过程
2.四次挥手过程
3.为什么要经过三次握手
4.为什么要经过四次挥手
5.TCP和UCP区别
6.TCP的滑窗
7.http和https区别
6.get和post区别
二、数据库
1.数据库几种索引
https://www.cnblogs.com/williamjie/p/11081081.html
2.B树、红黑树、B+树、Hash和BitMap特点,为什么索引选择B+树
3.密集(聚集)索引和稀疏索引区别
4.如何优化sql
5.索引建立越多越好吗,为什么
6.myisam、innodb锁分类
7.数据库事务
8.MVCC,当前读和快照读
9.mongodb的事务
https://www.jianshu.com/p/d838a5905303?utm_source=oschina-app
三、Redis
1.redis常用数据类型
2.怎么从海量数据中查询某一固定前缀的key
https://blog.csdn.net/mtsbv110/article/details/106237165
1)根据业务需要选择合适的数据类型,并为不同的应用场景设置相应的紧凑存储参数。
2)当业务场景不需要数据持久化时,关闭所有的持久化方式可以获得最佳的性能以及最大的内存使用量。
3)如果需要使用持久化,根据是否可以容忍重启丢失部分数据在快照方式与语句追加方式之间选择其一,不要使用虚拟内存以及diskstore方式。
4)不要让你的Redis所在机器物理内存使用超过实际内存总量的3/5。https://www.cnblogs.com/wxd0108/p/5264341.html
3.如何实现分布式锁
4.如何实现异步队列
5.redis的几种存储方式
6.RDB、AOF和混合模式区别,优缺点
7.redis主从同步原理
8.redis集群的几种方式
【Redis Mode工作模式】https://www.cnblogs.com/dreamtaker/p/13708076.html
【redis的三种集群方式】https://www.cnblogs.com/51life/p/10233340.html
9.hash一致性算法
【一致性Hash与Redis集群数据分片】https://www.cnblogs.com/zhaochunxue/p/13326933.html
10.限流的方式
11.redis的淘汰策略
noeviction,allkeys_lru,allkeys_random,volatile_lru,volatile_random,volatile_ttl
12.redis性能为什么高?
多个套接字、IO多路复用、文件时间派发器、事件处理器
https://blog.csdn.net/yerikstone/article/details/89037070
1)redis是纯内存数据库,一般都是简单的存取操作,线程占用时间很多,时间的花费主要集中在io上,所以读取 速度快。
2)再说一下IO,Redis使用的是非阻塞IO,IO多路复用,使用了单线程来轮询描述符,将数据库的开、关、读、写都转换成了事件,减少了线程切换时上下文的切换和竞争。
3) Redis采用了单线程的模型,保证了每个操作的原子性,也减少了线程的上下文切换和竞争。
4)另外,数据结构也帮了不少忙,