linux c 嵌入式软件工程师面试笔试,嵌入式软件工程师笔试面试指南-C/C++

哈喽,大家好。最近几天,我把去年秋招总结的笔试面试的一些内容,又进行了重新规划分类。详细分成了简历书写,面试技巧,面经总结,笔试面试八股文总结等四个部分。

其中,八股文又分成了C/C++,数据结构与算法分析,Arm体系与架构,Linux驱动开发,操作系统,网络编程,名企笔试真题等七个部分。本次更新,对于部分不合适的内容进行了删减,新增了C++相关内容。

这些内容,会同步更新在github(https://github.com/ZhongYi-LinuxDriverDev/EmbeddedSoftwareEngineerInterview)。点击阅读原文可以直接跳转到github。希望大家能给个star支持下,让我有继续更新下去的动力。

所有内容更新完成后,会将这些内容整合成PDF。由于篇幅有限,本文只给出了问题,并没有给出答案。PDF版本在公众号回复【offer】即可获取。

linux c 嵌入式软件工程师面试笔试,嵌入式软件工程师笔试面试指南-C/C++_第1张图片

C/C++

关键字

C语言宏中"#“和”##"的用法

关键字volatile有什么含意?并举出三个不同的例子?

关键字static的作用是什么?

static全局变量与普通的全局变量有什么区别?

static函数与普通函数有什么区别?

在C语言中,为什么 static变量只初始化一次?

extern”C” 的作用是什么?

const有什么作用?

什么情况下使用const关键字?

strcpy和strlen有什么区别?

new/delete与malloc/free的区别是什么?

strlen("\0") =?sizeof("\0")=?

不使用 sizeof,如何求int占用的字节数?

C语言中 struct与 union的区别是什么?

左值和右值是什么?

什么是短路求值?

++a和a++有什么区别?两者是如何实现的?

内存

C语言中内存分配的方式有几种?

堆与栈有什么区别?

栈在C语言中有什么作用?

C++函数栈空间的最大值是多少?

C语言参数压栈顺序是怎样的?

C++如何处理返回值?

C++中拷贝赋值函数的形参能否进行值传递?

C++的内存管理是怎样的?

什么是内存泄漏?如何判断内存泄漏?

指针

数组指针和指针数组有什么区别?

函数指针和指针函数有什么区别?

数组名和指针的区别与联系是什么?

指针进行强制类型转换后与地址进行加法运算,结果是什么?

常量指针,指向常量的指针,指向常量的常量指针有什么区别?

指针和引用的异同是什么?如何相互转换?

野指针是什么?

C++中的智能指针是什么?

智能指针的内存泄漏如何解决?

预处理

预处理器标识#error的目的是什么?

定义常量谁更好?# define还是 const?

typedef和 define有什么区别?

如何使用 define声明个常数,用以表明1年中有多少秒(忽略闰年问题)

# include< filename. h>和# nclude" filename. h"有什么区别

头文件的作用有哪些?

在头文件中定义静态变量是否可行,为什么?

写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的一个?

不使用流程控制语句,如何打印出1~1000的整数?

变量

全局变量和静态变量的区别是什么?

全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?

局部变量能否和全局变量重名?

函数

请写个函数在main函数执行前先运行

为什么析构函数必须是虚函数?

为什么C++默认的析构函数不是虚函数?

C++中析构函数的作用?

静态函数和虚函数的区别?

重载和覆盖有什么区别?

虚函数和多态有什么区别?

虚函数表具体是怎样实现运行时多态的?

C语言是怎么进行函数调用的?

请你说一说select

请你说说fork,wait,exec函数

数组

以下表达式表示什么意思?*(a[1]+1)

*(&a[1][1])

(*(a+1))[1]

数组下标可以为负数吗?

位操作

如何求解整型数的二进制表示中1的个数?

求二进制中0的个数

交换两个变量的值,不使用第三个变量。即a=3,b=5,交换之后a=5,b=3;

给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变。

容器和算法

map和set有什么区别?分别又是怎么实现的?

STL的allocator有什么作用?

STL迭代器如何删除元素?

STL中MAP数据如何存放的?

STL中map与unordered_map有什么区别?

vector和list的区别是什么?

STL中迭代器有什么作用?有指针为何还要迭代器?

epoll的原理是什么?

STL中MAP数据如何存放的?

STL里resize和reserve的区别是什么?

类和数据抽象

C++中类成员的访问权限?

C++中struct和class的区别是什么?

C++类内可以定义引用数据成员吗?

面向对象与泛型编程是什么?

请你回答一下什么是右值引用,跟左值又有什么区别?

析构函数可以为 virtual 型,构造函数则不能,为什么?

C++中空类默认产生哪些类成员函数?

面向对象

面向对象和面向过程有什么区别?

面向对象的基本特征有哪些?

什么是深拷贝?什么是浅拷贝?

什么是友元?

拷贝构造函数与赋值运算符的区别?

基类的构造函数/析构函数是否能被派生类继承?

初始化列表和构造函数初始化的区别?

C++中有那些情况只能用初始化列表,而不能用赋值?

类的成员变量的初始化顺序是什么?

当一个类为另一个类的成员变量时,如何对其进行初始化?

C++能设计实现一个不能被继承的类吗?

构造函数没有返回值,那么如何得知对象是否构造成功?

Public继承、protected继承、private继承的区别?

C++提供默认参数的函数吗?

融合解决多重继承中存在的钻石问题?

虚函数

什么是虚函数?

C++如何实现多态?

纯虚函数指的是什么?

什么函数不能声明为虚函数?

C++中如何阻止一个类被实例化?

结语

这些内容都是我熬夜整理的,最近还在修改大论文,事情也挺多的。大家不要忘了点击「赞」和「在看」支持下,也算没有白白熬夜,对得起我掉的一根根头发。

你可能感兴趣的:(linux,c,嵌入式软件工程师面试笔试)