首页 > 代码库 > 笔试小结2
笔试小结2
上一篇文章,写到一半的时候,去了3G门户的宣讲和笔试,当然是凭着打酱油的心态去面试的安卓工程(完全不会)。
另外,很神奇的是,在我参加宣讲的时候,美团打电话过来,邀我明日(即今天)面试。
这是我的,第一个面试!面试如何?暂且不说这个先。继续回顾一下最近做了的笔试题。
4.有三个有序的数组,A,B,C(严格递减),元素都小于10^7, 现在要求在A,B,C同时出现过的最大的数.
我当时做的方法是用了hash,大概是
int bitmap[12345678]; memset(bitmap,0,sizeof(bitmap)); for ( int i=0 ; i< sizeof(A)/4 ;i++){ bitmap[A[i]]++; } for ( int i=0 ; i< sizeof(B)/4 ;i++){ bitmap[B[i]]++; } for ( int i=0 ; i< sizeof(C)/4 ;i++){ if(bitmap[C[i]]==2){ cout<<C[i]<<endl; break; } }
时间复杂度是O(len(A)+len(B)+len(C));
我不知道我的做法是不是浪费了有序性,仅仅用于在C中,A,B的有序性都没有用上。
有log(n)的算法请大家告知我。
5.二叉树线索化
什么叫线索化?可以看这里
其实是一道面试题,一眼就知道写一个快速幂。
不出三十秒写完。
面试官说,我有说m一定是正整数吗?教训啊!冲动啊少年!
之后我说,对不起,我没注意..之后马上就加了一个小判断。m<0,则返回1.0/fun(n,-m)
至于怎么写快速幂?这你还要问我?
7.一个村子有50个人,每个人有一只狗,其中一些狗有病(不会传染)。
于是村里的人去看别人的49只狗,判断他是否有病。
人们不能互相交流信息,也不能告诉主人他的狗病了。
只有主人能杀自己的狗,杀自己的狗必须用枪。
第一天和第二天没有枪声,第三天传来了枪声,请问有多少只病狗?
智商题真不少,这是3G门户的笔试题,话说3G门户又跪了....面的是安卓,蛋疼。
我当时脑海就在YY。
比如1只病狗,明显第一天就会枪响(病狗会)
2只狗,A病狗与B病狗对望,第二天,A,B都要死
3只狗,第一天A,B B,A C,A
第二天A,C B,C C,B
第三天 必须死啊。。符合条件
大于4的时候,能撑3天,第四天才死。
显然。。。就是n-1天生存。所以就是3条病狗。
PS,今天面 美团,第一次面试,打到终面,实属不易,但是非常非常累。
笔试小结2