今天看到一个帖子
http://www.iteye.com/topic/622496
里面提到了如下问题:
附微软面试的面试题:
1:单链表,遍历一次,找到倒数第N个节点。
2:单链表,遍历一次,找到中间节点。(这个主要要考虑到单链表元素个数是奇/偶数的情况,这个是关键的,我当时 就是差点没考虑到这个)。
3:如何把一个大象装到冰箱里。
4:随手拿一个笔筒,把笔倒掉,问,你会用什么方法测试这个笔筒。
有意义的回复:
第一题先把一个节点前进n个节点(当然,前进的时候判断是否遇到null,遇到表明题目无解)。然后用另外一个节点和刚才的节点一起前进,当后一个节点遇到null时,前一个节点就是要找的节点。
第二题和第一题的思路是一样的。一个前进两个节点,一个前进一个,和检测环算法类似。
时间复杂度都是O(n)
第二题和第一题的思路是一样的。一个前进两个节点,一个前进一个,和检测环算法类似。
时间复杂度都是O(n)
你的基本解题思路是对的,第一题也没有什么问题,但第2题有点问题,因为要考虑到元素是偶数的情况下,你是如何确认中间节点的(可以认为偶数没有中间节点,也可以认为偶数有两个中间节点),另外如果是奇数且只有一个节点,你的中间节点又是怎么算的?这些细节问题都是需要考虑到得。
4:随手拿一个笔筒,把笔倒掉,问,你会用什么方法测试这个笔筒。
答:再把笔装回去,原因很简单,笔筒就是用来装笔的,要测试的最好方法就是往里面装笔。
exloong 写道
第四题你们想怎么去测试就进圈套了,要先问他要测试需求