引言
曾记否,去年的10月份也同此刻一样,是找工作的高峰期,本博客便是最初由整理微软等公司面试题而发展而来的。如今,又即将迈入求职高峰期--10月份,而本人也正在找下一份工作中,所以,也不免关注了网上和我个人建的算法群Algorithms1-11群(第1-10群已满,Algorithms_11群,170612151)内朋友发布和讨论的最新面试题。特此整理,以飨诸位。至于答案,望诸位共同讨论与思考。
自从公布Algorithms_9群-11群的群号以来,一般一个星期之内满员。不免被各位的热情所震撼(包括本文评论下奉献自己的思路的朋友,非常感谢)。希望,各位既然加进来,便多多参与讨论下文中的面试题,一起学习、思考,以期共同进步。谢谢。
最新面试十三题
好久没有好好享受思考了。ok,任何人有任何意见或问题,欢迎不吝指导:
- 五只猴子分桃。半夜,第一只猴子先起来,它把桃分成了相等的五堆,多出一只。于是,它吃掉了一个,拿走了一堆; 第二只猴子起来一看,只有四堆桃。于是把四堆合在一起,分成相等的五堆,又多出一个。于是,它也吃掉了一个,拿走了一堆;......其他几只猴子也都是 这样分的。问:这堆桃至少有多少个?(朋友说,这是小学奥数题)。
- 已知有个rand7()的函数,返回1到7随机自然数,让利用这个rand7()构造rand10() 随机1~10。
(参考答案:这题主要考的是对概率的理解。程序关键是要算出rand10,1到10,十个数字出现的考虑都为10%.根据排列组合,连续算两次rand7出现的组合数是7*7=49,这49种组合每一种出现考虑是相同的。怎么从49平均概率的转换为1到10呢?方法是:
1.rand7执行两次,出来的数为a1.a2.
2.如果a1*7+a2<40,b=(a1*7+a2)/4+1,如果a1*7*a2>=40,重复第一步) - 如果两个字符串的字符一样,但是顺序不一样,被认为是兄弟字符串,问如何在迅速匹配兄弟字符串(如,bad和adb就是兄弟字符串)。
- 要求设计一个DNS的Cache结构,要求能够满足每秒5000以上的查询,满足IP数据的快速插入,查询的速度要快。
- 一个未排序整数数组,有正负数,重新排列使负数排在正数前面,并且要求不改变原来的 相对顺序 比如: input: 1,7,-5,9,-12,15 ans: -5,-12,1,7,9,15 要求时间复杂度O(N),空间O(1) 。
- 淘宝面试题:有一个一亿节点的树,现在已知两个点,找这两个点的共同的祖先。
- 海量数据分布在100台电脑中,想个办法高效统计出这批数据的TOP10。(此题请参考本博客内其它文章)。
-
某服务器流量统计器,每天有1000亿的访问记录数据,包括时间、url、ip。设计系统实现记录数据的
保存、管理、查询。要求能实现一下功能:
(1)计算在某一时间段(精确到分)时间内的,某url的所有访问量。
(2)计算在某一时间段(精确到分)时间内的,某ip的所有访问量。 -
假设某个网站每天有超过10亿次的页面访问量,出于安全考虑,网站会记录访问客户端访问的ip地址和对应的时间,如果现在已经记录了1000亿条数据,想统计一个指定时间段内的区域ip地址访问量,那么这些数据应该按照何种方式来组织,才能尽快满足上面的统计需求呢,
设计完方案后,并指出该方案的优缺点,比如在什么情况下,可能会非常慢?(参考答案:用B+树来组织,非叶子节点存储(某个时间点,页面访问量),叶子节点是访问的IP地址。这个方案的优点是查询某个时间段内的IP访问量很快,但是要统计某个IP的访问次数或是上次访问时间就不得不遍历整个树的叶子节点。或者可以建立二级索引,分别是时间和地点来建立索引。) -
腾讯1.服务器内存1G,有一个2G的文件,里面每行存着一个QQ号(5-10位数),怎么最快找出出现过最多次的QQ号。
腾讯2.如何求根号2的值,并且按照我的需要列出指定小数位,比如根号2是1.141 我要列出1位小数就是1.1 2位就是1.14, 1000位就是1.141...... 等。。 -
-
- 我们有很多瓶无色的液体,其中有一瓶是毒药,其它都是蒸馏水,实验的小白鼠喝了以后会在5分钟后死亡,而喝到蒸馏水的小白鼠则一切正常。现在有5只小白鼠,请问一下,我们用这五只小白鼠,5分钟的时间,能够检测多少瓶液体的成分?
淘宝2012笔试(研发类):http://topic.csdn.net/u/20110922/10/e4f3641a-1f31-4d35-80da-7268605d2d51.html(一参考答案)。
ok,加上之前本博客陆陆续续整理的微软面试187题:重启开源,分享无限--诚邀你加入微软面试187题的解题中,至此,本博客内已经整理了整整200道面试题。
同时,也算是由于本博客在开博不到一年的时间内(2010.10.14-2011.09.19)突破100万流量而对读者的支持和青睐表示感谢。有任何问题或思路,欢迎不吝赐教(或者来信指导:zhoulei0907@yahoo.cn)。谢谢。July、二零一一年九月二十三日。
后续整理
以下是后续整理的最新面试题,不断更新中(2011.09.26).....
14、腾讯最新面试题:服务器内存1G,有一个2G的文件,里面每行存着一个QQ号(5-10位数),怎么最快找出出现过最多次的QQ号。
15、百度今天的笔试题:在一维坐标轴上有n个区间段,求重合区间最长的两个区间段。
16、华为社招现场面试1:请使用代码计算1234567891011121314151617181920*2019181716151413121110987654321 。
华为面试2:1分2分5分的硬币,组成1角,共有多少种组合。
17、百度笔试题:系统有很多任务,任务之间有依赖,比如B依赖于A,则A执行完后B才能执行
(1)不考虑系统并行性,设计一个函数(Task *Ptask,int Task_num)不考虑并行度,最快的方法完成所有任务。
(2)考虑并行度,怎么设计
typedef struct{
int ID;
int * child;
int child_num;
}Task;
提供的函数:
bool doTask(int taskID);无阻塞的运行一个任务;
int waitTask(int timeout);返回运行完成的任务id,如果没有则返回-1;
bool killTask(int taskID);杀死进程18、如果用一个循环数组q[0..m-1]表示队列时,该队列只有一个队列头指针front,不设队列尾指针rear,求这个队列中从队列投到队列尾的元素个数(包含队列头、队列尾)(华赛面试题、腾讯笔试题)。
19、昨晚淘宝笔试题:
1. 设计相应的数据结构和算法,尽量高效的统计一片英文文章(总单词数目)里出现的所有英文单词,按照在文章中首次出现的顺序打印输出该单词和它的出现次数。
2、有一棵树(树上结点为字符串或者整数),请写代码将树的结构和数据写到一个文件中,并能通过读取该文件恢复树结构 。
20、13个球一个天平,现知道只有一个和其它的重量不同,问怎样称才能用三次就找到那个球?(http://zhidao.baidu.com/question/66024735.html
)。21、搜狗笔试题:一个长度为n的数组a[0],a[1],...,a[n-1]。现在更新数组的名个元素,即a[0]变为a[1]到a[n-1]的积,a[1]变为a[0]和a[2]到a[n-1]的积,...,a[n-1]为a[0]到a[n-2]的积。
程序要求:
要求具有线性复杂度。
不能使用除法运算符。
参考答案@MESH4444:
3步搞定(假设乘法是一次运算)……
1、累乘:计算a1*a2, a1*a2*a3, ......, a1*a2*...*an——复杂度n-1
2、累乘:计算an*a(n-1), an*a(n-1)*a(n-2), ......, an*a(n-1)*a(n-2)*...*a1——复杂度n-1
3、求积:找到对应数值,直接再做一次乘法得结果——复杂度为n这样,复杂度就是3n-2,也就是O(3n)
22、腾讯高水平复试题:
1.有不同的手机终端,如iphone,安卓,Symbian,不同的终端处理不一样,设计一种服务器和算法实现对不同的终端的处理。
2.设计一种内存管理算法。
3.A向B发邮件,B收到后读取并发送收到,但是中间可能丢失了该邮件,怎么设计一种最节省的方法,来处理丢失问题。
4.设计一种算法求出算法复杂度 。23、人人笔试1:一个人上台阶可以一次上1个,2个,或者3个,问这个人上n层的台阶,总共有几种走法?人人笔试2:在人人好友里,A和B是好友,B和C是好友,如果A 和C不是好友,那么C是A的二度好友,在一个有10万人的数据库里,如何在时间0(n)里,找到某个人的十度好友。
更新至2011.09.27....
异常感谢本文评论中各位奉献的自己的思路(贴代码的时候,勿忘简单描述下思路),望各位继续思考和讨论,偶亦可多多学习与参考。同时,不断整理出新的面试题。July、2011.09.26。