2020_java面试

记录一下最近面试接触的面试题。

货拉拉:

  1. jdk与jre区别
  2. java数据结构
  3. 举例队列的使用场景
  4. list,set,map区别
  5. 有没有了解双列结构
  6. map用过哪些
  7. concurrentHashmap 底层实现,存的数据元素是什么
  8. 什么时候转换成红黑树,什么版本才转换成红黑树,什么时候是链表
  9. 除了concurrentHashmap还用过其他并发类
  10. 平常使用过什么锁
  11. volatile原理
  12. 有没有使用过threadlocal,怎么用的
  13. 拦截器和过滤器区别
  14. 内存溢出,内存泄漏以及各种场景
  15. jvm内存区域
  16. new string对象是存放在哪
  17. 线程的静态变量从哪里取的
  18. 发生内存泄漏,线上比较卡顿,怎么处理?
  19. 堆栈满了,如何定位问题
  20. 介绍项目
  21. 上家离职原因
  22. 项目细节
  23. rocketmq、kafka、rabbitmq选型
  24. 从哪些社区学习
  25. 有没有用过mybatis-plus,为什么要用
  26. sql优化
  27. 主从配置
  28. 灰度发布怎么实现
  29. 网关选型
  30. gateway和zuul区别
  31. gateway为什么高性能
  32. netty为什么高性能
  33. BIO 和NIO、AIO区别
  34. 了解哪些网络协议
  35. websocket原理
  36. mybatis #和$区别,$的场景

深圳掌众传媒:

  1. union 和union all区别
    union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;
    union All:对两个结果集进行并集操作,包括重复行,不进行排序。
  2. JDK1.8默认的垃圾回收器
    默认使用的是UseParallelGC,ParallelGC 默认的是 Parallel Scavenge(新生代)+ Parallel Old(老年代)
  3. varchar类型的时间字段,进行按月统计
    使用DATE_FORMAT函数,DATE_FORMAT支持date类型和字符串类型的时间格式转换,示例: SELECT DATE_FORMAT(t.time,'%Y年%m月') month,count(*) FROM test t GROUP BY month
  4. truncate和delete的区别
    truncate和delete的区别
  5. JDBC如何开启事务
    Connection对象:
    setAutoCommit(boolean):设置是否为自动提交事务,如果true(默认值就是true)表示自动提交,也就是每条执行的SQL语句就是一个单独的事务,如果设置false,那么就相当于开启了事务;con.setAutoCommit(false)表示开启事务
    commit():提交结束事务;
    rollback():回滚结束事务。

深圳新乐数码:

  1. mysql大数据表怎么加索引
    找大佬咨询后的解决方案为:通过新增表将数据迁移过去,再更改表名。

  2. mysql常用函数
    mysql常用函数

  3. 什么是mysql回表
    MySQL中的回表查询与索引覆盖

  4. mysql隔离性
    READ-UNCOMMITTED(读取未提交): 最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读。
    READ-COMMITTED(读取已提交): 允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重复读仍有可能发生。
    REPEATABLE-READ(可重复读): 对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复读,但幻读仍有可能发生。
    SERIALIZABLE(可串行化): 最高的隔离级别,完全服从ACID的隔离级别。所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻读。

  5. redis主从复制怎么实现
    Redis实现主从复制

  6. nio是什么
    什么是NIO?NIO的原理是什么机制?

  7. netty bytebuf作用,零拷贝
    netty中的ByteBuf深入理解Linux, NIO和Netty中的零拷贝(Zero-Copy)

  8. mogodb用来做什么,原理是什么

  9. 堆溢出和栈溢出
    堆溢出:程序运行所需要的内存大于系统的堆最大内存(-Xmx),就会出现堆溢出问题
    栈溢出:a、线程请求的栈深度大于虚拟机允许的最大深度 StackOverflowError
    b、虚拟机在扩展栈深度时,无法申请到足够的内存空间 OutOfMemoryError
    内存溢出:申请内存空间,超出最大堆内存空间。
    内存泄露:其实包含内存溢出,堆内存空间被无用对象占用没有及时释放,导致占用内存,最终导致内存泄露。

  10. zuul自身负载均衡原理
    ??暂时没有找到资料,一般zuul内部集成了ribbon,使用的是ribbon提供的负载均衡,面试官否定了这个回答,说ribbon是客户端负载均衡,问题答案待补充

  11. 客户端负载均衡和服务端负载均衡区别
    客户端负载均衡和服务端负载均衡区别

  12. dubbo和springcloud区别
    dubbo和springcloud区别

  13. rocketmq原理
    Rocketmq原理&最佳实践

  14. rocketmq怎么保证消息不丢失,消费顺序
    RocketMQ 怎么保证的消息不丢失?阿里RocketMQ如何解决消息的顺序和重复两大硬伤

  15. jvm实际使用
    应该指的是jvm调优,JVM性能调优

  16. 线程池重要参数,饱和策略
    线程池重要参数详解

  17. redis的哈希和hashmap有什么区别

  18. 类初始化的方式

  19. 类加载机制

  20. jvm内存模型

  21. mysql事务

  22. mysql乐观锁和悲观锁

  23. 讲一下项目的难点以及解决方式

  24. spring循环依赖解决

行云全球汇

  1. 项目有没有使用分布式配置中心
  2. 主要负责的项目以及功能
  3. 微服务项目有没有分层,领域层、服务层,应用层?
  4. 4.1 假设商品服务、用户服务,它们之间怎么调用?
    4.2 一个业务既要更新商品服务、又要更新用户服务怎么处理(分布式事务)?
    4.3 更新过程中用户服务挂了怎么处理?
    4.4 有一个商品列表需要查询用户系统用户的名字,怎么处理?
    4.5 如果有关键词搜索涉及到两个服务,该怎么处理?

mysql:

  1. 1.1 left join ... on ... where ,条件加载on后面和where后面结果集有什么区别?
    1.2 inner join .. on ... where,条件加载on后面和where后面结果集有什么区别?
  2. 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. 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:

  1. #$ 符号,在xml里面动态拼接一个表名,应该用哪个?
  2. mybatis dao层方法能不能重载?

java:

  1. 定义一个Map<String,Integer>变量,它的value会不会存在一个值:张三?
  2. @Transactional,
    2.1 默认情况所有异常都会回滚吗?
    2.2 情况一:一个事务A用REQUIRED,内部调用一个事务B,事务B也用REQUIRED;情况二:一个事务A用REQUIRED,内部调用一个事务B,事务B用的NESTED(嵌套事务),
    这两种有什么区别?如果在情况二进行手动回滚事务,这两种又有什么区别?
posted @ 2020-12-03 23:34  yangwqonly  阅读(194)  评论(0编辑  收藏  举报