ps:自己的面经是不是有点晚啊~,~呵呵。2014年9月24日杭州终面详细过程。
前面有其他岗位同学的汇总篇:http://blog.csdn.net/supera_li/article/details/39254825
研发工程师
杭州站面试成功面试经验
技术一面XX(花名保密吧):
ME:好紧张啊~~(刚走到面试官的桌子旁边,还没有坐下去~~囧啊,随口来了句)
D:不要紧张,咱们随便聊一聊。你在XX,为什么来杭州啊?
ME:。。。。。。(当然是来面试啊~~来当时表情还没有缓过来,然后就笑了笑~~)
D:好,咱们换个话题,你先自我介绍下吧
ME:巴拉巴拉。。。。
D:你说说有哪些排序算法以及他们的复杂度
M:是需要分析每种排序的最好情况与最坏情况吗?
D:平均复杂度就行了啊
ME:直接插入排序,优化的折半插入排序,冒泡等双循环的为N^2,归并,快排,堆排序等带有递归过程的排序算法是nlogn。
D:恩,好,你写一个快排吧
M:ok,试试看,好久没动笔了。慢慢写应该没问题。我先用我自己定义的状态语言来表示算法过程,一会写到那张白纸上
D:恩,写清楚。
M:巴拉巴拉写~~~然后copy到白纸上~~
D:恩,那你再说说排序的过程吧
M;取数组第一个元素设置为vot,然后从后到前查找小于vot的值,然后交换,再从前向后查找大于vot的值交换,第一遍结束后,分vot在数组中间,,然后递归处理左右子数组就行了。
D:操作系统的内存是做什么用的啊:
M:。。。。。。这个不是怎么回答啊
D:你想想,那么多进程,怎么处理的啊,如果没有他,进程会是什么情况
M;进程管理?
D:恩,对,还有什么?
M:IO,文件,cpu任务调度。。。
D:内存模型知道吗?
M:(心想,操作系统的内存模型,不就是c,cpp的内存模型?)堆,栈,静态,code区,常量池。对吗?
D:。。。。。
M:不知道。那我可以从JVM内存模型来类比推出操作系统的吗?感觉都差不多。
D:那你给我画出来下
M:沙沙沙(loadclass-->JNI到方法接口流程图)。。。Heap,stack,PC count,method,还有一个忘了,不常用
D:第五个是什么?
M:我记不太清楚了,我想一下,貌似是方法接口区?
D:恩。解释下GC原理
M:沙沙沙画图,这是young,old,persistent,第一个分了两个存活区,用于临时转移新new的对象,对象回收的方向大致为。。。沙沙沙。。在old区,我记得hotspolt虚拟机是默认15次。没有回收就将对象转移到最后一个永久区。当然常量池也在永久区,永久区满了,依旧会出现OOM异常,方法栈直接爆掉。中间收集商业虚拟机很多是用分代收集算法做的。
D:解释下分代收集算法?
M:。。。。这个每个块的算法记不太清了,分代回收算法见名知意,就是按照对象处于不同代进行特定回收的算法啊。(什么引用计数,树根,以及目前的G1算法,,,当时没说。。)如果老师知道具体的算法名字,提下名字,我应该能想起来实现原理。还有中间old区如果达到一定配置的数值,会引起fullgc。
D:。。。。。。中间那块是什么区?