【面试题】

  1. n个有序小文件,合并成有序的一个文件
    有点像力扣合并K个升序链表,归并和优先队列(knlogk)
  2. Top K 问题
    快排的partition过程O(n) ,或者优先队列也行O(nlogk)
  3. cpu占用高如何排查
  • top指令:排查,查看占用cpu高的进程
    可看出PID为4060的java进程占用cpu最高
  • 查看线程的子进程占用情况,top -p 4606 -H ,将 子进程id 转换成16进制 1228
  • 查询具体出现问题的代码位置 jstack 4606|grep 1228 -C 30
  1. GC如何优化
    如果你没有设置内存大小而且出现了大量超时日志,那么你需要在系统中进行GC优化了
  • 减少创建对象的总数量。
    • 使用StringBuilder或StringBuffer代替String
    • 尽可能少的输出日志
  • 将转移到老年代的对象数量降到最少(可以通过 调整年轻代的大小 来实现)
  • 减少Full GC的时间
    和Minor GC相比,Full GC的执行时间长很多。因此,如果执行Full GC的时间过长(超过1s),将导致连接服务的请求超时。如果通过减少老年代的大小来降低Full GC执行时间,会造成OutOfMemoryError或增加Full GC的次数。如果增大老年代大小以期减少Full GC的执行次数,那么执行时间又会增加。因此,需要合理的设置 老年代大小。

GC优化的步骤
监控GC状态
根据分析结果决定是否需要GC优化
设置GC类型和内存大小
分析结果
如果结果满意,将参数应用到所有机器并停止优化