互联网开发面试题

时间:2022-06-28 03:55:22 面试 我要投稿
  • 相关推荐

互联网开发面试题

1一共有100万,抽中的2万,每月增加4万,问20个月能抽中的概率为:?

互联网开发面试题

2 for(int i=0;i<strlen(s);i++){n+=i;}时间复杂度o(n)< p="">

3 手机wifi(A)….wifi ap….局域网(B)…..路由器…ADSL(C)…..互联网…..服务器

断掉上述ABC哪些点TCP链接会立刻断掉?

4 12345入栈,出栈结果 21543 31245 43215 12534 可能的为?(第一个和第三个)

5 x^n+a1x^n-1+…+an-1x+an,最少要做—乘法?题目中a1,a2,an为常数。

9月26日,百度一二面:

1、给定一数组,输出满足2a=b(a,b代表数组中的数)的数对,要求时间复杂度尽量低。

2、搜索引擎多线程中每个线程占用多少内存?如果搜索引擎存储网页内存占用太大怎么解决?

3、有很多url,例如*.baidu.com,*.sina.com ......

现在给你一个sports.sina.com 快速匹配出是*.sina.com。点评:老题,此前blog内曾整理过。

4、找出字符串的编辑距离,即把一个字符串s1最少经过多少步操作变成编程字符串s2,操作有三种,添加一个字符,删除一个字符,修改一个字符(只要听过编辑距离,知道往动态规划上想,很快就可以找到解法)。

点评:请看链接:http://blog.csdn.net/Lost_Painting/article/details/6457334。

5、编程实现memcopy,注意考虑目标内存空间和源空间重叠的时候。

6、实现简单的一个查找二叉树的深度的函数。

9月26日晚,优酷土豆笔试题一道:

优酷是一家视频网站,每天有上亿的视频被观看,现在公司要请研发人员找出最热门的视频。

该问题的输入可以简化为一个字符串文件,每一行都表示一个视频id,然后要找出出现次数最多的前100个视频id,将其输出,同时输出该视频的出现次数。

1.假设每天的视频播放次数为3亿次,被观看的视频数量为一百万个,每个视频ID的长度为20字节,限定使用的内存为1G。请简述做法,再写代码。

2.假设每个月的视频播放次数为100亿次,被观看的视频数量为1亿,每个视频ID的长度为20字节,一台机器被限定使用的内存为1G。

点评:有关海量数据处理的题目,请到此文中找方法(无论题目形式怎么变,基本方法不变,当然,最最常用的方法是:分而治之/Hash映射 + Hash统计 + 堆/快速/归并排序):http://blog.csdn.net/v_july_v/article/details/7382693。注:上题第二问文件太大,则可如模1000,把整个大文件映射为1000个小文件再处理 ....

9月26日,baidu面试题:

1.进程和线程的区别

2.一个有序数组(从小到大排列),数组中的数据有正有负,求这个数组中的最小绝对值

3.链表倒数第n个元素

4.有一个函数fun能返回0和1两个值,返回0和1的概率都是1/2,问怎么利用这个函数得到另一个函数fun2,使fun2也只能返回0和1,且返回0的概率为1/4,返回1的概率为3/4。(如果返回0的概率为0.3而返回1的概率为0.7呢)

5.有8个球,其中有7个球的质量相同,另一个与其他球的质量不同(且不知道是比其他球重还是轻),请问在最坏的情况下,最少需要多少次就能找出这个不同质量的球

6.数据库索引

7.有一个数组a,设有一个值n。在数组中找到两个元素a[i]和a[j],使得a[i]+a[j]等于n,求出所有满足以上条件的i和j。

8.1万个元素的数组,90%的元素都是1到100的数,10%的元素是101--10000的数,如何高效排序。

小米的web开发笔试题:

一场星际争霸比赛,共8个人,每个人的实力用分数表示,要分成两队,如何保证实力最平均?给定一个浮点数的序列,F1,F2,……,Fn(1<=n<=1000),定义P(s,e)为子序列Fi(s<=i<=e)的积,求P的最大值。

9月27日,趋势科技面试题:

马路口,30分钟内看到汽车的概率是95%,那么在10分钟内看不到汽车的概率是?

9月27日晚,IGT笔试题:

给定一个字符串里面只有"R" "G" "B" 三个字符,请排序,最终结果的顺序是R在前 G中 B在后。

要求:空间复杂度是O(1),且只能遍历一次字符串。

点评:本质是荷兰国旗问题,类似快排中partition过程,具体思路路分析及代码可以参考此文第8节:http://blog.csdn.net/v_july_v/article/details/6211155。

9月27日,人人两面:

一面

1 实现atoi

2 单链表变形 如 1 2 3 4 5 变为 1 3 5 4 2 如1 2 3 4 变为 1 3 4 2

(就是拆分链表 把偶数为反过来接在奇数位后面)

二面

1 二叉树查找不严格小于一个值的最大值(返回节点)。

2 有序数组里二分查找一个数(如果有相同的找最后一次出现的)。

3 等价于n*n的矩阵,填写0,1,要求每行每列的都有偶数个1 (没有1也是偶数个),问有多少种方法。

评论:开始以为是算法题,想了狂搜,递推(dp,可以用xor表示一行的列状态,累加),分治,(拆两半,然后上半段下半段的列有相同的奇偶性)。后来,自己算了几个发现n = 1 n = 2 n = 3 的结果,他告诉了我n = 4是多少,然后发现f(n) = 2^((n - 1) ^2) 。最后我给出了一个巧妙的证明。然后发现如果是m*n的矩阵也是类似的答案,不局限于方阵。此外,题目具体描述可以看看这里:http://blog.himdd.com/?p=2480。

9月27日,小米两面:

一面:

除了聊研究,就一道题

1 数组里找到和最接近于0的两个值。

二面:

1 行列有序的矩阵查找一个数

2 直方图最大矩形。点评:这里有此题的具体表述及一份答案:http://blog.csdn.net/xybsos/article/details/8049048。

3 next_permutation

4 字符串匹配 含有* ? (写代码)

5 实现strcpy memmove (必须写代码)

//void * memmove ( void * destination, const void * source, size_t num );)

//是的标准函数,其作用是把从source开始的num个字符拷贝到destination。

//最简单的方法是直接复制,但是由于它们可能存在内存的重叠区,因此可能覆盖了原有数据。

//比如当source+count>=dest&&source<dest时,dest可能覆盖了原有source的数据。< p="">

//解决办法是从后往前拷贝。

//对于其它情况,则从前往后拷贝。

void* memmove(void* dest, void* source, size_t count)

{

void* ret = dest;

if (dest <= source || dest >= (source + count))

{

//正向拷贝

//copy from lower addresses to higher addresses

while (count --)

*dest++ = *source++;

}

else

{

//反向拷贝

//copy from higher addresses to lower addresses

dest += count - 1;

source += count - 1;

while (count--)

*dest-- = *source--;

}

return ret;

}

更多,还可以参见此文第三节节末:http://blog.csdn.net/v_july_v/article/details/6417600,或此文:http://www.360doc.com/content/11/0317/09/6329704_101869559.shtml。

6 读数 (千万亿,百万亿……)变为数字 (说思路即可,字符串查找,填写各个权值的字段,然后判断是否合法,读前面那些×权值,累加)。

9月27日,Hulu 2013北京地区校招笔试题

填空题:

1、中序遍历二叉树,结果为ABCDEFGH,后序遍历结果为ABEDCHGF,那么前序遍历结果为?

2、对字符串HELL0_HULU中的字符进行二进制编码,使得字符串的编码长度尽可能短,最短长度为?

3、对长度12的有序数组进行二分查找,目标等概率出现在数组的每个位置上,则平均比较次数为?

4、一副扑克(去王),每个人随机的摸两张,则至少需要多少人摸牌,才能保证有两个人抽到同样的花色。

5、x个小球中有唯一一个球较轻,用天平秤最少称量y次能找出这个较轻的球,写出y和x的函数表达式y=f(x)

6、3的方幂及不相等的3的方幂的和排列成递增序列1,3,4,9,10,12,13……,写出数列第300项

7、无向图G有20条边,有4个度为4的顶点,6个度为3的顶点,其余顶点度小于3,则G有多少个顶点

8、桶中有M个白球,小明每分钟从桶中随机取出一个球,涂成红色(无论白或红都涂红)再放回,问小明将桶中球全部涂红的期望时间是?

9、煤矿有3000吨煤要拿到市场上卖,有一辆火车可以用来运煤,火车最多能装1000吨煤,且火车本身需要烧煤做动力,每走1公里消耗1吨煤,如何运煤才能使得运到市场的煤最多,最多是多少?

10、1,2,3,4…..n,n个数进栈,有多少种出栈顺序,写出递推公式(写出通项公式不得分)

11、宇宙飞船有100,000位的存储空间,其中有一位有故障,现有一种Agent可以用来检测故障,每个Agent可以同时测试任意个位数,若都没有故障,则返回OK,若有一位有故障,则失去响应。如果有无限多个Agent可供使用,每个Agent进行一次检测需要耗费1小时,现在有2个小时时间去找出故障位,问最少使用多少个Agent就能找出故障。

(总共12道填空题,还有一道太复杂,题目很长,还有示意图,这里没有记录下来)

大题:

1、n个数,找出其中最小的k个数,写出代码,要求最坏情况下的时间复杂度不能高于O(n logk)

2、写程序输出8皇后问题的所有排列,要求使用非递归的深度优先遍历

3、有n个作业,a1,a2…..an,作业aj的处理时间为tj,产生的效益为pj,最后完成期限为dj,作业一旦被调度则不能中断,如果作业aj在dj前完成,则获得效益pj,否则无效益。给出最大化效益的作业调度算法。点评:参考答案请看这个链接:http://www.51nod.com/question/#!questionId=645。

有道的一个笔试题,1-9,9个数组成三个三位数,且都是完全平方数(三个三位数 占据 9个数)求解法。

点评@林晚枫&归云见鸿:

(a*10+b)(a*10+b)

100a^2+20ab+b^2

a 属于 [1,2,3]

a=3,b=1 31 961,

a=2,b=3 23 529 400+40b+b^2

25 625

27 729

28 784

29 841

a=1,b=3 13 169 100+20b+b^2

14 196

16 256

17 289

18 324

19 361

=>最终唯一解 529 784 361

具体代码如下(3个for循环,然后hash):

9月28日,大众点评北京笔试题目:

1.一个是跳台阶问题,可以1次一级,1次两级,1次三级,求N级的跳法一共多少种?

点评:老题,参考答案请见:http://blog.csdn.net/v_july_v/article/details/6879101。

2.一个文件有N个单词,每行一个,其中一个单词出现的次数大于N/2,怎么样才能快速找出这个单词?

点评:还是老题,参见:http://blog.csdn.net/v_july_v/article/details/6890054。

大众点评前面还有30道逻辑题,15道文字推理,15道数学推理,一共只给20min。

9月28日,网易笔试题:

1、英雄升级,从0级升到1级,概率100%。

从1级升到2级,有1/3的可能成功;1/3的可能停留原级;1/3的可能下降到0级;

从2级升到3级,有1/9的可能成功;4/9的可能停留原级;4/9的可能下降到1级。

每次升级要花费一个宝石,不管成功还是停留还是降级。

求英雄从0级升到3级平均花费的宝石数目。

点评:题目的意思是,从第n级升级到第n+1级成功的概率是(1/3)^n(指数),停留原级和降级的概率一样,都为[1-(1/3)^n]/2)。

2、将一个很长的字符串,分割成一段一段的子字符串,子字符串都是回文字符串。

有回文字符串就输出最长的,没有回文就输出一个一个的字符。

例如:

habbafgh

输出h,abba,f,g,h。

点评:编程艺术第十五章有这个回文问题的解答,参见:http://blog.csdn.net/v_july_v/article/details/6712171。此外,一般的人会想到用后缀数组来解决这个问题,其余更多的方法请见:http://dsqiu.iteye.com/blog/1688736。最后,还可以看下这个链接:http://www.51nod.com/question/#!questionId=672。

10月9日,腾讯一面试题:

有一个log文件,里面记录的格式为:

QQ号: 时间: flag:

如123456 14:00:00 0

123457 14:00:01 1

其中flag=0表示登录 flag=1表示退出

问:统计一天平均在线的QQ数。

点评:类似于此文中:http://blog.csdn.net/hackbuteer1/article/details/7348968,第8题后的腾讯面试题,读者可以参看之。

10月9日,腾讯面试题:

1.有一亿个数,输入一个数,找出与它编辑距离在3以内的书,比如输入6(0110),找出0010等数,数是32位的。

2.每个城市的IP段是固定的,新来一个IP,找出它是哪个城市的,设计一个后台系统。

10月9日,YY笔试题:

1 输出一个字符串中没有重复的字符。如“baaca”输出“bac”。

2 对于一个多叉树,设计TreeNode节点和函数,返回先序遍历情况下的下一个节点。

函数定义为TreeNode* NextNode(TreeNode* node)

3 分割字符串。

对于一个字符串,根据分隔符seperator,把字符串分割,如果存在多个分隔符连在一起,则当做一个分隔符。如果分隔符出现在" "符号之间,则不需要分割" "之间的字符。

比如a++abc ,分隔符为+,输出a abc

a+"hu+" 输出a hu+

a++"HU+JI 输出a "HU JI。

请根据上述需求完成函数:void spiltString(string aString,char aSeperator)。

10月9日,赶集网笔试

10月9日,阿里巴巴2013校园招聘全套笔试题(注:下图中所标答案不代表标准答案,有问题,欢迎留言评论)

上述第15题,填空:lower+ (upper-lower)/2

lower mid upper

0 6 12

7 9 12

7 7 8

8 8 8

比较4次

上述第16题,解答如下图所示:

上述第17题,解答如下图所示:

18、甲包8个红球 2个蓝球,乙包2个红球 8个蓝球。抛硬币决定从哪个包取球,取了11次,7红4蓝。注,每次取后还放进去,只抛一次硬币。问选的是甲包的概率?

点评:

贝叶斯公式 + 全概率公式作答(参看链接:http://www.doc88.com/p-132711202556.html)。具体解答如下图所示:

注:上述第15~18的解答全部来自读者Lei Lei来信给出的解答,他的博客地址是:http://blog.csdn.net/nwpulei,特此感谢。有任何问题,欢迎随时讨论&指正,同时,更欢迎其他朋友也一起来做这些题目(你的答案一经选用,我可以根据你的要求,贴出你的个人主页或微博地址或博客地址)。

19、已知一个n个元素的数组,第i个元素在排序后的位置在[i-k,i+k]区间,k<<n p="" (nlogn)不得分,o(nk)得2分,如下图所示:<="" o="">

读者twtsa毛遂自荐,这是他给出的上述第19~20题的个人题解:http://blog.csdn.net/twtsa/article/details/8055143。有任何问题,欢迎随时讨论&指正。

10月10日,暴风影音笔试:

都是非常基础的题目,这是其中一道:一个整数转换成二进制后,问里面有多少个1。

10月10日,2013亚马逊在线笔试题目

题目及参考答案请见这:http://blog.chinaunix.net/uid-26750075-id-3370694.html。(感谢读者freeloki来信提供)。

10月10日人人网面试题

第一面:

1、(1)++i 和 i++,那个效率高?

(2)++++i,i++++,哪个是合法的?

(3)实现int型的++i 和 i++操作。

2、一段程序,求输出。(考察静态变量和模版类)

int g = 0;

template

class B

{

public:

int static fun()

{

static int value = ++g;

return value;

}

};

int main()

{

cout << B::fun() << endl;

cout << B::fun() << endl;

cout << B::fun() << endl;

cout << B::fun() << endl;

cout << B::fun() << endl;

return 0;

}

3、(1)实现二进制转十进制。

(2)如果有下面这种能直接求二进制转十进制的代码,是怎么实现的?

binary<1>::value; // 结果为1

binary<11>::value; // 结果为3

4、volatile、explicit、mutable表示的含义。

5、求整形数组的一个子数组,使得该子数组所有元素的和的绝对值最大。

6、(1)写求单链表是否有环的算法。

(2)如果有环,如何找出环的第一个结点。

7、实现单例模式。

二面:

1、一个文本,一万行,每行一个词,统计出现频率最高的前10个词(词的平均长度为Len)。并分析时间复杂度。

2、求数组中最长递增子序列。

10月10日,网易2013校园招聘全套笔试题:

10月10日,网易,数据挖掘工程师:

1,简述你对数据与处理的认识;

2,简述你对中文分词的理解,说明主要难点和常用算法;

3,常见的分类算法有哪些;

4,简述K-MEANS算法;

5,设计一个智能的商品推荐系统;

6,简述你对观点挖掘的认识。

点评:其它题目与上述第56题第一部分(http://blog.csdn.net/hackbuteer1/article/details/8060917)所述相同。

10月11日,阿里巴巴笔试部分题目:

1. 甲乙两个人上街,捡到一张10块钱的购物卡,两人就想出一个办法来分配这张卡。两个分别将自己出的价格写在纸上,然后看谁出的价高就给谁,并且那个出价高的人要把出的钱给对方。现在甲有6块钱,乙有8块钱。问谁获得的钱多。(多选)

 A 甲多 B 乙多 C 一样多 D 有可能出现有人赔钱的情况

2. 有一个怪物流落到一个荒岛上,荒岛上有n条鳄鱼。每条鳄鱼都有实力单独吃掉怪物。但是吃掉怪物是有风险的,会造成体力值下降,然后会有可能被掉其他鳄鱼吃。问,最后那个怪物是危险的还是安全的?

3. 算法题:

A[i]是一个有序递增数组,其中所有的数字都不相等,请设计一种算法,求出其中所有的A[i]=i的数字并分析时间复杂度,不分析复杂度不得分。

4. 大题

你在浏览器中输入网址:http://blog.csdn.net/v_JULY_v,按下回车键后,会发生什么事情,请一一描述(20分)。包括浏览器,网络,服务器等等发生的事情,及各项关键技术。

点评:这样的题考过很多次,参考答案如下图所示:

10月11日,华为一面:

1、将一个普通的二叉树转换为二叉排序树?

2、随便写一个排序算法。

10月11日,完美笔试题:

1.为什么析构函数应该设为虚函数

2.大数字乘法问题

3.双向链表模拟队列操作push pop find

4.求 a/3 不能用除法

5.多核下多线程同步问题,使用锁应该注意什么

6.三个宝箱有一个里面有珠宝,现在拿第一宝箱,然后打开第二个宝箱后发现没有珠宝,用概率论原理解释为什么现在拿第三个宝箱,里面有珠宝的概率比拿第一个宝箱高。

10月11日,搜狐畅游旗下第七大道笔试题:

算法题

1.一个数是否是另一个数的平方。

2.N进制换成M进制

3.设计一个大数乘法

综合题

1.N个数,出栈有几种情况

2.进程死锁原因及条件.

腾迅一个非常有意思的面试题:

N个数组,每个数组中的元素都是递增的顺序,现在要找出这N个数组中的公共元素部分,如何做? 注:不能用额外辅助空间。

点评:

讨论了半天:http://weibo.com/1580904460/z08mT0aFj,没个好的结果,发现还是上午想到的N个指针逐步向后移动,辅以二分,然后N路归并更靠谱,类似这里的第5题所述的办法:http://www.cnblogs.com/BeyondAnyTime/archive/2012/07/17/2593224.html。若读者有更好的思路,欢迎赐教。

10月12日,迅雷2013校园招聘「广州站」C++方向全套笔试题

(注:若照片看不清楚,请右键点击“图片另存为”到桌面,然后再打开图片,便可以随意放大缩小图片拉)

10月12日晚,微策略北京站笔试题(根据读者回忆整理):

1、魔术定义:整数N以基数B表示,如21以基数3表示为210,那么21是基数3的一个魔术,210三个位的值都不一样。设计函数,输入参数N和B(B介于2到10之间),返回是否为魔术。

2、斐波那契数列的变形,一个贼每次上楼梯1或者2,一个27层的楼梯需要多少种方法,记住贼不能经过5,8,13层,否则会被抓住。点评:还是可以用斐波那契来推算,f(n) = f(n-1) + f(n-2),只是f(5) f(8) f(13) = 0,http://www.51nod.com/answer/#!answerId=596。

3、给定一棵树根节点,每个节点里面的值都不相同,查找iKEY的节点,并使用一个给定的节点将查找到的节点替换掉。节点内有两个孩子节点和一个父节点。

4、字符串数组S,全是0和1表示的,字符串都是n位的,且1的个数小于等于l,返回index的字符串。(这个比较奇怪,如果S中字符串都是符合1的个数小于等于l,则直接可以得到index的字符串啊,难道是要先求这个字符串数组?那就比较麻烦了)

5、降序排列的数组,找到其中两个不同的值,其乘积最接近一个给定的值M,感觉和加法求和很类似。

6、序列123...N,N介于3和9之间,在其中加入+-或者空格,使其和为0,

如123456 1-2 3-4 5+6 7 等价于1-23-45+67=0。请问,如何获得所有组合?

10月12日,大众点评笔试一题:

读者私信,昨日(12号)美团的笔试题:

1、一副扑克52张(去了大小王),洗牌,求最顶一张和最底一张是A的概率

2、知道两个数的异或以及这两个数的和,问可以确定这对数吗?为什么?给出推理过程

3、A、B两个文件各存50亿个商品名称,每个50个字符,求这两个文件中相同名称的商品名,内存限制4G(看过您的《教你如何迅速秒杀掉:99%的海量数据处理面试题》中的第6题,无压力,非常感谢)

4、给一个二叉树的后序遍历和中序遍历,画出这颗二叉树,写出前序遍历结果,并给出推理过程

5、一个有序数组array,给一个数x,可重复,求这个数在array中出现的区间,算法思路和代码实现

6、一个映射文件中存了ip地址区间和城市名称,形如:

10.0.0.1 10.0.1.27 北京

10.0.2.1 10.0.2.27 北京

201.0.1.12 201.0.2.124 上海

给你一个ip地址,获取城市名称,要求:1)给出算法思想 2)代码实现。

10月12日晚,360 2013校招部分笔试题(注:图中所标答案不代表正确答案):

int main()

{

fork()||fork();

return 0;

}

问,上述程序创建了几个进程?

编程题、传教士人数m,野人c,m≥c,开始都在岸左边,

①船只能载两人,传教士和野人都会划船,当然必须有人划船

②两岸边保证野人人数不能大于传教士人数

把所有人都送过河,设计一方案,要求编程实现。

点评:

读者huangxy10于本文评论下第169楼提供了一种解法:http://blog.csdn.net/huangxy10/article/details/8066408。再附一个讨论帖子:http://topic.csdn.net/u/20121012/22/70226713-A669-4F03-80B7-BFFF12A330EB.html。

10月13日,百度2013校招北京站笔试题:

一、简答题(30分)

1、用简单语句描述数据库操作的步骤

2、写出TCP/IP的四层结构

3、什么是MVC结构,并描述各层结构的作用

二、算法与程序设计题(40分)

1、字母a-z,数字0-9,现需要其中任意3个作为密码,请输出所有可能组合。(伪码CC++JAVA)(10分)

点评:如本文评论下第198楼所述,即从26+10=36个不同字符中选取3个字符的组合,用递归及非递归两种方法,可以参照以下链接:

http://blog.csdn.net/wumuzi520/article/details/8087501(从n个数中选取m个数的组合数),主要代码如下:

//copyright @wumuzi520

//从n个数中选取m个数的组合数

void Combination(int arr[], int nLen, int m, int out[], int outLen)

{

if(m == 0)

{

for (int j = 0; j < outLen; j++)

{

cout << out[j] << " ";

}

cout << endl;

return;

}

for (int i = nLen; i >= m; --i) //从后往前依次选定一个

{

out[m-1] = arr[i-1]; //选定一个后

Combination(arr,i-1,m-1,out,outLen); // 从前i-1个里面选取m-1个进行递归

}

}

void PrintCombination(int arr[], int nLen, int m)

{

int* out = new int[m];

Combination(arr,nLen,m,out,m);

[] out;

}

2、实现字符串反转函数(10分)

3、给定字符函数a、插入 b、删除 c、替换

例如字符串A=acegf,字符串B=adef,最少需要2步操作将A转换为B,

即第一步将c替换为d,第二步将g删除;

(1)请问将字符串A=gumbo转换为字符串B=gambol,最少需要几步操作,列出如何操作(2分)

(2)任意字符串A和字符串B,如何计算最小操作次数,计算思路,并给出递归公式(3分)

(3)实现代码(注意代码风格与效率)(15分)

点评:请参看上文第38题第4小题:9月26日,百度一二面试题。

三、系统设计题(30分)

RSA SecurID安全系统

应用场景:这是一种用户登录验证手段,例如银行登录系统,这个设备显示6位数字,每60秒变一次,再经过服务器认证,通过则允许登录。问How to design this system?

1)系统设计思路?服务器端为何能有效认证动态密码的正确性?

2)如果是千万量级永固,给出系统设计图示或说明,要求子功能模块划分清晰,给出关键的数据结构或数据库表结构。

考虑用户量级的影响和扩展性,用户密码的随机性等,如果设计系统以支持这几个因素.

3)系统算法升级时,服务器端和设备端可能都要有所修改,如何设计系统,能够使得升级过程(包括可能的设备替换或重设)尽量平滑?

10月13日,百度移动开发笔试题

一、 1、什么是RISC;

2、通过后序、中xu求前序

3、重写与重载的区别

二、

1、反转链表

2、判断两个数组中是否有相同的数字

3、1000瓶水中找 出有毒的那瓶,毒性一周后发作,一周内最少需要多少只老鼠

三、系统设计 email客户端,支持多账户和pop3等协议

1、请写出可能的至少5个用例;

2、使用sqlite存储帐户、已收信息、已发信息、附件、草稿,请设计合理的表结构

3、pop3等协议等接口已完成,请给出email客户端的模块设计图。

10月13日,人搜2013 校招北京站部分笔试题(读者回忆+照片):

1,二重歌德巴赫猜想

所有大于等于6的偶数都可以表示成两个(奇)素数之和。

给定1-10000,找到可以用两个素数之和表示每一个偶数的两个素数,然后输出这两个素数,如果有多对,则只需要输出其中之一对即可。

要求:复杂度较低,代码可运行。

2,城市遍历

某人家住北京,想去青海玩,可能会经过许多城市,

现已知地图上的城市连接,求经过M个城市到达青海的路线种类。

城市可以多次到达的,比如去了天津又回到北京,再去天津,即为3次。北京出发不算1次。

输入:

N M S

N为城市总数,北京为0,青海为N-1;

M为经过的城市数目;

S为之后有S行

i j

表示第i个城市可以去第j个城市,是有方向的。

输出:

N

表示路径种类。

3,分布式系统设计

有1000亿个URL,其中大约有5亿个site。每天的更新大约2%-5%。设计一个系统来解决存储和计算下面三个问题。可用分布式系统。

URL:http///site[port]*(key==?;key==?)

site:

.domain

URL:http://www.baidu.com/baidu?word=%E5%AE%A3%E8%AE%B2%E4%BC%9A&ie=utf-8

site::www.baidu.com

domain::baidu.com

key=baidu?word

a>检测每个域名下的site数目,以及每个site下的URL数目,输出site变化超过一定阈值的域名以及URL数目变化剧烈的site。找出泛域。

泛域:该域下的site数目超过500个,且每个site下的URL数目超过100个。

b>提取URL中key的特征,对site进行聚类;

(每个site下面有多个URL,这些URL中有许多key,可以获取这些key作为site的特征,对site进行聚类,不过这应该是多机器联合的)

c>对于给定的domain,输出该domain下的所有site。

10月13日,创新工场笔试:

第一个,快排最坏情况下是O(n^2),问如何优化?

第二个,怎么样求一个数的根号

点评:你是不是会想到一系列有关数学的东西,什么泰勒级数啊,什么牛顿法啊,具体编程可以如下代码所示:

static void Main(string[] args)

{

double k = 5;

double n = 2, m = k;

while (n != m)

{

m = k / n;

n = (m + n) / 2;

}

}

链接:http://www.51nod.com/question/#!questionId=660。

第三个,4个数字,用四则元素求结果能否为24。写出这个判断的函数。

10月14日,思科网讯旗下公司笔试题:

1、海量数据中,寻找最小的k个数。

请分情况,给出时间复杂度最优,或空间复杂度最优的方案,或时间复杂度/空间复杂度综合考虑的可行方案。

点评:参见:第三章、寻找最小的k个数。

2、有两座桥,其中一座可能是坏的,两个守桥人分别守在这两座桥的入口。他们一个总是会说实话,一个总是说谎话。

你现在需要找出哪一座桥可以通过。

1),请问最少需要问守桥人几个问题,可以找出可以通过的桥?如何问?

2),请编程解决。

10月14日,腾讯杭州站笔试题:

1、http服务器会在用户访问某一个文件的时候,记录下该文件被访问的日志,网 站管理员都会去统计每天每文件被访问的次数。写一个小程序,来遍历整个日志 文件,计算出每个文件被访问的访问次数

1)请问这个管理员设计这个算法

2)该网站管理员后来加入腾讯从事运维工作,在腾讯,单台http服务器不够用的 ,同样的内容,会分布在全国各地上百台服务器上。每台服务器上的日志数量, 都是之前的10倍之多,每天服务器的性能更好,之前他用的是单核cpu,现在用的 是8核的,管理员发现在这种的海量的分布式服务器,基本没法使用了,请重新设计一个算法。

2、腾讯的qq游戏当中,最多人玩的游戏就是斗地主了,每一句游戏开始时,服务 器端都要洗牌,以保证发牌的时每个人拿的牌都是随机的,假设用1-54来表示54 张不同的拍,请你写一个洗牌算法,保证54张牌能随机打散!

选择题:

1)、下列RAID技术无法提高可靠性的是:

A:RAID0 B:RAID1 C:RAID10 D:RAID5

2)、长度为1的线段,随机在其上选择两点,将线段分为三段,问这3个字段能组成一 个三角形的概率是:

1/2,1/3,1/4,1/8

3)、下面那种标记的包不会在三次握手的过程中出现()

A:SYN B:PSH C:ACK D:RST

10月14日,搜狗2013 校招笔试题:

1、有n*n个格子,每个格子里有正数或者0,从最左上角往最右下角走,只能向下和向右,一共走两次(即从左下角走到右下角走两趟),把所有经过的格子的数加起来,求最大值SUM,且两次如果经过同一个格子,则最后总和SUM中该格子的计数只加一次。

点评:@西芹_new,一共搜(2n-2)步,每一步有四种走法,考虑不相交等条件可以剪去很多枝,代码如下「http://blog.csdn.net/huangxy10/article/details/8071242」:

西芹_new0:55:40

// 10_15.cpp : 定义控制台应用程序的入口点。

//

#include "stdafx.h"

#include

using namespace std;

#define N 5

int map[5][5]={

{2,0,8,0,2},

{0,0,0,0,0},

{0,3,2,0,0},

{0,0,0,0,0},

{2,0,8,0,2}};

int sumMax=0;

int p1x=0;

int p1y=0;

int p2x=0;

int p2y=0;

int curMax=0;

void dfs( int index){

if( index == 2*N-2){

if( curMax>sumMax)

sumMax = curMax;

return;

}

if( !(p1x==0 && p1y==0) && !(p2x==N-1 && p2y==N-1))

{

if( p1x>= p2x && p1y >= p2y )

return;

}

//right right

if( p1x+1<n p="" ){<="" p2x+1

p1x++;p2x++;

int sum = map[p1x][p1y]+map[p2x][p2y];

curMax += sum;

dfs(index+1);

curMax -= sum;

p1x--;p2x--;

}

//down down

if( p1y+1<n p="" ){<="" &&="" p2y+1

p1y++;p2y++;

int sum = map[p1x][p1y]+map[p2x][p2y];

curMax += sum;

dfs(index+1);

curMax -= sum;

p1y--;p2y--;

}

//rd

if( p1x+1<n p="" &&="" p2y+1<n="" {<="">

p1x++;p2y++;

int sum = map[p1x][p1y]+map[p2x][p2y];

curMax += sum;

dfs(index+1);

curMax -= sum;

p1x--;p2y--;

}

//dr

if( p1y+1<n p="" p2x+1<n="" &&="" {<="">

p1y++;p2x++;

int sum = map[p1x][p1y]+map[p2x][p2y];

curMax += sum;

dfs(index+1);

curMax -= sum;

p1y--;p2x--;

}

}

int _tmain(int argc, _TCHAR* argv[])

{

curMax = map[0][0];

dfs(0);

cout <<summax-map[n-1][n-1]<<endl;< p="">

return 0;

}

@绿色夹克衫:跟这个问题:http://www.51nod.com/question/#!questionId=487 ,是同一个问题。

1、用动态规划可以求解,大概思路就是同时DP 2次所走的状态。先来分析一下这个问题,为了方便讨论,先对矩阵做一个编号,且以5*5的矩阵为例(给这个矩阵起个名字叫M1):

M1

0 1 2 3 4

1 2 3 4 5

2 3 4 5 6

3 4 5 6 7

4 5 6 7 8

从左上(0)走到右下(8)共需要走8步(2*5-2)。为了方便讨论,我们设所走的步数为s。因为限定了只能向右和向下走,因此无论如何走,经过8步后(s = 8)都将走到右下。而DP的状态也是依据所走的步数来记录的。

再来分析一下经过其他s步后所处的位置,根据上面的讨论,可以知道经过8步后,一定处于右下角(8),那么经过5步后(s = 5),肯定会处于编号为5的位置。3步后肯定处于编号为3的位置......。s = 4的时候,处于编号为4的位置,对于方格中,共有5(相当于n)个不同的位置,也是所有编号中最多的。推广来说n*n的方格,总共需要走2n - 2步,当s = n - 1时,编号为n个,也是编号最多的。

如果用DP[s,i,j]来记录2次所走的状态获得的最大值,其中s表示走s步,i表示s步后第1次走所处的位置,j表示s步后第2次走所处的位置。

为了方便讨论,再对矩阵做一个编号(给这个矩阵起个名字叫M2):

M2

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

4 4 4 4 4

M1

0 1 2 3 4

1 2 3 4 5

2 3 4 5 6

3 4 5 6 7

4 5 6 7 8

经过6步后,肯定处于M1中编号为6的位置。共有3个编号为6的,分别对应M2中的2 3 4。假设第1次经过6步走到了M2中的2,第2次经过6步走到了M2中的4,DP[s,i,j] 则对应 DP[6,2,4]。由于s = 2n - 2,0 <= i<= <= j <= n,所以这个DP共有O(n^3)个状态。

M1

0 1 2 3 4

1 2 3 4 5

2 3 4 5 6

3 4 5 6 7

4 5 6 7 8

再来分析一下状态转移,以DP[6,2,3]为例(就是上面M1中加粗的部分),可以到达DP[6,2,3]的状态包括DP[5,1,2],DP[5,1,3],DP[5,2,2],DP[5,2,3],加粗表示位置DP[5,1,2] DP[5,1,3] DP[5,2,2] DP[5,2,3] (加红表示要达到的状态DP[6,2,3])

0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4

1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5

2 3 4 5 6 2 3 4 5 6 2 3 4 5 6 2 3 4 5 6

3 4 5 6 7 3 4 5 6 7 3 4 5 6 7 3 4 5 6 7

4 5 6 7 8 4 5 6 7 8 4 5 6 7 8 4 5 6 7 8

因此,DP[6,2,3] = Max(DP[5,1,2] ,DP[5,1,3],DP[5,2,2],DP[5,2,3]) + 6,2和6,3格子中对应的数值 (式一)

2、上面(式一)所示的这个递推看起来没有涉及:“如果两次经过同一个格子,那么该数只加一次的这个条件”,讨论这个条件需要换一个例子,以DP[6,2,2]为例。

DP[6,2,2]可以由DP[5,1,1],DP[5,1,2],DP[5,2,2]到达,但由于i = j,也就是2次走到同一个格子,那么数值只能加1次。

所以当i = j时,DP[6,2,2] = Max(DP[5,1,1],DP[5,1,2],DP[5,2,2]) + 6,2格子中对应的数值 (式二)

3、故,综合上述的(式一),(式二)最后的递推式就是

if(i != j)

DP[s, i ,j] = Max(DP[s - 1, i - 1, j - 1], DP[s - 1, i - 1, j], DP[s - 1, i, j - 1], DP[s - 1, i, j]) + W[s,i] + W[s,j]

else

DP[s, i ,j] = Max(DP[s - 1, i - 1, j - 1], DP[s - 1, i - 1, j], DP[s - 1, i, j]) + W[s,i]

其中W[s,i]表示经过s步后,处于i位置,位置i对应的方格中的数字。

复杂度分析:状态转移最多需要统计4个变量的情况,看做是O(1)的。共有O(n^3)个状态,所以总的时间复杂度是O(n^3)的。空间上可以利用滚动数组优化,由于每一步的递推只跟上1步的情况有关,因此可以循环利用数组,将空间复杂度降为O(n^2)。

OK,上述这个方法可能不算最优解法,但相对比较容易想一些。希望大家能够提供更好的想法,也欢迎大家补充程序。链接:http://www.51nod.com/answer/#!answerId=598。

2、N个整数(数的大小为0-255)的序列,把它们加密为K个整数(数的大小为0-255).再将K个整数顺序随机打乱,使得可以从这乱序的K个整数中解码出原序列。设计加密解密算法,且要求K<=15*N.

如果是:

1,N<=16,要求K<=16*N.

2,N<=16,要求K<=10*N.

3,N<=64,要求K<=15*N.

点评:http://www.51nod.com/question/#!questionId=659。

人人网面试,只面一道题,要求5分钟出思路,10分钟出代码

面试题是:

两个无序数组分别叫A和B,长度分别是m和n,求中位数,要求时间复杂度O(m+n),空间复杂度O(1) 。

10月15日,网新恒天笔试题

1.不要使用库函数,写出void *memcpy(void *dst, const void *src, size_t count),其中dst是目标地址,src是源地址。

点评:下面是nwpulei写的代码:

void* memcpy(void *dst, const void *src, size_t count)

{

assert(dst != NULL);

assert(src != NULL);

unsigned char *pdst = (unsigned char *)dst;

const unsigned char *psrc = (const unsigned char *)src;

assert(!(psrc<=pdst && pdst<psrc+count));< p="">

assert(!(pdst<=psrc && psrc<pdst+count));< p="">

while(count--)

{

*pdst = *psrc;

pdst++;

psrc++;

}

return dst;

}

链接:http://blog.csdn.net/nwpulei/article/details/8090136。

2.给定一个字符串,统计一下哪个字符出现次数最大。

3.我们不知道Object类型的变量里面会出现什么内容,请写个函数把Object类型转换为int类型。

10月15日,Google 2013 校招全套笔试题:

1.写一个函数,输出前N个素数,函数原型:void print_prime(int N); 不需要考虑整数的溢出问题,也不需要使用大数处理算法。

2.长度为N的数组乱序存放着0带N-1.现在只能进行0与其他数的swap操作,请设计并实现排序,必须通过交换实现排序。

3.给定一个源串和目标串,能够对源串进行如下操作:

1.在给定位置上插入一个字符

2.替换任意字符

3.删除任意字符

写一个程序,返回最小操作数,使得对源串进行这些操作后等于目标串,源串和目标串的长度都小于2000。

点评:

1、此题反复出现,如上文第38题第4小题9月26日百度一二面试题,10月9日腾讯面试题第1小题,及上面第69题10月13日百度2013校招北京站笔试题第二大道题第3小题,同时,还可以看下这个链接:http://www.51nod.com/question/#!questionId=662。

//动态规划:

//f[i,j]表示s[0...i]与t[0...j]的最小编辑距离。

f[i,j] = min { f[i-1,j]+1, f[i,j-1]+1, f[i-1,j-1]+(s[i]==t[j]?0:1) }

//分别表示:添加1个,删除1个,替换1个(相同就不用替换)。

2、补充:上述问题类似于编程之美上的下述一题「以下内容摘自编程之美第3.3节」:

许多程序会大量使用字符串。对于不同的字符串,我们希望能够有办法判断其相似程度。我们定义了一套操作方法来把两个不相同的字符串变得相同,具体的操作方法为:

1. 修改一个字符(如把“a”替换为“b”);

2. 增加一个字符(如把“abdd ”变为“aebdd ”);

3. 删除一个字符(如把“travelling”变为“traveling”)。

比如,对于“abcdefg”和“abcdef ”两个字符串来说,我们认为可以通过增加/减少一个“g”的方式来达到目的。上面的两种方案,都仅需要一次操作。把这个操作所需要的次数定义为两个字符串的距离,而相似度等于“距离+1”的倒数。也就是说,“abcdefg”和“abcdef”的距离为1,相似度为1 / 2 = 0.5。

给定任意两个字符串,你是否能写出一个算法来计算出它们的相似度呢?

这样,很快就可以完成一个递归程序,如下所示:

Int CalculateStringDistance(string strA, int pABegin, int pAEnd,

string strB, int pBBegin, int pBEnd)

{

if(pABegin > pAEnd)

{

if(pBBegin > pBEnd)

return 0;

else

return pBEnd – pBBegin + 1;

}

if(pBBegin > pBEnd)

{

if(pABegin > pAEnd)

return 0;

else

return pAEnd – pABegin + 1;

}

if(strA[pABegin] == strB[pBBegin])

{

return CalculateStringDistance(strA, pABegin + 1, pAEnd,

strB, pBBegin + 1, pBEnd);

}

else

{

int t1 = CalculateStringDistance(strA, pABegin, pAEnd, strB,

pBBegin + 1, pBEnd);

int t2 = CalculateStringDistance(strA, pABegin + 1, pAEnd,

strB,pBBegin, pBEnd);

int t3 = CalculateStringDistance(strA, pABegin + 1, pAEnd,

strB,pBBegin + 1, pBEnd);

return minValue(t1,t2,t3) + 1;

}

}

上面的递归程序,有什么地方需要改进呢?在递归的过程中,有些数据被重复计算了。比如,如果开始我们调用CalculateStringDistance(strA,1, 2, strB, 1, 2),下图是部分展开的递归调用。

可以看到,圈中的两个子问题被重复计算了。为了避免这种不必要的重复计算,可以把子问题计算后的解存储起来。如何修改递归程序呢?还是DP!请看此链接:http://www.cnblogs.com/yujunyong/articles/2004724.html。

3、此外,关于这个“编辑距离”问题的应用:搜索引擎关键字查询中拼写错误的提示,可以看下这篇文章:http://www.ruanyifeng.com/blog/2012/10/spelling_corrector.html。「关于什么是“编辑距离”:一个快速、高效的Levenshtein算法实现,这个是计算两个字符串的算法,Levenshtein距离又称为“编辑距离”,是指两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。当然,次数越小越相似。这里有一个BT树的数据结构,挺有意思的:http://blog.notdot.net/2007/4/Damn-Cool-Algorithms-Part-1-BK-Trees」

最后,Lucene中也有这个算法的实现(我想,一般的搜索引擎一般都应该会有此项拼写错误检查功能的实现):http://www.bjwilly.com/archives/395.html。

4、扩展:面试官还可以继续问下去:那么,请问,如何设计一个比较两篇文章相似性的算法?(这个问题的讨论可以看看这里:http://t.cn/zl82CAH)

BTW,群友braveheart89也整理了这套笔试题:http://blog.csdn.net/braveheart89/article/details/8074657。

10月16日,UC的笔试题目:

1、有个长度为2n的数组{a1,a2,a3,...,an,b1,b2,b3,...,bn},希望排序后{a1,b1,a2,b2,....,an,bn},要求时间复杂度o(n),空间复杂度0(1)。

点评:@绿色夹克衫:完美洗牌问题「关于洗牌算法:http://blog.csdn.net/gogdizzy/article/details/4917488」,解决这个问题的关键在于如何解决置换群中的环。方法是微软员工那篇论文中写的:http://user.qzone.qq.com/414353346/blog/1243343118#!app=2&via=QZ.HashRefresh&pos=1243343118,大概意思是,用3的幂来弄:

@方程:

int index = arr.length / 2;

int temp = arr[index];

while(index != 1){

int tempIndex = (index + (index % 2) * (arr.length - 1)) / 2;

arr[index] = arr[tempIndex];

index = tempIndex;

}

arr[1] = temp;

链接:1,http://www.51nod.com/question/#!questionId=278;2、这里也有一参考答案:http://blog.csdn.net/yuan8080/article/details/5705567。

10月17日,创新工场电话面试:

1,如何删除一个搜索二叉树的结点;

2,如何找到一个数组中的两个数,他们的和为0;

3,如何判断两条二维平面上的线段是否相交。

网易2013 校招笔试题:

10月19日,百度研发三面题:

百度地图里的路线查询:给定两个站点,如果没有直达的路线,如何找到换乘次数最少的路线?

点评:蚂蚁算法?还是广搜,或A*算法?

10月20日,baidu广州站笔试算法题:

1. 有一箱苹果,3个一包还剩2个,5个一包还剩3个,7个一包还剩2个,求N个满足以上条件的苹果个数。

2. 用递归算法写一个函数,求字符串最长连续字符的长度,比如aaaabbcc的长度为4,aabb的长度为2,ab的长度为1。

3. 假设一个大小为100亿个数据的数组,该数组是从小到大排好序的,现在该数组分成若干段,每个段的数据长度小于20「也就是说:题目并没有说每段数据的size 相同,只是说每个段的 size < 20 而已」,然后将每段的数据进行乱序(即:段内数据乱序),形成一个新数组。请写一个算法,将所有数据从小到大进行排序,并说明时间复杂度。

点评:

思路一、如@四万万网友所说:维护一个20个元素大小的小根堆,然后排序,每次pop取出小根堆上最小的一个元素(log20),然后继续遍历原始数组后续的(N-20)个元素,总共pop (N-20)次20个元素小根堆的log20的调整操作。

思路二@飘零虾、如果原数组是a[],那么a[i+20]>=a[i]恒成立(因为每段乱序区间都是小于20的,那么向后取20,必然是更大的区间的元素)。

第一个数组:取第0、20、40、60、80...

第二个数组:取第1、21、41、61、81...

...

第20个数组:取第19、39、59、79... (上述每个数组100亿/20 个元素)

共计20个数组,每个数组100亿/20 个元素「注:这5亿个元素已经有序,不需要再排序」,且这20个数组都是有序的,然后对这20个数组进行归并,每次归并20个元素。时间复杂度跟上述思路一一样,也是N*logK(N=100亿,K=20)。

此外,读者@木叶漂舟直接按每组20个排序,将排好的20个与前20个调整拼接,调整两端接头处的元素,写了个简单地demo: http://t.cn/zlELAzs。不过,复杂度有点高,目前来说中规中矩的思路还是如上文中@四万万网友 所说思路一「@张玮-marihees按照思路一:http://weibo.com/1580904460/z1v5jxJ9P,写了一份代码:http://codepad.org/T5jIUFPG,欢迎查看」。

10月21日,完美笔试算法题「同时,祝自己生日快乐!」:

1. 请设计一个算法,当给出在2D平面中某个三角形ABC的顶点坐标时能输出位于该三角形内的一个随机点(需要满足三角形内均匀随机),无需写出实现,只要能清楚地描述算法即可。

2. 请自己用双向链表实现一个队列,队列里节点内存的值为int,要求实现入队,出队和查找指定节点的三个功能。

3. 实现一个无符号任意大整数的类,实现两个无符号超大整数的乘法。

10月22日,CSR掌微电子笔试题:

5.给定两个字符串s1和s2,要求判定s2是否能够被通过s1做循环移位(rotate)得到字符串包含。例如,S1=AABCD和s2=CDAA,返回true;给定s1=ABCD和s2=ACBD,返回false。用伪代码或流程图叙述解法。

点评:老题,类似:http://blog.csdn.net/v_JULY_v/article/details/6322882。其余题目见:http://blog.sina.com.cn/s/blog_3eb9f72801016llt.html。

10月23日,去哪儿网笔试:

1.将IPV4转换成整数

2.定义一个栈的数据结构,实现min函数,要求push,pop,min时间复杂度是0(1);

点评:这是2010年整理的微软100题的第2题,http://blog.csdn.net/v_JULY_v/article/details/6057286,答案见此文第2题:http://blog.csdn.net/v_JULY_v/article/details/6126406。

3.数组a[n]里存有1到n的所有树,除了一个数removed,找出这个missing的树。

4.找出字符串中的最长子串,要求子串不含重复字符,并分析时间复杂度。

10月28日,微软三面题「顺祝,老妈明天生日快乐!」:

找一个点集中与给定点距离最近的点,同时,给定的二维点集都是固定的,查询可能有很多次,时间复杂度O(n)无法接受,请设计数据结构和相应的算法。

类似于@陈利人:附近地点搜索,就是搜索用户附近有哪些地点。随着GPS和带有GPS功能的移动设备的普及,附近地点搜索也变得炙手可热。在庞大的地理数据库中搜索地点,索引是很重要的。但是,我们的需求是搜索附近地点,例如,坐标(39.91, 116.37)附近500米内有什么餐馆,那么让你来设计,该怎么做?

点评:我看到这道题的时候,除了想到用R树「从B树、B+树、B*树谈到R 树」解决这个问题之外,还想起了之前一直要写的KD树仍未写,但估计快要写了,请读者朋友们耐心等待些时日吧。

11月10日,百度笔试题:

1、20个排序好的数组,每个数组500个数,按照降序排序好的,让找出500个最大的数。

2、一在线推送服务,同时为10万个用户提供服务,对于每个用户服务从10万首歌的曲库中为他们随机选择一首,同一用户不能推送重复的,设计方案,内存尽可能小,写出数据结构与算法。


【互联网开发面试题】相关文章:

互联网公司面试题总结07-12

web前端开发面试题07-12

我遇到的互联网公司的面试题07-12

JAVA开发工程师面试题07-13

互联网产品开发流程标准文档07-10

单片机开发工程师面试题07-11

Google Android 开发工程师职位面试题07-13

关于互联网新产品设计开发流程07-10

互联网软件应用与开发复习资料07-01

知名互联网公司系统工程师面试题07-12