Java 面试
Java 面试随着时间的改变而改变。在过去的日子里,当你知道 String 和 StringBuilder 的区别就能让你直接进入第二轮面试,但是现在问题变得越来越高级,面试官问的问题也更深入。 在我初入职场的时候,类似于 Vector 与 Array 的区别、HashMap 与 Hashtable 的区别是最流行的问题,只需要记住它们,就能在面试中获得更好的机会,但这种情形已经不复存在。如今,你将会被问到许多 Java 程序员都没有看过的领域,如 NIO,设计模式,成熟的单元测试,或者那些很难掌握的知识,如并发、算法、数据结构及编码。
由于我喜欢研究面试题,因此我已经收集了许多的面试问题,包括许多许多不同的主题。我已经为这众多的问题准备一段时间了,现在我将它们分享给你们。这里面不但包含经典的面试问题,如线程、集合、equals 和 hashcode、socket,而且还包含了 NIO、数组、字符串、Java 8 等主题。
该列表包含了入门级 Java 程序员和多年经验的高级开发者的问题。无论你是 1、2、3、4、5、6、7、8、9 还是 10 年经验的开发者,你都能在其中找到一些有趣的问题。这里包含了一些超级容易回答的问题,同时包含经验丰富的 Java 程序员也会棘手的问题。
面试会涉及到很多杂而乱的知识点,可以为了面试刷很多套面试真题,但是千万不要只是纯粹地去死记硬背,要有技巧的运用成自己的东西。
LZ 在闲余时间中总结一些有关程序员面试的知识点,将面试中经常被问到的都总结了一下,希望可以对大家有帮助
1、JVM
- 垃圾回收算法有几种类型? 他们对应的优缺点又是什么?
- 类的加载过程是什么?简单描述一下每个步骤
- JVM 预定义的类加载器有哪几种?分别什么作用?
- 什么是双亲委派模式?有什么作用?
- 什么是内存溢出, 内存泄露? 他们的区别是什么?
- 引起类加载操作的行为有哪些?
- 介绍一下 JVM 提供的常用工具
- Full GC 、 Major GC 、Minor GC 之间区别?
- 什么时候触发 Full GC ?
...
2、Java并发
- 什么是可重入锁、乐观锁、悲观锁、公平锁、非公平锁、独占锁、共享锁?
- 讲讲ThreadLocal 的实现原理?
- ThreadLocal 作为变量的线程隔离方式,其内部是如何做的?
- 说说InheritableThreadLocal 的实现原理?
- 并发包中锁的实现底层(对AQS的理解)?
- 讲讲独占锁 ReentrantLock 原理?
3、Java集合
- HashSet 和 TreeSet 有什么区别?
- HashSet 的底层实现是什么?
- LinkedHashMap 的实现原理?
- 为什么集合类没有实现 Cloneable 和 Serializable 接口?
- 什么是迭代器 (Iterator)?
- Iterator 和 ListIterator 的区别是什么?
4、Spring全家桶
- Spring bean的生命周期能不能结合源码回答一下这个问题、或者结合一下bean的生命的意义来回答,就是Spring为什么需要找个生命周期
- Spring容器当中包含了哪些常用组件(至少说5个),作用是什么,场景是什么;比如BeanDefinition;再比如BeanDefinitionMap
- Spring自动注入的原理是什么?能不能从源码来说明一下这个问题;我们常常说的自动注入,到底怎么注入的?有什么坑?怎么让你一个属性不自动注入
- Spring源码当中如何来搞定循环依赖的?Spring支持循环依赖?生命情况不支持?支持的原理是什么?能不能从源码来说明一下?
- 如何来二次扩展Spring,比如自定义一个实现自动注入的注解;不使用@Autowried,自己如何开发一个@XXX来完成自动注入?
- mybatis源码当中利用了Spirng的那些扩展?mybatis扩展Spring之后有哪些问题是无法解决的?比如二级缓存怎么解决
- eureka源码当中如何扩展的Spring?比如怎么动态插拔eureka的功能,利用了Spring的那个技术点,或者从源码说一下
5、Redis
- Redis 持久化机制有哪些? 区别是什么?优缺点是什么?
- Redis支持的数据类型
- 为什么 Redis 需要把所有数据放到内存中?
- Redis 是单线程的吗?
- Redis 的缓存失效策略有哪几种?
- 什么是缓存命中率?提高缓存命中率的方法有哪些?
- Redis全局命令及数据库管理
- Redis设计订单应用场景
- Redis缓存雪崩讲讲看?
- 什么是缓存穿透?
- Redis重启时加载AOF与RDB的顺序
6、中间件
- Dubbo完整的一次调用链路介绍;
- Dubbo支持几种负载均衡策略?
- Dubbo Provider服务提供者要控制执行并发请求上限,具体怎么做?
- Dubbo启动的时候支持几种配置方式?
- 了解几种消息中间件产品?各产品的优缺点介绍;
- 消息中间件如何保证消息的一致性和如何进行消息的重试机制?
- Spring Cloud熔断机制介绍;
- Spring Cloud对比下Dubbo,什么场景下该使用Spring Cloud?
7、分布式
- 消息中间件如何解决消息丢失问题
- Dubbo的服务请求失败怎么处理
- 重连机制会不会造成错误
- 对分布式事务的理解
- 如何实现负载均衡,有哪些算法可以实现?
- Zookeeper的用途,选举的原理是什么?
- 数据的垂直拆分水平拆分。
- zookeeper原理和适用场景
- zookeeper watch机制
- redis/zk节点宕机如何处理
- 分布式集群下如何做到唯一序列号
- 如何做一个分布式锁
- 用过哪些MQ,怎么用的,和其他mq比较有什么优缺点,MQ的连接是线程安全的吗
- MQ系统的数据如何保证不丢失
- 列举出你能想到的数据库分库分表策略;分库分表后,如何解决全表查询的问题。
8、数据库
- MySQL InnoDB存储的文件结构
- 索引树是如何维护的?
- 数据库自增主键可能的问题
- MySQL的几种优化
- mysql索引为什么使用B+树
- 数据库锁表的相关处理
- 索引失效场景
- 高并发下如何做到安全的修改同一行数据,乐观锁和悲观锁是什么,INNODB的行级锁有哪2种,解释其含义
- 数据库会死锁吗,举一个死锁的例子,mysql怎么解决死锁
MySQL数据库高频20题解析
除此之外还有算法(11道)、数据结构(10道)、Mybatis(35道)、Nginx(38道)、Kafka(12道)、ES(47道)、分布式(38道)等内容。。
这里就不一一展示了。就以截图主要内容的形式让大家参考啦,需要完整的朋友可以点击下方名片获取