阿里巴巴天猫事业部java大数据方向电话面试总结201805

内容简介:阿里巴巴天猫事业部java大数据方向电话面试,总结交流的主要问题和自己的体验,希望给自己和大家共勉。

第一印象:面试老师是非常守时的人,约定八点面试,就是八点准时给你面试,如果有急事,也会八点准时通知,说现在有点事,半个小时后再面试,说八点半然后也是准时的八点半,很赞。

主要交流的问题:

1)自我介绍:省略

2)专业问题:下面开始具体介绍。

问题一:jvm是什么,怎么样和一个初学者将清楚jvm是什么?

回答:jvm是java虚拟机,是负责执行程序的,jvm本身不是夸平台的,但是对于开发者而言是夸平台的,因为sun公司在jvm帮我们考虑了夸平台。对于java开发者而言,无需关心。

问题二:JVM加载类的过程主要有哪些?具体是怎么加载的呢,以及深入问答

回答:jvm会把类加载到虚拟机,然后内存会划分为:本地方法区,静态方法区,堆,栈。和我们开发者有关系的是静态方法区和堆和栈,静态方法区就是加载的类和一些静态成员。栈是加载一些方法和基本数据类型的变量等,堆是存储对象的

老师:具体的加载是哪个类呢?加载主要分为哪些模块来加载?具体的加载过程是什么?

答案:类加载时使用classLoader类来加载,其下面分为几个子模块分别是:

bootstrapt classloader //加载jdk的核心包:rt.jar

extentions classLoader //加载扩展jar包

app  classLoader //加载项目引用的class文件

customs classLader//加载的自定义class文件,例如tomcate等容器会自定义jvm加载类的方式。把类以tomcate的自定义方式加载到tomcate的jvm中。

以上:加载顺序是从上到下,检查顺序是从下到上

老师:如果这个不是很了解的话,那么在启动tomcat经常会出现问题,例如,一个类,在不同的包名下面,那么出问题了这么排查是什么问题呢?这么发现问题出在哪里,class冲突了这么办?

老师:什么情况下会出现 NoClassDefFound 问题,和class not founded的区别是什么

答案:class类是没有找到jar包引起的,一个类引用了另外一个类,结果这个类的jar包没有被jvm加载,就会报错class not founded问题,noClassDefFound的一般是编译失败吧,有这个类文件,也加载了,但是该类中有错误引起的问题。

另外,noClassDefFound是一个错误,classnotfound是一个异常,错误和异常是不一样的,异常可以捕捉然后做处理 可以由开发者控制,错误不行。
还有一个导致ClassNotFoundException的原因就是:当一个类已经某个类加载器加载到内存中了,此时另一个类加载器又尝试着动态地从同一个包中加载这个类。【亲身经历:由于备份了一个class文件A_bak.class,但是里面的包名类名不变,把新的class拿过来A.class,会重复加载类,就会报该错】
 
 
 
 
noClassDefFound错误:ClassLoader实例加载类的时找不到类的定义。要查找的类在编译的时候是存在的,运行的时候new却找不到了。NoClassDefFoundError是有JVM引起的,所以不应该尝试捕捉这个错误。
问题三:hadoop内存溢出问题是否有遇到过?怎么解决的能否分享一下?
回答:有遇到过,有2中处理方式,第一种:数据没有倾斜,分布很均匀,但是jvm配置的内存配置的比较小,此时就需要调整jvm的内存大小配置即可。第二种:由于数据倾斜问题导致内存溢出,需要尽量的数据重新切分,让数据尽量均匀来解决此问题,这种情况会比较多见。

老师:内存调整大小,具体的依据是什么?比如一台虚拟机,内存就是6G,分配给tomcat的jvm最大内存应该是多少?

回答:jvm内存分配不能分配所有的内存,因为要考虑到 垃圾回收器,其垃圾回收时有新生代和老年代之分,回收时会复制一份数据到内存中,然后这部分是会占用内存,所以是需要安装一定的比例来划分内存空间的。

问题四:集合LIST中,线程安全的是哪个?为什么是线程安全的呢?

回答:Vector类是LIST中的线程安全的类,里面的代码是通过同步代码块的方式来保证线程安全的,一般使的很少。

问题五:spring用过吗?

回答:spring是分层框架,我们目前是自己搭建分层框架来实现功能的扩展:包括:dao层,service层,controller层等,spring用的比较少,主要是前台开发框架使用的比较多,篇后台的使用的少。很久之前使用过,最近的项目没有使用到。


总结:大概和老师交流了半个小时,印象深刻的问题主要包括以上几个方面,问的确实是比较基础,但是,老师会根据你的回答,一步一步展开深入的问下去,老师一般都是很有技术水平的。以上电话面试总结完毕,增加底层jvm的研究和原理性学习,同时提高表达能力。


猜你喜欢

转载自blog.csdn.net/wumiqing1/article/details/80331535