我的面试总结

1 ,两个数组,长度都为n 而且都是有序的,怎么让你合成一个有序的数组?(橙译中科面试题)

2 ,M个长度为n 的数组,也都是有序的,通过一些方法合成一个有序的数组?(橙译中科面试题)

3,给你一百万的字符串,然后输入一个字符串,让你查找此字符串的出现次数,查找次数很多<=100w?(橙译中科面试题)

4,手写双向链表?(舆情早报网笔试题)

5,手写哈希表插入算法?(舆情早报网笔试题)

6 ,描述并手写堆排序?(搜狗面试题)

7,如何判断一个单向链表存在环路?(搜狗面试)

8,如何判读图中出现环路,此图没有固定点,也就是说没有1,2,3,4....号点相连,你怎么判断?(搜狗面试)

9,给你一个非常长的有序数组,你只知道开头,但是不知道他有多长,也就是说不知道结尾元素,你怎么从这个数组里查找一个数?(搜狗面试)

10,给你一个数组,整体是升序的,但是局部逆序,你怎样从中查找一个数?(搜狗面试)

11,介绍一下最小生成树数算法?(搜狗面试)

12,给你一个迷宫,怎么找到出口?(搜狗面试)

13 ,给你一个迷宫,怎么找到所有出口?(搜狗面试)

14,给你一个迷宫,怎么判断他是否有出口?(搜狗面试)

15,我就把问题简化一下吧,给你一个不知长度的数组,只知道开头,对数组的每个元素你只能访问一次,请问你怎么从中等概率选取一个元素?(搜狗面试)

16,如何判断一个操作系统是32位的还是64位的,不能使用库函数,如sizeof?(金山笔试)

17, 是个C++虚函数的调用和输出问题,自己翻书吧,没法写(金山面试)

18,给你两个整数A和B,对他们的二进制,对应的位不相同的个数?(金山面试,好像是这个意思,记不太清了)

19,给你10亿个数,让你找出前100个最大的数?(金山面试)

20,设计一个算法:游戏中有上千万的玩家,现在我们要制作一个排行榜,为了简便,我们只排等级,排行榜上只显示前一百名玩家,要求:实现排行榜的实时更新,保证计算效率?(金山笔试,要手写代码吧,当时整个笔试中,我和猛男就吃了这亏啊)

21,在游戏中,如果一个玩家没有玩伴,很快会觉得没意思,慢慢的就不玩了,现在让你设计一个算法,给玩家推荐等级相似的玩家,等级相等为最佳匹配,算法保证效率?大概题意是这样的(金山笔试)

继续更新中。。。。。

 

 

下面附上大致解法:仅供参考

1, 此题是热身题,很简单,只需要开辟一个2n长度的数组,循环2n次,两个数组的元素从头开始比较,一次放入长度为2n 的数组内 时间复杂度O(2n)

2,建立二叉平衡树,然后中序遍历 存到一个大数组里,时间复杂度为 n*mLog(n*m)

3,字典树

7,可以用两个指针,对这两个指针的操作是一个指针每次走一步,另一个指针走两步,这样如果出现环路,快的指针肯定能与慢的指针重合

8,在一个图中如果出现环路,肯定会有交点,交点有好多出口,我们为每个出口第一个指针,分别出发,如果某个时刻出现指针相撞,那就是出现环路(我自己的答案,仅供参考)

9,研究中...,谁知道给我说一下

10,线性拟合

11,克鲁斯卡尔和普里姆

12,广搜

13,递归,把每个可走的点递归进去,如果能走得通,则在回溯的时候输出每条路径

14,并查集

15,sampling 蓄水池抽样算法

16,利用数据类型在不同平台的所占的字节

18  ,我当时的做法  x=A|B;count=0;

                                   while(x){x=x&(x-1); count++;} (大家验证吧)

19,目前有个解法,先取出100个数建立一个小顶堆,这样时间100*log100,然后从剩余10亿-100个数中一次取出一个数去更新堆,每次都去掉一个最小的,到最后剩余的100个即为前100大,总体时间复杂度 10亿*log100, 好像还有其他大数查找问题的解法,大家去网上查吧,我正在继续研究中.....

20,堆排序,(这是我当时的答案,仅供参考)

21,我当时用的排序,猛男说用二分图匹配,大家斟酌吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值