小米面试
惯例自我介绍,五十分钟
说一下 HashMap 的结构,为什么非线程安全,为什么容量是 2 的次幂
那 CourrentHashMap 为什么线程安全
说一下 Volatile 关键字,聊到底层原理
引申出 Synchronized
说一下 JVM 的内存分配,详细的说一下每一块是存啥,堆分配
说一下对应的 GC 算法
说一下 G1 垃圾回收器
线程池种类,拒绝策略,任务执行流程
说一下死锁
说一下Redis的几种数据结构,问我 zset 的底层数据结构(就知道跳跃表)
说一下 Redis 的数据淘汰策略
TCP 的三次连接
Mysql 的几种引擎,区别是啥
说一下索引,B+ 树
数据库的几种隔离级别,解释一下什么是幻读
聊项目,秒杀系统设计的,为什么这么设计,那么设计为什么不行
写道算法题:给你一个二叉树,返回每一层的数值相加计算得到的平均值的数组,其实就是一个层序遍历
惯例自我介绍
说一下秒杀系统里面怎么解决超卖的问题的
那么在 Mysql 里面用什么方法解决
说一下Innodb 和 Myisam 两个引擎的区别
数据库的事务特点以及几种隔离级别,解释一下什么是幻读和脏读
说了一下行锁和表锁,共享锁和排它锁
Spring 的 IOC 介绍,提到了反射
说一下 Java 的反射
问了一个 Http 1.0 和 Http 1.1 区别,我不知道说了一下 Http 和 Https 的区别
为什么 Https 是安全的
Http 的长连接说一下,然后给我解释了一下 http 1.0 和 http 1.1 的区别就是这个长连接
OSI 的七层模型,http 在哪一层, TCP 在哪层
写了两个算法题
第一个是给定两棵二叉树,把它们合并成一个二叉树,合并规则如下:如果两棵树的对应节点不为空,把这两个节点的和作为新树的节点,如果有一个节点为空,则把非空的节点作为新树的节点。
第二个就是给你一个循环链表让你找入口节点。考虑空间复杂度和不考虑空间复杂度两种做法