《java面试》总目录

一、集合框架
arraylist扩容过程,与linkedlist区别
concurrenthashmap怎么做的数据重整rehash
currenthashmap怎么count过程,除了最简单的加锁
hashtable跟hashmap数据结构的不同
hashmap的get过程?
hashmap的get方法的过程,比如冲突时先比较hashcode,再比较equals方法
arraylist和linkedlist区别,问的特别细,还有自己定义一个linkedlist
hashmap原理
HashMap 红黑树
ArraryList LinkedList
常见集合原理
hashmap和concurrenthashmap的内部实现
arraylist和linkedlist的内部实现
HashMap内部的数据结构是什么?底层是怎么实现的?(还可能会延伸考察ConcurrentHashMap与HashMap、HashTable等,考察对技术细节的深入了解程度)
List 和 Map 区别,Arraylist 与 LinkedList 区别,ArrayList 与 Vector 区别
linkedlist arraylist数据结构
map数据结构
hashmap为什么不是线程安全的,get方法怎么做的
HashMap的源码,实现原理,底层结构
同步的数据结构,例如 concurrentHashMap 的源码理解以及内部实现原理,为什么他是同步的且效率高

二、多线程
java的synchronized加在静态方法和动态方法的区别?
synchronized底层实现原理和过程?并与reentrantlock区别?
设计线程池怎么跑大数据批任务,思路和流程
线程池队列如何设置多长
除了volite还有什么方法保证数据一致性
手写死锁的代码
核心线程是线程初始化就会创建出来??
threadLocal线程安全原理,步骤
静态方法跟非静态方法的锁区别
java线程间怎么通信的,多线程内存状态
wait(10)代表什么?
NIO的同步非阻塞模型
java多线程的异步调用,比如a方法调动b方法的异步返回结果怎么获取的?
多线程,线程池
viotile用法与原理
多线程volatile
进程,线程区别
线程安全
Java并发和一些锁
多线程,线程池
线程池的原理,为什么要创建线程池?创建线程池的方式
线程的生命周期,什么时候会出现僵死进程;
说说线程安全问题,什么实现线程安全,如何实现线程安全;
创建线程池有哪几个核心参数? 如何合理配置线程池的大小?
volatile、ThreadLocal的使用场景和原理;
ThreadLocal什么时候会出现OOM的情况?为什么?
synchronized、volatile区别、synchronized锁粒度、模拟死锁场景、原子性与可见性;
线程安全,voliate关键字,syconize关键字
lock锁,syconize关键字在数据库索引的使用
线程间通信,wait和notify
atomicinteger 和volatile等线程安全操作的关键字的理解和使用
Java创建线程后,直接调用start()方法和run()的区别
常用的线程池模式以及丌同线程池的使用场景
newFixedThreadPool此种线程池如果线程数达到最大值后会怎举办,底层原理。
多线程间通信的同步问题,synchronized锁的是对象,衍伸出和synchronized相关很多的具体问题,例如同一个类同方法都有 synchronized 锁,一个对象是否可以同时访问。或者一个类的 static 构造方法加上synchronized后的锁的影响。
了解可重入锁的含义,以及ReentrantLock 和synchronized的区别

三、网络编程
1.http是无状态通信,http的请求方式有哪些,可以自己定丿新的请求方式举。
2.socket通信,以及长连接,分包,连接异常断开的处理。
3.socket通信模垄的使用,AIO和NIO。
4.socket框架 netty的使用,以及NIO的实现原理,为什举是异步非阻塞。
5.同步和异步,阻塞和非阻塞。
tcp为什么比http效率高
浏览器内部拒绝跨域访问的原理是啥
tcp三次握手,四次挥手
还有cookie和前端的跨域问题
session机制
http报文格式
Socket和webService的区别
http与https https加密算法
域名解析
1.http是无状态通信,http的请求方式有哪些,可以自己定丿新的请求方式举。
2.socket通信,以及长连接,分包,连接异常断开的处理。
3.socket通信模垄的使用,AIO和NIO。
4.socket框架 netty的使用,以及NIO的实现原理,为什举是异步非阻塞。
5.同步和异步,阻塞和非阻塞。

四、Mybatis
mybatis的#跟$区别
Mybatis原理
mybatis 使用
mybatis和hibernete的区别

五、Spring
spring mvc用到了那些设计模式,过程?
aspect注解原理,跟aop怎么配合?
ioc实现原理和过程
spring的bean是什么时候创建好的?
spring路由查找通过什么模块?
Ioc自己实现的话,怎么做
Dubbo怎么实现服务注册发现,负载均衡原理,怎么服务降级
spring ioc的创建过程?
Spring的特性和实现特性用到的原理
springcloud bus的原理。
Spring Filter实现机制
为什么用Spring Boot
Spring Security 改造
过滤器和拦截器
spring源码
spring内部细节
springcloud的组件了解多少
Ribbon的负载均衡是怎么做的
网关除了做网关,还做别的工作吗
网关的路由是怎么做的
商品的数据是怎么加载到data里面的
搜索的匹配度
Spring AOP的实现原理和场景
Spring bean的作用域和生命周期
Spring Boot比Spring做了哪些改进? Spring 5比Spring4做了哪些改进;
如何自定义一个Spring Boot Starter?
Spring IOC是什么?优点是什么?
SpringMVC、动态代理、反射、AOP原理、事务隔离级别;
Spring Cloud熔断机制介绍;
Spring Cloud对比下Dubbo,什么场景下该使用Spring Cloud?
spring框架中需要引用哪些jar包,以及这些jar包的用途
srpingMVC的原理
springMVC注解的意思
spring中beanFactory和ApplicationContext的联系和区别
spring注入的几种方式
spring如何实现事物管理的
springIOC和AOP的原理
spring中循环注入的方式
Spring AOP不IOC的实现原理
Spring的beanFactory和factoryBean的区别
Spring的事务隔离级别,实现原理
对 Spring 的理解,非单例注入的原理?它的生命周期?循环注入的原理,aop 的实现原理,说说 aop 中
的几个术语,它们是怎举相互工作的?
spring boot特性,优势,适用场景等

六、关系型数据库
数据库的4种事务隔离级别和实际场景?
对于高并发场景,如何保证数据库的一致性?(乐观锁)
3个表,学生表,课程表,学生课程表,查询选了两门以上课程的学生名?
B树索引效率快,原理,直接让我画图,跟hash索引的原理对比。hash算法跟一致性hash区别?
组合索引怎么解决要查询一定范围的sql
mysql事务隔离级别
工作中怎么解决java死锁和数据库死锁?
数据库的4种事务隔离级别和实际场景?
数据库索引,隔离级别
数据库引擎MyIsm和Inoodb引擎的区别
sql隔离级别,inner join left Join
MySql数据库引擎,调优与监测
简述数据库的三个范式
数据库事物
搜索是搜素一个字段还是几个字段,怎么做的
查看mysql的锁用什么命令
mysql索引、mysql锁机制
锁机制介绍:行锁、表锁、排他锁、共享锁;
乐观锁的业务场景及实现方式;
事务介绍,分布式事物的理解,常见的解决方案有哪些,什么事两阶段提交、三阶段提交;
MySQL记录binlog的方式主要包括三种模式?每种模式的优缺点是什么?
MySQL锁,悲观锁、乐观锁、排它锁、共享锁、表级锁、行级锁;
分布式事务的原理2阶段提交,同步\异步\阻塞\非阻塞;
数据库事务隔离级别,MySQL默认的隔离级别、Spring如何实现事务、
JDBC如何实现事务、嵌套事务实现、分布式事务实现;
SQL的整个解析、执行过程原理、SQL行转列;
索引数据结构及主要作用
MySQL优化查询步骤
分库分表的hash多维度算法,比如上海,日期,高级用户等查找库
主备读写分离情况下如何做到消息的及时性
1.MySql的存储引擎的丌同
2.单个索引、联合索引、主键索引
3.Mysql怎举分表,以及分表后如果想按条件分页查询怎举办(如果丌是按分表字段来查询的话,几乎效率
低下,无解)
4.分表后想让一个id多个表是自增的,效率实现
5.MySql的主从实时备份同步的配置,以及原理(从库读主库的binlog),读写分离
6.事物的四个特性,以及各自的特点(原子、隔离)等等,项目怎举解决这些问题

七、JVM
java内存模型和优化有做过哪些?
jdk 1.8 G1垃圾收集算法的改进?
gcroot什么算法知道对象要被回收
双亲委派模型,动态代理原理
堆跟栈的区别
cglib动态代理的流程图
java内存调优怎么做的,垃圾回收算法的优缺点
linux内存模型,和java内存模型
java栈主要存什么内容,相比堆有什么优势
JVM虚拟机,java内存模型
java内存模型和优化有做过哪些?
java虚拟机与gc原理
3种动态代理
栈实现队列
数据结构最大堆
GC、jvm
jvm
jdk也问的比较细
java的内存模型
分代回收的策略模型
JVM内存模型,GC机制和原理;
GC分哪两种,Minor GC 和Full GC有什么区别?什么时候会触发Full GC?分别采用什么算法?
JVM里的有几种classloader,为什么会有多种?
什么是双亲委派机制?介绍一些运作过程,双亲委派模型的好处;
什么情况下我们需要破坏双亲委派模型;
常见的JVM调优方法有哪些?可以具体到调整哪个参数,调成什么值?
JVM虚拟机内存划分、类加载器、垃圾收集算法、垃圾收集器、class文件结构是如何解析的;
代理,动态代理
.Java的内存模垄以及GC算法

八、设计模式
单例模式的doublecheck
手写单例模式,double check模式
如何实现单例模式
.单例模式:饱汉、饿汉。以及饿汉中的延迟加载
工厂模式、装饰者模式、观察者模式等

九、Redis
redis的zset利用了lru算法
redis怎么查找where a >2 and a<5的
redis怎么防止消息穿透和雪崩
redis内存模型?
memcache跟redis的区别
redis使用
Redis为什么这么快?redis采用多线程会有哪些问题?
Redis支持哪几种数据结构;
Redis跳跃表的问题;
Redis单进程单线程的Redis如何能够高并发?
Redis如何使用Redis实现分布式锁?
Redis分布式锁操作的原子性,Redis内部是如何实现的?
redis的集群选举
为什举用缓存,用过哪些缓存,redis和memcache的区别
2.redis的数据结构
3.redis的持丽化方式,以及项目中用的哪种,为什举
4.redis集群的理解,怎举劢态增加或者删除一个节

十、Dubbo
dubbo服务注册和发现是怎么做的,原理?
dubbo可靠通信原理,tcp跟udp通信的原理和不同
dubbo自带的负载均衡是在生产者那边,还是消费者那边
dubbo怎么检测服务不在,并踢除,通过ping??
dubbo怎么做到的多个消费者同时请求一个生产者后,应答能回到原来消费者
dubbo注册发现原理
dubbo和springcloud的区别
dubbo的使用场景,消息同步的方法
Dubbo完整的一次调用链路介绍;
Dubbo支持几种负载均衡策略?
Dubbo Provider服务提供者要控制执行并发请求上限,具体怎么做?
Dubbo启动的时候支持几种配置方式?
了解几种消息中间件产品?各产品的优缺点介绍;
消息中间件如何保证消息的一致性和如何进行消息的重试机制?
dubbo是怎么做到生产消费线程安全的

十一、Zookeeper
zookeeper的高可用原理和选举算法?
服务提供者能实现失效踢出是什么原理?
服务失效踢出基于zookeeper的临时节点原理。
zookeeper的高可用原理和选举算法?
zookeeper内部的一些机制
zookeeper的选举

十二、kafka
Kafka读取快的原理,分区思想和一组一组读数据
Kafka怎么获取offset做到异常消息的回退
kafka的选举策略
消息发送失败如何处理
限流策略和方法

十三、分布式
nginx跟haproxy做负载均衡的区别
服务调用是阻塞的吗?默认是阻塞的,可以异步调用,没有返回值的可以这么做。
keepalive的vip怎么实现漂移的,原理是啥,心跳检测怎么做的,ping跟telnet原理差异?
分布式锁的实现,分布式事物,高并发如何减轻服务端的负载
服务节点之间的通讯,集群负载均衡,主动加载和被动加载区别和优劣势
分布式锁
OAUTH2 zuul 重定向
网关的路由是怎么做的

十四、java其他
object的创建树返回结果怎么获取的?
object的创建过程
类加载过程和双亲委派模型
什么是restful api,跟普通的api有什么区别
爬虫怎么做任务分发
有台节点内存溢出,怎么定位问题。整个过程
servelet内部实现原理
hashcode和equals过程?
重写equal为什么一定也要同时重写hashcode?
final类事务是怎样的
jsp和HTML区别
控制用户登录权限怎么实现
string与stringbuffer的区别
NIO是什么?适用于何种场景
Java9比Java8改进了什么
说说反射的用途及实现,反射是不是很慢,我们在项目中是否要避免使用反射
说说自定义注解的场景及实现
JAVA1.8的新特性
String类为什举是final的
反射中,Class.forName 和classloader的区别
session和cookie的区别和联系,session的生命周期,多个服务部署时session管理。
Java中的队列都有哪些,有什举区别
Java7、Java8的新特性
Java 数组和链表两种结构的操作效率,在哪些情冴下(从开头开始,从结尾开始,从中间开始),哪些操
作(插入,查找,删除)的效率高
Java内存泄露的问题调查定位:jmap,jstack的使用等等
同步,异步,阻塞,非阻塞区别,netty是属于那种?
NIO的同步非阻塞模型

十五、算法
爬楼梯算法
手写快排和冒泡
快速排序,
归并排序,冒泡排序
手写算法排序,数组合并,栈实现堆
加密算法
自己实现lru算法
红黑树的实现原理和应用场景
使用随机算法产生一个数,要求把1-1000W乀间这些数全部生成。(考察高效率,解决产生冲突的问题)
两个有序数组的合幵排序
一个数组的倒序
计算一个正整数的正平方根
说白了就是常见的那些查找排序算法
数组和链表数据结构描述,各自的时间复杂度
二叉树遍历
快速排序
BTree相关的操作
在工作中遇到过哪些设计模式,是如何应用的
hash算法的有哪几种,优缺点,使用场景
什举是一致性hash
paxos算法

十六、ES
es的定时删除过期数据计划,es的内嵌查询
Es的布尔查询关键字:should,must,must not

十七、k8s
k8s什么算法设置ip不重复?
k8s nodeport网络怎么流转出去,包怎么转出来的
k8s负载均衡算法怎么做的

十八、Linux

十九、MQ
一个rabbitmq集群的q和e单机有什么区别
mq主要组建及其作用,exchange作用
了解几种消息中间件产品?各产品的优缺点介绍?
消息中间件如何保证消息的一致性和如何进行消息的重试机制?
MQ持久化

二十、其他
简述自己的编码风格
网站的技术架构
代码的性能优化
电商的秒杀
看过哪些源代码?然后会根据你说的源码问一些细节的问题?(这里主要考察面试者是否对技术有钻研的精神,还是只停留在表面,还是背了几道面经,这个对于很多有强迫症的面试官,如果你连源码都没看过,基本上是会pass掉的!)
项目中遇到了哪些比较有挑战性的问题,是如何解决的。
你最突出的贡献是什么?你是怎么提高业务效率的?你是怎么自我驱动的?
技术选型的参考要点

一、Java 基础 1 1. JDK 和 JRE 有什么区别? 1 2. == 和 equals 的区别是什么? 1 3. 两个对象的 hashCode()相同,则 equals()也一定为 true,对吗? 3 4. final 在 java 中有什么作用? 4 5. java 中的 Math.round(-1.5) 等于多少? 4 6. String 属于基础的数据类型吗? 4 7. java 中操作字符串都有哪些类?它们之间有什么区别? 4 8. String str="i"与 String str=new String("i")一样吗? 5 9. 如何将字符串反转? 5 10. String 类的常用方法都有那些? 5 11. 抽象类必须要有抽象方法吗? 6 12. 普通类和抽象类有哪些区别? 6 13. 抽象类能使用 final 修饰吗? 6 14. 接口和抽象类有什么区别? 7 15. java 中 IO 流分为几种? 7 16. BIO、NIO、AIO 有什么区别? 7 17. Files的常用方法都有哪些? 8 二、容器 8 18. java 容器都有哪些? 8 19. Collection 和 Collections 有什么区别? 9 20. List、Set、Map 之间的区别是什么? 9 21. HashMap 和 Hashtable 有什么区别? 10 22. 如何决定使用 HashMap 还是 TreeMap? 10 23. 说一下 HashMap 的实现原理? 10 24. 说一下 HashSet 的实现原理? 11 25. ArrayList 和 LinkedList 的区别是什么? 11 26. 如何实现数组和 List 之间的转换? 11 27. ArrayList 和 Vector 的区别是什么? 11 28. Array 和 ArrayList 有何区别? 12 29. 在 Queue 中 poll()和 remove()有什么区别? 12 30. 哪些集合类是线程安全的? 12 31. 迭代器 Iterator 是什么? 12 32. Iterator 怎么使用?有什么特点? 12 33. Iterator 和 ListIterator 有什么区别? 13 三、多线程 13 35. 并行和并发有什么区别? 13 36. 线程和进程的区别? 14 37. 守护线程是什么? 14 38. 创建线程有哪几种方式? 14 39. 说一下 runnable 和 callable 有什么区别? 15 40. 线程有哪些状态? 15 41. sleep() 和 wait() 有什么区别? 16 42. notify()和 notifyAll()有什么区别? 16 43. 线程的 run()和 start()有什么区别? 16 44. 创建线程池有哪几种方式? 17 45. 线程池都有哪些状态? 18 46. 线程池中 submit()和 execute()方法有什么区别? 18 49. 什么是死锁? 19 50. 怎么防止死锁? 19 51. ThreadLocal 是什么?有哪些使用场景? 20 52.说一下 synchronized 底层实现原理? 20 53. synchronized 和 volatile 的区别是什么? 21 54. synchronized 和 Lock 有什么区别? 21 55. synchronized 和 ReentrantLock 区别是什么? 22 56. 说一下 atomic 的原理? 22 四、反射 23 57. 什么是反射? 23 58. 什么是 java 序列化?什么情况下需要序列化? 23 59. 动态代理是什么?有哪些应用? 23 60. 怎么实现动态代理? 24 五、对象拷贝 24 61. 为什么要使用克隆? 24 62. 如何实现对象克隆? 24 63. 深拷贝和浅拷贝区别是什么? 28 六、Java Web 28 64. jsp 和 servlet 有什么区别? 28 65. jsp 有哪些内置对象?作用分别是什么? 29 66. 说一下 jsp 的 4 种作用域? 29 67. session 和 cookie 有什么区别? 30 68. 说一下 session 的工作原理? 31 69. 如果客户端禁止 cookie 能实现 session 还能用吗? 31 70. spring mvc 和 struts 的区别是什么? 31 71. 如何避免 sql 注入? 33 72. 什么是 XSS 攻击,如何避免? 33 73. 什么是 CSRF 攻击,如何避免? 33 七、异常 35 74. throw 和 throws 的区别? 35 75. final、finally、finalize 有什么区别? 35 76. try-catch-finally 中哪个部分可以省略? 35 77. try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗? 36 78. 常见的异常类有哪些? 38 八、网络 39 79. http 响应码 301 和 302 代表的是什么?有什么区别? 39 80. forward 和 redirect 的区别? 39 81. 简述 tcp 和 udp的区别? 40 82. tcp 为什么要三次握手,两次不行吗?为什么? 40 84. OSI 的七层模型都有哪些? 42 85. get 和 post 请求有哪些区别? 42 86. 如何实现跨域? 43 87.说一下 JSONP 实现原理? 49 九、设计模式 49 88. 说一下你熟悉的设计模式? 49 89. 简单工厂和抽象工厂有什么区别? 49 十、Spring / Spring MVC 52 90. 为什么要使用 spring? 52 91. 解释一下什么是 aop? 53 92. 解释一下什么是 ioc? 54 93. spring 有哪些主要模块? 56 94. spring 常用的注入方式有哪些? 57 95. spring 中的 bean 是线程安全的吗? 57 96. spring 支持几种 bean 的作用域? 58 97. spring 自动装配 bean 有哪些方式? 59 98. spring 事务实现方式有哪些? 59 99. 说一下 spring 的事务隔离? 59 100. 说一下 spring mvc 运行流程? 60 101. spring mvc 有哪些组件? 61 102. @RequestMapping 的作用是什么? 62 103. @Autowired 的作用是什么? 62
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值