搜狐2010校园招聘第一站北邮笔试题(转) 以及 本人做的部分答案

  搜狐2010 校园招聘第一站北邮笔试题 

<script type="text/javascript"> </script> <script type="text/javascript"> </script> 搜狐 2010 校园招聘第一站北邮笔试题

转自 狼窝 http://blog.csdn.net/haoxing168

转载请注明出处

 

一.填空选择题。(好像是 20 多分)

太多了,忘了,总之是基础的啦,有看代码的题,有个 Python 脚本的没看懂

1 .以下协议中,报文头最短的协议是:

A.UDP   B.TCP   C.IP    D. 以太网帧

     8          20        20                10

 所以, udp的报头最小。

2 .一个递归算法球时间复杂度,具体忘了,自己先考虑着吧

 

3.

 

二.名词解释。( 10 分,一题 1 分)

例如: COM = Component Object Model = 组件对象模型

1.ATL  = active template library

2.SSH(JAVA)  =

3.SVN  = subversion

4.MSDN = microsoft software develop network

5,NAT  = net address traslation

6,JVM  = java vitural machine

7,CSS  = cascading style sheets

8.AIO,  = asynchronous input/ouput

9,AJAX = asynchronous javascript and xml

备注:总共 10 个,忘了一个,另外顺序和原题当然也不一样啦。

 

三.问答题。(好像是 42 分,第一题 6 分,其他三题 12 分)

  1 .分别解释 const char* p, char const* p, char* p const 的作用和区别,如果是 java 程序员,比较 StringBuilder StringBuffer 的区别

   const char *p : p是一个指针,指向一个字符串常量

   char const *p  同上

  char *p const: p 是一个常量指针,指向一个字符串。

 

 

 

 

 

 

 

 

 

  2 .有两个表,分别表示用户的发图记录和发帖记录,写一 SQL 语句,求发帖数最少的用户发的图片数 ,以下是表结构,其中两个表以 img_user,rev_user 关联。

 

Img_id

Img_user

1.jpg

2

2.gif

3

3.png

2

         image

 

 

Rev_id

Rev_user

0

1

1

2

2

2

       revision

如: select _______ as user_id, _______ as rev_count, _______ as img_count from ______

 

  3 .对于函数 strtok 在多线程下会存在什么问题,应该如何解决。

备注: Strtok 是个字符串分割函数,搜狐原题中给了 C JAVA 的实现代码,这个大家可以到网上找找,总之就是 strtok 函数中用到了一个静态变量,并且会读写这个静态变量,所以在多线程情况下是不安全的,需要同步。

 

  4 .已知一个 N*N 矩阵,矩阵内的元素满足如下条件:对于任意的 i+j > x+y Aij > Axy ,写一个算法,查找数 X 的位置,要求算法最优,写出时间复杂度。

备注:搜狐原题中给出了类似的一个矩阵,我肯定是忘了,不过不影响做题。

解答:

    分析可以知道,这个矩阵式以副对角线的方向数值递增的。

    于是可以用折半查找的方法,1, n ,等,每次沿着对角线的方向遍历一下看看是否又x的存在,如果x比期中最小值还小,那么在下半部分,如果比最大值还大,那么在上半部分,否则,就是没有找到。

 

时间复杂度,初步估计是 nlogn。

 

 

 

四.编程题。( 20 分,任选一个)

  1 .旅行者问题,已知 N*N 的格子,旅行者要从格子的左上角走到右下角,格子中的数字代表格子中的金币数,其中 -1 是旅行者不能走的格子,旅行者需要 N-1 步能走到重点,这里的每一步可以是向下走一格,也可以是向右走任意格然后再向下走一格。写一算法,使得旅行者走过的路径中得到的金币数量最多。

1

4

4

 1

1

1

2

100

2

2

1

-1

1

2

1

1

备注:格子类似于上面的,但是具体数字和原题不一样,记不住了,大家将就看吧,最后的算法是一样的,不影响算法的编写。

 

解答:

用动态规划的方法:做一个N,N的矩阵 G

G(i,j) 为当前走到i,j 时所能取得的最大的收益。

G(i,j) = max{G(i,j-1)+a(i,j),  G(i-1, j)+a(i,j)}

 

 

 

  2 .已知一个十二进制数,用字符串表示,如 ”11” ,写一个函数,将其转为 long 型的 10 进制数,如:字符串 ”11” ,最后转为 13(10) ,函数原型为: long convert(const char* pStr);

 

解答:

  先求出字符串的长度。

然后按照转换公式计算即可。

long convert(const char* pStr)

{

    int len = strlen(pStr);

    long sum = 0;

    int num = 0;

    for(int i = 0; i < len;  i ++)

    {

      switch( pStr[i])

      {

      case 'A': num = 10;

            break;

      case 'B': num = 11;

            break;

      default: num = pStr[i] - '0';

             break;

       }

       sum = sum * 12 + num;

    }

   return sum;

}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值