阿里java研发一面(3小时)面经

整体感受:爱上这位面试官了,超级温柔,问题也是几乎都是引导性质而非直接提问性质,自己回答的不全面试官都会进行指导和引导,整体面试感觉超好,虽然感觉最后受死代码太崩了,感觉会凉但是这位面试官真的超级让人佩服,希望自己有一天也能成为和他一样的人。

首先记录一下大概的流程吧:

1.首先面试官进行自我介绍并介绍自己项目组的信息。

2.自己进行自我介绍

3介绍自己的学习方法有什么?

4实习经历,实习最大的收获,因为在实习的时候接触ssl vpn所以面试官对问了 ssl vpn的一个理解。

5.介绍自己的项目。

6.说一下对jvm的理解.

7.自己有读过源码吗?答:读过hashmap和springioc的源码,但是很浅,说了一下自己对hashmap和springioc的底层理解

8.如果怎么防止key值在加入hashmap时被改变:答:校验码方法 面试官补充:用final类就行。

9.jvm的理解:答:从jvm内存分区+垃圾回收算法+gc root+类加载过程+垃圾收集器+四个类加载器(双亲委派机制)

10线程池的理解和新建线程池对应的参数,巴拉巴拉,具体就不多说了

11.手撕代码:

算法题:

判断一个树是不是平衡数,用网页写,递归方法

工程题:

第二题:
我们提供一个类:
public class FooBar {

    public void foo() {
        for (int i=0; i < n; i++) {

                print("foo");
            }
        }
    }

    public void bar() {
        for (int i=0; i < n;i++ ) {

                print("bar");
            }
        }
    }
}
两个不同的线程将会共用一个 FooBar 实例。其中一个线程将会调用 foo() 方法,另一个线程将会调用 bar() 方法。

请设计修改程序,以确保 "foobar" 被输出 n 次。

示例 1:

输入: n = 1
输出: "foobar"
解释: 这里有两个线程被异步启动。其中一个调用 foo() 方法, 另一个调用 bar() 方法,"foobar" 将被输出一次。
示例 2:

输入: n = 2
输出: "foobarfoobar"
解释: "foobar" 将被输出两次。
第三题:
1.生成一个文件,大小不大于1G或行数不大于指定数,文件每行内容 为随机long型正整数的字符串;
2.读取该文件,并对文件中的整数进行排序,并输出一个文件;
3. 要求代码简洁优雅,和效率优化

发布了55 篇原创文章 · 获赞 17 · 访问量 4981

猜你喜欢

转载自blog.csdn.net/weixin_43698704/article/details/105420437