笔试真题解析 TT-2015 春招pc客户端开发练习卷笔试题

1 下列说法错误的有( )
在类方法中可用this来调用本类的类方法
在类方法中调用本类的类方法时可直接调用
在类方法中只能调用本类中的类方法
在类方法中绝对不能调用实例方法
【解析】
A:类方法是指类中被static修饰的方法,无this指针。
C:类方法是可以调用其他类的static方法的。
D:可以在类方法中生成实例对象再调用实例方法。

2 下列运算符,在C++语言中不能重载的是()
*
.*
::
operator  delete
【解析】
答案选择BC。并不是所有的操作符都能被重载。除了 . , .* , :: , ? : , sizeof , typeid 这几个运算符不能被重载,其他运算符都能被重载。
 
3 下列的模板说明中,正确的有( )
template <typename T1, typename T2>
template <class T1, T2>
template <class T1, class T2>
template <typename T1; typename T2>
【解析】
AC

4 In C++, which of the following keyword(s) can be used on both a variable and a function?
static
virtual
extern
inline
const
【解析】
static 静态变量和静态函数都可以在类外直接访问,
extern 可以用于声明变量,但是函数声明也可以用,只不过默认就是extern而已。
const也可以修饰函数或者变量
类的成员函数后面加 const, 表明这个函数不会对这个类对象的数据成员(准确地说是非静态数据成员)作任何改变。
正确答案: A C E

5 Which of the following statement(s) equal(s) value 1 in C programming language?

the return value of main function if program ends normally

return (7&1)
char *str="microsoft"; return str=="microsoft"
return "microsoft"=="microsoft"
None of the above
【解析】
A.main成功返回,是0。
B. 按位与 7&1 = 111 & 001 = 001  即 1。 
C.str这个指针就是指向"microsoft"这个字符串常量的地址,所以,str == "microsoft" 自然是成立的。
D. 两个相同的字符串常量是放在同一个内存地址的,所以也相等。
答案为:BCD。
【注】
在VS2012中C,D输出的是0,在Dev C++中输出的是1。

6 下列定义语句中,错误的是
int px*;
char*acp[10];
char(*pac)[10];
int(*p)();
【解析】
指针数组 数组指针 指针函数 函数指针
int   *p[4];         //指针数组。  是个有4个元素的数组, 每个元素的是指向整型的指针 。(数组的每个元素都是指针) 
int   (*p)[4];       //数组指针。 它是一个指针,指向有4个整型元素的数组。                 (一个指针指向有4个整型元素的数组) 
int *func(void);     //指针函数。 无参函数, 返回整型指针。              (函数的返回值为int*) 
int (*func)(void);   //表示函数指针,可以指向无参, 且返回值为整型指针的函数。       (函数的返回值为int)
正确答案: A 

7 抽象基类是指( )
嵌套类
派生类
含有纯虚函数
多继承类
【解析】

抽象类(abstract base class,ABC)就是类里定义了纯虚成员函数的类。纯虚函数只提供了接口,并没有具体实现。

抽象类不能被实例化(不能创建对象),通常是作为基类供子类继承,子类中重写虚函数,实现具体的接口。

正确答案: C

8 给出以下定义,
const char *p1 = “hello”;
char *const p2 = “world”;

下列哪些操作是合法的?

p1++;

p1[2] = ‘w’;
p2[2] = ‘l’;
p2++;
【解析】
p1是指向字符常量的指针,p1本身不是常量,所以p1++合法,A正确。
p2本身是指针常量,可以指向非常量的字符。但是"hello"这样声明的字符串是存储在只读存储区的,不可修改,所以B,C,D都错误。

9 关于IP地址下列说法错误的是?
IP地址采用分层结构,它由网络号与主机号两部分组成
根据不同的取值范围IP地址可以分为五类
202.112.139.140属于B类地址
每个C类网络最多包含254台主机
IPv6采用128位地址长度
私有地址只是ABC类地址的一部分
【解析】
最初设计互联网络时,为了便于寻址以及层次化构造网络,IP地址采用分层结构,每个IP地址包括两个标识码(ID),即网络ID和主机ID。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机ID与其对应。IP地址根据网络ID的不同分为5种类型,A类地址、B类地址、C类地址、D类地址和E类地址。 
1. A类IP地址 
一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”, 地址范围从1.0.0.0 到126.0.0.0。可用的A类网络有126个,每个网络能容纳1亿多个主机。 
2. B类IP地址 
一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,地址范围从128.0.0.0到191.255.255.255。可用的B类网络有16382个,每个网络能容纳6万多个主机 。 
3. C类IP地址 
一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”。范围从192.0.0.0到223.255.255.255。C类网络可达209万余个。【每个网络能容纳254个主机。 每个C类网络最多包含253台主机(除去全0和全1)】!!!
4. D类地址用于多点广播(Multicast)。 
D类IP地址第一个字节以“lll0”开始,它是一个专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。 
5. E类IP地址 
以“llll0”开始,为将来使用保留。 
在IP地址3种主要类型里,各保留了3个区域作为私有地址,其地址范围如下: 
A类地址:10.0.0.0~10.255.255.255 
B类地址:172.16.0.0~172.31.255.255 
C类地址:192.168.0.0~192.168.255.255
另外IPv6地址长度为128位,是IETF(互联网工程任务组,Internet Engineering Task Force)设计的用于替代现行版本IP协议(IPv4)的下一代IP协议。
正确答案: C

10 对于二分查找算法下面描述正确的是哪个?
只能用于数组
只能用于链表
只能在已经排序的数据上进行查找
最坏情况下时间复杂度是O(N*logN)
【解析】
错误分析:
B:链表不支持随机访问.
D:最坏情况下时间复杂度是 O(logN).
正确答案: A C

11 用来检查到一台主机的网络层是否连通命令是( )?
PING
TRACERT
TELNET
IPCONFIG
【解析】
ping命令通过发送ICMP数据包检测网络层是否连通
tracert是用来跟踪路由的命令
telnet命令式通过telnet协议和另一主机相联。
ipconfig是查看ip地址信息
正确答案: A

12 类B从类A派生,则类B可以访问类A中的( )成员?
public成员
private成员
protected成员
数据成员
函数成员
【解析】
private: 本类函数和友元函数可以访问。
protected: 本类函数、友元函数和子类函数可以访问。
public: 本类函数、友元函数、子类函数和本类的对象可以访问。
和公有继承、保护继承和私有继承没有关系,保护继承和私有继承影响的是子类的继承关系。
例:私有继承,只能说基类A的public和protected成员到了子类B后,都变为private,B再往下继承时,其子类C是不能访问A的public和protected成员的,但是对于B来说,A的protected和public是可以访问的。

正确答案: A C

13 路由器转发数据包到非直接网段的过程中,依靠下列哪一个选项来寻找下一跳地址( )
帧头
IP报文头部
SSAP子段
DSAP子段
【解析】
正确答案: B

14 IPv6地址占____个字节
4
6
8
16
【解析】
正确答案: D

15 以下说法正确的是:
在并行程序中,当两个并行的线程,在没有任何约束的情况下,访问一个共享变量或者共享对象的一个域,而且至少要有一个操作是写操作,就可能发生数据竞争错误。
原语compare-and-swap(CAS)是实现无锁数据结构的通用原语。
获得内部锁的唯一途径是:进入这个内部锁保护的同步块或方法。
volatile变量具有synchronized的可见性特性,但是不具备原子特性。
减小竞争发生可能性的有效方式是尽可能缩短把持锁的时间。
【解析】
A: 来自Thinking in java:如果你正在写一个变量,它可能接下来将被另一个线程读取,或者正在读取上一个已经被另一个线程写过的变量,那么你必须应用同步,并且,读写线程都必须用相同的监视器锁同步。由此,可以想到,如果多个线程都只读数据,则不会造成竞争错误,因为不会出现读脏数据或者数据不同步问题。
B. 无锁化编程常用方式之一。
C. 当线程企图访问临界资源时,先会查看该临界资源当前是否已被加锁,如果没有被加锁,则对该临界资源加锁,并进入该同步块或方法,加锁后,其它线程也就无法访问该临界资源了。所以,判定获取了一个内部锁的标准为:进入该同步区域。
D. 保证可见性,调用volatile变量时,使用前都会刷新该变量,保证变量的值为最新的。不保证互斥性。
E. 把持锁的时间短了,等待锁的时间也就短了,竞争可能性变小。
【注】

volatile的作用:

1、修饰变量说明这个变量会意想不到地改变,优化器每次用到该变量,都会重新从内存中读取它。

2、进行多线程编程, 多任务环境下各任务间共享的标志应该加volatile。

正确答案: A B C D E 

你可能感兴趣的:(开发,腾讯,笔试,2015,PC客户端)