20221026笔试记录

1、B 

strlen 测量的是字符的实际长度,以'\0' 结束(不包含'\0' )。而sizeof 测量的是字符的分配大小,如果未分配大小,则遇到'\0' 结束(包含'\0' ,也就是strlen测量的长度加1),如果已经分配内存大小,返回的就是分配的内存大小。

2、

class Base {
public:
	Base() {

		cout << "Base 的构造函数 " << endl;
	}

	~Base() {

		cout << "Base 的析构函数 " << endl;
	}
	
};

class son :public Base {
public:
	son() {

		cout << "son 的构造函数 " << endl;
	}

	~son() {

		cout << "son 的析构函数 " << endl;
	}

};

void main() {

	son *p =  new(son);
	delete p;

	system("pause");
	return ;
}

 3、回到函数

什么是回调函数
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。

2,为什么要用回调函数
因为可以把调用者与被调用者分开。调用者不关心谁是被调用者,所有它需知道的,只是存在一个具有某种特定原型、某些限制条件(如返回值为int)的被调用函数。

回调机制包括两部分:服务执行者和服务方式制定者。
a) 服务执行者先制定服务规范;
b) 服务方式制定者然后按照规范制定服务方式;
c) 然后执行者按照这个方式提供服务。

1 回调函数是由开发者按照一定的原型进行定义的函数。
2 回调函数并不由发者直接调用执行。
3 回调函数通常作为参数传递给系统API,由该API来调用。
4 回调函数可能被系统API调用一次,也可能被循环调用多次。

4、因为 || 运算前面符合后面不再计算,提前终止,答案42

void main() {

	int x = 40;

	if (x == 40 || ++x == 41) x++;

	x++;

	cout << x << endl;

	system("pause");
	return ;
}

5、以下多线程对int型变量x的操作,哪几个不需要进行同步(    )

A.x=y;
B.x++;
C.++x;
D.x=1;

A.由于y的值不确定,所以要加锁;

B,C 两个在多线程情况下是必须要加锁的,因为他们是先被读入寄存器,然后再进行+1操作,如果没有加锁,那么可能会出现数据异常;

原子操作,所以不需要加锁

    原子性:指该操作不能再继续划分为更小的操作。

6、

osi参考模型分为哪几层?各层的功能是什么? (baidu.com)

7、animal

class Animal {
public:
	void speak() {
		cout << "animal" << endl;
	}

};

class Dog :public Animal {
public:
	void speak() {
		cout << "dog" << endl;
	}

};

class Cat :public Animal {
public:
	void speak() {
		cout << "cat" << endl;
	}

};

void main() {

	Animal *dog =  new(Dog);

	dog->speak();

	system("pause");
	return ;
}

 8、用以太网形式构成的局域网,其拓扑结构是什么-百度经验 (baidu.com)

9、12344321

void grow(int n) {

	cout << n << endl;

	if (n < 4)  grow(n + 1);

	cout << n << endl;
}

 10、3

void main() {

	int x = 11;

	cout << x++ * 1/3 << endl;

	system("pause");
	return ;
}

 11、c++中判断重载方法的依据是什么

c++中判断重载方法的依据是什么-C#.Net教程-PHP中文网

12、假定MyClass为一个类,则该类的拷贝构造函数的声明语句为( )。

 A.MyClass(MyClass x);B.MyClass(MyClass&x);C.MyClass(&x);D.MvClass(x);

拷贝构造函数也是构造函数,所以函数名字为MyClass,但它只有一个参数,这个参数是本类的对象,即x;而且采用对象的引用的形式,也就是&x。所以本题答案是B) 。

13、已知序列 25, 13,10, 12, 9 是大根堆,在序列尾部插入新元素 18, 将其再调整为大根堆,调整过程中元素之间进行的比较次数是( )。

A.  1   B.  2   C.  4   D.  5

[解析] 对堆插入或删除一个元素,有可能不满足堆的性质,堆被破坏, 需要调整为新堆。

( 1)为原堆,

( 2)为插入 18 后,

(3)比较 10与 18,交换后,

(4)比较 25与 18,不交换,即为调整后的新的大根堆。 因此调整过程中元素之间进行的比较次数为 2。

14、 8

int fun(int n) {

	static int i = 1;
	if (n > 5) {
		return n;
	}
	n = n + i;
	i++;
	return fun(n);

}
void main() {

	cout << fun(2) <<endl;;

	system("pause");
	return ;
}

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值