0. 前言
以下面试题全为实际遇到的面试题,坐标广州,定位中级Java开发,匹配薪资在12K~14K.各位小伙伴可以看看自己的水平如何,是否可以拿稳这个薪资.
1. Java 基础
虽然是基础,但是平时一直在面向框架编程,基础也不一定记得那么牢靠,面试前也好好复习一下吧.
- Java有几种基本数据类型,各占多少个字节,其取值范围如何?
- JDBC连接过程?
- 谈谈你对Java集合类的理解,常用的有哪些?
- 谈谈HashMap底层原理?为什么用红黑树?
- 谈谈ConcurrentHashMap底层原理,靠什么保证线程安全?
- 谈谈String,StringBuilder和StringBuffer的区别?哪个性能最好?StringBuffer是怎么保证线程安全的?
- 谈谈你对BIO,NIO和AIO的理解?有没有用过netty?
- Java是值传递还是引用传递?参数为对象时,是值传递还是引用传递?
- JDK线程池参数有哪些?各有什么作用?
10.JDK 1.8新特性有哪些? - JDK动态代理如何应用?
- 乐观锁和悲观锁?CAS是什么?
2. Spring框架面试题
Spring框架一直是面试热点,面试前必须好好整理一下.
- 谈谈对Spring两大核心(IOC和AOP)的理解?AOP的底层是什么?动态代理有哪几种?各用于什么场景?
- Spring是如何解决循环依赖问题的?
- Spring单例如何保证线程安全?
- Spring中bean的生命周期是什么?项目中对此有何应用?
- @Trasactional什么场景下会失效?传播机制有哪些?隔离级别有哪些?
- Spring自动注入有哪些方式?其原理是什么?
- Springboot和Spring的区别?
- Springboot如何实现自动化配置?
- Springcloud用过哪些组件?
- 微服务之间的调用是否会经过网关?
- SpringMVC源码解析?
3. 数据库面试题
数据库几乎是无法逃脱的,场场面试都有提及
- 索引包含哪些类型?用的最多的是哪个?
- 索引失效的场景有哪些?至少说出七种
- 索引的本质是什么?B-Tree与Hash的区别?为什么要用B+树?
- 平时做过哪些sql优化?
- 主从复制、读写分离怎么实现?
- delect和truncate的区别?truncate删除数据之后,自增列是从哪里开始?
- 谈谈数据库三大范式?
- 谈谈数据库关联的类型和特点?
- UNION和UNION ALL的区别?
- ON后面过滤和WHERE后面过滤的区别?哪个数据会更多一些?
- 数据库行锁和表锁?乐观锁还是悲观锁?
- 数据库事务怎么开启?涉及哪些命令?
- 数据库事务隔离级别以及各自的问题?
- 数据库导入导出数据的命令?
- 常见SQL的编写,尤其是报表类的Sql,常见的函数(时间和字符串函数)也要牢记
4. 设计模式
- 单例有哪些写法?枚举为什么可以保证单例?
- 双重校验锁的逻辑?为什么要这样写?
- 项目中用过哪些设计模式?举例说明.
5.中间件
- redis单线程如何处理并发请求?
- redis内存的淘汰策略有哪些?
- redis除了做缓存还是做什么?(这个我也不清楚他想问什么)
- redis怎么实现分布式锁?redission的分布式锁有没有什么问题?
6. 计算机基础
- TCP三次握手和四次挥手的过程?为什么?
- TCP和UDP的区别?TCP如何保证可靠性?
- 七层协议是哪些?
- websocket的原理是什么?
- Session、token和Cookie的区别?
- 白板编程: 递归函数的写法
7. Mybatis源码
- Mapper为什么只定义接口就可以执行?
- Mapper里面的方法是否可以重载?为什么?
8. 前端基础
- javascript的特点有哪些?
- 描述一下请求和响应的过程
9. 非技术问题
- 谈谈印象最深的bug,你是如何解决的?
- 谈谈你最有成绩感的事
10. 尾声
经过大大小小不下10场面试,得出来一个结论: Java的面试八股文是很有必要去背一背的!!! 哪怕你业务能力再强,答不好这些题一样会被认为是技术不行.背一背百利而无一害,何乐而不为呢?