前言
现在已经是2020年了,相信很多人都在准备面试,,如何拿到心仪的 Offer,进入梦寐以求的大厂,实现自己的职业理想,达到程序员的小康水平。
这篇文章主要介绍了一月份的几次面经,(一次性查缺补漏个够),
对于面试的那几家公司暂不公布,望理解。
第一家(Zookeeper+微服务+消息中间件+高并发架构设计)
一面
JVM数据存储模型,新生代、年老代的构造?
java GC算法,什么时候会触发minor gc,什么时候会触发full gc?
GC 可达性分析中哪些算是GC ROOT?
你熟悉的JVM调优参数,使用过哪些调优工具?
Java 有什么锁类型?
描述下线程池的处理流程?
类加载机制,一个类加载到虚拟机中一共有几个步骤,这些步骤的顺序哪些是固定的,哪些是不固定的,为什么不固定?
hashmap是线程不安全的,concurrenthashmap是线程安全的,怎么实现的线程安全?
volatile关键字解决了什么问题,实现原理是什么?
并发容器有哪些,并发容器和同步容器的区别
二面
在工作中,SQL语句的优化和注意的事项
哪些库或者框架用到NIO
Spring 都有哪几种注入方式,什么情况下用哪种,ioc实现原理
如何定位一个慢查询,一个服务有多条SQL你怎么快速定位
聚集索引和非聚集索引知道吗?什么情况用聚集索引什么情况用非聚集索引
Nosql引擎用的什么存储结构,关系型数据库和NoSQL各自的优劣点是什么,如何技术选型?
微服务架构下,如果有一个订单系统,一个库存系统,怎么保证事务?
分布式一致性协议raft,paxos 了解吗
Zookeeper中的ZAB协议,选主算法
三面
自我介绍
参与的并发项目,从设计到部署,按照流程讲一遍。
项目相关你用过redis,用在什么场景,怎么使用的?
mysql同步机制原理,有哪几种同步方法
数据库主从同步如何实现,事务如何实现
谈谈你对SOA和微服务的理解,以及分布式架构从应用层面涉及到的调整和挑战。
阿里系中间件metaQ及原理与现有的kafka有什么异同
在阿里有了解过什么中间件吗?实现原理?与其他开源消息队列有什么特点?
为什么选择换公司?
三年到五年的职业规划?
你有想问我的?
第二家(幻影读+分段锁+Spring Cloud+秒杀)
一面
简短自我介绍
事务的ACID,其中把事务的隔离性详细解释一遍
脏读、幻影读、不可重复读
红黑树、二叉树的算法
平常用到哪些集合类?ArrayList和LinkedList区别?HashMap内部数据结构?ConcurrentHashMap分段锁?
jdk1.8中,对hashMap和concurrentHashMap做了哪些优化
如何解决hash冲突的,以及如果冲突了,怎么在hash表中找到目标值
synchronized 和 ReentranLock的区别?
ThreadLocal?应用场景?
Java GC机制?GC Roots有哪些?
MySQL行锁是否会有死锁的情况?
二面
乐观锁和悲观锁了解吗?JDK中涉及到乐观锁和悲观锁的内容?
Nginx负载均衡策略?
Nginx和其他负载均衡框架对比过吗?
Redis是单线程?
Redis高并发快的原因?
如何利用Redis处理热点数据
谈谈Redis哨兵、复制、集群
工作中技术优化过哪些?JVM、MySQL、代码等都谈谈
三面
Spring Cloud用到什么东西?如何实现负载均衡?服务挂了注册中心怎么判断?
网络编程nio和netty相关,netty的线程模型,零拷贝实现
分布式锁的实现你知道的有哪些?具体详细谈一种实现方式
高并发的应用场景,技术需要涉及到哪些?怎样来架构设计?
接着高并发的问题,谈到了秒杀等的技术应用:kafka、redis、mycat等
最后谈谈你参与过的项目,技术含量比较高的,相关的架构设计以及你负责哪些核心编码
第三家
一面(50分钟)
hashmap,怎么扩容,怎么处理数据冲突?怎么高效率的实现数据迁移?
Linux的共享内存如何实现,大概说了一下。
socket网络编程,说一下TCP的三次握手和四次挥手
同步IO和异步IO的区别?
Java GC机制?GC Roots有哪些?
红黑树讲一下,五个特性,插入删除操作,时间复杂度?
快排的时间复杂度,最坏情况呢,最好情况呢,堆排序的时间复杂度呢,建堆的复杂度是多少
二面(40分钟)
自我介绍,主要讲讲做了什么和擅长什么
设计模式了解哪些?
AtomicInteger怎么实现原子修改的?
ConcurrentHashMap 在Java7和Java8中的区别?为什么Java8并发效率更好?什么情况下用- –
HashMap,什么情况用ConcurrentHashMap?
redis数据结构?
redis数据淘汰机制?
三面(约1个小时)
mysql实现事务的原理(MVCC)
MySQL数据主从同步是如何实现的?
MySQL索引的实现,innodb的索引,b+树索引是怎么实现的,为什么用b+树做索引节点,一个节点存了多少数据,怎么规定大小,与磁盘页对应。
如果Redis有1亿个key,使用keys命令是否会影响线上服务?
Redis的持久化方式,aod和rdb,具体怎么实现,追加日志和备份文件,底层实现原理的话知道么?
遇到最大困难是什么?怎么克服?
未来的规划是什么?
你想问我什么?
第四家 (事务+集群+秒杀架构)
一面
常见集合类的区别和适用场景
并发容器了解哪些?
如何判断链表是否有环
concurrentHashMap如何实现
集群服务器 如何application 共享
JAVA网络编程中:BIO、NIO、AIO的区别和联系
jvm内存模型jmm 知道的全讲讲
JAVA的垃圾回收,标记算法和复制算法的区别,用在什么场合?
http和https的区别,http1.x和http2.0的区别,SSL和TSL之间的区别
GC、G1和ZGC的区别
B+树和B树的区别,和红黑树的区别
内存泄漏与内存溢出的区别
session的生命周期是多久
关于Mina框架了解多少?(因为我在项目里用到了Mina,所以提到了这个部分)
二面
java cas原理
JAVA线程池有哪些参数,如果自己设计一个线程池要考虑哪些问题?
Java的lock的底层实现?
mysql数据库默认存储引擎,有什么优点
MySQL的事务隔离级别,分别解决什么问题。
四个表 记录成绩,每个大约十万条记录,如何找到成绩最好的同学
常见的负载均衡算法有哪些
如果Redis有1亿个key,使用keys命令是否会影响线上服务
Redis的持久化方式,aod和rdb,具体怎么实现,追加日志和备份文件,底层实现原理的话知道么
三面
请画一个完整大型网站的分布式服务器集群部署图
多个RPC请求进来,服务器怎么处理并发呢
讲一下Redis的哨兵机制
数据库分库分表一般数据量多大才需要?
如何保证数据库与redis缓存一致的
项目中消息队列怎么用的?使用哪些具体业务场景?
JVM相关的分析工具有使用过哪些?具体的性能调优步骤吗?
MySQL的慢sql优化一般如何来做?除此外还有什么方法优化?
线上的服务器监控指标,你认为哪些指标是最需要关注的?为什么?
如何做压测,抗压手段
秒杀模块怎么设计的
HR面
自我介绍
你怎么评价你之前的3轮面试
你怎么看待你自己,你最大的核心竞争力是什么
未来自己的职业规划
对阿里技术氛围有什么样的理解,用过哪些阿里的开源库
期望的薪资是多少
最后,你有什么想了解的
面试题答案
好了各位, 本文到这里就结束了! 关于面试题答案为什么没有直接写出来,我想说的是把面试题写下来会显得文章很长,(现在已经很长了…)这样就影响文章的可读性。