前言:
最近几年公司的大小招聘,社招、校招都有参与,遇到过许多厉害的,也遇到过很多职场小白。看着有些同学基础浮夸、做着重复的项目也没有任何总结沉淀,自我介绍完全不知道在说啥等等诸如此类的现状,如果你还在东拉西扯不知所云,或是对面试官问的问题答非所问,基本在面试官心里已经给你 Pass 掉了,想想自己也是从那个层次一步步走上路的,也经历了许多坎坷,于是根据我的面试经验整理出一套面试题来跟大家分享一下,希望能帮助大家找到一份满意的工作。
Java基础面试
Java深入面试
Java必问面试
- 多线程
- 锁
- 设计模式
Java框架面试
- Spring
- Spring Boot/Spring Cloud
- MyBatis
分布式系统基础中间件面试
- Zookeeper
- Redis
- ActiveMQ
- MySQL
JVM面试题
数据结构
算法
其他面试技巧与总结
正文:
Java基础
- java中==和equals和hashCode的区别
- int、char、long各占多少字节数
- int与integer的区别
- 探探对java多态的理解
- String、StringBuffer、StringBuilder区别
- 什么是内部类?内部类的作用
- 抽象类和接口区别
- 抽象类的意义
- 抽象类与接口的应用场景
- 抽象类是否可以没有方法和属性?
- 接口的意义
- 泛型中extends和super的区别
- 父类的静态方法能否被子类重写
- 进程和线程的区别
- final,finally,finalize的区别
- 序列化的方式
- Serializable 和Parcelable 的区别
- 静态属性和静态方法是否可以被继承?是否可以被重写?以及原因?
- 静态内部类的设计意图
- 成员内部类、静态内部类、局部内部类和匿名内部类的理解,以及项目中的应用
- 谈谈对kotlin的理解
- 闭包和局部内部类的区别
- string 转换成 integer的方式及原理
Java深入面试
- 哪些情况下的对象会被垃圾回收机制处理掉?
- 讲一下常见编码方式?
- utf-8编码中的中文占几个字节;int型几个字节?
- 静态代理和动态代理的区别,什么场景使用?
- Java的异常体系
- 谈谈你对解析与分派的认识。
- 修改对象A的equals方法的签名,那么使用HashMap存放这个对象实例的时候,会调用哪个equals方法?
- Java中实现多态的机制是什么?
- 如何将一个Java对象序列化到文件里?
- 说说你对Java反射的理解
- 说说你对Java注解的理解
- 说说你对依赖注入的理解
- 说一下泛型原理,并举例说明
- Java中String的了解
- String为什么要设计成不可变的?
- Object类的equal和hashCode方法重写,为什么?
Java必问面试
线程、多线程和线程池
- 开启线程的几种方式?
- 线程和进程的区别?
- 为什么要有线程,而不是仅仅用进程?
- run()和start()方法区别
- 如何控制某个方法允许并发访问线程的个数?
- 在Java中wait和seelp方法的不同;
- 谈谈wait/notify关键字的理解
- 什么导致线程阻塞?
- 线程如何关闭?
- 讲一下java中的同步的方法
- 数据一致性如何保证?
- 如何保证线程安全?
- 如何实现线程同步?
- 两个进程同时要求写或者读,能不能实现?如何防止进程的同步?
- 线程间操作List
- Java中对象的生命周期
- Synchronized用法
- synchronize的原理
- 谈谈对Synchronized关键字,类锁,方法锁,重入锁的理解
- static synchronized 方法的多线程访问和作用
- 同一个类里面两个synchronized方法,两个线程同时访问的问题
- volatile的原理
- 谈谈volatile关键字的用法
- 谈谈volatile关键字的作用
- 谈谈NIO的理解
- synchronized 和volatile 关键字的区别
- synchronized与Lock的区别
- ReentrantLock 、synchronized和volatile比较
- ReentrantLock的内部实现
- lock原理
- 死锁的四个必要条件?
- 怎么避免死锁?
- 对象锁和类锁是否会互相影响?
- 什么是线程池,如何使用?
- Java的并发、多线程、线程模型
- 谈谈对多线程的理解
- 多线程有什么要注意的问题?
- 谈谈你对并发编程的理解并举例说明
- 谈谈你对多线程同步机制的理解?
- 如何保证多线程读写文件的安全?
- 多线程断点续传原理
- 断点续传的实现
Java框架面试
- 什么是Spring框架?
- 列举一些重要的Spring模块?
- 谈谈自己对于Spring IOC和AOP的理解
- Spring AOP和AspectJ AOP有什么区别?
- Spring中的bean的作用域有哪些?
- Spring中的单例bean的线程安全问题了解吗?
- Spring中的bean生命周期?
- 说说自己对于Spring MVC的了解?
- Spring MVC的工作原理了解嘛?
- Spring框架中用到了哪些设计模式
- @Component和@Bean的区别是什么
- 将一个类声明为Spring的bean的注解有哪些?
- Spring事务管理的方式有几种?
- Spring事务中的隔离级别有哪几种?
- Spring事务中有哪几种事务传播行为?
- 最佳实践中,通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗?
- Mybatis是如何进行分页的?分页插件的原理是什么?
- 简述Mybatis的插件运行原理,以及如何编写一个插件。
- Mybatis执行批量插入,能返回数据库主键列表吗?
- Mybatis动态sql是做什么的?都有哪些动态sql?能简述一下动态sql的执行原理不?
- Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式?
- Mybatis能执行一对一、一对多的关联查询吗?都有哪些实现方式,以及它们之间的区别。
- Mybatis是否支持延迟加载?如果支持,它的实现原理是什么?
- Mybatis的Xml映射文件中,不同的Xml映射文件,id是否可以重复?
- Mybatis中如何执行批处理?
- Mybatis都有哪些Executor执行器?它们之间的区别是什么?
- Mybatis中如何指定使用哪一种Executor执行器?
- Mybatis是否可以映射Enum枚举类?
- Mybatis映射文件中,如果A标签通过include引用了B标签的内容,请问,B标签能否定义在A标签的后面,还是说必须定义在A标签的前面?
- 简述Mybatis的Xml映射文件和Mybatis内部数据结构之间的映射关系?
- 为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里?
- 当实体类中的属性名和表中的字段名不一样 ,怎么办 ?
- 在mapper中如何传递多个参数?
- Mybatis动态sql是做什么的?都有哪些动态sql?能简述一下动态sql的执行原理不?
- Mybatis的Xml映射文件中,不同的Xml映射文件,id是否可以重复?
- 接口绑定有几种实现方式,分别是怎么实现的?
- Mybatis是如何进行分页的?分页插件的原理是什么?
- 分页插件的基本原理是使用Mybatis提供的插件接口,实现自定义插件,在插件的拦截方法内拦截待执行的sql,然后重写sql,根据dialect方言,添加对应的物理分页语句和物理分页参数。
- 简述Mybatis的插件运行原理,以及如何编写一个插件
- 什么是Spring Cloud?
- 使用Spring Cloud有什么优势?
- Spring Cloud 实现服务注册和发现的原理是什么?
- 为什么要使用 Spring Cloud 熔断器?
- 服务注册和发现是什么意思?Spring Cloud如何实现?
- spring cloud 和dubbo区别?
- 微服务之间是如何独立通讯的
- springcloud如何实现服务的注册?
- spring cloud 断路器的作用是什么?
- 什么是Spring Cloud Bus?
- 你所知道微服务的技术栈有哪些?列举一二
分布式系统基础中间件面试题
- Zookeeper文件系统
- 四种类型的数据节点 Znode
- Zookeeper Watcher 机制 – 数据变更通知
- 服务端处理Watcher实现
- Zookeeper 下 Server工作状态
- zookeeper是如何保证事务的顺序一致性的?
- 分布式集群中为什么会有Master?
- zk节点宕机如何处理?
- zookeeper负载均衡和nginx负载均衡区别
- Zookeeper有哪几种几种部署模式?
- Zookeeper对节点的watch监听通知是永久的吗?为什么不是永久的?
- chubby是什么,和zookeeper比你怎么看?
- Redis 持久化机制
- 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题
- 热点数据和冷数据是什么
- Memcache与Redis的区别都有哪些?
- 单线程的redis为什么这么快
- redis的数据类型,以及每种数据类型的使用场景,Redis 内部结构
- redis的过期策略以及内存淘汰机制【~】
- Redis 为什么是单线程的,优点
- 如何解决redis的并发竞争key问题
- Redis 集群方案应该怎么做?都有哪些方案?
- 有没有尝试进行多机redis 的部署?如何保证数据一致的?
- 对于大量的请求怎么样处理
- Redis 常见性能问题和解决方案?
- 讲解下Redis线程模型
- 为什么Redis的操作是原子性的,怎么保证原子性的?
- Redis事务
- Redis实现分布式锁
- MySQL InnoDB、Mysaim的特点?
- 乐观锁和悲观锁的区别?
- 数据库隔离级别是什么?有什么作用?
- MySQL主备同步的基本原理。
- select * from table t where size > 10 group by size order by size的sql语句执行顺序?
- 如何优化数据库性能(索引、分库分表、批量操作、分页算法、升级硬盘SSD、业务优化、主从部署)
- SQL什么情况下不会使用索引(不包含,不等于,函数)
- 一般在什么字段上建索引(过滤数据最多的字段)
- 如何从一张表中查出name字段不包含“XYZ”的所有行?
- MySQL,B+索引实现,行锁实现,SQL优化
- Redis,RDB和AOF,如何做高可用、集群
- 如何解决高并发减库存问题
- mysql存储引擎中索引的实现机制;
- 数据库事务的几种粒度;
- 行锁,表锁;乐观锁,悲观锁
JVM面试
- 说一下 JVM 的主要组成部分及其作用?
- 说一下 JVM 运行时数据区?
- 深拷贝和浅拷贝?
- 说一下堆栈的区别?
- 队列和栈是什么?有什么区别?
- 对象的创建
- 为对象分配内存
- 处理并发安全问题
- 对象的访问定位
- Java会存在内存泄漏吗?请简单描述
- 简述Java垃圾回收机制
- GC是什么?为什么要GC
- 垃圾回收的优点和原理。并考虑2种回收机制
- 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?
- Java 中都有哪些引用类型?
- 怎么判断对象是否可以被回收?
- 在Java中,对象什么时候可以被垃圾回收
- JVM中的永久代中会发生垃圾回收吗
- 说一下 JVM 有哪些垃圾回收算法?
- 说一下 JVM 有哪些垃圾回收器?
- 详细介绍一下 CMS 垃圾回收器?
- 新生代垃圾回收器和老年代垃圾回收器都有哪些?有什么区别?
- 简述分代垃圾回收器是怎么工作的?
- 简述java内存分配与回收策率以及Minor GC和Major GC
- 对象优先在 Eden 区分配
- 大对象直接进入老年代
- 长期存活对象将进入老年代
- 简述java类加载机制?
- 描述一下JVM加载Class文件的原理机制
- 什么是类加载器,类加载器有哪些?
- 说一下类装载的执行过程?
- 什么是双亲委派模型?
- 说一下 JVM 调优的工具?
- 常用的 JVM 调优的参数都有哪些?
数据结构
- List,Set,Map的区别
- List和Map的实现方式以及存储方式
- HashMap的实现原理
- HashMap数据结构?
- HashMap源码理解
- HashMap如何put数据(从HashMap源码角度讲解)?
- HashMap怎么手写实现?
- ConcurrentHashMap的实现原理
- ArrayMap和HashMap的对比
- HashTable实现原理
- TreeMap具体实现
- HashMap和HashTable的区别
- HashMap与HashSet的区别
- HashSet与HashMap怎么判断集合元素重复?
- 集合Set实现Hash怎么防止碰撞
- ArrayList和LinkedList的区别,以及应用场景
- 数组和链表的区别
- 二叉树的深度优先遍历和广度优先遍历的具体实现
- 堆的结构
- 堆和树的区别
- 堆和栈在内存中的区别是什么(解答提示:可以从数据结构方面以及实际实现方面两个方面去回答)?
- 什么是深拷贝和浅拷贝
- 手写链表逆序代码
- 讲一下对树,B+树的理解
- 讲一下对图的理解
算法
- 排序算法有哪些?
- 最快的排序算法是哪个?
- 手写一个冒泡排序
- 手写快速排序代码
- 快速排序的过程、时间复杂度、空间复杂度
- 手写堆排序
- 堆排序过程、时间复杂度及空间复杂度
- 写出你所知道的排序算法及时空复杂度,稳定性
- 二叉树给出根节点和目标节点,找出从根节点到目标节点的路径
- 给阿里2万多名员工按年龄排序应该选择哪个算法?
- GC算法(各种算法的优缺点以及应用场景)
- 蚁群算法与蒙特卡洛算法
- 子串包含问题(KMP 算法)写代码实现
- 一个无序,不重复数组,输出N个元素,使得N个元素的和相加为M,给出时间复杂度、空间复杂度。手写算法
- 万亿级别的两个URL文件A和B,如何求出A和B的差集C(提示:Bit映射->hash分组->多文件读写效率->磁盘寻址以及应用层面对寻址的优化)
其他面试技巧与总结
在讨论了采访阶段和常见的面试问题后,我们在此列出了一些快速面试技巧,以帮助您完成面试:
- 准时,准时出现
- 随时准备谈论您的成就 - 无论是个人还是专业
- 检查您的语言并避免使用填充物
- 浏览职位描述并找到您可以谈论的关键要求
- 在回答之前,请仔细聆听并花些时间收集您的想法
- 穿着和行为专业。
- 避免打断面试官
- 携带所有必要的文件
- 对公司进行简要研究并了解他们的需求
- 感谢面试官的时间,并对批评也要礼貌
到此这篇关于文章就结束了!
上述问到的面试题答案&最新2020整理收集的一些面试题(都整理成文档),有需要的可以点击进入暗号:csdn
上述问到的面试题答案&最新2020整理收集的一些面试题(都整理成文档),有需要的可以点击进入暗号:csdn
希望对大家有所帮助,有用的话点赞给我支持!