百度一面 (爱企查) 8.22

JVM、Spring,ES,MQ都没问。

自我介绍
1. HashMap底层数据结构
答:xxx结构。介绍为什么扩容参数是8和64。一定要主动去引导。这里没有引导到自己擅长的Put流程,寻址算法,下次要注意引导。
2. 它并发安全吗?不安全那有可能有什么问题?
这里回答的不好,现想出来回答的是有可能有ABA问题,比如一个线程修改了数据另一个线程直接给覆盖数据了。

查询的答案是这样的:
数据覆盖:
当多个线程同时尝试修改同一个键对应的值时,后一个线程的操作可能会覆盖前一个线程的结果,导致数据丢失。
并发插入时的竞态条件:
多个线程可能同时尝试插入相同的键值对,但由于 HashMap 的内部实现中没有对插入操作进行同步控制,可能导致插入操作失败或数据错误。
死锁或循环引用:
在 HashMap 的早期版本中,如果多个线程同时进行扩容操作(resizing),可能会导致循环引用,导致死锁

3.Sychronized和AQS的区别
答:这里主要是比较Sychronized和Lock接口的区别。(其实说的有点偏题了)说着说着又说到和ReentrantLock的区别去了。把问题拉到了我擅长的区域。虽然我也不知道到底AQS和Lock接口能不能这样类比过来。
解释一下ReentrantLock的特性?
答:重入,可中断、公平与非公平、多条件变量
Sychronized可重入吗?答可以。
说一下Sychronized的底层机制?锁升级了解过吗?
答:这里我不太了解Sychronized的底层结构,所以就直接碰运气只回答锁升级,第一个问题糊弄过去了

4.CAS的机制是什么?
CAS可能出现什么问题?答ABA。
这个问题怎么解决?答版本号。

5. 了解过JUC吧?说一说线程池的几个参数?
答:最大线程数、核心线程数、非核心线程存活单位、非核心线程存活时间、等待队列类型、拒绝策略(少说一个线程工厂)
6. 什么时候用到等待队列?线程池假设现在来了一个线程,他的流程是怎么样的?
答:先核心线程、再等待队列、再非核心线程直到max线程数、再拒绝策略。
7. 拒绝策略有哪些?
答:忘了。
8. 在线程池中为什么一个线程能反复使用多次?而不是销毁再重新创建?
答:不知道。

9.计算机网络就只问个三次握手四次挥手。
答:xxxxx
10.四次挥手区别?为什么挥手是四次?
答:中间有一次的ACK和FIN拆开,因为服务器数据可能还没有发送完毕。

11.Innodb索引底层结构。和B树区别是什么?查询时间复杂度是多少?
12.在每个节点中是怎么寻路的?其实没有听懂问的意思,面试官想表达的是,因为每个节点中的键都有序,所以其实在每个节点中是通过二分查找来进行寻找下一层的路由的。

13.事务的四个特性?他们分别是怎么保证的?
答:一致性通过其他三个。隔离性MVCC。原子性Undolog。持久性Redolog。

14.Redolog也要持久化到磁盘呀,那他为什么就能保证持久性
答:因为他只写日志不实际操作,记录很小很快就容易写。具体是什么跟面试官说不知道。

15.刚刚说了两种日志,还有binlog是干嘛的?
答:全量日志。Redolog不是全量的

16.Redis三兄弟。他们的概念和解决办法。
布隆过滤器是怎么工作的?一定保证有,一定确定无吗?误判是怎么误判的?

算法题:
合并两个有序数组
ACM模式。3分钟就写完核心代码,但是写不来输入输出。跟面试官提出来,面试官说这个没关系,直接讲思路。平时有刷算法吗?有。
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务