金证科技股份有限公司社招Java工程师(一面)

根据面试聊天的中得知,该公司业务金融证券对实时大数据技术很重视
基础要扎实。
一些分布式大数据框架要了解下。

  1. 介绍寒暄--------------------略
  2. Java虚拟就运行数据区的了解?-----------------画个图,把那几个管理的区域分别阐述下:虚拟机栈(线程独享的,随着线程的开始/结束而创建/销毁),本地方法栈(同虚拟机栈一样),PC寄存器(同虚拟机栈一样),方法区(线程共享的,虚拟机启动而创建,退出而销毁),堆区(线程共享的,同方法区一样)……
  3. 分别说说它们各自的作用?----------------(承接上一问的坑)PC寄存器:在虚拟机多线程的场景下每个线程都拥有自己的寄存器,用来存放当前方法经过JVM编译后的字节码指令地址(如果是native方法,寄存器存放的是undefined);虚拟机栈:每个线程都拥有各自的栈,存储局部变量、动态链接、方法出口等……;本地方法栈:类似于虚拟机栈用来存储本地方法(Java以外的其他语言编写的指令集调用)局部变量和操作;堆:属于所有线程共享的内存区域,存放对象,垃圾回收的管理区域等;方法区:所有线程共享的区域,存储每个类的结构、运行时常量池、字段方法类变量……
  4. 堆的原理和分代了解吗?------年轻代(Eden,Suvivor1,Suvivor2),年老代……阐述下对象的生命周期随着GC而从不同的年龄代区域进行迁移……任何一个空间不够用的时候都会促使JVM进行GC。
  5. 那么GC方式有哪些?它们的原理是什么?-----(承接上一问的坑)根据回收类型分为MinorGC和FullGC两种方式。MinorGC回收新生代内存空间(Eden,S1,S2),新对象生成申请空间失败会触发MinorGC,把存活的对象移动到两个S区,由于Eden区空间相对较小,所以需要速度快效率高的GC算法。FullGC要对整个Heap进行回收,包括新生代、老年代、以及非堆区的持久代,所以时间长,这也是JVM调优的一个突破点。触发FullGC的原因有老年代已满,持久代已满,System.gc()调用……
  6. 谈谈你对上面GC中回收对象中提出的对象有什么理解?回收那些对象,需要怎么分辨?----------(一坑套一坑,环环都是坑)对象在内存中的存储布局,对象头、实例数据、对齐填充(按理说这个不是我们业务开发员所关注的定义,都是翻译老外的一些术语),主要还是对象的生命周期导致GC回收,也就是判读对象是否存活。引用计数算法是根据对象的引用来给计数器增减1,当计数器为0的对象即被回收,但很难解决对象之间的相互引用;根搜索算法,GCROOT作为对象起始点,向下搜索,搜索的路线为引用链,如果有些对象不再引用链触及点,那就判断为失效对象。
  7. 你了解的垃圾收集算法有哪些?----------------标记清除算法(标记出所需要被回收的对象,然后进行回收),复制算法(将内存划分为大小相等的两块,每次使用一块,当使用的区域用完后就将存活的对象复制到另一块上面,然后清理掉已使用的一块),标记整理算法(针对老年代的特点,采用先标记然后将存活的对象移动到一端,再清楚失效的对象)。
  8. 你了解那些垃圾收集器?-------------------就是对上面算法的具体实现,一般不同的分代会有不同的收集器。新生代Serial,ParNew,老年代的有CMS,ParOld……,具体的相关还是有待试后查查相关资料了解下……
  9. TCP的了解,以及TCP三次握手过程---------------画个图阐述:TCP被封装到IP数据包中的一些结构。画个C/S中交互的过程(Client发请求,Server响应返回给Client,Client再次回应Server的请求)
  10. 四次挥手过程?-------------也画个草图……
  11. Java程序启动至少启动几个线程?------除了main主线程,应该还有垃圾回收机制线程吧……这个不太确定……
  12. 创建线程以及线程运行时代码的方式?----------继承Thread类,实现Runnable、Callable接口。实际可以在纸上列出他们的伪代码……
  13. 线程的中断、休眠相关以及区别?-------sleep是线程暂停指定时间后继续执行,中断interrupu是线程停止运行。
  14. 聊项目,以及项目中的一些大数据相关。hadoop集群部署了解吗?你们公司是如何部署的?--------JobTracker和Namenode需要单独部署,因为所有用户对于HDFS操作的请求都会转发到Namenode,所有的运算MapReduce任务都会转发到JobTracker,因此这两个节点的运行压力比较大。TaskTracker和DataNode可以同时部署在一台机器上,一个负责实际数据存储,另一个负责实际的运算任务。如果TaskTracker任务中所需的数据刚好来自于同一台机器的DataNode,不需要走网络传输,既可以获取数据,又可以提高效率。

总结:一面主要是JVM底层、线程基础、以及项目经验为主要内容,时间有有限,
所以后续的考察留到了后面的二面、三面……


#金证股份##社招##Java工程师##面经#
全部评论
你最近面了这么多么
点赞 回复
分享
发布于 2019-11-18 21:31
感谢分享面经!欢迎参加过社招的牛友发社招面经拿京东卡!~ -------------------- 活动:社招面经征集|参加过社招的牛友,来发面经吧,拿京东卡
点赞 回复
分享
发布于 2019-11-20 16:59
联易融
校招火热招聘中
官网直投
想问下 阐述下对象的生命周期随着GC而从不同的年龄代区域进行迁移   这个怎么回答的,从哪些方面回答,谢谢。
点赞 回复
分享
发布于 2019-11-21 17:27

相关推荐

2 40 评论
分享
牛客网
牛客企业服务