JAVA面试题大集

持续更新...虽然都大概知道啥回事,不过真TM记不住

一、Java基础和高级

1.String类为什么是final的。

在java中String类为什么要设计成final?​www.zhihu.com图标

2.HashMap的源码,实现原理,底层结构。

养兔子的大叔:流程图解HashMap​zhuanlan.zhihu.com图标

3.反射中,Class.forName和classloader的区别

反射中Class.forName()和ClassLoader.loadClass()的区别 - Jerry迎风 - 博客园​www.cnblogs.com图标

4.session和cookie的区别和联系,session的生命周期,多个服务部署时session管理。

session和cookie的区别和联系,session的生命周期,多个服务部署时session管理 - 稻香的专栏 - CSDN博客​blog.csdn.net图标微服务架构下的分布式Session管理 - t0591 - CSDN博客​blog.csdn.net图标IM开发基础知识补课(四):正确理解HTTP短连接中的Cookie、Session和Token-IM开发/专项技术区 - 即时通讯开发者社区!​www.52im.net

5.Java中的队列都有哪些,有什么区别。

养兔子的大叔:JAVA常见队列​zhuanlan.zhihu.com图标

6.Java的内存模型以及GC算法

养兔子的大叔:JVM内存模型​zhuanlan.zhihu.com图标养兔子的大叔:JVM-垃圾收集器与内存分配策略​zhuanlan.zhihu.com图标

7.Java7、Java8的新特性

java7或java8新特性 - zhaojianting的博客 - CSDN博客​blog.csdn.net图标

8.Java数组和链表两种结构的操作效率,在哪些情况下(从开头开始,从结尾开始,从中间开始),哪些操作(插入,查找,删除)的效率高

这个比较简单,就不写了

9.Java内存泄露的问题调查定位:jmap,jstack的使用等等

通过 jstack 与 jmap 分析一次线上故障​www.importnew.com

10.深拷贝与浅拷贝的区别

Java的深拷贝和浅拷贝 - YSOcean - 博客园​www.cnblogs.com图标

二、spring框架

spring框架中需要引用哪些jar包,以及这些jar包的用途

Java面试中常见的开源框架的面试问题(一) - weixin_38894058的博客 - CSDN博客​blog.csdn.net

srpingMVC的原理

SpringMVC工作原理 - 平凡希 - 博客园​www.cnblogs.com图标

springMVC注解的意思

springmvc常用注解标签详解 - 木叔 - 博客园​www.cnblogs.com

spring中beanFactory和ApplicationContext的联系和区别

https://youyu4.iteye.com/blog/2346183​youyu4.iteye.com

spring注入的几种方式

养兔子的大叔:Spring-DI(依赖注入)​zhuanlan.zhihu.com图标

spring如何实现事务管理的

spring事务传播属性和隔离级别 - 煮海焚天 - 博客园​www.cnblogs.com

全面分析 Spring 的编程式事务管理及声明式事务管理​www.ibm.com图标

springIOC和AOP的原理

spring中循环注入的方式

Spring循环依赖的三种方式 - u010644448的专栏 - CSDN博客​blog.csdn.net图标

Spring的beanFactory和factoryBean的区别

Spring BeanFactory和FactoryBean的区别​www.jianshu.com

Spring的事务隔离级别实现原理

对Spring的理解,非单例注入的原理?它的生命周期?循环注入的原理,aop的实现原理,说说aop中的几个术语,它们是怎么相互工作的?

spring boot特性,优势,适用场景等

http://www.techug.com/post/why-more-users-like-spring-boot.html​www.techug.com

三、java多线程常见问题

1.Java创建线程之后,直接调用start()方法和run()的区别

https://javarevisited.blogspot.com/2012/03/difference-between-start-and-run-method.html​javarevisited.blogspot.com

2.常用的线程池模式以及不同线程池的使用场景

建议先看一下ThreadPoolExecutor相关的实现,传送门在这

养兔子的大叔:Java线程池​zhuanlan.zhihu.com图标

3.newFixedThreadPool此种线程池如果线程数达到最大值后会怎么办,底层原理。

4.多线程之间通信的同步问题,synchronized锁的是对象,衍伸出和synchronized相关很多的具体问题,例如同一个类不同方法都有synchronized锁,一个对象是否可以同时访问。或者一个类的static构造方法加上synchronized之后的锁的影响。

5.了解可重入锁的含义,以及ReentrantLock 和synchronized的区别

养兔子的大叔:(JDK)ReetrantLock手撕AQS​zhuanlan.zhihu.com图标Lock与synchronized 的区别​www.cnblogs.com

6.同步的数据结构,例如concurrentHashMap的源码理解以及内部实现原理,为什么他是同步的且效率高

7.atomicinteger和volatile等线程安全操作的关键字的理解和使用

AtomicInteger这个比较简单,建议直接去看源码

养兔子的大叔:(JDK)Volatile解析​zhuanlan.zhihu.com图标

8.线程间通信,wait和notify

线程之间通信 等待(wait)和通知(notify)​www.cnblogs.com图标

四、网络通信

1.http是无状态通信,http的请求方式有哪些,可以自己定义新的请求方式么。

2.socket通信,以及长连接,分包,连接异常断开的处理。

3.socket通信模型的使用,AIO和NIO。

4.socket框架netty的使用,以及NIO的实现原理,为什么是异步非阻塞。

5.同步和异步,阻塞和非阻塞。

五、常用Linux命令

1.常用的linux下的命令

2.大的log文件中,统计异常出现的次数、排序,或者指定输出多少行多少列的内容。

3.linux下的调查问题思路:内存、CPU、句柄数、过滤、查找、模拟POST和GET请求等等场景

4.shell脚本

六、数据库MySql

1.MySql的存储引擎的不同

2.单个索引、联合索引、主键索引

3.Mysql怎么分表,以及分表后如果想按条件分页查询怎么办(如果不是按分表字段来查询的话,几乎效率低下,无解)

4.分表之后想让一个id多个表是自增的,效率实现

5.MySql的主从实时备份同步的配置,以及原理(从库读主库的binlog),读写分离

6.事物的四个特性,以及各自的特点(原子、隔离)等等,项目怎么解决这些问题

七、设计模式(写代码)

1.单例模式:饱汉、饿汉。以及饿汉中的延迟加载

单例模式不是想的那么简单,三种实现----饿汉式 饱汉式(懒汉式) 双重锁模式--------(java复习)​blog.csdn.net

2.工厂模式、装饰者模式、观察者模式等

八、算法&数据结构&设计模式

    1. 使用随机算法产生一个数,要求把1-1000W之间这些数全部生成。(考察高效率,解决产生冲突的问题)
    2. 两个有序数组的合并排序
    3. 一个数组的倒序
    4. 计算一个正整数的正平方根
    5. 说白了就是常见的那些查找排序算法
    6. 数组和链表数据结构描述,各自的时间复杂度
    7. 二叉树遍历
    8. 快速排序
    9. BTree相关的操作
    10. 在工作中遇到过哪些设计模式,是如何应用的
    11. hash算法的有哪几种,优缺点,使用场景
    12. 什么是一致性hash
    13. paxos算法

九、分布式缓存

1.为什么用缓存,用过哪些缓存,redis和memcache的区别

Redis和Memcache区别,优缺点对比 - 虚幻黑洞 - 博客园​www.cnblogs.com图标

2.redis的数据结构

深入浅出Redis-redis底层数据结构(上) - jaycekong - 博客园​www.cnblogs.com图标深入浅出Redis-redis底层数据结构(下) - jaycekong - 博客园​www.cnblogs.com图标跳跃表-原理及Java实现 - Jeff.Hu - 博客园​www.cnblogs.com图标

3.redis的持久化方式,以及项目中用的哪种,为什么

redis 的两种持久化方式及原理​blog.csdn.net

4.redis集群的理解,怎么动态增加或者删除一个节点,而保证数据不丢失。(一致性哈希问题)

https://blog.csdn.net/zhailuxu/article/details/80037935​blog.csdn.net

线程池、高并发、NIO

    1. 分析线程池的实现原理和线程的调度过程
    2. 线程池如何调优
    3. 线程池的最大线程数目根据什么确定
    4. 动态代理的几种方式
    5. HashMap的并发问题
    6. 了解LinkedHashMap的应用吗
    7. 反射的原理,反射创建类实例的三种方式是什么?
    8. cloneable接口实现原理,浅拷贝or深拷贝
    9. Java NIO使用
    10. hashtable和hashmap的区别及实现原理,hashmap会问到数组索引,hash碰撞怎么解决
    11. arraylist和linkedlist区别及实现原理
    12. 反射中,Class.forName和ClassLoader区别
    13. String,Stringbuffer,StringBuilder的区别?
    14. 有没有可能2个不相等的对象有相同的hashcode
    15. 简述NIO的最佳实践,比如netty,mina
    16. TreeMap的实现原理

JVM相关(面试必考)

    1. JVM内存分代
    2. Java 8的内存分代改进
    3. JVM垃圾回收机制,何时触发MinorGC等操作
    4. jvm中一次完整的GC流程(从ygc到fgc)是怎样的,重点讲讲对象如何晋升到老年代,几种主要的jvm参数等
    5. 你知道哪几种垃圾收集器,各自的优缺点,重点讲下cms,g1
    6. 新生代和老生代的内存回收策略
    7. Eden和Survivor的比例分配等
    8. 深入分析了Classloader,双亲委派机制
    9. JVM的编译优化
    10. 对Java内存模型的理解,以及其在并发中的应用
    11. 指令重排序,内存栅栏等
    12. OOM错误,stackoverflow错误,permgen space错误
    13. JVM常用参数

分布式相关

    1. Dubbo的底层实现原理和机制
    2. 描述一个服务从发布到被消费的详细过程
    3. 分布式系统怎么做服务治理
    4. 接口的幂等性的概念

关于接口幂等性的一些总结 - sea的博客 - 博客园​www.cnblogs.com图标

    1. 消息中间件如何解决消息丢失问题
    2. Dubbo的服务请求失败怎么处理
    3. 重连机制会不会造成错误
    4. 对分布式事务的理解
    5. 如何实现负载均衡,有哪些算法可以实现?
    6. Zookeeper的用途,选举的原理是什么?
    7. 数据的垂直拆分水平拆分。
    8. zookeeper原理和适用场景
    9. zookeeper watch机制
    10. redis/zk节点宕机如何处理
    11. 分布式集群下如何做到唯一序列号
    12. 如何做一个分布式锁
    13. 用过哪些MQ,怎么用的,和其他mq比较有什么优缺点,MQ的连接是线程安全的吗
    14. MQ系统的数据如何保证不丢失
    15. 列举出你能想到的数据库分库分表策略;分库分表后,如何解决全表查询的问题。

数据库

    1. MySQL InnoDB存储的文件结构
    2. 索引树是如何维护的?
    3. 数据库自增主键可能的问题
    4. MySQL的几种优化
    5. mysql索引为什么使用B+树
    6. 数据库锁表的相关处理

何登成的技术博客 " MySQL 加锁处理分析​hedengcheng.com

    1. 索引失效场景
    2. 高并发下如何做到安全的修改同一行数据,乐观锁和悲观锁是什么,INNODB的行级锁有哪2种,解释其含义
    3. 数据库会死锁吗,举一个死锁的例子,mysql怎么解决死锁

何登成的技术博客 " MySQL 加锁处理分析​hedengcheng.com

Redis&缓存相关

    1. Redis的并发竞争问题如何解决了解Redis事务的CAS操作吗
    2. 缓存机器增删如何对系统影响最小,一致性哈希的实现
    3. Redis持久化的几种方式,优缺点是什么,怎么实现的
    4. Redis的缓存失效策略
    5. 缓存穿透的解决办法
    6. redis集群,高可用,原理
    7. mySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据
    8. 用Redis和任意语言实现一段恶意登录保护的代码,限制1小时内每用户Id最多只能登录5次
    9. redis的数据淘汰策略

一面

    1. 介绍项目
    2. java 线程池的实现原理,threadpoolexecutor关键参数解释
    3. hashmap的原理,容量为什么是2的幂次
    4. 为什么要同时重写hashcode和equals
    5. ConcurrentHashMap如何实现线程安全?
    6. 介绍Java多线程的5大状态,以及状态图流转过程
    7. 介绍下Synchronized、Volatile、CAS、AQS,以及各自的使用场景
    8. B+树和红黑树时间复杂度
    9. 如果频繁老年代回收怎么分析解决
    10. JVM内存模型,新生代和老年的回收机制
    11. mysql limit分页如何保证可靠性

二面

    1. 自我介绍
    2. java nio,bio,aio,操作系统底层nio实现原理
    3. Spring IOC,autowired如何实现
    4. Spring事务传播机制
    5. 线程死锁排查
    6. MySQL引擎及区别,项目用的哪个,为什么
    7. RPC为什么用http做通信?
    8. RPC两端如何进行负载均衡?
    9. mycat分库分表、读写分离的实现
    10. 分布式数据如何保证数据一致性
    11. 高并发请求处理,流量削峰措施有哪些

三面

    1. 谈谈你参与过的最有挑战的技术项目
    2. Redis持久化RDB和AOF 的区别
    3. MQ底层实现原理
    4. 详细介绍下分布式 一致性Hash算法
    5. nginx负载均衡的算法
    6. Nginx 的 upstream目前支持 哪4 种方式的分配
    7. 分布式集群部署后,从应用端哪些需要怎么调整
    8. Dubbo默认使用什么注册中心,还有别的选择吗?
    9. mongoDB、redis和memcached的应用场景,各自优势
    10. 谈谈你性能优化的实践案例,优化思路?
    11. 两千万用户并发抢购,你怎么来设计?

四面(HR面)

    1. 你觉得你有什么优点?有什么缺点?分别举例讲一讲。你怎么克服缺点?
    2. 你觉得最有成就感的一件事是什么,你遇到了什么问题,怎么解决的?
    3. 工作中如果遇见了技术问题,暂时你无法解决,你的应对思路?
    4. 如果有一家公司给到你的薪资比阿里更高,你怎么选择,为什么这样选?
    5. 谈谈未来3年你的职业规划?

一面

    1. hashmap的实现原理,多线程并发操作hashmap会有什么问题?
    2. hashmap如何处理冲突,如果key值一样怎么处理。
    3. 乐观锁了解哪些
    4. B+树和红黑树时间复杂度
    5. 快排的时间复杂度,冒泡时间复杂度,快排是否稳定,快排的过程
    6. 讲一下spring的启动流程
    7. AOP是怎么实现的?两种动态代理的应用场景?
    8. concurrentHashMap的实现原理,JDK 1.7和1.8有什么变化?
    9. Java中的新生代和老年代的垃圾回收算法,对应的垃圾收集器
    10. 谈谈 synchronized、ReenTrantLock、volatile 三者的区别

二面

    1. full gc的发生有哪几种情况?
    2. 为什么要使用线程池?有哪几种线程池,以及区别?
    3. Netty内部结构
    4. mysql有几种引擎,区别?
    5. 数据库的事务的4大属性
    6. innodb中聚集索引,非聚集索引
    7. 分布式下redis如何保证线程安全
    8. MySQL、Redis、MongoDB各自的应用场景
    9. Redis的存储数据结构,以及持久化区别

三面

    1. mysql慢查询优化步骤?

MySQL索引原理及慢查询优化 -​tech.meituan.com图标

    1. JVM性能调优会涉及哪些参数?
    2. Restful、SOAP、RPC、SOA、微服务之间的区别
    3. SpringClound与Dubbo的比较,优劣势
    4. mysql如何实现如何实现分库分表+动态数据源+读写分离
    5. 什么是缓存雪崩?服务器雪崩的场景与解决方案
    6. 分布式锁的方案,redis和zookeeper哪个好,如果是集群部署,高并发情况下哪个性能更好。
    7. 请画一个大型网站分布式集群部署图
    8. 秒杀系统的架构设计
    9. .

想要学习Java高架构、分布式架构、高可扩展、高性能、高并发、性能优化、
Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、
Jvm大型分布式项目实战学习架构师视频免费获取 架构群:458462877

猜你喜欢

转载自blog.csdn.net/weixin_44665482/article/details/88090948