极兔速递-社招-Java一面
2023.02.08晚,感觉答得不是很好,但是面试官人很好,刚挂了电话没一会就约我二面时间
自我评价:整体来说mysql的log日志、mq的底层理解有点模糊,然后要答到点上,不要答无关的东西显示自己理解有多深,不然就给自己挖坑而且让面试官感到厌烦,然后就是组织好语言,知道就知道,不知道就不知道,节约双方时间。
🔥1. Java
- 线程安全集合: hashtable,vector, courrenthashmap
- jdk1.7和1.8区别:没了解过=_=,脑袋突然断路。(增加了lambda表达式)
- Java锁和底层原理:按不同类型划分,讲了synchronized和reentranlock,锁升级,aqs,可重入性
- volatile: 禁止指令重拍,有序,可见,内存屏障
- hashmap的底层结构:数组链表红黑树
🔥2. 数据库
- Binlog,redolog, undolog作用和区别:redolog一般用于数据恢复,binlog一般用于备份,保证数据的持久化。undo保证事务的原子性,一般用于事务回滚
- 为什么要刷盘到redolog而不直接写入磁盘?:不知道=_=,上个问题给自己埋的坑(redo log是顺序IO,比直接刷盘的随机IO更快)
- Mysql隔离级别,是否解决幻读: 默认可重复读,可重复读其实是没有解决幻读的,只能解决脏读。但是在MYSQL中,引入了MVCC,且开启了间隙锁,所以直接上是解决了幻读了的(感觉面试官是在引导我说出这些,自己讲的还是有点让人误解 参考链接:https://learnjava.baimuxym.cn/pages/%E5%8F%AF%E9%87%8D%E5%A4%8D%E8%AF%BB%E6%98%AF%E5%90%A6%E8%83%BD%E8%A7%A3%E5%86%B3%E5%B9%BB%E8%AF%BB%EF%BC%9F/)
- Mysql锁,知道意向锁吗:按不同类型划分,讲了表锁行锁、X锁,S锁。意向锁就是协调表锁和行锁的,行加了什么锁,表就加什么锁。
- Redis数据类型和数据结构:5种string,hash,list,set,zset。6种sds,inset,dict,quicklist,ziplist,skiplist。
- Redis持久化:RDB和AOF和各种工作原理。(还问了个AOF相关的,没听过说不了解,就跳过了)
🔥3. 框架和中间件
- 哪些分布式锁:redis-setnx, redission。
- 知道zk的分布式锁吗?: 没了解过(跳)
- jvm内存平时怎么调优:感觉自己答得很乱。实际是用jps或者arathas等命令排查异常线程,或者下载dump文件用jprofile分析等之类的操作
- rabbitmq如何避免消息堆积,顺序性,消息模式:增加队列消费能力或线程池处理消息及时响应,提高消费能力顺序性:一个队列对应一个消费者,rabbitmq内部用队列来保证消息模式:一对一,一对多广播,还是就是topic主题参考链接:JavaGuide https://javaguide.cn/high-performance/message-queue/rabbitmq-questions.html#%E5%A6%82%E4%BD%95%E4%BF%9D%E8%AF%81-rabbitmq-%E6%B6%88%E6%81%AF%E7%9A%84%E9%A1%BA%E5%BA%8F%E6%80%A7
#Java##社招#