马士兵22春招面试题①
1、Java面向对象有哪些特征?
-
三大特征
-
继承
- 父类方法属性复用,增强代码的复用性
-
多态
-
必备要求:
- 继承
- 重写
- 父类引用指向子类对象
Animal animal = new Dog();
-
增加代码的可移植性
-
增加代码的健壮性
-
灵活性
-
-
封装
- 增加了代码的可维护性
- 增强代码的复用性
-
2、ArrayList和LinkedList的区别
- 相同点
- 都实现了
List接口
- 都实现了
- 不同点
- 前者
- 底层
数组
- 访问数据更方便
- 底层
- 后者
- 底层
链表
- 插入/删除数据更快
- 底层
- 前者
3、高并发中的集合有哪些问题?
一代线程安全集合
- 涉及集合
- Vector
- Hashtable
- 特点
- 线程安全
- 直接由synchronized修饰,性能低下
二代线程非安全集合
- 涉及集合
- ArrayList
- HashMap
- …
- 特点
- 线程不安全
- 性能高效
- 如何变的线程安全
- 可使用Collections.synchronizedList(xxx);Collections.synchronizedMap(m);
三代线程安全集合
- juc包下的
- ConcurrentHashMap
- CopyOnWriteArrayList
- CopyOnWriteArraySet
- 底层通过Cas自旋锁保证原子性
容器
4、JDK1.8的新特性有哪些?
- 接口的默认方法
- Lambda表达式
- Lambda作用域
- 方法/构造引用
- 函数式接口
- 访问局部变量
- 访问对象字段与静态变量
- Stream流式编程
- 多重注解
5、Java接口和抽象类的区别
- 相同点
-
不同点
-
抽象类
-
接口
-
- 什么时候使用抽象类/接口?
- 抽象类
- 描述抽象的概念,如:植物、动物、人类…
- 接口
- 描述某个特征,如:会飞、会游泳
- 抽象类
6、ACID是如何保证的?
- 原子性
- 由undolog日志保证,记录了需要回滚的日志信息,事务回滚时撤销已执行成功的sql
- 一致性
- 由其他3个特性保证,保证业务上的一致性
- 隔离性
- 由MVCC来保证,多版本并发控制
- 持久性
- redolog日志保证
7、BeanFactory和ApplicationContext的区别
-
相同点
-
不同点
8、HashMap和HashTable的区别
- 相同点
- 都是Map接口的子类
- 不同点
- 前者
- 线程不安全
- 效率高
- 允许KV键值为空
- 数组默认大小16,扩容为2的指数倍
- 继承AbstractMap类
- 后者
- 线程安全
- 效率低
- 不允许KV键值为空
- 数组默认大小11,扩容为原来的两倍+1
- 继承Dictionary类
- 前者
9、HashMap有哪些线程安全的方式?
- 使用Collections.synchronizedMap();
- 使用了syn进行互斥同步
- 使用代理模式new新的类
- 使用ConcurrentHashMap
- 拆分了map,减少锁的粒度,减少锁冲突
10、MVCC解决的问题是什么?
11、mybatis的优缺点
-
优点
-
缺点
12、mybatis和hibernate的区别
-
相同点
-
不同点
13、mybatis中#{}和${}的区别
14、MySql的隔离级别有哪些?
- 读未提交
- 读可提交
- 可重复读
- 串行化
15、MySql复制原理
主机写入数据会记录到BinLog中,从机会有一个IO线程去拉取主机的Binlog日志,并写入RelayLog日志中,并由一个SQL线程进行读取写入到从机的库中
16、MySql聚簇和非聚簇索引的区别
Mysql的索引是存储在磁盘中的,
聚簇和非聚簇索引的区别主要是判断数据和索引是否存放在一起
17、MySql索引结构的优劣势
18、MySql的锁有哪些类型?
19、MySql为什么需要主从同步?
- 读写分离
- 主备,数据预备
- 提高整体性能
20、MySql执行计划怎么看?
Explain
21、spring、springmvc、springboot的区别是什么?
spring:底层框架
mvc:web框架
boot:整合上面的脚手架
22、springmvc工作流程
笔记
23、SpringMVC九大组件是什么?
24、Spring的核心是什么?
25、Spring事务传播机制是什么
26、Spring中单例Bean是线程安全的吗?
他是,但他又不是
线程处理本身就是读取到自身的线程内存中处理,是安全。
但如果处理的数据是有状态的,那不同线程修改的值之间的可见性不能保证,所以是不安全的。
就需要根据实际情况去进行判断和修改
27、Spring中使用了哪些设计模式以及应用场景
28、Spring事务的隔离级别有哪些?
跟数据库的隔离级别
支持一毛一样
29、Spring事务的实现原理是什么
30、Spring事务失效的情况有哪些?
31、MyIsam和Innodb的区别
关注:是行锁/表锁,读写性能怎么样,是否支持事务/外键,存储的所有和数据是否是一起的
32、MySql索引的类型且对数据库的影响是什么?
33、Spring中Bean生命周期
9、通过getBean()方法获取对象
34、怎么处理MySql慢查询?
- 改写sql
- 多命中索引
- 开启慢日志
- 查看执行计划
- 拆分表
- 拆分查询数据量
35、如何实现IOC容器?
36、什么是MVCC?
37、什么是MySql主从复制
38、什么是bean自动装配,它有那些方式
39、Spring优势有哪些?
40、事务的基本特征是什么?
41、索引的设计原则有哪些?
42、分布式id生成方案有哪些
43、分布式锁的应用场景
44、分布式锁有哪些解决方案
45、zk分布式锁的实现原理
46、zk和redis做分布式锁的区别
47、MySql如何做分布式锁
48、你设计微服务的原则是什么
49、CAP定理是什么
50、BASE理论是什么?
51、最大努力通知方案的关键是什么?
52、什么是分布式系统中的幂等?
53、幂等有哪些技术的解决方案?
54、对外提供的API如何保证幂等
55、双写一致性问题的解决方案
选择先更新数据,再删除缓存,再设置之前再删除一次缓存,然后再设置缓存的策略
- 方案
56、认证和授权的区别是什么?
57、分布式架构下,Session共享有什么方案?
58、Java中==和equals的区别
59、throw和throws的区别
60、重写和重载的区别是什么
61、String、StringBuffer、StringBuilder的区别以及使用场景
62、怎么样声明可以让一个类不会被继承
63、kafka的再分配reblance机制是什么
64、zk在kafka中的作用是什么
- 分布式锁
- 分布式配置
- 统一命名
- 对brokerid由zk节点version保证
- broker的状态元数据存储
65、kafka高性能是如何保障的?
66、Redis持久化机制RDB&AOF
- 持久化方式
- RDB优点
- RDB缺点
- AOF优点
- AOF缺点
67、redis缓存回收策略
68、redis集群方案有哪些?
- 常见集群分类
- redis有哪些?
69、SpringCloud核心组件有哪些?分别的作用是什么
70、配置中心如何实现自动刷新的
71、配置中心如何保证数据安全
72、zk和eureka做注册中心的区别
对于数据的一致性
和服务的可用性
做取舍
zk对于cap定理中是cp,一致性、容错性
eureka对于cap定理中是ap,可用性、容错性
73、Springcloud和dubbo的区别
74、什么是Hystrix?实现原理是什么
75、ZAB协议是什么?
76、注册中心挂了,服务挂了,如何处理?
- 注册中心挂了,本地持久化注册中心信息
- 服务挂了,通过配置监控系统来实现对应监控
77、ABA问题是什么?说下?那如何避免ABA问题
- 如何避免ABA问题
- CAS导致的其他问题
78、类初始化过程是什么?
之前的学习笔记
- 类加载过程
- 类初始化过程
79、ConcurrentHashMap的底层原理是什么
1.8比1.7的锁粒度更加的细,针对数组某个槽位的加锁
-
对比
-
1.7
-
1.8
-
80、GC如何判断对象是否可被回收
- 引用计数算法
- 可达性分析算法
- 不同的引用类型
- 强引用:四不回收
- 软引用:内存不够就回收
- 弱引用:发现就回收
- 虚引用:几乎和没有一样
81、Happens-Before规则是什么?
学习笔记
聊的是可见性
的问题
82、Java类加载器有哪些?
笔记
83、JVM8为什么要增加元空间?
- 永久代
- 永久代的大小
-
为什么出永久代
-
元空间
- 元空间的特点
84、JVM内存模型是如何分配的
- 虚拟机栈
- 本地方法栈
- PC寄存器
- 堆
- 方法区
- 直接内存(堆外内存)
85、sychronized和lock的区别
86、一个程序开多少线程合适?
87、创建线程有哪些方式?
88、线程的生命周期和状态
89、什么是守护线程
90、双亲委派机制是什么
- 概念
- 好处
- 如何破坏双亲委派机制
重写findClass
方法
- 破坏双亲委派模型的案例
- jdbc
- tomcat
91、为什么使用线程池
- 创建和销毁线程代价高,性能消耗明显,
提升性能
- 便于对线程的
管理
92、了解哪些垃圾回收算法
笔记
- 标记清除
- 标记压缩
- 标记清除压缩
- 复制算法
- 分代算法
更多推荐
Day499&500&501&502&503&504.马士兵22春招面试题① -面经
发布评论