最近在网上看到了一些面试题,整理如下
大部分鄙人都不会,求指教
1、求二叉树上两个节点的最近公共父节点。
2、指针P指向一个单向非循环链表的任意非首尾节点,从链表上把 P指向的节点删除。
3、求两个链表第一个相交的节点,要求O(N)的时间复杂度。
4、C++里的RTTI怎么实现的,也就是运行时的类型信息从哪得到的?
5、C++里指向虚函数表的指针往后移一位,指向的是什么?
6、C++里一个类最多能声明多少个虚函数?
7、重载类的operator=和拷贝构造函数在编写时代码上要注意什么?
8、有一句中间有拼错单词的英文句子,如:"Ths is a worng sentencce." 其中,拼错的单词都可以通过1次或多次编辑操作(编辑操作 包括:"增加"、"删除"、"修改" 单词中的字母)纠正,如:Ths增加一个i变成This; wrong先将o改成r,再将第二个r改成o就纠正为wrong; sentencce中删除一个c就纠正为sentence. 假如我有一张单词表,里面有几十万个单词,给你一个英文句子,如何发现其中出错的单词(即这个单词没有出现在我的单词表中)并用最少的 编辑操作 纠正句子中的全部错误?
9、有一批很大的数据(约10T),每行是一个字符串(有重复)。现在的任务是想统计出重复最多的 TOP 10% 的字符串都是哪些? 给你1000台机器,每台机器的配置如下:1G内存,15G硬盘。
题目3:
有一台微型计算机,1M内存、CPU是 1G Hz(即每秒状态转换10^9次),问最长的可终止的程序要运行多长时间?
题目4:
有1枚硬币,正反均匀,即投掷出去后出现正面和反面的概率都是50%。
1) 投掷10次出现:3次正面、7次反面;
2) 投掷100次出现:30次正面、70次反面;
这两种情况的概率哪个大哪个小?你是如何分析的?如何较快的分析出这类的题目?