自我介绍
基础
HashMap
- 不同JDK版本实现对比
- 为什么会在JDK1.8中做优化,JDK1.7版本会有哪些问题
- 扩容机制
- 如何保证线程安全
- 选择ConcurrentHashMap的原因,为什么没有选择HashTable、Synchronized、Lock、Collection.Synchronized
- Synchronized锁升级的过程
Spring
事务隔离级别
- 有哪些
- 和数据隔离级别比较
AOP
- 实现方式有哪些
- 项目中有哪些实际应用
反射
- 使用场景:动态获取
- 性能问题:(反射是一种解释操作)
Nginx
- 如何做负载均衡的:一致性hash、加权hash、轮询
- 常用的负载均衡算法有哪些
网络
TCP三次握手
- 三次握手过程
- 为什么不是两次或四次
MySQL
调优
- 多个索引匹配
- 覆盖索引、存储介质如果是机械硬盘的话,开启MRR
- 普通索引:changeBuffer
- 索引未生效:SQL语句排查、索引信息不准确(使用AnalyzeTable)
- Explain分析出来的索引一定是最优的吗
- 索引效率不高,如何补救:force index;覆盖索引 + 最左原则
热点数据大批量更新解决
- 使用缓存
- 缓存带宽被打满如何解决?可以考虑本地缓存
Java8新特性
- 有哪些新特性
- 使用过哪些
- 做了哪些优化
项目
项目职责履行
模块化
- 模块拆分
- 模块间的调用
- RPC原理
- RPC框架
- 超时处理
- 集群处理
- 消息中间件
问题排查
- 外部流量正常,本模块日志激增,线程池被打满,如何排查
其他
平时如何学习
学习收获
业务和技术的关系
- 技术驱动业务、业务产生价值
有哪些想问面试官的
题目来源:程序员面试一个Java实习生,展示教科书般回答,有两个大厂offer的他会来么?