某公司电话面试

电话面试太匆忙,惨不忍睹。。。。
 
1. 如何查看某个进程中的线程数
   ps -T -p <pid>
   top -H -p <pid>
 
2. 如何查看单个进程I/O信息
    vmstat 只能看磁盘
    iotop 进程I/O 
    pidstat /iotop  查看单个进程
 
 
3. 如何查看某个进程实时I/O网络信息
    iftop/nethogs 网络流量
    iperf 网络测试工具
    第三方库
 
 
4. 内存池/线程池/链接池 的实现
http://www.cnblogs.com/bangerlee/archive/2011/08/31/2161421.html
 
5. skip list
 
 
6. map 和 hash_map 区别
    构造函数。hash_map需要hash函数,等于函数;map只需要比较函数(小于函数).
    存储结构。hash_map采用hash表存储,map一般采用红黑树(RB Tree)实现。因此其memory数据结构是不一样的。
 
    https://blog.csdn.net/vking_wang/article/details/14166593
 
7. 内存溢出不借助工具
    重点排查以下几点:
  1.检查对数据库查询中,是否有一次获得全部数据的查询。
      一般来说,如果一次取十万条记录到内存,就可能引起内存溢出。
      这个问题比较隐蔽,在上线前,数据库中数据较少,不容易出问题,上线后,
      数据库中数据多了,一次查询就有可能引起内存溢出。因此对于数据库查询尽量采用分页的方式查询。
  2.检查代码中是否有死循环或递归调用。 
  3.检查是否有大循环重复产生新对象实体。 
  4.检查对数据库查询中,是否有一次获得全部数据的查询。
      一般来说,如果一次取十万条记录到内存,就可能引起内存溢出。
      这个问题比较隐蔽,在上线前,数据库中   数据较少,不容易出问题,上线后,数据库中数据多了,
      一次查询就有可能引起内存溢出。因此对于数据库查询尽量采用分页的方式查询。 
  5.检查List、MAP等集合对象是否有使用完后,未清除的问题。
    List、MAP等集合对象会始终存有对对象的引用,使得这些对象不能被GC回收。
 
  第四步,使用内存查看工具动态查看内存使用情况
 
8. 摔杯子问题
 

猜你喜欢

转载自www.cnblogs.com/bzadhere/p/9218401.html