面试归来,很郁闷。有两点不是很清楚,求指教。1)
Q:stl里的map的结构?
A:红黑树
Q:为什么要用红黑树,为什么加红黑两个点?而不用***平衡树(具体记不清了)?
A:不太清楚。(我心想肯定是效率高,但一想现在什么是红黑树 和 ***平衡树 都不太清楚,还是在学生时伐有点有了解。心想这哥们太牛了,记得这么清楚。这么高深的树结构都掌握都这么好)2)
假如让你设计一个线程池,假如其中有一个任务要运行10年,要注意点什么,跟设计其他的线程池有什么不同?
(这个我听得云里雾里,不知道要注意点什么。现在后悔当初没问他要注意点什么。现在望各位大侠指教。)希望大家主要跟我讲讲第二点,实在是一头雾水。

解决方案 »

  1.   

    1)
    Q:stl里的map的结构?
    A:红黑树
    Q:为什么要用红黑树,为什么加红黑两个点?而不用***平衡树(具体记不清了)?
    *A:红黑树的时间取值是log类型, 从1万到10万, 查找时间只会从6增加至7, 比较通用. 但空间占用率实在不敢恭维, 特别是当使用字符串做Key的时候. map还是要视具体情况而定制较好.2)
    Q: 假如让你设计一个线程池,假如其中有一个任务要运行10年,要注意点什么,跟设计其他的线程池有什么不同?
    *A: 假如一个任务要运行10年, 首先是要限制这类任务的个数, 否则这类任务会直接用光整个池. 这样其他任务就不能够做了. 其次, 这个要运行10年的任务, 必须向外提供有效的访问手段, 例如访问进度, 访问当前状态, 能够强制停止等等的操作. 这样可以由其他空闲的线程能够控制这个任务.
      

  2.   

    我觉得其实不一定要完全答对,第一个问题是看你对STL的了解程度,了解多少说多少。
    第二个问题是考察你的思路,没有标准答案,但你要回答全面,考虑问题多些。
    应该都不算变态的问题,很普通的面试题。