一轮技术面(90 分钟)
- hashmap 和 hashtable 区别
- 为什么会产生死锁
- jvm 类加载
- java 反射获取私有属性,改变值
- 反射用途
- 所用数据库
- 项目难点,问题
- 如何解决项目中遇到的问题
- 项目中遇到的最难解决的地方
二轮技术面(120 分钟)
- 讲项目
- 数据库乐观锁使用
- 如何分库分表
- MySQL 极限
- HashMap 源码
- 设计一个线程安全的 HashMap
- 快排的实现,时间复杂度和空间复杂度
- 会什么算法
- 如何把项目变成 SOA 架构
- Spring 源码,最深刻的模块,aop 用途
- JVM 内存模型
- 垃圾回收机制
- 项目中查看垃圾回收
三轮技术面(150 分钟)
- ConcurrentHashMap 底层原理?
- 手写一个 LRU(用 LinkedHashMap)
- HashMap 底层数据结构?
- JDK1.8 中的 HashMap 为什么用红黑树不用普通的 AVL 树?
- 为什么在 8 的时候链表变成树?
- 为什么在 6 的时候从树退回链表?
- 线程池 7 个参数,该怎么配置最好?
- 说一下 volatile
- volatile 的可见性和禁止指令重排序怎么实现的?
- CAS 是什么?PriorityQueue 底层是什么,初始容量是多少,扩容方式呢?
- 若原始大小<64,则扩容为原来的 2 倍+2,不然就扩容为原来的 1.5 倍
- HashMap 的容量为什么要设置为 2 的次幂?
- 你知道跳表吗,什么场景会用到?
- CopyOnWriteArrayList 知道吗,迭代器支持 fail-fast 吗?
- innodb 的底层数据结构?
- 为什么用 B+树不用 B 树?
- 为什么用 B+树不用红黑树?
- coding:无序数组怎么寻找第 k 大的数,写一个二叉树层次遍历
- 不知道大小的数据流取其中 100 个数,怎样的取法能最随机
- n 个物品每个物品都有一定价值,分给 2 个人,怎么分两个人的价值差最小
四轮技术面(120 分钟)
- 项目中的权限管理
- 登录状态如何储存
- session 和 cookie 的区别,session 如何管理
- HashMap 底层结构
- synchronized 关键字的用法
- synchronized 修饰类方法和普通方法的锁区别,获取类锁之后还能获取对象锁吗
- 类加载器的双亲委派模型的作用,能重复加载某个类吗
- 类加载器的类的缓存,key 是什么
- 介绍 Redis
- 如何将数据分布在不同的 Redis
- 有了解过取余算法?
- spring 的 AOP 实现
- 字节码结构
- 浏览器输入网址过程,结合 springmvc
五轮技术面(120 分钟)
- HashMap 在大量哈希冲突该怎么处理
- 红黑树比 BST 优点
- MySQL 为什么使用 B+树
- 多个索引会有多份数据吗
- 数据库的隔离级别和解决的问题
- 数据库默认隔离级别,一定会产生幻读吗,怎么解决
- 输入网址到展示的整个过程,结合 springmvc 来讲
- 负载均衡的算法
- 哈弗曼编码,如何解决译码问题
- 如何查看系统负载
- 描述一个解决问题的过程
- 如何把文件从服务器复制到本地,用什么命令
六轮技术面(90 分钟)
- 讲讲你所了解的 JVM 垃圾收集算法
- 项目中用的哪些技术
- 项目如何设计流程流转,如果是你的话该怎么设计
- MySQL 使用的索引结构,查找效率
- MySQL 查询优化
- MySQL 慢查询开启,语句分析
- HashMap 查找效率
- JVM 内存模型
- 设计模式,策略模式的使用场景
- 如何确保单线程安全
- Spring 的 bean 的默认范围
- 对 Netty 的了解
- 未来发展规划