2020_java面试
记录一下最近面试接触的面试题。
货拉拉:
- jdk与jre区别
- java数据结构
- 举例队列的使用场景
- list,set,map区别
- 有没有了解双列结构
- map用过哪些
- concurrentHashmap 底层实现,存的数据元素是什么
- 什么时候转换成红黑树,什么版本才转换成红黑树,什么时候是链表
- 除了concurrentHashmap还用过其他并发类
- 平常使用过什么锁
- volatile原理
- 有没有使用过threadlocal,怎么用的
- 拦截器和过滤器区别
- 内存溢出,内存泄漏以及各种场景
- jvm内存区域
- new string对象是存放在哪
- 线程的静态变量从哪里取的
- 发生内存泄漏,线上比较卡顿,怎么处理?
- 堆栈满了,如何定位问题
- 介绍项目
- 上家离职原因
- 项目细节
- rocketmq、kafka、rabbitmq选型
- 从哪些社区学习
- 有没有用过mybatis-plus,为什么要用
- sql优化
- 主从配置
- 灰度发布怎么实现
- 网关选型
- gateway和zuul区别
- gateway为什么高性能
- netty为什么高性能
- BIO 和NIO、AIO区别
- 了解哪些网络协议
- websocket原理
- mybatis #和
$
区别,$
的场景
深圳掌众传媒:
- union 和union all区别
union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;
union All:对两个结果集进行并集操作,包括重复行,不进行排序。 - JDK1.8默认的垃圾回收器
默认使用的是UseParallelGC,ParallelGC 默认的是 Parallel Scavenge(新生代)+ Parallel Old(老年代) - varchar类型的时间字段,进行按月统计
使用DATE_FORMAT函数,DATE_FORMAT支持date类型和字符串类型的时间格式转换,示例: SELECT DATE_FORMAT(t.time,'%Y年%m月') month,count(*) FROM test t GROUP BY month - truncate和delete的区别
truncate和delete的区别 - JDBC如何开启事务
Connection对象:
setAutoCommit(boolean):设置是否为自动提交事务,如果true(默认值就是true)表示自动提交,也就是每条执行的SQL语句就是一个单独的事务,如果设置false,那么就相当于开启了事务;con.setAutoCommit(false)表示开启事务
commit():提交结束事务;
rollback():回滚结束事务。
深圳新乐数码:
-
mysql大数据表怎么加索引
找大佬咨询后的解决方案为:通过新增表将数据迁移过去,再更改表名。 -
mysql常用函数
mysql常用函数 -
什么是mysql回表
MySQL中的回表查询与索引覆盖 -
mysql隔离性
READ-UNCOMMITTED(读取未提交): 最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读。
READ-COMMITTED(读取已提交): 允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重复读仍有可能发生。
REPEATABLE-READ(可重复读): 对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复读,但幻读仍有可能发生。
SERIALIZABLE(可串行化): 最高的隔离级别,完全服从ACID的隔离级别。所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻读。 -
redis主从复制怎么实现
Redis实现主从复制 -
nio是什么
什么是NIO?NIO的原理是什么机制? -
netty bytebuf作用,零拷贝
netty中的ByteBuf,深入理解Linux, NIO和Netty中的零拷贝(Zero-Copy) -
mogodb用来做什么,原理是什么
-
堆溢出和栈溢出
堆溢出:程序运行所需要的内存大于系统的堆最大内存(-Xmx),就会出现堆溢出问题
栈溢出:a、线程请求的栈深度大于虚拟机允许的最大深度 StackOverflowError
b、虚拟机在扩展栈深度时,无法申请到足够的内存空间 OutOfMemoryError
内存溢出:申请内存空间,超出最大堆内存空间。
内存泄露:其实包含内存溢出,堆内存空间被无用对象占用没有及时释放,导致占用内存,最终导致内存泄露。 -
zuul自身负载均衡原理
??暂时没有找到资料,一般zuul内部集成了ribbon,使用的是ribbon提供的负载均衡,面试官否定了这个回答,说ribbon是客户端负载均衡,问题答案待补充 -
客户端负载均衡和服务端负载均衡区别
客户端负载均衡和服务端负载均衡区别 -
dubbo和springcloud区别
dubbo和springcloud区别 -
rocketmq原理
Rocketmq原理&最佳实践 -
rocketmq怎么保证消息不丢失,消费顺序
RocketMQ 怎么保证的消息不丢失?,阿里RocketMQ如何解决消息的顺序和重复两大硬伤 -
jvm实际使用
应该指的是jvm调优,JVM性能调优 -
线程池重要参数,饱和策略
线程池重要参数详解 -
redis的哈希和hashmap有什么区别
-
类初始化的方式
-
类加载机制
-
jvm内存模型
-
mysql事务
-
mysql乐观锁和悲观锁
-
讲一下项目的难点以及解决方式
-
spring循环依赖解决
行云全球汇
- 项目有没有使用分布式配置中心
- 主要负责的项目以及功能
- 微服务项目有没有分层,领域层、服务层,应用层?
- 4.1 假设商品服务、用户服务,它们之间怎么调用?
4.2 一个业务既要更新商品服务、又要更新用户服务怎么处理(分布式事务)?
4.3 更新过程中用户服务挂了怎么处理?
4.4 有一个商品列表需要查询用户系统用户的名字,怎么处理?
4.5 如果有关键词搜索涉及到两个服务,该怎么处理?
mysql:
- 1.1 left join ... on ... where ,条件加载on后面和where后面结果集有什么区别?
1.2 inner join .. on ... where,条件加载on后面和where后面结果集有什么区别? - 2.1 有一张表两个字段:id、age,数据:1 1, 2 21,3 null,4 1, count(id),count(*),count(age) 分别是什么值?
2.2 sum(age)值是什么(面试官说MySQL5.6版本,sum函数字段有一个为null,结果就是null,后续版本有修复,本人测试Mysql5.5以及5.6都没有出现这种情况),
2.3 select null + 1 结果是什么 - 3.1 一张一千万数据的表,limit 0,100 order by id和 limit 5000000,100 order by id 性能上有什么区别,会不会查不出来?
3.2 用java代码将这张千万数据的表复制到另一张表,每次复制100条,怎么优化?(将上次的id保存起来,where id > 上次的id,limit 0,100)
mybatis:
#
和$
符号,在xml里面动态拼接一个表名,应该用哪个?- mybatis dao层方法能不能重载?
java:
- 定义一个Map<String,Integer>变量,它的value会不会存在一个值:张三?
- @Transactional,
2.1 默认情况所有异常都会回滚吗?
2.2 情况一:一个事务A用REQUIRED,内部调用一个事务B,事务B也用REQUIRED;情况二:一个事务A用REQUIRED,内部调用一个事务B,事务B用的NESTED(嵌套事务),
这两种有什么区别?如果在情况二进行手动回滚事务,这两种又有什么区别?