一面 2.23
1、首先问项目
2、MQ的作用?
3、面对秒杀峰值的策略?读峰值策略?写峰值策略?
4、RabbitMQ的架构
之后问基础知识
5、进程和线程的区别
6、线程的共享部分?私有部分?
7、访问堆时的并发问题?
8、synchornized锁的底层原理,膨胀机制等
9、死锁?如何避免?有了如何解决?
计算机网络部分
10、tcp如何保证可靠性?
11、四次挥手过程
12、TCP为什么要三次握手?
不是三次会有什么问题?三次握手还有什么问题?
13、close-wait与time-wait状态
14、tcp 如何最大程度利用带宽?
15、tcp一个报文设置多大合适?
数据库
16、redis基本数据类型
17、雪崩,穿透,击穿概念以及解决方法
18、为什么用B+树? 什么是聚集索引?什么情况用聚集索引
19、单列小数目不同值用聚集索引还是非聚集?
20、题目:leetcode 最长无重复子串
2.24二面
21、先说一下java基本数据类型
22、ArrayList和LinkedList区别?你如何理解动态数组中的动态?扩容的底层原理与过程?那么扩容这个过程的时间复杂度?
23、用Array实现FIFO(不限长度),实现push,pop,length要求只能用原生数组,pop,length要求O1,push最好保证O1
24、用已有数据结构完成以下操作:insert,delete random(随即返回一个数,要求概率相等) delete和random要求O1,insert最好O1
数据库:
25、给一个sql语句建立索引,为什么这样加索引?从各种层面上索引可以分为几类?加索引时候的具体实现?