`

某知名公司的面试题的疑惑

 
阅读更多

4月初,面试了杭州某知名的IT公司,感觉自己没什么准备,面试的差强人意,最后和机会擦肩而过,甚为可惜。。不过人生不可能总是一帆风顺,算是给自己的成长吧!!面试中的几道面试题,自己回去也想了一下,感觉面试官说的也值得商榷。。。

 

首先第一个问题是说怎么避免数据库死锁,假设有A,B,C三张表,这个问题我后面越想越有问题,他的意思只要按照一定的顺序从A->B->C的顺序获得没条记录的行锁就可以避免死锁,第一天晚上回来就想有问题,首先想一个场景,比如工作流的时候,代办任务审批,假设有一个task表表示待办记录,同时流程流转有一个流转实例表,现在,现在我一个审批有多个领导审批,那么通过LoadRunner模拟领导登陆,这样每一个领导都可以看到自己的task记录,但是审批的时候肯定要更新其他相同实例下的task任务状态,首先获得一条记录的X锁,但是同时等task相同流程实例的任务的X锁,这样还是会造成死锁...因此对于数据库死锁肯定没有现成的统一标准,肯定和具体的业务,数据库设计,以及对于数据库的优化,包括索引优化和执行计划的优化有关系..所以很多数据库死锁往往都是很随机,而且很无意就发生了.在DB2种一般通过死锁监控器和db2pd去定位

 

还有一个问题是说怎么判断一个图中存在环路,题目很简单,但是自己想想却是很麻烦,当时唯一的想法肯定用邻接表的深度遍历又或者能不能构造一颗树,其实那时候很短的时间自己的思路不是很明确,通过邻接表表示是比较可行的做法.虽然可能有很多其他的情况.但是那个面试官居然说用hashmap去做,他的思路是把一个节点到另外一个节点作为一个边存储,即使到现在我还是想不通hashmap怎么判断..因为一条边成环总起码有一个起点,一个终点,你一条边那是怎么回事,而且你说存在hash重复的时候就表示有环,但是hash重复只能说两条边的hash值一样,这个和环个人感觉半毛钱关系没有呀...其实我的思路就是广度遍历,把相邻的节点都存起来,然后判断相邻节点之间能不能有联系 ,然后判断是否有环

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics