JAVA面试
in Java with 0 comment
JAVA面试
in Java with 0 comment

Jdk

有些面试官会直接问讲一下java的集合类
一般都会问到ArrayList,LinkedList的区别,主要答存储结构,增删改查效率

Set会问到hashSet,treeSet,以及Set和map的区别,list和set的区别

Map会问到HashMap,TreeMap,HashTable的区别

HashMap会问到底层数据结构,以及解决hash碰撞的方法
Hashmap底层涉及到红黑树,有些面试官会让解释一下红黑树

集合类怎么解决高并发问题

队列的使用问题

也有问到Exception的类型的,有的面试官会问到自定义异常的问题

Object类中的方法

我们用的是jdk1.8,有的面试官会问到1.8的新特性

笔试题会问到通过一段程序,写出打印语句

Spring

很多面试官会问到spring的底层代码,一般会问到bean的生命周期,有些会问到循环引用问题,以及spring中用到的设计模式

解释一下spring,springMVC,springBoot

说一下spring和springBoot的区别

spring的AOP

spring的事务是如何回滚的

Jvm

jvm内存模型,以及这些空间都存放什么东西

堆内存划分的空间,如何回收这些内存对象,有哪些回收算法

jvm调优,如何解决线上gc问题

class初始化过程

内存溢出的原因,如何排查线上问题

jvm有哪些垃圾回收器,少部分公司会让解释一下某个垃圾回收器,一般都是cms往后的

类加载模型

Mybatis

和hibernate的区别

mybatis的缓存,都缓存些什么,session缓存存在哪

mybatis的执行流程,需要了解源码

mybatis防止sql注入,jdbc防止sql注入

多线程

多线程之间是如何通信的

synchronized底层实现,和lock的区别

synchronized关键字加在静态方法和实例方法的区别,有的面试官会出一些题,让判断是否会发生争夺锁问题

稍大点的厂会出面试题,涉及到countdownlatch的用法

线程池的用法,Executor提供了几种线程池,大厂会问到线程池的参数,参数说明,拒绝策略有哪几种也需要说一下,任务放置的顺序过程,任务结束后会不会回收线程,未使用的线程池中的线程放在哪里,线程池线程存在哪,cache线程池会不会销毁核心线程等问题。

MySql

Mysql的索引类型,底层索引数据结构,用这个的好处,叶子节点存储的是什么,索引失效的原因

如何优化sql,查询计划的结果中看哪些些关键数据

innodb和myisam的区别

mysql默认隔离级别,

mysql的乐观锁和悲观锁,锁的种类

如何用sql实现乐观锁和悲观锁

mysql如何分库分表

Redis

几乎所有公司都用到redis,redis的问题还是比较多
redis的数据结构类型,一般都用在什么场景下

sortedSet的底层数据结构

利用redis实现分布式锁

redis使用单线程的好处

redis中如何控制多线程并发

redis删除key的策略

redis的主动缓存,被动缓存

如何保证数据一致性问题

集群环境下如何处理,解释一下一致性哈希

解释一下缓存击穿,缓存穿透,缓存雪崩,如何解决这些问题

MQ

mq的结构图,交换机的种类,如何保证消费者是否消费,ack返回的种类

请求过程服务宕机如何处理,钱已经转出,消费端服务处理不了

一般公司都会用到kafka

分布式事务

如何实现

SpringCloud

SpringCloud和dubbo的区别

项目中用到了哪些组件

eureka的原理,如何保证高可用性,和Zookeeper有什么区别

feign如何调用的

处理生产环境上配置生效问题

hystrix的降级策略有哪些

Dubbo

底层如何实现,画一下dubbo的架构图
可能我项目中没用到dubbo,问的相关问题比较少

设计模式

问的比较多的是单例模式,需要了解每种写法

项目中用到哪些设计模式,讲一下为什么要用,怎么用的?

其他一些少部分公司会问到的

多数据源问题

Tomcat启动原理

http协议

zookeeper 如何保证可用性

接口加密问题

epoll模型

方法缓存是什么

数据库路由

自己实现(dubbo)如何调用远程服务的接口

Responses