众所周知,时下嵌入式工程师可是一个热门岗位。但是我们要想找到一份高薪的嵌入式方面的工作也不是那么容易的,尤其是现在一些企业的面试题总是那么千奇百怪。面对这一问题,华清远见为大家汇总了一些嵌入式C/C++方面的专项测试题,希望可以对大家有所帮助。温馨提示,试题尾部有参考答案哦!
1、在linux+gcc下,关于以下代码,不正确的是____。
std::string& test_str()
{
std::string str="test";
return str;
}
int main()
{
std::string& str_ref=test_str();
std::cout<
return 0;
}
A 编译警告
B 返回局部变量的引用,运行时出现未知错误
C 正常编译且运行
D 把代码里的&都去掉之后,程序可以正常运行
2、假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为____。
A 0
B 4
C 8
D 6
3、下面哪一个是sort的template的正确写法
A void sort(class A first,class A last,class B pred)
B void template(class A,class B)sort(A first,A last,B pred)
C template
D template
4、下面说法正确的是
A C++已有的任何运算符都可以重载
B const对象只能调用const类型成员函数
C 构造函数和析构函数都可以是虚函数
D 函数重载返回值类型必须相同
5、若有下面的函数调用:
? fun(a+b,?3,?max(n-1,?b));?其中实参的个数是____。
A 3
B 4
C 5
D 6
6、两个等价线程并发的执行下列程序,a为全局变量,初始为0,假设printf、++、--操作都是原子性的,则输出肯定不是哪个?
void foo() {
if(a <= 0) {
a++;
}
else {
a--;
}
printf("%d", a);
}
A 01
B 10
C 12
D 22
7、在32位操作系统gcc编译器环境下,下面程序的运行结果为____。
#include
using namespace std;
class A {
public:
int b;
char c;
virtual void print() {
cout << "this is father’s fuction! " << endl;
}
};
class B: A {
public:
virtual void print() {
cout << "this is children’s fuction! " << endl;
}
};
int main(int argc, char * argv[]) {
cout << sizeof(A) << "" << sizeof(B) << endl;
return 0;
}
A 8 8
B 9 9
C 12 12
D 12 16
8、重载(overload)和重写(override)的区别?
A 重载:是指允许存在多个同名函数,而这些函数的参数表不同
B 重载:是指子类重新定义复类虚函数的方法
C 重写:是指子类重新定义复类虚函数的方法
D 重写:是指允许存在多个同名函数,而这些函数的参数表不同
参考答案:1~8:C A D B A A C AC