昨天晚上面得 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)次方,差不多一样的回答,没有很好地想法。。。。