该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
介绍一些你了解的垃圾回收算法?
答:标记清除,标记整理,复制算法,把每个算法是啥说了一遍;
问到这里,问了我你知道SurvivorRatio这个参数为啥初始是默认的8:1:1吗?
答:这个由于刚才刚问了垃圾回收算法,我觉得可能有关联,于是我说,方便复制算法操作,Eden区域大多数都是朝生夕死的,这个比例,可以方便复制算法的中from和to来回进行复制存活的对象,额,说完,他没有说啥,感觉是默许了吧;
突然又问,二叉树了解吗,写一个二叉树的深度搜索遍历?
答:当时我听到中道题,有点懵,什么是二叉树的深度搜索遍历,我只知道层次遍历,前序后序中序遍历啊,我想了想,感觉和后序遍历挺像的,我觉得应该就是后序遍历吧,我就先写了个后序遍历的递归写法
1voidDFS(TreeNoderoot)
2{
3if(root==null)
4return;
5if(root.left!=null)
6DFS(root.left);
7if(root.right!=null)
8DFS(root.right);
9System.out.println(root.val);
10}
,然后他看了一眼,没说啥,感觉这个面试官有点话少冷淡,全程不和我互动,emmmm....下来自己百度了下,对的。。。
这个代码问完我,让后让我去等通知,我感觉回答的还行,果然没过几分钟,通知我去三面;
三面
照例自我介绍和项目介绍;
上来就让我手撕一个单例模式。。。
答:继续写我的双重锁模式
1publicclassSingletonDemo{
2privatevolatilestaticSingletonDemoinstance;
3privateSingletonDemo(){
4System.out.println("Singletonhasloaded");
5}
6publicstaticSingletonDemogetInstance(){
7if(instance==null){
8synchronized(SingletonDemo.class){
9if(instance==null){
10instance=newSingletonDemo();
11}
12}
13}
14returninstance;
15}
16}
,
让我讲了讲代码是啥啥意思?
答:STEP 1. 线程A访问getInstance()方法,因为单例还没有实例化,所以进入了锁定块。STEP 2. 线程B访问getInstance()方法,因为单例还没有实例化,得以访问接下来代码块,而接下来代码块已经被线程1锁定。STEP 3. 线程A进入下一判断,因为单例还没有实例化,所以进行单例实例化,成功实例化后退出代码块,解除锁定。STEP 4. 线程B进入接下来代码块,锁定线程,进入下一判断,因为已经实例化,退出代码块,解除锁定。STEP 5. 线程A初始化并获取到了单例实例并返回,线程B获取了在线程A中初始化的单例。大体是这么回事。
由于我的项目中提及到JVM,所以给我出了一个场景题,垃圾会收器中,标记清除多次后,由于采用的是标记清除算法,那么你觉得可能会出现什么问题?
答:然后我说由于产生了内存碎片,所以当分配一个大对象的时候,由于内存不连续,那么会