码迷,mamicode.com
首页 > 其他好文 > 详细

选择性真题整理

时间:2016-02-24 14:13:45      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:

------------(腾讯研发工程师笔试题)

1.爸爸去哪儿中的3对父子站成一排,各自父子之间不能相邻,比如石头不能和郭涛挨着,以此类推,共有几种站法?

  A.120

  B.48

  C.240

  D.144

分析:答案为C。

解题方法1:假设三对父子分别是Aa、Bb、Dd;

第一个位置有6种选择,假设为A;
第二个位置有4种选择(因为不能为a),假设为B;
第三个位置需要分类讨论一下,如果为a,则可以确定后面三位只有两种选择了,如果不为a,第三个位置有两种选择(D和d),假设为D,进而再确定后面三个位置的选择数。
那么结果是:6*4*(2+2*4)=240。
解题方法2:容斥原理,6个人全排列-一对父子相邻+两对父子相邻-三队父子相邻 
A(6,6)-C(3,1)*A(2,2)*A(5,5) + C(3,2)*A(4,4)*A(2,2)*A(2,2) - A(3,3)*A(2,2)*A(2,2)*A(2,2) = 240
解题方法3:易理解的办法:
(1)先取出两对父子,3对父子取出2对有C(3,2)=3种,
(2)进行排序,保证父子不相邻,就有 2*2=4种排序
(3)剩下一对父子插入上面4个人的5个缝隙中,就有 A(5,2)=5*4=20
(4)3*4*20=240
 
2、请找出下面程序中有哪些错误:
int main()
{
   int i=10;
   int j=1;
   const int *p1;//(1)
   int const *p2=&i; //(2)
   p2=&j;//(3)
   int *const p3=&i;//(4)
   *p3=20;//(5)
   *p2=30;//(6)
   p3=&j;//(7)
return 0;
}

      A.1,2,3,4,5,6,7

  B.1,3,5,6

  C.6,7

  D.3,5

分析:答案为C。

(1)const int*p1:表示不能通过指针p1修改它指向的内存单元的值,但是p1本身可修改。

(2)int const*p2=&i:与p1相同,即不能修改p2指向的内存单元的值,但是可以修改p2使其指向其它的内存单元。这里p2指向了整型变量i
(3)p2=&j:修改p2,使其指向整型变量 j ,由(2)可知(3)没错。
(4)int *constp3=&i:p3本身是指向整型变量的常指针,即p3初始化后不能再指向其它的内存单元,但是可以修改p3指向的内存单元的值。这里p3指向了整型变量i。
(5)*p3=20:通过p3将变量i的值修改为2,由(4)可知(5)没错。
(6)*p2=30:通过p2修改它所指向的内存单元的值,由(2)可知(6)错误。
(7)p3=&j:修改p3,使其指向j,由(4)可知(7)错误。

 

3、以下代码输出什么____.  

main()
{
   int a[5]={1,2,3,4,5};
   int *p=(int *)(&a+1);
   printf("%d",*(p-1));
}

    A.1

  B.2

  C.5

  D.出现错误

分析:答案:C。

数组名a可以作为数组的首地址,而&a是数组的指针,那么&a+1就是表示一个指向大小为5的下一个数组的指针,也就是数组a最后一个元素的下一个位置,那么int*p=(int*)(&a+1)进行强制类型转换,将指向数组的指针转换为指向第二个数组中首元素的指针,所以p-1则是指向第一个数组中最后一个元素的指针,所以输出是5。

 

5、有如下C++代码:

struct A{
  void foo(){printf("foo");}
  virtual void bar(){printf("bar");}
  A(){bar();}
};
struct B:A{
  void foo(){printf("b_foo");}
  void bar(){printf("b_bar");}
};

  那么

A *p=new B;
p->foo();
p->bar();

  输出为:

      A.barfoob_bar

  B.foobarb_bar

  C.barfoob_foo

  D.foobarb_fpp

分析:答案:A

A *p=newB;// A类指针指向一个实例化对象B, B类继承A类,先调用父类的无参构造函数,bar()输出bar,B类没有自己显示定义的构造函数。

p->foo();//执行B类里的foo()函数,因为foo不是虚函数,所以直接调用父类的foo函数,输出foo
p->bar();//执行B类的bar()函数, 该函数为虚函数,调用子类的实现,输出b_bar

 

6、linux下,指定文件file1为所有用户可读,可写,可执行,执行命令:___1__。修改file1的拥有者为test,拥有组为user,执行命令:___2__。

  A.chmod 776,chown test

  B.chmod 777,chown user

  C.chmod 777,chown test

  D.chmod 778,chown user

分析:答案:C。

# 改变权限
chmod 777 filepath
# 改变所有者
chown test filepath 
# 改变所属组
chgrp user filepath

 

选择性真题整理

标签:

原文地址:http://www.cnblogs.com/carsonzhu/p/5212626.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!