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

本文精选了一系列C++面试题目,涵盖了类方法调用规则、运算符重载限制、模板声明规范、关键字用法、字符串比较等多个方面,帮助读者深入理解C++语言特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分类: C/C++   237人阅读  评论(0)  收藏  举报

1.下列说法错误的有()

A.  在类方法中可用this来调用本类的类方法

B. 在类方法中调用本类的类方法时可直接调用

C. 在类方法中只能调用本类中的类方法

D.  在类方法中绝对不能调用实例方法

 


 

答案:ACD

首先要清楚,类方法指的是,用static修饰的静态方法,众所周知,静态方法是不包含this指针的,因为它不属于某一个具体的对象所有

类方法可以不必实例化而直接调用,所以,类方法可以调用其他类的类方法

D (参考别人的,我也觉得说的很有道理)可以在类方法中先实例化对象,然后调用实例方法。

 

 

 2.下列运算符,在C++语言中不能重载的是()

A.  *

B.  .*

C.  ::

D. delete

 

 

答案:BC

::?:..*sizeof、是C++标准规定不能重载的。

以下内容为转载

//开始

并没有什么根本的原因要禁止重载 ?: 。仅仅是因为,我没有发现有哪种特殊的情况需要重载一个三元运算符。注意一个重载了表达式 1 ?表达式 2 :表达式 3 的函数,不能够保证表达式 2 :表达式 3 中只有一个会被执行。

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

[cpp]  view plain copy
  1. X a[10];  
  2. X* p = &a[3];  
  3. X* q = &a[3];  
  4. p++; // p 指向a[4]  

 // 那么p 的整型值必须比q 的整型值大出一个sizeof(X)

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

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

理论上来说,.(点运算符)可以通过使用和->一样的技术来进行重载。但是,这样做会导致一个问题,那就是无法确定操作的是重载了.的对象呢,还是通过.引用的一个对象。例如:

[cpp]  view plain copy
  1. class Y {  
  2.     public:  
  3.     void f();  
  4.     // ...  
  5. };  
  6. class X { // 假设你能重载.  
  7.     Y* p;  
  8.     Y& operator.() { return *p; }  
  9.     void f();  
  10.     // ...  
  11. };  
  12. void g(X& x){  
  13.     x.f(); // X::f 还是Y::f 还是错误?  
  14. }  


//结束

另外,&&||,、也不要去重载,因为这将破坏它们的短路特性(参见《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

AE应该都知道是正确的

B用于声明虚函数,没有虚成员变量这个说法,DB相似,只有内联函数,没有内联变量

我没有选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

CD很明显返回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.给出以下定义,下列哪些操作是合法的?

[cpp]  view plain copy
  1. const char *p1 = "hello";  
  2. char *const p2 = "world";  


A.    p1++;

B.    p1[2] = ‘w’;

C.   p2[2] = ‘l’;

D.   p2++;




答案:A

p1是一个指向常量的指针(内容不可变,但是地址可变),p2是一个常量指针(内容可变,地址不可变)

所以,B、D都是错的,但C为什么也是错的?

因为如下方式

[cpp]  view plain copy
  1. const char *p1 = "hello";     
  2. char *const p2 = "world";  

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


改为如下方式,则C也正确

[cpp]  view plain copy
  1. char p11[]="hello";  
  2. char p22[]="world";  
  3. const char *p1 = p11;//"hello";   
  4. 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

链表不支持随机查找,所以无法使用二分查找。

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

 IPv44个字节

IPv616个字节

 


15.以下说法正确的是:

A.    在并行程度中,当两个并行的线程,在没有任何约束的情况下,访问一个共享变量或者共享对象的一个域,而且至少要有一个操作是写操作,就可能发生数据竞争错误。

B.    原语Compare-and-swap(CAS)是实现无锁数据结构的通用原语。

C.   获得内部锁的唯一途径是:进入这个内部锁保护的同步块或方法。

D.   volatile变量具有synchronized的可见性特性,但是不具备原子特性。

E.    减小竞争发生可能性的有效方式是尽可能缩短把持锁的时间

 

 


答案:AD

OS学的不好,不会做。。。

 

 


16.调用动态连接库的函数有哪几种方法?

 

 

17.WM_QUIT消息的用途是什么?一个普通的Windows窗口能收到的最后一条消息是什么?

 

 

18.题都没看懂。。不贴了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值