360服务端开发面经(社招岗)

一面

1、String内容存放在哪儿?

答:运行时常量池,然后把jvm的内存结构讲了一下,堆、栈、程序计数器、方法区等,每

块区域的作用之类的。

2、jvm的回收机制是什么?

问的有点大,只好从分代回收算法说起,从GC ROOTS的引用链机制到新生代的小空间复制

算法再到老生代的标记清除算法,最后就是新生代和老生代之间的关系以及跃迁等。

3、讲讲jvm的类加载机制吧,委托双亲机制吧。

反射机制是如何利用类加载机制的呢?

4、懂哪些设计模式?

答:单例,建造者,观察者,模板方法模式,迭代器模式等。

5、你在项目中用到过观察者模式吗,怎么用的?

答:做统一配置组件的时候使用到了zookeeper的发布订阅,创建了监听链表,完成应用系

统的注册和同步。

6、写个单例模式吧,把你认为效率最高的单例实现写出来。

答:当然是通过jvm的内部类机制实现单例了,又快又安全

7、再写一个双检查的懒汉单例模式吧。

8、为什么要用volatile关键字?

答:在高并发时会出现并发模式异常,volatile可以防止指令重排,创建对象操作并不是一

个原子操作,分为三个步骤

(1)构建对象:根据Person类元信息确定对象的大小,向JVM堆中申请一块内存区域并构

建对象的默认信息(加载Person对象成员变量信息并赋默认值如int类型为0,引用类型为

null)。

(2)初始化对象:然后执行对象内部生成的init方法,初始化成员变量值,同时执行搜集

到的{}代码块逻辑,最后执行对象构造方法。

(3)引用对象:对象实例化完毕后,再把栈中的Person对象引用地址指向Person对象在堆

内存中的地址......

9、能不能讲讲线程的内存模型?

10、谈谈你对cas的理解。

#面经##社招##360公司##Java工程师#
全部评论

相关推荐

3 23 评论
分享
牛客网
牛客企业服务