想进大厂的小伙伴,一定要看看面试秘籍

JVM

  • JVM 内存模型
  • 堆是一个什么样的结构
  • CMS 垃圾回收的过程
  • CMS 垃圾回收过程中会有几次 STW 的操作
  • 根集包括哪些对象,为什么这些对象会作为根集对象
  • 类加载机制、双亲委派模型
  • 为什么要引入双亲委派机制 :防止出现多分相同的字节码,类加载器和类确定唯一性
  • JVM 内存区域分布?GC 发生在哪些部分?
  • 介绍一下垃圾回收过程
  • 垃圾回收算法了解多少?现在用的什么回收算法
  • 现在使用的什么垃圾回收器?知道哪些?讲讲 G1
  • 容器的内存和 JVM 的内存有什么关系?参数怎么配置?
  • 线上有什么 JVM 参数调整?
  • oom 问题排查思路
  • 线上问题排查,突然长时间未响应,怎么排查,oom
  • cpu 使用率特别高,怎么排查?通用方法?定位代码?cpu 高的原因?
  • 频繁 GC 原因?什么时候触发 FGC?
  • 怎么获取 dump 文件?怎么分析?
  • 怎么实现自己的类加载器?
  • 类加载过程?
  • 初始化顺序?
  • Java 里边常见的垃圾回收器和垃圾回收算法
  • CMS 垃圾回收器跟 G1 垃圾回收器的区别
  • 对比 CMS,G1 垃圾回收器的优点有哪些

多线程并发

  • 解释 Java 中的锁升级
  • 解释可重入锁的概念及原理
  • 解释自旋锁的概念及原理
  • voliate关键字的使用场景及作用
  • 进程间如何通信:进程 A 想读取进程 B 的主存怎么办?线程间通信?
  • 线程的生命周期有哪些状态?怎么转换?
  • wait 和 sleep 有什么区别?什么情况下会用到 sleep?
  • 怎么停止线程?
  • 怎么控制多个线程按序执行?
  • 会用到线程池么?怎么使用的?用什么实现的?
  • 常用的线程池有哪些?用的哪个线程池?什么情况下怎么选择?
  • ThreadPoolExecutor 有什么参数?各有什么作用?拒绝策略?
  • 一个任务从被提交到被执行,线程池做了哪些工作?
  • 了解 AQS 么?讲讲底层实现原理
  • AQS 有那些实现?
  • 讲讲 AtomicInteger 的底层实现
  • volatile 关键字有什么用?怎么理解可见性,一般什么场景去用可见性
  • 讲一下 threadLocal 原理,threadLocal 是存在 JVM 内存哪一块的。
  • 讲一下锁,有哪些锁,有什么区别,怎么实现的?
  • ReentrantLock 应用场景
  • 死锁条件
  • 对线程安全的理解
  • 乐观锁和悲观锁的区别?
  • 这两种锁在 Java和MySQL分别是怎么实现的?
  • 事务有哪些特性?
  • 怎么理解原子性?
  • HashMap 为什么不是线程安全的?
  • 怎么让HashMap变得线程安全?
  • jdk1.8对ConcurrentHashMap做了哪些优化?
  • Redis主从机制了解么?怎么实现的?
  • 有过GC调优的经历么?

Java 基础

  • 了解 NIO 么?讲讲
  • NIO 与 BIO 有什么区别?
  • 了解 Netty 原理么
  • Collection 有什么子接口、有哪些具体的实现
  • 简单介绍下 ArrayList 怎么实现,添加操作、取值操作,什么时候扩容 ?
  • 讲一下 hashMap 原理。hashMap 可以并发读么?并发写会有什么问题?
  • 讲一下 concurrentHashMap 原理。头插法还是尾插法?扩容怎么做?
  • 堆是怎么存储的,插入是在哪里?
  • 集合在迭代的过程中,插入或删除数据会怎样? 如果是 for 的话
  • int float short double long char 占字节数?
  • int 范围?float 范围?
  • hashcode 和 equals 的关系
  • 深拷贝、浅拷贝区别
  • Java 异常体系?RuntimeException Exception Error 的区别,举常见的例子
  • lambda 表达式中使用外部变量,为什么要 final?
  • Java中的 HashMap、TreeMap 解释下?
  • TreeMap 查询写入的时间复杂度多少? logn
  • ConcurrentHashMap 怎么实现线程安全的?
  • HashMap 多线程有什么问题?怎么解决?
  • CAS 和 synchronized 有什么区别?都用 synchronized 不行么?
  • 为什么重写 equals 方法时,要求必须重写hashCode方法?
  • 遍历 ArrayList 时候删除数据会发生什么
  • ArrayList 扩容机制
  • Java 定时任务实现原理:优先队列
  • Java 线程的几种状态
  • 线程阻塞状态是什么意思
  • 线程中断
  • 当一个线程进入一个对象的一个 synchronized 方法后,其它线程是否可进入此对象的其它方法?

MySQL

  • mysql 索引的数据结构,为什么用 B+ 树而不用 B 树
  • 解释 mysql 的聚簇索引和非聚簇索引
  • hash 索引
  • Mysql 深分页怎么优化,不能分表分区
  • mysql 里的聚簇索引和非聚簇索引,区别,使用主键索引和非主键索引查询时有什么区别
  • mysql 里的事务隔离级别,具体含义,分别解决了什么问题
  • 聚簇索引和聚簇促索引的区别
  • mysql 的存储引擎
  • innodb 和 myisam 的区别
  • 为什么 myisam 不支持事务
  • 为什么 myisam 不采用和 innodb 相同的方案来解决事务问题?
  • 为什么数据量大的时候会出现慢 sql
  • 慢 sql 如何解决 sql 优化
  • 分库分表如何做的
  • 分库分表如何做到不同库表间数据不重复
  • 数据库水平切分,垂直切分的设计思路和切分顺序
  • acid 含义?事务隔离级别?幻读怎么解决的?
  • 用过 mysql 的锁么?有哪些锁?
  • MyISAM、InnoDB 区别?为什么不用 MyISAM?
  • mvcc 原理?多版本数据存放在哪?
  • mysql 脏页?
  • redo log,undo log?
  • innodb 的索引结构是什么?什么是聚簇索引?
  • b+ 树与 b 树的区别?
  • b+ 树与二叉树区别,优点?为什么不用红黑树
  • 多列索引的结构
  • 字符串类型和数字类型索引的效率?数据类型隐式转换
  • 主键与普通索引的联系?存储上的区别?
  • join 和 in 怎么选择?有什么区别?
  • union 和 union all 有什么区别?怎么选择?
  • 怎么处理 sql 慢查询?
  • 索引用得不太正常怎么处理?同时有(a,b)和(a,c)的索引,查询 a 的时候,会选哪个索引?
  • 跨库分页的实现?
  • 分库分表有哪些策略?怎么保证 id 唯一?
  • 对 uuid 的理解?知道哪些 GUID、Random 算法
  • 主键选随机 id、uuid 还是自增 id?为什么?主键有序无序对数据库的影响?
  • 主从复制的过程?复制原理?怎么保证强一致性?

Kafka

  • Kafka 里边有几种基本角色,每个角色具体职责是什么
  • Kafka 里怎么保证高可用性
  • Kafka 里的 rebalance 是怎么回事,怎么触发
  • 用 Kafka 做了什么功能?
  • Kafka 内部原理?工作流程?
  • Kafka 怎么保证数据可靠性?
  • 怎么实现 Exactly-Once ?
  • Kafka 选主怎么做的?
  • Kafka 与 rabbitmq区别
  • Kafka 分区怎么同步的
  • Kafka 怎么保证不丢消息的
  • Kafka 为什么可以扛住这么高的qps

Redis

  • Redis 的持久化储存有哪几种,各自的特点
  • 如果 Redis 崩溃,rdb 和 aof 选用那种进行恢复,为什么
  • Redis 怎么做分布式锁,有几种方法,Redis 作为分布式锁有什么优势
  • Redis 里的事务,与 mysql 事务的区别
  • Redis 的 ziplist 数据结构,越详细越好
  • Redis 复制的过程越详细越好
  • Redis 常用数据结构
  • zset 的数据结构
  • zset 中插入一个元素的时间复杂度
  • Redis 如何保证高可用?
  • 什么是 Redis 的哨兵模式?
  • Redis 主备切换过程是怎样的?
  • Redis 数据结构、对象,使用场景
  • Redis 内存淘汰策略
  • 缓存的热点 Key 怎么处理?Redis 缓存穿透,怎么避免?
  • Redis keys 命令有什么缺点
  • 主从同步原理,新加从库的过程
  • RDB 和 AOF 怎么选择,什么场景使用?
  • Redis 的 zset 的使用场景?底层实现?为什么要用跳表?
  • 怎么实现 Redis 分布式锁?
  • Redis 4.0 有什么新特性?
  • Redis 的过期时间
  • Redis 的 lru 策略

Spring

  • 讲一下 IOC、AOP
  • ioc 怎么防止循环依赖
  • aop 的实现原理、动态代理过程
  • spring boot starter 自加载是怎么实现的?在生命周期哪个阶段?
  • Spring 处理请求的过程?
  • SpringMVC 不同用户登录的信息怎么保证线程安全的?

操作系统

  • select,poll,epoll,epoll 的优势
  • 进程和线程的区别,linux 切换进程线程时具体做了哪些操作,越详细越好
  • 协程了不了解,为什么轻量级,对比进程线程讲一讲

算法题

  • 算法】一棵树,求最大同源路径
  • 算法】数组中右边第一个比他大元素(时间复杂度O(N))
  • 算法】快速排序  o(nlogn)
  • 算法】LRU 缓存变形题(带有过期时间的lru缓存)
  • 算法】栈的所有可能弹出序列
  • 算法】三数之和,如果是四数之和如何做
  • 【设计题】微信抢红包架构设计
  • 算法】二分法
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值