美团一面3.22(凉凉)
OSI七层协议
应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
TCP/IP四层协议
应用层、传输层、网络层、网络接口层
tcp和udp区别
tcp:面向连接,可靠 udp:非连接,不可靠
tcp怎么可靠传输
校验和、ACK、序列号、超时重传
http和https区别
超文本传输协议,https通过SSL/TLS协议非对称加密 http:80 https:443
B+树实现原理
B+树非叶子节点只存储索引信息,不包含实际的值,所有叶子节点和相邻节点通过链表相连,便于查找和遍历。
hashmap怎么插入的,为什么O(1)
- hashmap有个Entry数组,hashcode相当于它的下标,key.hashcode()可以在数组get到Entry对象,只是理想情况。
- 数据量大就有可能会有hash碰撞,hashcode可能对应多个key,这是Entry数组里就不是Entry了,而是Entry链表.调用map.get(key)时,就会遍历链表,调用equals方法去比较key。jdk8,当链表大于8时,变为红黑树。
- 除了数据量,hash碰撞的概率还和负载因子有关。
hashtable通过synchronized实现同步
concurrenthashmap没加synchronized实现同步?
synchronized锁的实现 lock()
- 同步代码块:给指定对象加锁
- 同步方法:静态方法(当前类加锁),非静态方法(this当前对象加锁)
jvm的内存模型
堆、方法区、虚拟机栈、本地方法栈、程序计数器(线程私有)
栈里放什么(为什么私有)
- 基本类型的数据
- 对象的引用
堆里放什么
new产生的数据
OOM是什么,为什么会堆溢出(死锁,大对象,递归,对象回收不了)
登录怎么实现?验证码token
秒杀实现?update table A set num=num-1 where id=1 and num>0 (一生铭记)
乐观锁是什么?(读多写少场景)
假设事务不会冲突,数据提交更新时,才会正式对数据是否冲突进行检测。 *悲观锁:*对数据库一行进行修改时,为了避免同时被其他人修改,直接对改数据进行加锁以防止并发。