2021年Java后台开发必会面试题

看了一些牛客网上的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如何实现可靠传输(滑动窗口)​​​

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值