中金所面试题汇总
1、ArrayList和LinkedList对比(一个数组、一个双向链表、查询时间、插入删除时间各有所长)
2、内存泄漏,有没有遇到过(有些无法回收的资源—一些忘记关闭的连接等)
3、OOM,有没有遇到过(一次性读入过大的数据到内存当中,导致占满,或者对象创建过多)
3、局部性原理(时间局部性、空间局部性)
4、虚拟内存(栈和堆)
5、TCP和HTTP对比(TCP是网络传输协议—传输层,HTTP是超文本传输协议——应用层,HTTP底层是TCP协议)
6、TCP和UDP对比(有连接与无连接)
7、什么是线程安全(并发情况下,保证数据最终一致性)
8、Java的线程状态(新建、就绪、运行、阻塞、死亡)
9、web应用你封装一个request对象到前端会包括哪些数据(请求行、请求头、请求体)
10、python会不会
11、说出两个线程安全的Map以及原理(hashtable,ConcurrentHashMap,HashTable继承自Dictionary,拉链法、内部用Synchronize锁
原理:ConcurrentHashMap利用乐观锁CAS请求,实现线程安全、并当节点大于8从链表扩容到红黑树。)
你遇到过什么并发的瓶颈
12、说出你知道的所有Java里面保证线程安全的方式(1、悲观锁Synchronize、2、乐观锁:reentrantlock 3、ThreadLocal保证变量线程内部单独使用 4、volatile保证线程数据可见性以及防止指令重排 5、门栓:CountDownLatch 允许一个或多个线程等待其他线程完成操作6、Semaphore 信号量)
什么是乐观锁 (与悲观锁对立,悲观锁认为每次被访问,都会被更改,乐观锁则是根据数值有没有被修改,如果在自己访问期间数值被其他线程修改,则放弃所有操作
一般以自旋方式进行,在Java中,reentrantlock是乐观锁)
13、反射(获取类的对象——getDeclearConstruction获取构造器——newInstance获取对象)
14、动态代理及应用(两种方式:1、CGlib动态代理、2JDK动态代理——基于反射机制。Spring中AOP就是基于动态代理。用于对操作进行日志记录、增强方法、事务控制,进行功能性增强且不影响原代码)
15、解释数据库范式(第一范式:所有列均不可再分,属于原子数据项 第二范式:非主键必须完全依赖于主键,不能依赖于主键的一部分 第三范式:任何非主属性 不依赖于其他非主属性)
16、spring ioc aop(IOC反转控制,DI依赖注入——反转控制的实现,aop面向切面编程)
17、垃圾收集算法(分为新生代、老年代,新生代用复制算法,在Eden、from、to区域进行复制,年龄到15放到老年代。老年代用标记清除与标记整理)
18、锁(悲观锁Synchronize、乐观锁Reentrantlock)
19、缓存()
20、重写(子类对父类方法进行重写,使对象具备子类特征)
21、springboot自动装配(在SpringBootAppliction启动类中包含SpringBootConfiguration、ComponentScan、EnableAutoConfiguration注解,其中EnableAutoConfiguration用于自动装备从spring.factories文件中的类。)
22、springboot怎么开启事务(1、在入口类加入@EnableTransactionManagement、2、在具体方法上加上@Transactional)
23、spring与springboot的区别(springboot是基于spring的上层框架、能够独立运行——继承tomcat、能够简化配置、具备自动配置功能)
24、快排思想(利用分治方法,每一次把小于目标数的放左边,大于目标数的放右边,再对左右两边重复进行)
25、为什么用快排而不用归并(空间复杂度快排空间复杂度O1,归并需要额外的On)
26、快排时间复杂度(平均为Olog2N与最坏N2)
27、msql设置了可重读后怎么保证不幻读 (1、利用快照 2、next-key lock有索引则锁住本身的行、范围则行锁+间隙锁、无索引锁整个表)
28、项目中用了redis,是单点模式还是哨兵模式(哨兵模式是指另外的服务监控现有服务的允许,如果现有服务出现错误,根据优先级,将从服务器提升为主服务器)
30、集合接口和集合类介绍一下(接口:Collection包含Queue接口——Deque接口、List接口、Set接口——sortedSet接口。
LinkedList、ArrayList、Vector、Stack、HashSet、TreeSet)
31、反射,什么地方用了反射(IOC创建实例对象、创建数据库连接等)
32、泛型(指定某个数组保存特定类型的数据)
33、jvm内存分区(线程私有:程序计数器、方法栈、虚拟机栈 线程共有:元空间(方法区)、堆)
34、final、finally、finalize(final修饰常量、类不能被继承、方法不能重写。finally与try、catch配合,一定会执行。finalize是垃圾回收后执行)
35、java支持多继承吗?接口和类是否可以多继承(类单继承、接口多继承)
36、好像是aop实现相关的一个问题
37、什么是哈希表,影响它性能的两个参数(key:value,初始容量(创建时候的容量)与加载因子0.75(哈希表满度允许值,超过这个值会进行扩容))
38、重载和重写(重写是子类对父类,重载是一个类中多个同名放啊)
39、continue、break的区别(continue进行下一轮循环、break打破当前循环)
40、drop、delete、truncate的区别(删除表、删除固定数据、清空表中数据)
41、union、union all的区别(union: 对两个结果集进行并集操作, 不包括重复行,相当于distinct, 同时进行默认规则的排序、union all: 对两个结果集进行并集操作, 包括重复行, 即所有的结果全部显示, 不管是不是重复;)
42、left join、right join的区别()
43、数据库事务的ACID(原子性、一致性、持久性、隔离性)
44、数据库隔离级别(读未提交、读已提交、可重复读、序列化)
45、redis使用过吗?redis的优点(用于当缓存数据库、速度快,原子性(依靠单线程)、支持RDB、AOF持久化。)
46、Java内存分区(虚拟机栈、方法栈、程序计数器 堆、元空间)
47、单例模式的实现方式(饿汉式,懒汉式、枚举(线程安全))
48、死锁,死锁的四个条件(互斥、请求与保持、不可剥夺、循环等待)
49、如果解决多个线程访问多个资源不死锁(1、一次性分配所有资源 2、访问顺序避免成环)
50、创建线程的方式,哪一个方式比较好?对比区别(用runnable接口和callable接口,接口可以多继承)
51、线程同步()
52、TCP的三次握手
53、定时任务如何实现的(1、使用Timer类、设定TimerTask的起始与间隔 2、ScheduledExecutorService 3、使用Spring Task)
个人问题:
0、博客,没来得及发,怪了,简历我记得写了
1、java的MAP集合
2、HTTP和HTTPs
3、浏览器获取页面的整个过程
4、多线程的Synchronize
5、乐观锁
6、TCP三次握手
7、redis为什么快
8、redis的常见数据类型
9、mysql的数据范式
10、kafka(打住了,没学这个)
11、关系型和非关系型的区别
反问:
1、学习方向
2、内存泄漏,有没有遇到过(有些无法回收的资源—一些忘记关闭的连接等)
3、OOM,有没有遇到过(一次性读入过大的数据到内存当中,导致占满,或者对象创建过多)
3、局部性原理(时间局部性、空间局部性)
4、虚拟内存(栈和堆)
5、TCP和HTTP对比(TCP是网络传输协议—传输层,HTTP是超文本传输协议——应用层,HTTP底层是TCP协议)
6、TCP和UDP对比(有连接与无连接)
7、什么是线程安全(并发情况下,保证数据最终一致性)
8、Java的线程状态(新建、就绪、运行、阻塞、死亡)
9、web应用你封装一个request对象到前端会包括哪些数据(请求行、请求头、请求体)
10、python会不会
11、说出两个线程安全的Map以及原理(hashtable,ConcurrentHashMap,HashTable继承自Dictionary,拉链法、内部用Synchronize锁
原理:ConcurrentHashMap利用乐观锁CAS请求,实现线程安全、并当节点大于8从链表扩容到红黑树。)
你遇到过什么并发的瓶颈
12、说出你知道的所有Java里面保证线程安全的方式(1、悲观锁Synchronize、2、乐观锁:reentrantlock 3、ThreadLocal保证变量线程内部单独使用 4、volatile保证线程数据可见性以及防止指令重排 5、门栓:CountDownLatch 允许一个或多个线程等待其他线程完成操作6、Semaphore 信号量)
什么是乐观锁 (与悲观锁对立,悲观锁认为每次被访问,都会被更改,乐观锁则是根据数值有没有被修改,如果在自己访问期间数值被其他线程修改,则放弃所有操作
一般以自旋方式进行,在Java中,reentrantlock是乐观锁)
13、反射(获取类的对象——getDeclearConstruction获取构造器——newInstance获取对象)
14、动态代理及应用(两种方式:1、CGlib动态代理、2JDK动态代理——基于反射机制。Spring中AOP就是基于动态代理。用于对操作进行日志记录、增强方法、事务控制,进行功能性增强且不影响原代码)
15、解释数据库范式(第一范式:所有列均不可再分,属于原子数据项 第二范式:非主键必须完全依赖于主键,不能依赖于主键的一部分 第三范式:任何非主属性 不依赖于其他非主属性)
16、spring ioc aop(IOC反转控制,DI依赖注入——反转控制的实现,aop面向切面编程)
17、垃圾收集算法(分为新生代、老年代,新生代用复制算法,在Eden、from、to区域进行复制,年龄到15放到老年代。老年代用标记清除与标记整理)
18、锁(悲观锁Synchronize、乐观锁Reentrantlock)
19、缓存()
20、重写(子类对父类方法进行重写,使对象具备子类特征)
21、springboot自动装配(在SpringBootAppliction启动类中包含SpringBootConfiguration、ComponentScan、EnableAutoConfiguration注解,其中EnableAutoConfiguration用于自动装备从spring.factories文件中的类。)
22、springboot怎么开启事务(1、在入口类加入@EnableTransactionManagement、2、在具体方法上加上@Transactional)
23、spring与springboot的区别(springboot是基于spring的上层框架、能够独立运行——继承tomcat、能够简化配置、具备自动配置功能)
24、快排思想(利用分治方法,每一次把小于目标数的放左边,大于目标数的放右边,再对左右两边重复进行)
25、为什么用快排而不用归并(空间复杂度快排空间复杂度O1,归并需要额外的On)
26、快排时间复杂度(平均为Olog2N与最坏N2)
27、msql设置了可重读后怎么保证不幻读 (1、利用快照 2、next-key lock有索引则锁住本身的行、范围则行锁+间隙锁、无索引锁整个表)
28、项目中用了redis,是单点模式还是哨兵模式(哨兵模式是指另外的服务监控现有服务的允许,如果现有服务出现错误,根据优先级,将从服务器提升为主服务器)
30、集合接口和集合类介绍一下(接口:Collection包含Queue接口——Deque接口、List接口、Set接口——sortedSet接口。
LinkedList、ArrayList、Vector、Stack、HashSet、TreeSet)
31、反射,什么地方用了反射(IOC创建实例对象、创建数据库连接等)
32、泛型(指定某个数组保存特定类型的数据)
33、jvm内存分区(线程私有:程序计数器、方法栈、虚拟机栈 线程共有:元空间(方法区)、堆)
34、final、finally、finalize(final修饰常量、类不能被继承、方法不能重写。finally与try、catch配合,一定会执行。finalize是垃圾回收后执行)
35、java支持多继承吗?接口和类是否可以多继承(类单继承、接口多继承)
36、好像是aop实现相关的一个问题
37、什么是哈希表,影响它性能的两个参数(key:value,初始容量(创建时候的容量)与加载因子0.75(哈希表满度允许值,超过这个值会进行扩容))
38、重载和重写(重写是子类对父类,重载是一个类中多个同名放啊)
39、continue、break的区别(continue进行下一轮循环、break打破当前循环)
40、drop、delete、truncate的区别(删除表、删除固定数据、清空表中数据)
41、union、union all的区别(union: 对两个结果集进行并集操作, 不包括重复行,相当于distinct, 同时进行默认规则的排序、union all: 对两个结果集进行并集操作, 包括重复行, 即所有的结果全部显示, 不管是不是重复;)
42、left join、right join的区别()
43、数据库事务的ACID(原子性、一致性、持久性、隔离性)
44、数据库隔离级别(读未提交、读已提交、可重复读、序列化)
45、redis使用过吗?redis的优点(用于当缓存数据库、速度快,原子性(依靠单线程)、支持RDB、AOF持久化。)
46、Java内存分区(虚拟机栈、方法栈、程序计数器 堆、元空间)
47、单例模式的实现方式(饿汉式,懒汉式、枚举(线程安全))
48、死锁,死锁的四个条件(互斥、请求与保持、不可剥夺、循环等待)
49、如果解决多个线程访问多个资源不死锁(1、一次性分配所有资源 2、访问顺序避免成环)
50、创建线程的方式,哪一个方式比较好?对比区别(用runnable接口和callable接口,接口可以多继承)
51、线程同步()
52、TCP的三次握手
53、定时任务如何实现的(1、使用Timer类、设定TimerTask的起始与间隔 2、ScheduledExecutorService 3、使用Spring Task)
个人问题:
0、博客,没来得及发,怪了,简历我记得写了
1、java的MAP集合
2、HTTP和HTTPs
3、浏览器获取页面的整个过程
4、多线程的Synchronize
5、乐观锁
6、TCP三次握手
7、redis为什么快
8、redis的常见数据类型
9、mysql的数据范式
10、kafka(打住了,没学这个)
11、关系型和非关系型的区别
反问:
1、学习方向