网易杭研Java开发面经
8 月 14 号下午视频面的,岗位是 Java 开发,面试官挺客气,说话也慢条斯理的,也会主动引导我的思路。希望能有二面吧:persevere:
自我介绍,问了一下实习相关的,没介绍项目。
Java 中的容器分类有哪些?那么 Map 有哪些咩?LinkedHashMap 的底层实现? LinkedHashMap 有哪些应用场景呢?emmm…这个我就说可以用它来实现 LRU,自己一般用 LinkedHashMap 较少,只是在 HashMap 基础上为了记住插入顺序才用这个的,面试官也没说啥,这个问题就过了。然后问 TreeMap 底层呢?,TreeMap 相比 HashMap 的特点?后面还追问了 TreeMap 中红黑树复杂度计算方式…这个我就不会了,后面还是要补一下,好几次面试都问了红黑树。
Java 中的锁有哪些分类?可重入锁是悲观/乐观锁?乐观锁怎么定义的?乐观锁有哪些问题?
介绍下实习中的项目?项目中用到了 Netty,你对 Netty 了解多少?本以为要引出 NIO 了,结果没问…没问…好像之前看网易 Java 面经确实都没有问 IO 相关的,可能是网易那边业务中涉及比较少吧。
Spring 核心理念?说下你对 IoC 的看法?那么 Spring 怎么解决循环依赖问题的?这个问题我就不会了。。直接说的是我不知道(抓到知识盲点一个,以前看到过这个问题但是没有仔细研究过)。那你说下 AOP?AOP在Spring中底层实现?JDK 中自带的实现接口,cglib 中的继承要代理的类,那么你知道 cglib 的底层原理吗?我说只知道底层好像是使用 Enhancer 类来操作需要代理的类来实现继承关系的…其它的我就不知道了。
线程池用过吗?你知道 Java 中创建线程池的方式?我说有五种,Excutor 中的 newSingleThreadPool、newCachedThreadPool、newFixedThreadPool、newScheduledThreadPool 以及使用线程池自身的构造方法 new ThreadPoolExecutor 创建,并说了一下里面的参数。然后问那你说一下这几种线程池的底层实现?balabala,这个比较简单,然后接着一个问题来了,那你说一下 newSingleThreadPool 和直接创建线程有什么区别?emmm…我不知道从哪个点说,面试官提示我说一下线程池的优点?我说有降低资源消耗、提高响应速度(主要体现在线程上下文切换)以及对线程的管理上,回到这个问题本身,我觉得应该是单线程线程池能够更好的被管理吧,面试官没点头也没摇头这个问题就过了…最后面试官问了一下有没有用过第三方的线程池,就是 JDK 之外的?我说没有,他说数据库连接池用过吧,比较一下数据库连接池和线程池?这个只能说设计思想是相同的,具体一一说出来,还真没有方向,面试官也没再追问就过了。
Redis 用过吧(项目中写了),本以为要问我 Redis 底层的,好吧也没问,他问我怎么保证 Redis 高可用性,我说我搭了 Redis 集群,从 CAP 原理开始扯如何保证高可用性 balabala。
然后又问了一个项目,JVM 监控系统是否会对目标对象产生影响 balabala,最后面试官好像实在记不起来还能问啥,就结束了…
感受:全程问的都比较基础,没有揪着一个问题深挖底层,也没有问 MySQL、设计模式、HTTP、计网相关的,但是恰好我正需要这些知识点查漏补缺,包括 JVM 相关的也问的很少(也可能是项目中有一个 JVM 相关的,所以没问其中的知识点),不过还是希望网易能给个二面机会:weary:
需要java学习路线图的私信笔者“java”领取哦!另外喜欢这篇文章的可以给笔者点个赞,关注一下,每天都会分享Java相关文章!还有不定时的福利赠送,包括整理的学习资料,面试题,源码等~~