华为+京东数科(原京东金融)面经--Java后台开发

华为:java

1.笔试中遇到的问题,如何解决的?(Scanner 如何结束循环读取数据,笔者在面试中因没有理解到Scanner类的hasNext()与hasNextLine()是阻塞方法,致使没有正确退出循环,不清楚的同窗要注意了!!!)面试

2.给一个环,每通过3个剔除一个,如:1,2,3,4,5->1,2,4,5->2,4->4,对于任意给定的一个序列,输出最后剩下的那个值,手写代码(好像剑指offer原题)redis

3.看你的简历上有redis,说一下为何不直接在缓存中使用一个buffer,而要使用redis?尴尬,东扯西扯。。。设计模式

4.多线程(全部大中型公司问到的最多的问题)数组

sleep()与wait()的区别?缓存

线程1,2,3,如何执行完1再执行2再执行3,当时蒙住了一直在想锁。面试官提示join(),恍然大悟,而后把这个问题的实现代码手写了出来。安全

面试官给了pass。多线程

京东数科:jvm

京东数科问的问题就比较深也比较难了,面试感觉不是很好。加密

1.聊项目,针对登陆这一块就被问倒了,如如何经过ticket判断当前用户的登陆状态,一些加密方法(非对称、对称加密等),项目是笔者最薄弱的地方,安全方面的知识更是欠缺,这里大部分都是处于被虐阶段。

尊敬的面试官,您好,咱能聊聊java基础吗?额。。。好吧

2.java经常使用的集合类有哪些?ArrayList与LinkedList的区别?为何ArrayList的查找时间复杂度为1,底层实现原理是什么?

3.HashMap()以数组链表形式存储,当链表长度达到8以后,会不会产生变化?答:链表转化为红黑树,笔者解释了半天为何长度是8的时候产生变化(空间复杂度+时间复杂度+链表达到8的几率(根据泊松分布))。面试官让聊一聊红黑树,这个我真的不太会,下来学吧。。。

4.多线程。volatile关键字,这个我。。。有印象,但不会。而后说了一下synchronized与lock的区别。

5.设计模式,主要聊了一下工厂模式。

6.jvm相关

为何要将堆上内存分为新生代和老年代?

聊一聊g1的特色

如何判断对象是否存活(引用计数法+可达性分析)。

以上就是这两次面试的主要内容。(华为25分钟+京东数科42分钟)笔者自认自身实力目前还欠缺不少,目前已拿到三星电子西安研究所+平安科技offer,期待华为的offer平安无恙,距离京东数科的offer感受还有一段路要走。