多线程并发编程:
- 线程池的构造参数及其含义,如何确定线程池中线程的个数等
- 定时线程池如何实现的?
- synchronized,volatile 关键字
- 原子性,可见性与有序性
- 可重入的锁 ReentrantLoc
- ThreadLocal 的实现原理
- AQS 底层实现,与 ReentrantLock 的关系
JVM 知识点:
- 内存区域划分
- OOM 介绍
- 对象分配与回收
- CMS 和 G1 垃圾收集器
- 对象可达性分析
- 类加载机制
- JVM 调优参数
- Full GC,Minor GC
- 对象的栈上分配(JIT 编译器)
MySQL 知识点:
- MySQL 隔离级别
- 一致性视图
- 日志模块:undo log,redo log 和 binglog
- 索引结构,回表,最左前缀原则
- 间隙锁,幻读,MVCC
- SQL 优化实战
Java 基础:
- NIO 的实现原理
- HashMap,HashSet,LinkedHashMap 以及 ConcurrentHashMap
- hashcode 与 equals 方法的区别
- RuntimeException Exception Error
- 注解的使用
- 基本数据类型
- 五种常见的网络 IO 模型
Spring&MyBatis:
- Spring IOC 和 AOP 的原理
- SpringBoot 源码解读,启动方式,配置顺序等
- SpringMVC 和 Spring 父子容器的关系
- Spring 的事务实现方式
- 如何自定义实现 SpringBoot 中的 starter
- MyBatis 中 #和 $符号的区别
网络协议:
- TCP 与 UDP 区别
- TCP 可靠性如何保证
- TCP 网
络包分片与重组
- 三次握手与四次挥手,状态转换
- SSL 握手协议使用的加密算法,非对称加密的缺点
- XSS 和 CSRF 介绍
Redis&Kafka:
- redis 实现分布式锁
- redis 数据结构类型
- redis zset 实现延时队列
- 跳表如何维护
- redis 线程模型
- redis 的数据过期方式
- redis 持久化方式
- 缓存雪崩,缓存穿透,缓存击穿
- Kafka 主题,分区和日志文件的关系
- Kafka 日志压缩和删除
- 消息队列基本特性
算法题目:
- 找出多数元素(美团)
- 最长公共字串 (美团)
- 单例模式 (美团)
- 快速排序 (阿里)
- 查找链表中倒数第 N 个节点 (头条)
- 合并 k 个有序的链表 (快手)
- 蓄水池 (快手)
- 自定义实现 parseDouble 方法 (快手)
- a+b+c=0 (头条)
- 二叉树前序遍历 (快手)
- 二叉树按照前序遍历转换为只有右节点的树 (猿辅导)
- 按照之字形遍历二叉树 (头条)
- 保留有序链表中的重复元素,并且只保留一次 (阿里,这个很有意思,感兴趣的同学可以实现下) 给定一个有序链表,保留链表中重复出现的元素,并且只保留一次,如给定链表 1->1->1->2->3->3->4.
结果为1->3。请写出一个高效的算法
- 使用三个线程分别打印 A,B,C,按 ABC CBA ABC CBA …的顺序进行打印 (阿里) 还行,对于有准备的各位来说,这些算法都不太困难。待会在资源分享段落,楼主将会分享自己私藏多年的算法学习节奏,助你备战面试!
小伙伴们有兴趣想了解内容和更多相关学习资料的请点赞收藏+评论转发+关注我,后面会有很多干货。我有一些面试题、架构、设计类资料可以说是程序员面试必备!所有资料都整理到网盘了,需要的话欢迎下载!私信我回复【000】即可免费获取
一面总结:
社招一面(生死面)容易挂的第一个点,就是刚开始的项目讲解的一般,没有亮点。项目中的技术难点和技术卡点无法表述出来,很容易给面试官一种“这人不行”的感觉。至于基础知识还是得靠我们平时多想想是什么?怎么实现?为什么这么实现?
总之讲解一个优秀得项目,面试就通过了一半。
二面:
一轮面试如果通过得话,恭喜你,你的面试其实已经通过了一半。因为一面面试官已经在基础知识方面对你进行肯定,二面面试官得提问方向就相对比较多了。二面面试官得重头戏还是你对项目的理解。
本轮面试会让你继续讲解一个或者多个项目,因为没有了基础知识点的考察“压力”。面试官会对项目进行深入了解,包括其业务架构,技术架构与技术原理等。
大概包括如下的技术点:
- 项目业务架构,针对项目中各个知识点进行扩展与提问
- 项目技术架构,技术架构中比如说 Thrift 的实现原理,nginx 相关知识点等
- 项目中学到了哪些技术?或者之前学到的技术哪些在项目中可以体现?
- 服务的 QPS 如何?如何保证服务高可用性?
- 如何限流,熔断和降级服务?
- 服务的部署方式,各个集群数据库的同步方式
- MySQL 单表数据量多大?索引结构如何?
- 上线新服务如何进行压测?
- 内存泄露的排查方式?
- 线上接口响应超时的排查思路
当然了,在这些比较开放的问题之外,部分面试官依然会考察一些基础知识点,这个看各个面试官的风格了。但是,二轮面试看重的还是项目技术架构以及你所做的贡献有哪些。