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.题都没看懂。。不贴了
给出在线测试的地址