【错题集】腾讯2016校园招聘 研发工程师笔试题(一)

以下代码输出什么____.  

main() {  

  int a[5]={1,2,3,4,5};    

  int *p=(int *)(&a+1);    

  printf("%d",*(p-1));

}

 

【解析】&a是int[5]*而不是int*,p是int*,指向(5*int+1*int)个位置 p-1回到了a[4],因此输出5。

==============================================================================

【题目】ip地址10.1.8.0/24和10.1.9.0/24,下列哪个是正确的汇总网段:

【答案】

 

【解析】不会做查了下。原理:

在子网划分以后,如果需要网络通信需要配置路由,如果每个子网都配置一条路由是十分繁琐并容易出错的,所以可以将连续的子网合成一个网段这就是地址汇总。

(1)写成二进制:00001010 . 00000001 . 00001000 . 00000000(32位)

               00001010 . 00000001 . 00001001 . 00000000(32位)

(2)找到最高的不同位: 00001010 . 00000001 . 0000100 (23位)

(3)剩下位置变0: 0.00000000

(4)汇总网段写回10进制:00001010 . 00000001 . 00001000.00000000 → 10.1.8.0/23

==============================================================================

【题目】在序列(22,34,55,77,89,93,99,102,120,140)中,采用二分查找,分别查找77,34,99,所需的查找次数分别为( )

【答案】

 

【解析】还是要严格按照算法流程来,边界不对会被缩小,89>77会high缩小到3号而不是停在4号

数字 22 34 55 77 89 93 99 102 120 140
编号 0 1 2 3 4 5 6 7 8 9

低low=0,高high=9

第一次:(0+9)/2=4,89>77,high=3

第二次:(0+3)/2=1,34<77,low=2

第三次:(2+3)/2=2,55<77,low=3

第四次:(3+3)/2=3,77退出

======================================================

【题目】下面关于HTTP协议的说法正确的是:

【答案】

 

【解析】AC都是对的,B:HTTP是文本协议不是二进制,D:HTTP1.1才有cache-control

======================================================

【题目】在C++面向对象编程语言中,以下阐述不正确的是:

【答案】

 

【解析】接口中用的是抽象方法不是虚方法

======================================================

【题目】设k1,k2是矩阵A的两个不同的特征值,a与b是A的分别属于k1,k2的特征向量,则由a与b是

【答案】

 

【解析】数学题,特征值不同,如果特征向量线性相关(一个可以用另一个表示),则反推特征值相同,矛盾。线性无关。

======================================================

【题目】以下代码是否完全正确,执行可能得到的结果是____

 

class A{
  int i;
};
class B{
  A *p;
  public:
  B(){p=new A;}
  ~B(){delete p;}
};
void sayHello(B b){
}
int main(){
  B b;
  sayHello(b);
}

 

【答案】

 

【解析】形参传递析构指针两次
https://www.nowcoder.com/questionTerminal/94cc380a927d440c882b21fa6359ee4d MSean
以下三种情况需要用到拷贝函数:
a)一个对象以值传递的方式传入函数体;
b)一个对象以值传递的方式从函数返回;
c)一个对象需要通过另外一个对象进行初始化。

本例中,在调用sayHello(b)时符合上面a)的情况,因此会调用拷贝构造函数。由于类中未显式声明一个拷贝构造函数,编译器将会自动生成一个默认的拷贝构造函数,来完成对象间的位拷贝(或称浅拷贝),也就是把对象里的值完全复制给另一个对象,如ClassX = ClassY。这时,如果ClassY中有一个成员变量指针已经申请了内存,那ClassX中的那个成员变量也指向同一块内存。这就出现了问题:当ClassY把内存释放了(如:析构),这时ClassX内的指针就是野指针了,出现运行错误。(本例中的情况,前面几位同学解释地已经很到位,即sayHello()函数体结束析构了一次,main()函数结束又一次析构,而这时p已经是野指针了,因而出错。)
==============================================================================
【题目】哪些设计模式是降低资源使用率:
【答案】

 

【解析】 设计模式:http://blog.csdn.net/xsl1990/article/details/16359289

首先单例模式肯定降低了资源使用率,保证该类的实例永远只有一个!

原型模式适用于在初始化信息不发生变换的情况,克隆的方法比较适合,主要的目的是避免重新初始化对象,如果后面需要对新对象进行,还需要区分深拷贝和浅拷贝。无论是深拷贝还是浅拷贝只是复制了资源,并没有降低资源使用率。

享元模式(Flyweight): 基于共享技术用于把一些共同的信息(或模块)抽象出来,避免了大量相似类的开销,也降低了资源的使用率。

==============================================================================

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

【答案】

【解析】不相邻问题,容斥原理:全排 - 一对父子 + 2对父子 - 3对父子

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

 

posted on 2017-02-27 13:27  BWB  阅读(233)  评论(0编辑  收藏  举报

导航