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(嵌套事务),
 这两种有什么区别?如果在情况二进行手动回滚事务,这两种又有什么区别?

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号