新奥新智面试(部分)

  • 有问题怎么排查,去哪里看日志?答:ELK
  • JVM栈帧的局部变量表里索引的第一个位置存的什么?标准答案(from《深入理解Java虚拟机》第3版):如果执行的是实例方法(没有被static修饰的方法),那局部变量表中第0位索引的变量槽默认是用于传递方法所属对象实例的引用,在方法中可以通过关键字“this”来访问到这个隐含的参数。问:为什么老年代用标记-清除法,新生代用标记-复制法,有什么好处?
    《深入理解Java虚拟机》: 标记-复制 :

如果内存中多数对象都是存活的,这种算法将会产生大量的内存间复制的开销,但对于多数对象都是可回收的情况,算法需要复制的就是占少数的存活对象,而且每次都是针对整个半区进行内存回收,分配内存时也就不用考虑有空间碎片的复杂情况,只要移动堆顶指针,按顺序分配即可。这样实现简单,运行高效,不过其缺陷也显而易见,这种复制回收算法的代价是将可用内存缩小为了原来的一半,空间浪费未免太多了一点。

现在的商用Java虚拟机大多都优先采用了这种收集算法去回收新生代,IBM公司曾有一项专门研究对新生代“朝生夕灭”的特点做了更量化的诠释——新生代中的对象有98%熬不过第一轮收集。

标记-复制算法在对象存活率较高时就要进行较多的复制操作,效率将会降低。更关键的是,如果不想浪费50%的空间,就需要有额外的空间进行分配担保,以应对被使用的内存中所有对象都100%存活的极端情况,所以在老年代一般不能直接选用这种算法。

  • 可达性算法是bfs还是dfs
  • elasticsearch为什么可以保证一秒内查到数据? 在 Elasticsearch 中,写入和打开一个新段的轻量的过程叫做 refresh 。默认情况下每个分片会每秒自动刷新一次。这就是为什么我们说 Elasticsearch是近实时搜索: 文档的变化并不是立即对搜索可见,但会在一秒之内变为可见。1
  • lsof(list open files)是一个列出当前系统打开文件的工具。用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。2
  • 观察者模式的优点?

  1. 近实时搜索 ↩︎

  2. 每天一个linux命令(51):lsof命令 ↩︎

你可能感兴趣的:(jvm,面试,linux,Mac)