【秋招面试题】C++ 网络编程 面试题库(二)

目录

一、QT 的信号和槽机制的理解

二、QT 的线程的使用

三、QT 样式表和选择器 

四、QT 的 STL 和 C++的 STL 有什么区别?

五、什么是野指针?

六、长连接和短连接

七、客户端掉线和服务端掉线检测

八、哈希表有什么特点 ?

九、子进程继承父进程的哪些资源?

十、为什么选择共享内存?

十一、Linux 下如何调试?

十二、大量客户端连上来,服务器如何处理?

十三、http 协议

十四、大端模式和小端模式

十五、C++静态库和动态库的区别?

十六、双向链表如何实现?

十七、ffmpeg如何实现编码?

十八、ffmpeg如何实现解码?

十九、ffmpeg如何实现转码?

二十、MVC框架


一、QT 的信号和槽机制的理解

Qt 提供了信号和槽机制用于完成界面操作的响应,是完成任意两个 Qt 对象之间的通信机制。 其中,信号会在某个特定情况或动作下被触发,槽是等同于接收并处理信号的函数。
信号槽机制与回调的区别:
1.回调函数的本质是“你想让别人的代码执行你的代码,而别人的代码你又不能动”这种需求下产生的。回调函数是函数指针的一种用法,如果多个类都关注某个类的状态变化,此时需要维护一个列表,以存放多个回调函数的地址。对于每一个被关注的类,都需要做类似的工作,因此这种做法效率低,不灵活。
2.Qt 使用信号与槽机制来解决这个问题,程序员只需要指定一个类含有哪些信号函数、哪些槽函数,Qt 会处理信号函数和槽函数之间的绑定。当信号函数被调用时,Qt 会找到并执 行与其绑定的槽函数。允许一个信号函数和多个槽函数绑定,Qt 会依次找到并执行与一个 信号函数绑定的所有槽函数,这种处理方式更灵活。
3.Qt 信号与槽机制降低了 Qt 对象的耦合度。激发信号的 Qt 对象无须知道是哪个对象的哪 个槽需要接收它发出的信号,它只需要做的是在适当的时间发送适当的信号就可以了,而不 需要知道也不关心它的信号有没有被接收到,更不需要知道哪个对象的哪个槽接收到了信 号。同样地,对象的槽也不知道是哪些信号关联了自己,而一旦关联信号和槽,Qt 就保证 了适合的槽得到了调用。即使关联的对象在运行时被删除。应用程序也不会崩溃。

二、QT 的线程的使用

QThread 类提供了一个与平台无关的管理线程的方法。一个 QThread 对象管理一个线程。QThread 的执 行从 run()函数的执行开始,在 Qt 自带的 QThread 类中,run()函数通过调用 exec()函数来启动事件循环机 制,并且在线程内部处理 Qt 的事件。在 Qt 中建立线程的主要目的就是为了用线程来处理那些耗时的后台操作,从而让主界面能及时响应用户的请求操作。

1. 自定义一个继承 QThread 的类 MyThread,重载 MyThread 中的 run()函数,在 run()函数中写入需 要执行的工作

2. 调用 start()函数来启动线程

三、QT 样式表和选择器 

Qt 样式表是另外一种自定义部件外观的机制,使用样式表可以更方便的设置界面的外观,而不用去子类化 QStyle 类

四、QT 的 STL 和 C++的 STL 有什么区别?

C++ 中容器类是属于标准模板库中的内容 Qt 提供了它自己的一套容器类,这就是说,在 Qt 的应用程序中,我们可以使用标准 C++ STL ,也可以 使用 Qt 的容器类。 Qt 容器类的好处在于,它提供了平台无关的行为,以及隐式数据共享技术。
区别:
1.STL vector 最开始分配的空间是 1 个,而 QVector 开始分配的空间为 4 个(可见 QT 在空间分配上的优化)
2.STL vector 发生超过容量本身的访问,并不一定失败(因为内存可能足够大并存在),而 QVector则发生了断言错误。而显然,第二种处理方式会更好。而第一种可能会造成莫名其妙的错误,尤其是当工程师忘记 vector 的范围,而 vector 本身并不出错的时候。
显然, QT 的容器基于 STL 进行了升级。如果有类似于 QT 的容器之类的容器,优先选择更好的容器;而如果使用 STL ,要知道 STL 这种特点,并避免这类事情发生。

 

五、什么是野指针?

野指针:

指向内存被释放的内存或者没有访问权限的内存的指针

“野指针”的成因主要有 3 种:

1.指针变量没有被初始化。

2.指针 p 被 free 或者 delete 之后,没有置为 NULL。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿力猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值