糟糕的编程面试题
作者:网络转载 发布时间:[ 2014/7/15 13:44:12 ] 推荐标签:软件测试面试题 编程语言
看下java源码知道,真的没有:
private static class Entry <E> {
E element;
java.util.LinkedList.Entry<E> next;
java.util.LinkedList.Entry<E> previous;
Entry(E e, java.util.LinkedList.Entry<E> entry, java.util.LinkedList.Entry<E> entry1) {
/* compiled code */
}
}
|
它是一个私有静态类,你无法从外部实例化它。你不能直接操控next和prev,因为它们俩代表了链表的状态,它们该这样被封装起来。
如果你真的把链表搞成有环了,那说明你写错。写错的话,你好重新写对它,而不是写个“检测环”的方法。
“检测环”的方法该这样写:
public class LinkedList {
public boolean containsCycle() {
return false;
}
}
|
如果你的链表写对的话,“龟兔算法”返回的结果也跟这个方法一样。
现实中你是很少有机会亲手写个链表的,即使有,你也别写个能造成环的方法。造成环的方法,只能是“留后门”,“元编程”,“反射”。既然是这样故意的话,那么绕过你的“检测环”也是轻而易举的。
结论
很多面试题,都中了以上其中一点,太过困难或者与工作无关。
而这个问题,两点都中了。
如果有人给到你满意的答案,说明那个人死记硬背,无他。因回答不了而被你否决的人,说不定还比你更适合这份实务。
链表环路检测:别问了。
更新:有位评论者说如果问题问的是有向图,且每个节点的出度多只有,即是问“检测这个有向图有没有环”。搞图的话,你确实可能会向API用户提供修改每点的指向的方法,这看上去符合实际。但是,还是那句话,你只是在考察应聘者把CS课程记住了多少,或者你只想随便问问,又或者你想听听他说除了龟兔算法以外的低效算法。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11