C++面试题

C++音视频开发 面试1

技能要求:Socket,MFC,Windows

岗位职责:
1、参与需求分析、模块开发等相关工作;
2、在windows平台下进行C/C++应用程序设计、开发、测试;
3、参与软件系统或模块的联调,协助测试人员进行软件测试,修复BUG;
4、参与编写相关技术文档。
任职要求:
(1)统招本科及以上毕业,计算机相关专业毕业,3年以上C++研发工作经验;
(2)熟悉Windows操作系统,精通C/C++、面向对象软件设计,熟悉多线程控制及MFC界面编程等;
(3)有大型C/C++服务器研发经验优先,熟悉TCP/IP协议;
(4)具备通信基础知识、有音视频系统相关开发经验优先;
(5)具有良好的编程习惯,积极沟通反馈,善于团队协作。

C++ 笔试题

1、MFC指的什么?

2、SendMessage和PostMessage区别?

3、MFC的对话框的种类,各自怎么使用?及相关函数

4、自定义一个Windows消息的发送与响应,有哪些步骤?

5、在MFC窗口中制作一个逃跑按钮(鼠标永远捕捉不到),该如何实现?

6、MFC中文档视图结构中都需要哪些类?

7、音频信号压缩标准的编码主要有哪些?

aac MP3 ape flac

8、经采样、编码但未压缩的语音信号(对应G.711编码)是什么数据?

9、常见的数字音频编码文件格式有哪些,并简述其特点。

10、如何从H264码流中获取视频的分辨率大小?

11、H264码流中I帧,P帧,B帧的区别是什么?

12、回答下面的问题。

(1)、引用与指针的区别是什么?

(2)、构造函数和析构函数是否可以被重载,为什么?

13、以下为 WindowsNT下的32位C++程序,请计算 sizeof的值
vold Func( char str[1001)
SIzeof( str)=?
dkp= malloc( 100)
sizeof( p)=?

14、编写 strcat函数
已知 strcat函数的原型是char* strcat(char* strDest,const char* strSrc)
其中 strDest是目的字符串, strss是源字符串。
不调用C++/C的字符串库函数,请编写函数 strcat

15、写一个函数找出一个整数数组中,第二大的数。

面试

1、对MFC熟悉么?写过复杂的界面没有?还有文档视图使用的多不?

2、使用过哪些VC++中的线程同步?

3、VC++中网络模型熟悉不?比如说完成端口、重叠IO

C++ 技术面试2

1、模板的主要用途和实现机理是什么?

2、STL vector是怎么实现的,内部原理是什么?

3、你觉得你是一个什么样的人?

(1)、对技术钻研比较深入,不太在于工资,对技术很狂热。

(2)、做工资就是看工资,不在乎使用什么技术,只要赚钱就行。

4、你的未来职业规划是什么?

5、Modbus协议的原理和内部机制、分类等

6、TCP和UDP的区别?

7、Boost库熟悉哪些?

8、C++11熟悉么?

auto、lambda表达式,

右值引用熟悉么?完美转发熟悉么?

9、STL标准库熟悉么?熟悉哪些容器和算法?

10、多线程熟悉么?多线程一般需要注意哪些问题?你使用到哪些锁?mutex、读写锁,unique_lock用过没?

11、进程间通信使用过哪一些?

信号量、共享内存、油槽

12、对QT、MFC熟悉么?

C++面试3

1、WebSocket和Socket有什么区别?

2、对高并发熟悉么?你们做的TCP Server并发量高么?

3、你最近的一份工作中遇到的一个难点和问题是什么?你是怎么解决的?

4、你在你们项目中负责什么?担任什么角色?

5、Boost库中为什么大量使用hpp文件?基于什么考虑?

Boost库的头文件与我们平常所用的头文件(*.h)或者C++标准库头文件(没有后缀名)不同,它是把C++类的声明和实现放在了一个叫做.hpp文件中。之所以这么做,一是与普通C头文件区分开,还有一个重要的原因是使Boost库不需要预先编译,可以直接引入程序员的工程即可编译链接,方便库的使用。最后有一个原因就是C++编译器的限制,许多编译器还不支持C++标准提出的模板分离编译模式(export关键字),而Boost库大量使用了模板,为了保持与各个编译器的兼容,也不得不采用这种.hpp的头文件形式。

6、模板的实现可以写在.h文件中吗?

7、C++模板类代码只能写在头文件?

这个问题,实际上我几年前就遇到了。最近写个模板类玩的时候,再次遇到。

当我非常仔细的将定义和实现分开,在头文件中保留了最少的依赖后,一切就绪.cpp单独编过。但是当使用的时候,就会报告所有的函数调用都没有实现。按常规.h/.cpp而言这是不可能的。但是模板类就是这么独特。简单说说他的原因,也备自己将来遗忘:

从语法角度而言,是没有强制要求说模板代码的声明和实现不可以分开。那么当分离的声明和实现写好后,单独编译.cpp是可以通过的,但是生成的.o文件却非常小,只有一个原因:确实没有任何实现代码!————不知道用什么类型参数套用模板。

因为模板类需要在使用到的地方利用声明模板的typename或者class参数的时候,才会即时生成代码。那么当我把模板声明和实现分开的时候,这个即时过程因为编译器只能通过代码include“看到”头文件而找不到模板实现代码,所以会产生链接问题。这也是为什么几乎都会建议模板类和声明和实现都写在头文件。

如果刚接触c/c++编写的朋友可能还不是很明白。编译器面对巨量代码的时候,也是以一个一个的.cpp/.c文件作为基本单元,根据代码的include包含找到声明,翻译代码产生.o文件。注意他们每个cpp/c文件都是相互独立完成自己工作的,对于缺少的部分,如果妥善声明,会留待链接过程的时候产生引用关系。 那么刚才说的模板类实现代码,编译它的时候因为不知道套用什么参数,实际上没有任何有用的内容存在于.o文件当中。而在使用模板类的地方指定了类型参数,编译器这才开始根据模板代码产生有用的.o编码,可是这些内容放在了使用模板的代码产生的.o文件当中。如果编使用模板代码的时候,通过include包含“看不到”模板的实现代码,这些所有的缺失,到链接阶段就无法完成。

所以最后的结论是:请老老实实把模板的实现和声明都写在头文件吧。如果你很有想法有个性,可以坚持,然后试试#include “xxxx.cpp” 这样屌炸的代码。

Qt C++面试4

1、谈谈Qt的信号-槽的实现机理

信号-槽是一种对象之间的通信机制,是Qt在标准C++之外,使用元对象编译器(MOC)实现的语法糖

2、对23种常见的设计模式熟悉哪些?

观察者模式、单例模式、工厂模式、状态模式

3、Boost库中的Singal2信号-槽和Qt中的信号-槽有什么区别?

4、Qt中多线程中槽函数是怎么调用的,调用的时机是什么?

Qt中 QThread 实现线程有几种方式?

5、在信号-槽中是怎么传递自定义结构体的?

QT信号槽收发自定义类/自定义结构体的2种方法

想要发射信号时,携带自定义的class或者struct,必须要做一下处理,否则编译时不会报错,但运行时会出错。

假设我们自定义了一个结构体:

typedef struct
{
...//
...//
}Frame7E;
如果想要这么用:

Frame7E frame;
...//填充frame
emit sendFrame(frame);
那么必须使用以下两种方法之一。

方法1:使用宏:Q_DECLARE_METATYPE

该方法的原理是使得QVariant类支持我们自定义的类型,而QT的信号槽是支持发射QVariant类型数据的,然后我们可以用QVariant封装这个自定义类/结构,然后emit 出去QVariant类型的变量。

include <qmetatype.h>

//发射端
Frame7E frame;
...//填充frame
QVariant var;
var.setValue(frame); // copy s into the variant
emit sendFrame(var);//发QVariant类型的信号

接收端
// retrieve the value
Frame7E s2 = var.value<Frame7E>();//QVariant 转换为 Frame7E
方法2:使用qRegisterMetaType函数使得QT的信号槽支持自定义类型

参考:https://blog.csdn.net/xbnlkdbxl/article/details/56842565

include <QMetaType>

//注册自定义类型,使QT的信号槽支持我们的类型
qRegisterMetaType<Frame7E>("Frame7E");//参数无所谓,建议带上同名字符串参数
注册完之后,就可以正常使用信号槽了。

需要注意以下几点:

1、注册位置:在第一次使用此类链接跨线程的signal/slot之前,一般在当前类的构造函数中进行注册;
2、注册方法:在当前类的顶部包含:#include <QMetaType>,构造函数中加入代码:qRegisterMetaType<MyClass>("Myclass");
3、Myclass的引用类型需单独注册:qRegisterMetaType<MyClass>("Myclass&");

8、Windows进程间通信的方式有哪些?

9、WebSocket和Socket有什么区别?

10、谈谈Qt的DBus

C++面试5

1、STL vector做大量push_back操作时会出现什么问题?

2、boost库 指针的原理,怎么做到动态分配内存不delete?

3、模板你在项目中使用的多吗?

C++面试6

1、派生类怎么调用基类的虚函数版本?

C++ primer 这本书上有这么两句话“派生类虚函数调用基类版本时,必须显式使用作用域操作符。如果派生类函数忽略了这样做,则函数调用会在运行时确定并且将是一个自身调用,从而导致无穷递归。”

也就是说:

当你实现派生类B的虚函数B::foo()时,如果函数体内需要调用基类的虚函数版本时,需要显示使用基类A的作用域操作符A::foo(),否则foo()就会在派生类作用域调用派生类版本的虚函数,这样会导致无穷递归。

就是自己在调用自己,没有指明调用的是基类的虚函数,自动认为是调用派生类的虚函数,然后就再次调用了,一直进行下去了。

struct A
{
virtual void foo(void) { }
}
struct B: public A
{
void foo(void)
{
    foo(); // 递归调用自己,即 B::foo()
    A::foo(); // 明确告诉编译器,调用的是 A::foo(), 而不是自己
}
}

2、STL map:erase删除元素之后迭代器失效的问题

当删除map迭代器中的某个元素时,会出现迭代器失效,该如何安全的解决处理?

3、智能指针了解么?

shared_ptr、unique_ptr、weak_ptr、scope_ptr有什么区别

4、面向对象:虚函数和纯虚函数有什么区别?

5、如何保证访问STL容器比如vector、map、set线程安全?读写前后加锁处理

6、单例模式

指针: 会出现多线程访问的new多个对象的问题

static 成员变量:所有类都使用同一个对象

7、你目前这份工作解决的最大难题是什么,谈谈你是怎么解决的?

C++面试7

1、二级指针 指针的指针一般用来做什么?

2、动态数组使用C语言怎么实现?

3、对Linux熟悉吗,比如常见的命令、发行版?chmod命令是用来干什么的?

4、进程和线程有什么区别?线程间的数据可以共享么?

5、TCP和UDP的有什么区别?

TCP服务端、客户端的实现流程一般是什么样的?

UDP需要建立连接么?

6、信号量一般怎么使用,熟悉么?

7、C语言或者C++中static关键字的作用?

1. 修饰普通变量,修改变量的存储区域和生命周期,使变量存储在静态区,在 main 函数运行前就分配了空间,如果有初始值就用初始值初始化它,如果没有初始值系统用默认值初始化它。
2. 修饰普通函数,表明函数的作用范围,仅在定义该函数的文件内才能使用。在多人开发项目时,为了防止与他人命名空间里的函数重名,可以将函数定位为 static。
3. 修饰成员变量,修饰成员变量使所有的对象只保存一个该变量,而且不需要生成对象就可以访问该成员。
4. 修饰成员函数,修饰成员函数使得不需要生成对象就可以访问该函数,但是在 static 函数内不能访问非静态成员。

8、protobuf协议有使用过么?

9、xml熟悉么?xpath是什么?

10、怎么让一个类只有一个唯一对象?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容