您的位置:首页 > 编程语言 > C语言/C++

腾讯2015春招pc客户端开发练习卷

2015-06-04 11:43 232 查看
1.下列说法错误的有()
A.  在类方法中可用this来调用本类的类方法
B. 在类方法中调用本类的类方法时可直接调用
C. 在类方法中只能调用本类中的类方法
D.  在类方法中绝对不能调用实例方法
 

 
答案:ACD
A 首先要清楚,类方法指的是,用static修饰的静态方法,众所周知,静态方法是不包含this指针的,因为它不属于某一个具体的对象所有
C 类方法可以不必实例化而直接调用,所以,类方法可以调用其他类的类方法
D (参考别人的,我也觉得说的很有道理)可以在类方法中先实例化对象,然后调用实例方法。
 
 
 2.下列运算符,在C++语言中不能重载的是()
A.  *
B.  .*
C.  ::
D. delete
 
 
答案:BC
::、?:、.、.*、sizeof、是C++标准规定不能重载的。
以下内容为转载
//开始
并没有什么根本的原因要禁止重载?:。仅仅是因为,我没有发现有哪种特殊的情况需要重载一个三元运算符。注意一个重载了表达式1?表达式2:表达式3的函数,不能够保证表达式2:表达式3中只有一个会被执行。

Sizeof 不能够被重载是因为内建的操作(built-in operations),诸如对一个指向数组的指针进行增量操作,必须依靠它。考虑一下:

X a[10];
X* p = &a[3];
X* q = &a[3];
p++; // p 指向a[4]
 // 那么p 的整型值必须比q 的整型值大出一个sizeof(X)

所以,sizeof(X)不能由程序员来赋予一个不同的新意义,以免违反基本的语法。

在N::m 中,无论N 还是m 都不是值的表达式;N 和m 是编译器知道的名字,::执行一个(编译期的)范围解析,而不是表达式求值。你可以想象一下,允许重载x::y 的话,x 可能是一个对象而不是一个名字空间(namespace)或者一个类,这样就会导致——与原来的表现相反——产生新的语法(允许 表达式1::表达式2)。很明显,这种复杂性不会带来任何好处。

理论上来说,.(点运算符)可以通过使用和->一样的技术来进行重载。但是,这样做会导致一个问题,那就是无法确定操作的是重载了.的对象呢,还是通过.引用的一个对象。例如:
class Y {
public:
void f();
// ...
};
class X { // 假设你能重载.
Y* p;
Y& operator.() { return *p; }
void f();
// ...
};
void g(X& x){
x.f(); // X::f 还是Y::f 还是错误?
}


//结束

另外,&&、||、,、也不要去重载,因为这将破坏它们的短路特性(参见《More
Effective C++》条款 7)

3.下列的模板说明中,正确的有()
A.  template <typename T1, typename T2>
B.  template <class T1, T2>
C. template <class T1, class T2>
D. template <typename T1; typename T2>
 

 
答案:AC
B中第二个参数缺少类型声明
D中,两个参数中间竟然用了分号。。。
 

 
4.InC++, which of the following keyword(s) can be used on both a variableand afunction?
A.  static
B.  virtual
C. extern
D.  inline
E. const

 
答案:ACE
A、E应该都知道是正确的
B用于声明虚函数,没有虚成员变量这个说法,D和B相似,只有内联函数,没有内联变量
我没有选C,因为没用过前面加extern的函数,然后才知道,extern是默认加的。
 

 
5.Which of the following statement(s) equal(s) value 1 in C programming language?
A.    the return value of main function ifprogram ends normally
B.    return (7&1)
C.   char *str="microsoft";returnstr=="microsoft"
D.   return"microsoft"=="microsoft"
E.    None of the above
 

 
答案:BCD
A的返回值是0
B中 7&1即为二进制111&1,返回1。
C、D很明显返回1
 
 
6.下列定义语句中,错误的是
A.  int px*;
B.  char*acp[10];
C.  char(*pac)[10];
D.  int(*p)();
 

 
答案:A
A不符合变量命名规则
B声明一个数组,包含10个指向char型变量的指针
C声明一个指针,指向一个包含10个元素的char型数组
D声明一个指针,指向一个没有参数,返回int型变量的函数
 
 

7.抽象基类是指()
A.嵌套类
B.派生类
C.含有纯虚函数
D.多继承类
 
 
 
答案:C
水题。。。
 
 
8.给出以下定义,下列哪些操作是合法的?
const char *p1 = "hello";
char *const p2 = "world";


A.    p1++;
B.    p1[2] = ‘w’;
C.   p2[2] = ‘l’;
D.   p2++;

答案:A
p1是一个指向常量的指针(内容不可变,但是地址可变),p2是一个常量指针(内容可变,地址不可变)
所以,B、D都是错的,但C为什么也是错的?
因为如下方式
const char *p1 = "hello";
char *const p2 = "world";

声明的字符串是在只读存储区的,不能更改。

改为如下方式,则C也正确
char p11[]="hello";
char p22[]="world";
const char *p1 = p11;//"hello";
char *const p2 = p22;//"world";


9.关于IP地址下列说法错误的是?
A.     IP地址采用分层结构,它由网络号与主机号两部分组成
B.    根据不同的取值范围IP地址可以分为五类
C.   202.112.139.140属于B类地址
D.   每个C类网络最多包含254台主机
E.    IPv6采用128位地址长度
F.    私有地址只是ABC类地址的一部分
 
 
答案:C
虽然我计网学的烂,可也知道IP地址的划分,C明显属于C类
 


 
 

10.对于二分查找算法下面描述正确的是哪个?
A.     只能用于数组
B.    只能用于链表
C.   只能在已经排序的数据上进行查找
D.   最坏情况下时间复杂度是O(N*logN)
 
 
答案:AC
B 链表不支持随机查找,所以无法使用二分查找。
而D,最坏时间复杂度为logN,也就是在最后一次才找到要找的数
 
 
 
11.用来检查到一台主机的网络层是否连通命令是()?
A.     PING
B.    TRACERT
C.   TELNET
D.   IPCONFIG
答案:A
水题。。。
ping命令发送ICMP数据包检测网络有没有连通
 
 
 
12.类B从类A派生,则类B可以访问类A中的()成员?
A.    public成员
B.    private成员
C.   protected成员
D.   数据成员
E.    函数成员
 
 
答案:AC
水题。。。
 
 

13.路由器转发数据包到非直接网段的过程中,依靠下列哪一个选项来寻找下一跳地址()
A.     帧头
B.    IP报文头部
C.   SSAP子段
D.   DSAP子段
 

 
答案:B
引用别人的
路由器工作在OSI的网络层,转发的数据包是IP报文。
IP报文的头部有源IP和目的IP
路由器根据目的ip计算出iP所在的网段,根据网段转发到不同的端口。
如果在路由表中没有该网段的转发端口,则转发至默认路由端口

 
 
14.IPv6地址占____个字节
A.    4
B.    6
C.   8
D.   16
 

 
答案:D
 IPv4是4个字节
IPv6是16个字节
 

15.以下说法正确的是:
A.    在并行程度中,当两个并行的线程,在没有任何约束的情况下,访问一个共享变量或者共享对象的一个域,而且至少要有一个操作是写操作,就可能发生数据竞争错误。
B.    原语Compare-and-swap(CAS)是实现无锁数据结构的通用原语。
C.   获得内部锁的唯一途径是:进入这个内部锁保护的同步块或方法。
D.   volatile变量具有synchronized的可见性特性,但是不具备原子特性。
E.    减小竞争发生可能性的有效方式是尽可能缩短把持锁的时间
 
 

答案:AD
OS学的不好,不会做。。。
 
 

16.调用动态连接库的函数有哪几种方法?
 
 
17.WM_QUIT消息的用途是什么?一个普通的Windows窗口能收到的最后一条消息是什么?
 
 
18.题都没看懂。。不贴了
 
给出在线测试的地址
腾讯2015春招pc客户端开发练习卷
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ 面试 腾讯