java面试题总结
经过历时两周,二十多家面试,终于有了一份比较满意的offer,面试还是挺能增长知识的,每次不管你准备了多少,总是有问题难到你的,基于此尽量回忆下,留作日后再看.
1,集合类面试题
arraylist和linkedlist的区别?底层实现?手写实现?线程安全吗以及原因?
hashmap的底层实现?put()执行过程?put null时的执行过程?
hashmap为什么不是线程安全的?发生碰撞的时候怎么处理?
concurrenthashmap的底层实现?是如何实现分段锁的?
linkedhashmap的底层实现?如何用linkedhashmap实现LRU算法?
hashtable与hashmap的对比?hashset是怎么实现的?
2,线程类问题
创建线程的方式?线程与进程的区别?进程间的通信方式,线程间的通信方式?
多线程并发时造成不安全的原因?解决方式有几种?
什么是线程池?创建线程池的方式?你常用的是哪种?参数的意思?
synchronized与lock的区别与实现原理?
threadlocal的用法以及原理?
sleep()与wait()的区别?
悲观锁与乐观锁的区别?
手写死锁,生产者与消费者问题?
3,IO流问题/NIO问题
你所接触的流有几种类型?
字符流与字节流的区别?以及流之间的关系?用到了哪种设计模式?
如何删除一个文件夹下面的所有文件?如何完成一个文件的复制?
什么是序列化?如何实现序列化?
如何理解NIO?NIO的核心部分有哪些?你项目中是怎么使用NIO的?
4,基础知识类问题
java语言的特点?你对面向对象的理解?
java为什么是单继承的,多继承有什么坏处?何时用类,何时使用接口?
接口和抽象类的区别?接口的修饰符有哪些?java8中只有一个方法的接口叫什么?
Integer i = 100;与Integer i1 = new Integer(100);的区别? i==i1??
重写与重载的区别?重写时的注意事项?
内部类和静态内部类的区别?
string和stringbuffer的区别?
重写equals()与hashcode()的重要性?
常见的类加载器有几种?什么是双亲委派机制?toncat的类加载机制?自定义类加载器的注意事项?
5,jvm和gc相关问题
jvm的结构?gc的结构?你所了解的gc算法?
gc的s0到s1是怎么进升的?
jvm中主要参数的含义?调整后会有什么影响?
说一说你所遇到过的jvm和gc相关的异常与你的解决方式(至少两个)?
6,spring/springMVC相关问题
spring IOC和DI的区别?AOP的实现原理?以及在你项目中是怎么用的?
spring bean的生命周期?bean的作用域?
springMVC的原理?
servlet的生命周期?servlet与jsp的区别?
spring中运用到的设计模式?spring中怎么进行广播通知?spring对事物的处理?
7,mysql相关问题
事物怎么理解?事物的特性有哪些?
你项目中用到的索引是哪种?原理是什么?以及索引的分类?
哪些操作会导致索引失效?以及解释最左前缀?
如何查看sql语句中有无用到索引?
bean中的属性名与数据库中的字段不一致时怎么解决?
主键与外键是什么?分别怎么使用?
mysql的事物隔离级别?你项目中使用的是哪种?如何查看?
关于sql语句的优化方案?以及mysql的冷热数据处理?
什么是存储过程?什么是执行计划?什么是触发器?
mysql相关的分库分表?读写分离?主从复制?以及结构相关的优化?
8,中间件相关问题(redis,rocketMQ,kafak)
redis与memcached的区别?以及使用的场景?
redis为什么是单线程的?redis怎么处理并发操作?
mq与kafka有什么区别?各适用场景为?
未完待续...
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?