oppo Java岗社招面经
1、讲一下Java的虚拟机;
2、说说怎么能让虚拟机中的方法区直接爆满?
3、讲一下Java的垃圾回收机制;
4、把Java中的容器类都讲一下;
5、Java中的锁是怎么实现的?
6、引用计数法有什么缺点呢?
(1)计数器值的增减处理频繁。因为每次对象更新都需要对计数器进行增减,特别是被引用次数多的对象。
(2)计数器需要占用很多位。计数器的值最大必须要能数完堆中所有对象的引用数。比如我们用的机器是32位,那么极端情况,可能需要让2的32次方个对象同时引用一个对象。这就必须要确保各对象的计数器有32位大小。也就是对于所有对象,必须保留32位的空间。假如对象只有两个域,那么其计数器就占用了整体的1/3。
(3)循环引用无法回收。循环引用会让计数器最小值为1,不会变为0。
7、说一下TCP的三次握手和四次挥手;
8、为什么挥手时有个time_wait?即2MSL。
9、说一下浏览器输入URL都发生了什么,到页面出来的流程;
(1)首先,在浏览器地址栏中输入url;
(2)浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中有,会直接在屏幕中显示页面内容。若没有,则跳到第三步操作。
(3)在发送http请求前,需要域名解析(DNS解析),解析获取相应的IP地址。
(4)浏览器向服务器发起tcp连接,与浏览器建立tcp三次握手。
(5)握手成功后,浏览器向服务器发送http请求,请求数据包。
(6)服务器处理收到的请求,将数据返回至浏览器。
(7)浏览器收到HTTP响应。
(8)读取页面内容,浏览器渲染,解析html源码。
(9)生成Dom树、解析css样式、js交互。
(10)客户端和服务器交互。
(11)ajax查询。
10、操作系统中的死锁怎么形成的,怎么预防死锁?
11、进程和线程有什么区别?
12、线程的几种状态。
13、线程池用过没,怎么使用,流程是什么?
14、创建线程有哪些方法,有什么区别,你一般怎么创建?
#OPPO##Java工程师##社招##面经#