面试专题:微众面试复盘

今天参加了微众的面试,时间越长越紧张,源码细节,代码的系列不扎实的问题就逐渐暴露出来了,趁着没忘,先记下,后续补充答案,面试题无序
面试时长:63分钟

  1. cpu突然彪高到100%怎么处理?
    我答:使用top命令查看占用比例最大的进程,用jstack查看具体的内容,jmap查看对象信息

    参考答案:此处非真实CPU飙高场景,是模拟定位过程
    1)登录服务器,执行 top 命令,查看CPU占用情况:
    在这里插入图片描述
    通过上面命令,我们可以看到,进程ID为12634的Java进程的CPU占用率最高(此处为模拟CPU飙高的场景,真实场景,比如死循环、线程互相等待、线程死锁等)。通过 ps -ef |grep 91111-912442.jar 查看当前应用的进程ID,是否和CPU占用率最高的进程一致,如果是,就是应用程序出现了问题。退出命令直接使用Ctrl+C
    2)定位到问题进程后,需要定位到具体是哪个线程出现了问题,我们看看进程12634有哪些线程,哪个线程占用CPU最高。使用命令 top -Hp 12634
    在这里插入图片描述
    通过命令可以看到,在进程12634中,线程12680占用的CPU最高,接下来我们定位这个线程具体的问题在哪里。

  2. 如何做T-1天的数据表备份
    我答:使用分区按时分秒,面试官说不对,我说使用临时表?面试官提示用分页,然后紧接着问分页越往后越慢怎么处理?
    参考答案:可以使用分页,越往后面用子查询。待补充

  3. 编程式 jdbc创建的事务和mybatis的事务有什么不同?spring如何声明编程式事务?

  4. mybatis是如何绑定xml和mapper的?mybatis的foreach怎么写效率高?java foreach写语句和mybatis有什么区别?直接使用jdbc是如何使用的?

  5. 定时任务有哪些开源框架?如何实现一个分布式定时任务(基于数据库悲观锁)?了解spring的定时任务吗?

Saturn (分布式任务调度平台,支持监控,基于Elastic Job基础开发)
Quartz (Spring 默认的调度框架,)
Elastic-Job (当当开源框架,基于zookeeper实现分布式协调)
Spring Task (也就是@Scheduled注解)

  1. 线程池了解吗,说下参数的内容?我说了Executors。知道阿里为什么不能用这个工具类吗?线程池如何设定线程的名称?

    参考答案:
    线程池参数及部分扩展

  2. Spring Bean的生命周期?声明一个注解如何获取内容(反射),我答了一大堆spring的前置后置,enable包扫描。。。

  3. 如何解析1000M的xml或者excel文件,不导致内存溢出?我答的是流分段,实际应该是apache等文件工具类,然后聊聊原理,懵了

  4. poi是如何解决大文件读取和导出的?1.x和2.x什么区别

  5. mybatis是如何把mapper和xml绑定到一起的,调用的是接口,怎么会返回数据集?

  6. 事务是怎么用的?传播特性有哪些?隔离级别是哪些?我把可重复读说成了不可重复读。。spring是如何管理事务的,transnational注解还有哪些属性?oracle默认的隔离级别是什么?

  7. 系统使用的日志框架是什么?。那slf4j是做什么用的?我答的方便日志框架切换。系统用了框架后会切换吗,有没有其余的作用?
    我答:logback。Slf4j作用是统一接口,方便日志框架切换。

参考答案:

  1. 提供日志接口,提供获取具体日志对象的方法,框架可以直接切换。阿里的规约要求不能直接使用日志框架的打印,要通过slf4j。
    在这里插入图片描述
  2. 统一日志打印格式、优化打印性能
  3. slf4j还提供了桥接机制,将其它日志实现API,通过slf4j,转换成我们项目中绑定的日志实现。
    !!!后续需要补充具体日志源码学习文章
  1. springcloud使用过哪些组件,都是做什么用的?

  2. 传参的时候 # 和 $ 有何区别,哪个可以防注入,防注入的原理是啥?java 写jdbc是如何防sql注入的

    参考答案: 查看详细说明

  3. ukey的原理是什么?常用的加密算法有哪些,哪些是对称加密哪些是非对称加密?

猜你喜欢

转载自blog.csdn.net/lxn1023143182/article/details/114273116