看了一些牛客网上的Java开发面经,整理了一些常见常考的面试题,希望帮助到有需要的朋友。由于不是科班出身,个人只是学到了很基础的知识,后续依据面试经历会添加一些深入的问题。
大家在面试前可以看着问题,自己回答一遍,防止在面试时心里明白但是说不出来…(个人经验)
IO部分:
NIO 与IO
多线程部分:
synchronized锁与reerentlock锁。
synchronized锁的优化:偏向锁、自旋锁、轻量级锁、重量级锁。以及锁升级的过程。
进程与线程的区别,
创建线程的三种方法。
线程池原理,线程池中重要的参数。
线程池的饱和策略。
共享锁与排他锁。公平锁与非公平锁。
线程的几种状态。
Sleep与wait的区别。
volatile与synchronized的内存语义。
Lock与synchroized区别。
AQS。
阻塞队列有哪些。
Notify与notifyAll的区别。
共享锁有哪几种。
死锁。
如何避免死锁。
Java基础部分:
==与equals的区别。
final、finally与finalize的区别
重写与重载的区别。
接口与抽象类的区别
如何理解面向对象。
什么是动态代理
两种动态代理的区别。
Static关键字。
JDK1.8新特性
多态。
Java容器部分:
linkedlst与arraylist区别
Hashmap的底层结构
Hashmap容量为什么是2的幂次方
为什么选择8作为阈值
如何避免与解决hash冲突
Hashmap的put方法
那些集合是线程安全的
Concurrenthashmap与hashtable区别
Concurrnethashmap 1.7与1.8区别
Linkedhashmap底层与原理
Hashtable与hashmap的区别。
Concurrenthashmap的put方法的逻辑
Java虚拟机部分:
虚拟机内存模型
垃圾回收算法有哪些。
什么时候会发生full GC
怎样判断一个对象是否可以回收
四个引用类型。
垃圾收集器知道哪些。
说说CMS垃圾收集流程。
说说G1垃圾收集流程
什么是空间分配担保机制
类加载过程。
什么是双亲委派模型。优点。
堆溢出与栈溢出的程序。
Class.forName与classloader的区别
Java语言里,可作为GC Roots的对象有哪些。
mysql部分:
Btree 与B+tree区别
为什么选择B+tree.
存储引擎有哪些。区别
Mysql如何优化。
索引有哪些。
索引的优化方法
Mysql锁机制有哪些。
Innodb行级锁 锁的是什么。
三大范式。
数据库与缓存一致性
Mysql慢查询
什么是事务。事务特征
事物的隔离级别有哪些。Mysql默认的隔离级别是什么
并发一致性问题有哪些。
MVCC
MVCC中如何防止幻读
Redis部分:
为什么redis快。
持久化机制有哪些。区别
架构有哪些。说说各自原理。
什么是缓存击穿
什么是缓存穿透
Redis支持的数据类型,以及应用场景。
Redis底层数据结构
Hash一致性算法
Redis分布式锁如何实现
Redis如何做消息队列
SSM部分:
spring IOC与AOP
Springmvc流程
Spring用到了哪些设计模式。说说原理
什么是 sql注入
Mbatis如何防止sql注入
Mybatis一级缓存与二级缓存
计算机网络部分:
tcp三次握手,为什么是三次,两次为什么不行。
四次挥手。
为什么需要time-wait状态。
UDP与tcp区别
Get与post区别
http与https区别
Url输入网址到显示网页经历了哪些过程。
常见的状态码。
Cookie与session区别。
Tcp如何实现可靠传输(滑动窗口)
2021年Java后台开发必会面试题
最新推荐文章于 2022-08-01 10:49:21 发布