2011淘宝春季实习生招聘笔试题

转自:http://hi.baidu.com/346248129/blog/item/d59d283d6e5f4015baa16790.html

转载请标明出处~3Q

1. A,B两机器用千兆网传输,A上每个页面是1K字节,则B机器下载的限制是()

千兆网指的是 1000Mb每秒也就是 1000/8 MB = 125MB的速度,1K字节为1KB 所以应为 100 000左右(不知道对不对)

2. 已知单链表,把节点q插入到节点p的操作是()
q->link = p->link; p->link = q
3. 用矩形表示世界上的每个国家,最少用()种颜色表示,使得共有边界的两个国家不会重色。
4种,地图的四色定理,但是由于条件比较特殊,国家是矩形,所以笔试时尝试了下,发现3种确实无法实现,选4种
4.快速排序的平均时间复杂度是O(nlgn),最坏的情况是O(n^2),什么时候会出现O(n^2)
数组基本有序

5. int i,j,*p;p=&i;问一下哪个表达式是把j赋给i()
*p=*&j;
6. #define F(a,b) a*b,则 F(3+6, 8-5)= ()
46,define是直接替代
7. 一个栈,进栈顺序为1,2,3,…,1—n,n,最先出栈的元素是n,那么第i个出栈的元素是()
 N-i+1,栈是先进后出,既然最先出的是最后一个元素,那么答案就唯一了
8.树的后序遍历是ABC+*DE/-,中序遍历是,A*B+C-D/E,那么前序遍历是()

-*A+BC/DE

二、填空题
1.用数组保存数据,删除一个元素的平均需要移动元素的次数((1/2)(n-1))
2.求一个元素全为正数的数组中的次大元素的程序填空题,其中num >=2

int f(int *a, int num)

{

  int number = a[0];

  int result = 0;(=0是所填空)

  for(int i=1; i<num; ++i)

  {

    if(a[i] > number)

    {

      result = number;(空)

      number = a[i];(空)

    }

    else if( a[i] > result)

    {

      result = a[i];(空)

    }

  }

  return result;

}
3.下述函数输入9999,结果是(8)
Int Fun(int x)
{
    int countx = 0;
    whike(x)
    {
         countx++;
         x = x & (x-1);
     }
 return countx;
}

很简单,其实把9999化成2进制,看有几个1就是答案了
4. int a[3][2] = {1,2,3,4,5,6}, int *p[3], p[0] = a[1];

问 *(p[0]+1)是几

4, p[0]指向的位置是 a[1][0],p[0]+1指向的位置自然是a[1][1]啦~

三、综合题
1. 有7000g的大米,50克和200克的砝码,要称出1350g,最小需要称几次?
3次

3次的最佳方案是 ,先拿7000和200分出 一份3400,一份3600

‍然后平分3600得到1800

然后 3400-(1800+200+50) = 1350


2. N个鸡蛋放到M个篮子中,每个篮子中至少放一个,要满足的条件:输入任意一个不大于N的正整数,总有某几个篮子中的鸡蛋数目之和与之相等。写一个函数,输入N,M,输出所有可能的鸡蛋放置情况

没什么太好的想法,个人觉得很难的一个题,实在不行就遍历枚举吧,也算是一种方法

回去之后再好好想想这个题(笔者没有想法,有想法的欢迎留言~)


 

转自:http://blog.sina.com.cn/s/blog_4709bd4d0100s31f.html#comment

 

一、选择题

 

1. AB两机器用千兆网传输,A上每个页面是1K字节,则B机器下载的限制是()

 

千兆网指的是可以传输1000Mbit/s,答案是:1000M/(1024*8) = 100000bit/s

 

2. 单链表,已知p->link指向p的下一个节点,q指向一个新的节点,把q插入到p之后的操作是()

 

q->link = p->link; p->link = q

 

3. 用矩形表示世界上的每个国家,最少用()种颜色表示,使得相邻的两个国家不会重色。

 

3

 

4.快速排序在通常情况下时间复杂度是Onlgn),在()情况下是On2

 

数组基本排好序的情况

 

5. int i,j=2,int *p=&i把正确的实现i=j的是(*p=*&j)

int i,j=2,*j=i=j

 

6. #define F(a,b) a*b, F3+6 8-5= ()

46

 

7. 一个栈,1n,最先出栈的元素是n,那么第i个出栈的元素是()

n-i+1

 

8.二叉树遍历题,答案记着D。前序

 

二、填空题

1.数组中删除元素的平均移动次数

(n-1)/2

.求数组中的次大元素的程序填空题。result=number;number=data[i];result=data[i];

 

.下述函数输入9999,结果是(8

 

Fun(int x)

{

    int countx = 0;

    whike(x)

    {

         countx++;

         x = x & (x-1);

     }

}

 

4. int a[3][2]={1,2,3,4,5,6};int *p[3];p[0]=a[1];printf("%d",*(p[0]+1));,结果是4

 

三、综合题

 

 

1. 7公斤的的米,50200的砝码,要称出1350g米,最小需要称几次?3次。

第一次:200+50,称出250g

第二次:200+250,称出450

第三次:200+450,称出650

共称出1350g

2. N个鸡蛋放到M个篮子中,每个篮子中至少放一个,要满足的条件:输入任意一个不大于N的正整数,总有某几个篮子中的鸡蛋数目之和与之相等。写一个函数,输入N,M,输出所有可能的鸡蛋放置情况

本人的做法:按二进制中的1的位置进行存放, M的范围[logN,N]

 

 

.评论数据处理问题

你可能感兴趣的:(招聘,笔试题,淘宝,实习生)