互斥条件:一个锁一次只能由一个进程占有
不可剥夺条件:一个进程占有的资源在使用完之前不可以被其他进程剥夺,只能由该进程释放之后才能被其他进程获取。
请求和保持条件:一个进程在申请资源的同时保持已经占有的资源不释放。
循环等待条件:同时需要A、B两个资源的进程分别占有了A和B,形成了两个进程都阻塞并等待对方释放资源的状态。
怎么在开发中避免死锁:
银行家算法
怎么检测死锁:
jstack -l可以查看堆栈运行的状态,-l会显示锁状态,里面会报告死锁。
怎么解决死锁:
1、系统重启2、撤销代价比较低的线程,例如低优先级的线程
网络中怎么传输一个(int,int)的键值对:
这个我没太理解,我说用json格式以(String,int)的格式存上,到客户端再进行解析,然而面试官表示不是这个意思,好像更多的实现想要问网络中的编码和序列化的问题,就是怎么把字节流转换成对应的格式。
final关键字:
修饰类不能被继承,修饰方法不能被重写,修饰变量,如果是基本类型在初始化之后就不可变了,如果是的引用类型在初始化之后就不能指向另一个对象了(但其实可以通过反射修改它指向的内容)。
final修饰的对象什么时候被初始化:
final类型的静态变量(即编译期常量)在类加载时就会被初始化放入常量池中,其他的非编译期常量是在运行期初始化的。
Jdk中map的实现都有什么:
HashMap、TreeMap、Hashtable、LinkedHashMap。
LinkedHashMap跟HashMap的关系:
LinkedHashMap维护了一个双向循环链表,是有序的,保留了元素的插入顺序。
数据库事务的四个特性:
ACID
事务的原子性怎么实现的:
回滚日志undo log
算法题思路(我是不是应该稍微思考一下显得我没见过套路……感觉本来应该结束了,我秒出来之后就又问了一堆,然后就问到我的短板了T_T):
一堆出现两次的数字中找出只出现一次的数字:按位与
反转语句MY NAME IS A变成A IS NAME MY:每个单词翻转再整体翻转。时间复杂度O(n)空间复杂度O(1)。
Java虚拟机GC机制:
判断是否可回收:引用计数法、可达性分析
回收算法:标记整理、标记清除、复制算法、分代搜集
Object类的equals方法什么时候需要被重写,为什么要重写hashcode:
太经典了就不说了。
写一段代码,遍历Map删掉value为输入的值,很简单,但是我忘了怎么生成iterator了,于是采用了会导致fail-fast的增强for循环(我知道会有问题,但是不知道该咋办了),面试官明显不满意,甚至问我平常java代码写的多么……
Mysql的底层存储方式:
全部评论
(4) 回帖