本文收集整理在面试过程中容易出现的高频问题,并且给出了参考的答题方案。每部分的答案在段开头的链接中可以找到。如果有任何意见或者建议,可以在评论区中进行交流。
文章目录
1.JAVA语言
该部分答案参考博客 java基础面试题
1.1基础篇
1. JDK 和 JRE 有什么区别?
2.Java基本数据类型(八种)
3.== 和 equals 的区别是什么?
4. 两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?
5.java中的String,StringBuilder,StringBuffer的区别 ?
6.普通类和抽象类有哪些区别?
7.String 类的常用方法都有那些?
8.int和Integer有什么区别?
9.final 在 java 中有什么作用?
10. 什么是序列化和反序列化?
11. 接口和类的相同点和不同点?
12.接口和抽象类的区别?
1.2JVM篇
1.简述JVM内存模型?
2. JAVA 的类加载机制是怎么样的?
3.JVM内存为什么要分成新生代,老年代,持久代。新生代中为什么要分为Eden和Survivor
4.为什么要分为Eden和Survivor?为什么要设置两个Survivor区?
5.JVM中一次完整的GC流程是怎样的,对象如何晋升到老年代
6.你知道哪几种垃圾收集器,各自的优缺点,重点讲下cms和G1,包括原理,流程,优缺点。
7.说说你知道的几种主要的JVM参数
8.jvm的常用命令jps jinfo jstat jstack jmap jhat
1.3 容器篇
1.java中的容器都有哪些?
2.Java 集合框架的基础接口有哪些?
3.Collection 和 Collections 有什么区别?
4.HashMap 和 Hashtable 有什么区别?
5.如何决定使用 HashMap 还是 TreeMap?
6.说一下 HashMap 的实现原理?
7.hashmap put的流程?
8.HashMap中确定数组位置为什么要用hash进行扰动?(Hash为什么要右移16位异或)
9.使用hashmap时候什么时候需要重写hashcode和equals方法?
10.ConcurrentHashMap的实现,1.7和1.8的区别;
11.说一下 HashSet 的实现原理?
12.ArrayList 和 LinkedList 的区别是什么?
13.Iterator 怎么使用?有什么特点?
1.4 多线程
1.创建线程有哪几种方式?
2.线程有哪些状态?
3.sleep() 和 wait() 有什么区别?
4. notify()和 notifyAll()有什么区别?
5. 线程的 run()和 start()有什么区别?
6. 创建线程池有哪几种方式?
7.CAS 原理及其优缺点
8.volatile与synchronize的区别是什么?
9.ReentrantLock和Synchronized的区别和原理
10.AQS 的原理
11.ThreadLocal是什么?
12.ThreadPoolExecutor 有哪些参数?
13.ThreadPoolExecutor有哪些拒绝策略?
1.5 反射
1. 什么是反射?
1.6 异常
1.try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?
2.throw 和 throws 的区别?
3. final、finally、finalize 有什么区别?
1.7 Java Web
1.jsp 和 servlet 有什么区别?
2. Servlet生命周期
3.Servlet 中 doGet与doPost方法的两个参数是什么
4、Servlet API中forward() 与redirect()的区别?
5.spring IOC 和 DI 怎么理解?
6.spring AOP 怎么理解?
7.spring @autowired 和@resource区别是什么?
8. @RequestMapping 的作用是什么?
9.mybatis常用标签有哪些?
10.springboot的优点是什么?
2.数据结构
该部分答案参考博客数据结构与算法面试题
2.1 存储与查找
1.红黑树的原理?插入和删除是怎么进行的。(插入相对简单一些,删除比较复杂)
2.2排序算法篇
快速排序、堆排序和归并排序重点记忆。
1.快速排序算法的思想并给出常见的优化方式(高频面试题目)
2.堆排序算法的思想并写出堆排序的代码
3.讲述归并排序算法的思想和手写代码
4.手写简单选择排序及其思想
5.直接插入排序算法
6.希尔排序的思想是什么?手写代码
7.冒泡排序法的思想?手写代码
8.计数排序的思想?
3.数据库
该部分答案参考数据库基础面试题
3.1 数据库原理篇
1.数据库的隔离等级(高频面试题目)
2.数据库死锁及解决办法?
3.MySQL的默认隔离级别,会产生什么问题?
4.mysql主从复制是怎样的?
5.数据库的聚集索引和非聚集索引的区别?
6.如何减少回表查询?
7、mysql联合索引最左匹配原则
3.2 SQL 语句篇
1.SQL 语句group by的用法是怎样的?
2.left join,right join,inner join,full join之间的区别
3.数据库行转列,列转行怎么操作?
4.SQL优化的方法?
3.3 redis memcache篇
1.redis 的基本数据类型有哪些?
2.redis为什么是单线程及为什么快?
3 Redis如何实现分布式锁?
3.4 elasticsearch 篇
4.计算机网络
该部分答案参考博客 计算机网络基础面试题
1.Http和Https的区别
2.对称加密与非对称加密
3.对称加密与非对称加密
4、为什么TCP链接需要三次握手,两次不可以么,为什么?
5、TCP协议如何来保证传输的可靠性
6、客户端不断进行请求链接会怎样?DDos(Distributed Denial of Service)攻击?
7、Get与POST的区别
8、TCP与UDP的区别
9、TCP的拥塞处理
10、从输入网址到获得页面的过程
11. session 和 cookie 有什么区别?
12. 说一下 session 的工作原理?
13. 如果客户端禁止 cookie 能实现 session 还能用吗?
14.Time-wait状态存在的用处,怎么避免Time-wait?
5.操作系统
该部分答案参考博客 操作系统基础面试题
1.内存中的分段和分页怎么理解?(简述)
2.什么是死锁?产生条件?如何避免死锁?
6.设计模式
该部分答案参考博客 设计模式基础面试题
6.1 创建型模式
1.单例模式的9种实现方式和优缺点
2.简单工厂、工厂方法和抽象工厂方法的区别?
3.建造者模式
4 原型模式
6.2 结构型模式
1 适配器模式
2 桥接模式
3装饰模式
4 组合模式
5 外观模式
6 享元模式
7 代理模式
6.3 行为型模式
3.1观察者模式
3.2中介者模式
3.3 状态模式
3.4解释器模式
3.5.策略模式
3.6.职责链模式
3.7 访问者模式
3.8迭代器模式
3.9 命令模式
3.10备忘录模式
3.11 模板方法
7.中间件
该部分答案参考博客中间件基础面试题
7.1RabbitMQ
1.rabbitmq 的使用场景有哪些?
2.rabbitmq 有哪些重要的角色?
3.rabbitmq 有哪些重要的组件?
4.rabbitmq 中 vhost 的作用是什么?
5.rabbitmq 的消息是怎么发送的?
6.rabbitmq 怎么保证消息的稳定性?
7.rabbitmq 怎么避免消息丢失?
8.要保证消息持久化成功的条件有哪些?
9.rabbitmq 持久化有什么缺点?
10.rabbitmq 有几种广播类型?
11.rabbitmq 怎么实现延迟消息队列?
12.rabbitmq 集群有什么用?
13.rabbitmq 节点的类型有哪些?
14.rabbitmq 集群搭建需要注意哪些问题?
15.rabbitmq 每个节点是其他节点的完整拷贝吗?为什么?
16.rabbitmq 集群中唯一一个磁盘节点崩溃了会发生什么情况?
17.rabbitmq 对集群节点停止顺序有要求吗?
7.2 Kafka
1.kafka 可以脱离 zookeeper 单独使用吗?为什么?
2.kafka 有几种数据保留的策略?
3.kafka 同时设置了 7 天和 10G 清除数据,到第五天的时候消息达到了 10G,这个时候 kafka 将如何处理?
4.什么情况会导致 kafka 运行变慢?
5.使用 kafka 集群需要注意什么?
7.3 Zookeeper
1.zookeeper 是什么?
2.zookeeper 都有哪些功能?
3.zookeeper 有几种部署模式?
4.zookeeper 怎么保证主从节点的状态同步?
5.集群中为什么要有主节点?
6.集群中有 3 台服务器,其中一个节点宕机,这个时候 zookeeper 还可以使用吗?
7.说一下 zookeeper 的通知机制?
8.zookeeper是怎么去实现分布式锁?
8.大数据
该部分答案参考博客大数据基础面试题
9.安全
该部分答案参考博客安全基础面试题
1.DDos 攻击是什么?怎么预防
2、如何区分上传的图片是不是木马?