笔试面试中的算法题小议
2010-01-27 15:33
197 查看
Pascal的老爹,N.Wirth老爷爷曾经说过:
呆塔撕抓个扯+阿哥累死母=菩露古拉母
翻译一下就是: Data Structure + Algorithm = Program
老爹不愧为老爹,说的话到现在都那么至理名言.
首先声明一下
1 俺没搞过ACM/ICPC(不知道这个名词的去搜一下,偶对搞这个的大牛总是很葱白的)
,因为当年俺在可以搞这个的最佳时机(二下三上)沉迷魔兽了,最后换来个软院魔兽单
挑冠军,觉得很不划算,所以,劝你们能不玩游戏的还是尽量别玩游戏
2 俺也没搞过算法上面的研究,最多会用用master定理猜猜复杂度,能看懂一些算法复
杂性的概率证明,甚至连NPC,图灵机这样的冬冬我到现在也不明白。所以说,俺在传统
意义的算法学习上面只是一个门外汉,不过没啥,能混过笔试面试就够鸟,俺很没追求的
,别学我。
3 俺所有的算法知识只来源于:百合算法版,算法导论,其他一些笔经。
所以,我小议的数据结构算法都是根据我的笔试面试及看人笔经面经中所得出的一点
经验,个人认为比较实用。
先说说IT 求职中算法题的特点:
除非是什么MSRA ,IBM CRL专门的研究组要招一个算法方面术业有专攻的人才,
一般的小本小硕出来,面你的算法题都是短小精悍,没有很强的实际背景,比较
容易抽象成接近经典问题的题目 (有点绕口,对吧,自己慢慢读一下)
下面算法导论简称CLRS,动态规划简称dp ,二分查找binary search简称bs
这里给出我自己亲身经历过的几个题目,你们看看:
microstrategy笔试:图里找回路(经典问题,书上的)
2006 google秋季笔试:
费波纳妾(这个比较好听,呵呵)的一个选择题,很简单
两个排好序的数组求中位数(CLRS Exercises 9.3-8 原题,没做出来)
2007 google春季笔试:
一个类似费波纳妾问题的复杂度分析,选择题,也可以算是dp的一个小问题(pass )
一个字符串的处理问题,没啥算法,就是呆呆地处理(pass )
一个树形dp问题(CLRS dp那章后面有个树形dp的问题,看过了就会做了,pass )
这套笔试题我在算法版贴过,你们可以搜一下,答案基本后面回贴也有
2007 google春季面试:(虽然签了保密协议,不过那几个题太弱了,写出来)
多项式合并(pass )
统计一个文章里出现次数最多的5个单词(考hash,pass )
2007 emc 笔试:
一个翻硬币的概率题(自己算了一下,推了一下,pass )
一个给圆填充的问题,没啥算法,考虑边界情况就行了 ( pass )
最后那个一行写递归的题目(院版讨论过,很好的题目,不过我没做出来)
2007 emc 面试:
只有指向当前节点的指针,无链表头节点,删除这个结点
(解法有点tricky,就是把他下一个节点的内容考过来,删掉下一个,pass )
一个英文句子,把里面的单词都转置(面试宝典里的原题,想都no想,pass )
恩,看过一遍了吧,呵呵,没有很难的东西。
我至今见过实现起来很难的好像是Audodesk考的一个,链表找环问题也算是微软出的一个
比较经典的题目。google 有一个从楼上扔鸡蛋的题目算是个难题
(见Adapter的blog )。
上面都是些实战经历,有的来自课本,有的来自积累,有的来自灵机一动。
所以,先把你的数据结构书翻熟。
quick sort,heap sort ,binary search, hash, AVL., B tree等等,这些基本的出现的
概率最大,如果这些你都不能保证做对,那么其他的你就更不能保证了。
这个搞熟了可以看看算法导论(英文版),一来是学怎么英语表达(我前面说过)
二来是算法导论写的通俗易懂,老少皆宜,三是很多题目直接来自其中
(特别是google 的题目,googler 真懒,我在水木看过不下6道被人讨论的一b的题直接来
自后面的problem,我曾经很骚包地把我看过的一题的答案贴在其中,被人仰慕了好久,
哈哈,我虚伪地笑)
算法导论可看章节1~16,22,23,24,32
重点章节(后面的exercise ,problem要好好思考,好好理解,好好消化!!!!)
4 Recurrences,里面n题被考过,我都背的出来了。
master 定理,证明你就别看了,怎么用还是多看看。
5 Probabilistic Analysis and Randomized Algorithms
结合appendix c的概率知识看,这几年概率题考的越来越多
6,7 heapsort,quick sort,两个最经典的sort algorithm,被考过无数遍
8 Sorting in Linear Time
counting sort ,这个在大规模数据的sort &&search 中很常用,
你要是面什么搜索部门,一定要多看看这个
9 Medians and Order Statistics
最经典的那个线性时间求数组中位数问题,问过无数次的
后面习题里有个红蓝水壶配对问题,经典变种,google 考过。
15 Dynamic Programming
最为帅气的算法设计策略,经典的LCS,第一次看到咱被她美得想哭,
作为字符串处理方面的经典问题,被考过无数遍;
后面有个edit distance,beautiful print的题目也很赞
这章看透,题目做透,笔试面试中的dp你基本都可以搞定。
Dijiskara也是dp在图算法中一个非常经典的应用
16 greedy algorithms
经典背包问题,看清楚里面讨论0/1背包和非0/1背包
再看后面那个23章最小生成树的Kruskal's algorithm ,典型的贪心应用
32 string match
我还没看,不过现在百渡啥的就考字符串,如果你想去他家
我觉得应该多看看。
考,我写了这么多,mit press 是不是要给我点宣传费了:)
百合算法版主页置定有个Instructor's mannual,里面给出了很多题的标准答案.
不过数学证明或者正确性的证明往往篇幅很长,我们出于一点功利的态度,可以
略去部分不看.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
晚上喝了三两百年口子窖,写了这么多现在有点小晕了.
暂且就这点吧.
把英语和算法写完,我也算完成了一个不小的任务,姑且算个mile stone。
各位小筒子们就先凑或看看吧,如果对你们能有帮助,我是再高兴不过了。
比被100个美女称我蟀蝈还高兴,哈哈。
咱也无欲无求了,以后想到啥,根据形势的变化再来 continue 吧。
Wish all you guys do a cool ,beautiful ,fascinating ,incredible,unbelievable,
brilliant,splendid, terrific, magnificant, fabulous, marvelous (我理不屈,但是
词穷了,更重要是我自己快喘不上气了)job in your 2007 job hunting battle.
再套用月之女祭祀(princess of moon)那句话:
Warriors of SE, assemble!
呆塔撕抓个扯+阿哥累死母=菩露古拉母
翻译一下就是: Data Structure + Algorithm = Program
老爹不愧为老爹,说的话到现在都那么至理名言.
首先声明一下
1 俺没搞过ACM/ICPC(不知道这个名词的去搜一下,偶对搞这个的大牛总是很葱白的)
,因为当年俺在可以搞这个的最佳时机(二下三上)沉迷魔兽了,最后换来个软院魔兽单
挑冠军,觉得很不划算,所以,劝你们能不玩游戏的还是尽量别玩游戏
2 俺也没搞过算法上面的研究,最多会用用master定理猜猜复杂度,能看懂一些算法复
杂性的概率证明,甚至连NPC,图灵机这样的冬冬我到现在也不明白。所以说,俺在传统
意义的算法学习上面只是一个门外汉,不过没啥,能混过笔试面试就够鸟,俺很没追求的
,别学我。
3 俺所有的算法知识只来源于:百合算法版,算法导论,其他一些笔经。
所以,我小议的数据结构算法都是根据我的笔试面试及看人笔经面经中所得出的一点
经验,个人认为比较实用。
先说说IT 求职中算法题的特点:
除非是什么MSRA ,IBM CRL专门的研究组要招一个算法方面术业有专攻的人才,
一般的小本小硕出来,面你的算法题都是短小精悍,没有很强的实际背景,比较
容易抽象成接近经典问题的题目 (有点绕口,对吧,自己慢慢读一下)
下面算法导论简称CLRS,动态规划简称dp ,二分查找binary search简称bs
这里给出我自己亲身经历过的几个题目,你们看看:
microstrategy笔试:图里找回路(经典问题,书上的)
2006 google秋季笔试:
费波纳妾(这个比较好听,呵呵)的一个选择题,很简单
两个排好序的数组求中位数(CLRS Exercises 9.3-8 原题,没做出来)
2007 google春季笔试:
一个类似费波纳妾问题的复杂度分析,选择题,也可以算是dp的一个小问题(pass )
一个字符串的处理问题,没啥算法,就是呆呆地处理(pass )
一个树形dp问题(CLRS dp那章后面有个树形dp的问题,看过了就会做了,pass )
这套笔试题我在算法版贴过,你们可以搜一下,答案基本后面回贴也有
2007 google春季面试:(虽然签了保密协议,不过那几个题太弱了,写出来)
多项式合并(pass )
统计一个文章里出现次数最多的5个单词(考hash,pass )
2007 emc 笔试:
一个翻硬币的概率题(自己算了一下,推了一下,pass )
一个给圆填充的问题,没啥算法,考虑边界情况就行了 ( pass )
最后那个一行写递归的题目(院版讨论过,很好的题目,不过我没做出来)
2007 emc 面试:
只有指向当前节点的指针,无链表头节点,删除这个结点
(解法有点tricky,就是把他下一个节点的内容考过来,删掉下一个,pass )
一个英文句子,把里面的单词都转置(面试宝典里的原题,想都no想,pass )
恩,看过一遍了吧,呵呵,没有很难的东西。
我至今见过实现起来很难的好像是Audodesk考的一个,链表找环问题也算是微软出的一个
比较经典的题目。google 有一个从楼上扔鸡蛋的题目算是个难题
(见Adapter的blog )。
上面都是些实战经历,有的来自课本,有的来自积累,有的来自灵机一动。
所以,先把你的数据结构书翻熟。
quick sort,heap sort ,binary search, hash, AVL., B tree等等,这些基本的出现的
概率最大,如果这些你都不能保证做对,那么其他的你就更不能保证了。
这个搞熟了可以看看算法导论(英文版),一来是学怎么英语表达(我前面说过)
二来是算法导论写的通俗易懂,老少皆宜,三是很多题目直接来自其中
(特别是google 的题目,googler 真懒,我在水木看过不下6道被人讨论的一b的题直接来
自后面的problem,我曾经很骚包地把我看过的一题的答案贴在其中,被人仰慕了好久,
哈哈,我虚伪地笑)
算法导论可看章节1~16,22,23,24,32
重点章节(后面的exercise ,problem要好好思考,好好理解,好好消化!!!!)
4 Recurrences,里面n题被考过,我都背的出来了。
master 定理,证明你就别看了,怎么用还是多看看。
5 Probabilistic Analysis and Randomized Algorithms
结合appendix c的概率知识看,这几年概率题考的越来越多
6,7 heapsort,quick sort,两个最经典的sort algorithm,被考过无数遍
8 Sorting in Linear Time
counting sort ,这个在大规模数据的sort &&search 中很常用,
你要是面什么搜索部门,一定要多看看这个
9 Medians and Order Statistics
最经典的那个线性时间求数组中位数问题,问过无数次的
后面习题里有个红蓝水壶配对问题,经典变种,google 考过。
15 Dynamic Programming
最为帅气的算法设计策略,经典的LCS,第一次看到咱被她美得想哭,
作为字符串处理方面的经典问题,被考过无数遍;
后面有个edit distance,beautiful print的题目也很赞
这章看透,题目做透,笔试面试中的dp你基本都可以搞定。
Dijiskara也是dp在图算法中一个非常经典的应用
16 greedy algorithms
经典背包问题,看清楚里面讨论0/1背包和非0/1背包
再看后面那个23章最小生成树的Kruskal's algorithm ,典型的贪心应用
32 string match
我还没看,不过现在百渡啥的就考字符串,如果你想去他家
我觉得应该多看看。
考,我写了这么多,mit press 是不是要给我点宣传费了:)
百合算法版主页置定有个Instructor's mannual,里面给出了很多题的标准答案.
不过数学证明或者正确性的证明往往篇幅很长,我们出于一点功利的态度,可以
略去部分不看.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
晚上喝了三两百年口子窖,写了这么多现在有点小晕了.
暂且就这点吧.
把英语和算法写完,我也算完成了一个不小的任务,姑且算个mile stone。
各位小筒子们就先凑或看看吧,如果对你们能有帮助,我是再高兴不过了。
比被100个美女称我蟀蝈还高兴,哈哈。
咱也无欲无求了,以后想到啥,根据形势的变化再来 continue 吧。
Wish all you guys do a cool ,beautiful ,fascinating ,incredible,unbelievable,
brilliant,splendid, terrific, magnificant, fabulous, marvelous (我理不屈,但是
词穷了,更重要是我自己快喘不上气了)job in your 2007 job hunting battle.
再套用月之女祭祀(princess of moon)那句话:
Warriors of SE, assemble!
相关文章推荐
- 笔试面试算法经典--二叉搜索树转有序的双向链表(Java)
- 笔试+面试之数据结构与算法
- 【面试笔试算法】Problem 7: 补提交卡(hiho题库)
- 笔试、面试重点总结:算法基础、数据结构
- 【面试笔试算法】牛客网一站通Offer编程题2016.4.19
- 笔试面试算法
- 程序员笔试面试算法题系列--数组
- 笔试、面试重点总结:算法基础、数据结构
- 笔试面试算法经典--最长括号匹配
- 笔试面试最常涉及到的12种排序算法(包括插入排序、二分插入排序、希尔排序、选择排序、冒泡排序、鸡尾酒排序、快速排序、堆排序、归并排序、桶排序、计数排序和基数排序)进行了详解。每一种算法都有基本介绍、算
- 笔试面试算法经典--二叉树层次打印
- 笔试面试算法经典-打印n个数组中最大的topk
- 【面试笔试算法】Program 4 : Best Compression Algorithms(网易游戏笔试题)
- 【面试笔试算法】Problem 8: 然而沼跃鱼早就看穿了一切(hiho题库)
- 大公司笔试面试有哪些经典算法题目?
- 【面试笔试算法】牛客网一站通Offer编程题2016.4.19
- java面试中常遇到的算法笔试题
- JAVA答案整理---->微软等公司数据结构、算法面试笔试题(v_JULY_v博主发布)
- [置顶] Java 经典算法笔试面试题目十题
- 笔试面试算法经典--最长回文子串