五八面试笔试9.11-9.17

笔试3道

1.找数组中只出现1次的数字,按原顺序(其他都出现了两次)
2.求指定长度最大子数组的和、起始位置
3.简单求概率题(不记得了)

9.16一面30-40多分钟

项目经历、实习经历、简单八股文(java基础、mysql、redis数据结构、网络)

 

9.17二面50分钟

项目经历、实习经历、八股问的还比较深

 

印象中一共问了:

MYSQL:

mysql两种引擎的异同(myisam,innodb,都是b+数一个聚集一个非聚集,一个支持事务一个不支持,一个有行锁、表锁一个无)

最左前缀是什么?为什么会导致失效?(答:索引树走不通,感觉应该答会回表查)

为什么使用b+树(回答了b树内部节点存放信息IO慢,平衡二叉树不支持范围查询,b+树叶子节点存,hash一般单数据查询效率高,不支持范围查询)

mysql中有哪些锁(回答了:行锁、表锁、间隙锁、意向锁,行锁、表锁只有innodb支持,行锁、间隙锁防止了部分幻读,意向锁用于减少是否使用锁)

mysql中事务是如何实现的(只回答出undolog支持事务的回滚,保证了原子性(记录的逻辑日志))

 

java基础:

hashMap了解多少?(答1.7以前是数组加链表,1.8是数组加链表加红黑树,当链长超过8树化(其实还有数组长度超过64的限制,否则先扩容,这个我忘了说,他也没问了,而且还有初始长度16,扩容因子0.75,数组达到0.75扩容,且扩容方式乘以2,好处是扩容转移方便移动只需使用右移位运算))

hashMap为什么到8扩容(源码解释泊松分布,概率较低(应该还可以补充树化代价高,且小于6才会还原成链,也是防止频繁树化))

synchronized如何实现可重入锁(没想起来,回答:只知道可重入锁的概念是可以多次上锁、多次释放才行。lock()实现可重入锁是叠加状态state值变化,其他不知道)

volatile底层原理(回答:volatile一般修饰成员变量,保证了可见性(JMM模型volatile读会读主存,volatile写会禁用缓存,并写回主存)、防止了指令重排序利用load和store内存屏障)

问内存屏障底层涉及到操作系统了解吗(不清除)

LRU算法实现过吗?底层是啥?(回答:淘汰最晚使用(输入法中貌似用到),使用的优先队列,根据使用时间排序时间越晚越靠前,优先队列底层不清除)

 

网络:

https和http有什么区别(回答:ssl保证数据的可靠性,利用混合加密(对称与非对称加密,对称更快,非对称更安全)先非对称获取公钥,后面就是对称加密)

tcp如何保证可靠性(只回答了长连接、三次握手,还有其他的没说出来)、

 

操作系统:

死锁的必要条件(就回答了:多个进程争夺资源,不释放自身的资源,资源不受外界干扰而分配等)

 

posted @ 2021-09-18 12:00  wsZzz1997  阅读(39)  评论(0)    收藏  举报