总结面试相关试题,参考 https://gitee.com/crossoverJie/Java-Interview
Redis参考: 分布式Redis复习精讲 https://www.cnblogs.com/rjzheng/p/9096228.html
- Java基础
- Java的8个基本类型
- 拆箱、装箱
- 是否可以继承String类,为什么设置为final类
- switch可用哪些类型
- 抽象类和接口的不同
- static方法是否可以调用非static方法,为什么?
- 什么是值传递、引用传递。
- List的排序,实现Comparator 接口,需要注意什么 :自反性、传递性、对等性。
- 常见的异常类、如何实现自定义异常,项目中的异常处理。
- 常用的集合类 Set、List、Queue 接口,ArrayList、HashMap、HashSet、HashTable 内部实现,遍历HashMap方法。
- Java多线程
-
线程、进程有什么区别
-
如何实现多线程、有什么区别、什么是守护线程、怎么设置线程为守护线程
-
2个线程,怎么让一个线程运行结束后,开始另一个线程
-
线程的几个状态,画出线程的状态流程图
-
线程池,怎么创建一个线程池,线程池的大小怎么设置(计算型、IO 型)
-
什么是线程安全、如何保证线程安全、synchronized关键字、同步方法和同步块的区别、什么是死锁、死锁发生的条件
-
Lock锁、ReadWriteLock读写锁、Reentrant可重入锁、内部实现原理:Volitate state ,CAS,默认都是非公平锁。
-
CurrentHashMap原理,分段加重入锁。
-
生产者、消费者模型,BlockingQueue阻塞队列,ArrayListBlockingQueue 和 LinkedBlockingQueue 区别。
-
JUC包中的常用的Atomic类,IntegerAtomic、BooleanAtomic、ReferenceAtomic
-
- JVM相关
- Java内存模型(堆区、方法区、虚拟机栈、本地方法栈、程序计数器)
- volitate关键字作用
- GC常用算法、垃圾回收器( Serial 、ParNew 、Parallel Scavenge 、Serial Old 、Parallel old 、CMS 、G1 ),常用纳哪些,cms 收集器的流程 (初始标记、并发标记、并发预清理、重新标记、并发清除、并发重置)
- 类的ClassLoader机制、双亲加载模型流程,为什么这么设计?有什么好处,什么场景破坏了双亲加载模型(jdk<1.2、JNDI服务、OSGI 动态加载)
- 类加载流程 加载(本地、网络) -> 链接 ( 验证、准备、解析) -> 初始化 -> 使用 -> 释放
- DB相关
- 常用的函数
- 基本查询优化
- MySQL索引,最左匹配、BTree索引、Hash索引、覆盖索引
- 数据库的隔离级别
- MySQL事物提交流程
- MySQL的常用存储引擎、不同引擎的适用场景和区别。
- 分库分表分区、主从复制。
- Redis 常用的5中类型 String、列表List、集合Set、有序集合zset、字典Hash
- Redis 高性能原因:纯内存操作、单线程操作,避免了频繁的上下文切换、非阻塞I/O多路复用机制
- Redis和数据库的双写保持一致性
- Redis 如何防止雪崩(随机过期时间)、缓存穿透(value = null)、Redis如何实现分布式锁
- Redis的定期删除 + 惰性删除、缓存淘汰机制
- Redis的持久化 AOF(Append-only file)、RDB(Fork子线程进行数据写入) 两种方式区别,优缺点
- Redis主从复制,哨兵机制
- 设计模式
- 单例模式(7种实现方式)、双重检测
- 模板方法
- 代理模式 proxy
- Deletegate委派模式
- prototype 原型模式
- Factory 工厂模式
- 源码相关
- spring 注入的几种方式
- spring bean 注入的几种方式、初始化流程、如何处理注入依赖。Resource处理
- springMVC 的流程,DispatcherServlet -> HandlerMapper -> Handler -> HandlerExecutionChain -> HandlerMethod
- 服务器相关
- Linux如何配置多Tomcat实例、Tomcat日志搜索
- Linux epoll模型
- Linux 查看磁盘使用情况 、查看资源使用情况 df -h、top -h
- 如何查看 ulimit -a 、修改文件句柄数 ulimit -n 2048 或者/etc/security/limits.conf
- Nginx如何配置负载均衡、动态代理、常用的负载均衡的策略
- 分布式相关
- SOA和微服务的区别、
- session共享、唯一ID
- RPC原理,手动实现RPC框架,服务注册、服务发现、服务监控
- kafka、RocketMQ如何保证消息发送、消费,顺序、重复,事物消息。
- zookeeper、elasticsearch、canal。
- 分布式事物 :TA两阶段提交 、TCC方案、基于消息的最终一致性。
- 数据结构与算法
- 冒泡算法
- 二分法
- 树、红黑树
- 业务场景设计和分析
- 设计100W PV的系统,CDN、LVS、Nginx、Redis、DB
- 设计秒杀系统,保证商品不被超卖
- 大文件排序