今天又参加了C++研发岗笔试,都是基础知识,问的比较多,而且杂,分为15个单选题、5个多选题、2个问答题和1个编程题。
选择题只记得部分不太会的:
- 关于enum,默认情况下,编译器设置第一个枚举量为 0,下一个为 1,依次+1。
- STL中的有序容器为map, set。
- STL中list的迭代器类型:Bidirectional iterator(双向迭代器)
list、 set、multiset、map、multimap均使用的是双向迭代器。 - 异步IO使用什么函数实现还是啥来着(记不太清了,本条可以忽略),选项有select,poll,epoll,iocp。
- 线程优先级什么时候可以定义:线程开始之前。
线程优先级有多少个等级?有大佬知道可以私我,网上很多三个等级,七个等级,不太清楚。//设置线程优先级函数 BOOL SetThreadPriority( HANDLE hThread, // handle to the thread int nPriority // thread priority level );
- 64位系统中,在char,char*和int类型变量的结构体中,求其可能所占大小。
问答题:
-
C++中4个类型转换方式及其使用场景。
static_cast
const_cast
dynamic_cast
reinterpret_cast -
子类在调用构造函数和析构函数时,父类调用构造函数和析构函数的时机。
编程题:
给一个函数定义编程,比较简单。
int num(int *p, int num)
*p为参数数组,num则为数组元素的个数,求小于数组平均值元素的个数。
int num(int *p, int num)
{
int n = 0, sum = 0;
double ave = 0;
for(int i = 0; i < num; i++)
sum += p[i];
ave = sum / num;
for(int i = 0; i < num; i++)
{
if(p[i] < ave)
n++;
}
return n;
}