JD提前批一面

昨天晚上面得 JD 提前批一面,京东云部门,面试时长35分钟,说下大致流程和面试问题吧。

自我介绍

Java 和 c++ 有哪些区别?

为什么说 Java 是面向对象的?说一下面向对象的三个基本特征。

什么是多态,然后怎么实现多态的性质的?

讲一下 Java 的抽象类,接口,类的区别和联系。说一下类。

说一下进程和线程的区别说道并行和并发,就解释一下并行和并发的概念

说到多线程,问了线程的安全,怎么保证线程安全,有哪些方式?

说一下锁机制,可重入,公平,可中断锁。

重点解释了可重入锁

问了一下那个可中断锁,就是有两个线程,一个线程正在占用一个锁,另一个线程在等待然后它不想等待了,它自己给自己中断了,那么数据是怎么处理的?是直接扔还是怎么办? 不知道。。。

说了一些 synchronized 关键字

说了 Spring 的注解,@component 和 @bean,有点囫囵吞枣感觉赶紧扯到了 bean 的生命周期上

问了 @component 的作用,然后说了 @controller,@service,还有 model 层的东西,大致说了一些。

这块答的不是很好,因为很久没看了。

问了一下排序算法,问了快排和堆排有什么不同的地方,项目中为什么选择快排。

问了 Redis,在项目中用到了 Redis 的哪些东西。

问了一个 Redis 和 mysql 中各自都存放了哪些内容,两者之间是怎么对应的?

问了 Redis 碰到断电啊这些特殊情况是怎么处理的?

如何保证数据一致性?

最后问了一个算法题:求 2 的 n 次方,n 非常大,可能都放不进内存。

刚开始我说了一个快速幂和矩阵乘法求幂运算,没注意放不进内存,

然后就说了利用字符串存储答案,然后进行乘法运算一步步的算反正就是暴力的进行运算,没有很好地想法。

然后他问了求 2 的(-n)次方,差不多一样的回答,没有很好地想法。。。。