伦敦 伦敦00:00:00 纽约 纽约00:00:00 东京 东京00:00:00 北京 北京00:00:00
当前位置:主页 > 投资学院 > 帮助中心 >
帮助中心

网易考拉海购Java后台开发实习-面经(已拿offer)大三

  一共有两种算法,一种是引用计数算法,每被引用一次计数器就+1,当引用为0就回收,不过这种算法有一个弊端就是,当对象之间互相引用的时候就永远不会回收,所以用的最多的还是GC ROOTS可达性分析,看对象是否被GC ROOTS引用,那么哪些可以作为GC ROOTS呢?有以下四种:1.栈里面的局部变量表,方法区的2.类静态属性引用的对象3.方法区中常量引用的对象,4.JNI本地变量栈中引用的对象

  (面试官速度很快,还没等我来得及说明ReentrantLock就跳下一个问题了,也许是这个超底层的回答比较满意吧)

  AOP就是面向切面编程,并说明了下列术语,joinpoint,pointcut,aspect,advice,并说了一下实现的原理,若实现了接口就是JDK动态代理否则就用CGLIB

  hashmap底层是一个key-value结构的entry数组+链表,并且每次扩容都是扩大两倍synchronied是JVM级别的,否则添加到尾部,自适应锁否则遍历哈希桶后面的链表如果有key相等的则覆盖,然后检查是否达到treshold需要扩容,在put的时候根据key的hashcode的值在hash一次,然后根据得到 的hash值再和hashmap的size取余操作定位到要插入的哈希桶,JVM会对synchronied做出相应的优化,如果为null则插入,锁消除:当JVM判定该资源不会被其他线程争夺的时候就会消除该锁,而ReentrantLock是api级别的,还有锁自旋,

  好的,在线程池内部一共有这么几个参数,corepoolsize:核心线程数,maxpoolsize: 最大线程数,workquee:一个放预备线程的阻塞队列,time:允许的空闲时间,handler:异常处理器。当向线程池加入一个线程的时候,如果运行的线程数小于corpoolsize,则直接实行此线程,如果等于了corepoolsize则提交给阻塞队列阻塞等待,如果阻塞队列已满,则实行器继续增加新的线程来实行任务,如果达到了maxpoolsize则实行handler的异常处理方法,有以下几种方法抛出异常,网易考拉海购Java后台开发实习-面经(已拿offer)大三忽略,提交线程者运行,删除等待最久的线程

  最后面试官简单评价了一下:看得出来你平时看了很多书,不过前面有一两个答错了,你开始很紧张,后来好了一些。

  我:栈区:每次方法的实行都会有一次栈帧的生成,并且其中有局部变量表。堆区:每次new出来的对象都保存在这儿。本地方法栈:通过C/C++调用系统接口的一些方法,方法区:类的信息 静态变量都在这儿,还有程序计数器


点击次数:  更新时间:2019-08-05 07:02   【打印此页】  【关闭
上一篇:没有了   
下一篇:没有了
XML 地图 | Sitemap 地图