首页 > 代码库 > 笔试小结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.二叉树线索化

什么叫线索化?可以看这里


6.写一个f(n,m)=n^m,m为整数

其实是一道面试题,一眼就知道写一个快速幂。

不出三十秒写完。

面试官说,我有说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