创新工场笔试、小米科技笔试、百度笔试 研发部门

创新工场笔试:

单选和编程题目

单选不怎么记得了,有几道比较难,这里记录一下

1)10个左右括号组成满足条件的方案数,这个典型的catalan数,也是一个X>=Y的组合问题,可以看一下组合相关知识求解;

2)K(M,N) 一个递推推导,我是推导一部分,然后找规律(好像是K(2,m)= 2*m+3)

if M == 0 return N+1;

if N == 0 return K(M,1);

else return K(M-1,K(M,N-1));

求K(3,3)

编程题目:

1) A,B,C 可以容纳1-20的克的水,首先C乘K克的水,然后输出如何A为空,则C可能盛水的情况; (每次只能选择一个瓶,该该瓶内的水全部导入到另外一个瓶,如果另外一个瓶子满了,则停止倒水)

可以用递归实现,用hash来保存中间状态;肯定可以穷尽;

创新工场一面:

实现插入,删除,查找都是O(logn)的数据结构,给出了skiplist即可;也可以用deque实现,这个还需要进一步看一下,它是vector和list的优点改进,提供了push_front和pop_front接口,可高效实现queue和priority_queue。

给有球面上一点,然后转动一个角度(a),求转动后角度的坐标(x,y,z),希望用O(1)直接给出来,表示无空间想象力,直接跪了。。。 提示:用经纬度表示球面上点,然后变化旋转轴,然后映射,还是很难,没解决出来。

小米笔试:

服务器开发:三道大题,一道附加题

第一题: 实现 bool isPalindrom(long num),判断整数是否为回文,不用内存空间;

第二题: 实现两个多项式的乘积;每个字符串的格式"(-4,4),(3,2),(3,1)" 

string multiplyString(const string &s1,const string &s2);  设计有效的数据结构来实现该算法,我把string转变成了vector,导致占用了大量空间,有点麻烦;

这个应该能够通过设计更好的数据结构来实现;

第三题:要给1000个人排队,多个人可以发出请求,每个请求表示那些人在我前面,哪些人在我后面。这样判断是否最后存在有效队列?如果存在,输出一种有效队列。

这个我解法,是利用矩阵来判断是否存在冲突来判断有效性;然后根据矩阵可到达性来实现一种有效队列; 

百度笔试:

简单题:

1)stack和queue

2)多态

3)TCP的四次关闭连接,和TIME_WAIT

程序题:

1)反转单词,尽量少用额外空间; 我实现空间O(1)

2)时间最长递增序列; 时间复杂度未要求,最快O(nlogn)

3) 有限自动机实现C语言中注释提取,忘记怎么写了

程序设计题:

多用户成绩实时查询和更新,以及朋友圈成绩和排名查询(类似于微信朋友圈游戏排名查询和更新系统的设计)

我考虑:数据库的设计,锁机制设计,分布式机制,缓存机制,多服务器响应机制。。。。有点蒙的感觉。。

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。