OK GROUP Java岗社招面筋分享

1.什么是死锁?

2.死锁产生的条件?

3.怎样避免死锁?

1)破坏“不可剥夺”条件:一个进程不能获得所需要的全部资源时便处于等待状态,等待期间他占有的资源将被隐式的释放重新加入到 系统的资源列表中,可以被其他的进程使用,而等待的进程只有重新获得自己原有的资源以及新申请的资源才可以重新启动,执行。

2)破坏”请求与保持条件”:第一种方法静态分配即每个进程在开始执行时就申请他所需要的全部资源。第二种是动态分配即每个进程在申请所需要的资源时他本身不占用系统资源。

3)破坏“循环等待”条件:采用资源有序分配其基本思想是将系统中的所有资源顺序编号,将紧缺的,稀少的采用较大的编号,在申请资源时必须按照编号的顺序进行,一个进程只有获得较小编号的进程才能申请较大编号的进程。


4.synchronized和Reentrantlock的区别?

5.ReentrantLock实现原理?

答:简单来说,ReenTrantLock的实现是一种自旋锁,通过循环调用CAS操作来实现加锁。它的性能比较好也是因为避免了使线程进入内核态的阻塞状态。想尽办法避免线程进入内核的阻塞状态是我们去分析和理解锁设计的关键钥匙。


6.可重入锁是什么?

答:可重入锁,从字面来理解,就是可以重复进入的锁。它也叫做递归锁,指的是同一线程外层函数获得锁之后,内层递归函数仍然有获取该锁的代码,但不受影响。在JAVA环境下ReentrantLocksynchronized都是可重入锁。


7.springboot自动配置原理?

8.事务的隔离级别?解释

9.volatile关键字

10.单例模式实现

11.cas原理

12.ABA问题

13.HTTP状态码

14.谈谈JMM

15.linux修改文件权限

16.linux查看文件的某一行

17.redis数据结构

18.redis线程模型

19.redis为什么快?除了基于内存还有什么原因?

20.垃圾回收算法?新生代用什么?

21.wait()和sleep()的区别?

22.HTTP短连接和长连接

23、手撕代码:

给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)

示例 1:

输入: [3, 2, 1]

输出: 1

解释: 第三大的数是 1.


示例 2:

输入: [1, 2]

输出: 2

解释: 第三大的数不存在, 所以返回最大的数 2 .


示例 3:

输入: [2, 2, 3, 1]

输出: 1

解释: 注意,要求返回第三大的数,是指第三大且唯一出现的数。

存在两个值为2的数,它们都排第二。

#OkCoin##Java工程师##社招##面经#
全部评论

相关推荐

2024-12-31 09:44
武汉理工大学 Java
程序员牛肉:暑假实习是面向大三招收的哦。你才27届不用急哦。 第一点:在简历的实习板块中简单描述一下你的业务,你说你做了什么什么模块,那你这个模块是在哪个项目中的?简单介绍一下你做的模块所隶属的项目。项目那块挖的还是不够深,先不用着急更新简历,可以再沉淀个四五天。 实习要是让面试官觉得是包装出来的话,是一件很严重的问题,说难听点就是造假。互联网很看重诚信问题,你一旦出现了这种诚信问题,基本这辈子就距离大厂无缘了 2.不要贴任何链接了,没啥用而且很影响美观。有的时候让面试管看着顺不顺眼也是一个是否约你面试的影响因素。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
2
11
分享

创作者周榜

更多
牛客网
牛客企业服务