相信很多人和我一样,虽然经常用qt做些东西,但其实对qt理解并不是很深,尤其在岗位有相关需要的时候也会遇到很多坑。感觉网上也比较少,所以根据个人的面试经验,总结了一些面试qt的问题。答案为我自己的理解总结,有问题还请大佬指出。
1.为什么要用qt来做界面
Qt的跨平台性很强,比如同样一套代码写好pro文件可以在windows/linux/Android等直接编译。
2.信号槽机制
在事件的处理方面,信号槽相比回调函数,具有类型安全、松耦合、任意参数的优势,但执行效率会有一点损失。
3.槽连接方式
Direction、queued、blockingqueued、unique、auto
4.qt多线程
两种基本方式,一种是QObject继承,将对象MoveToThread&QThread),另一种是QThread继承,并重写run函数。
5.死锁处理
参考操作系统
6.QTL
qt容器,和stl差不多,似乎耗时和内存比stl都更少一点。
7.qt如何显示图片
QLabel
8.show)和exec)的区别
show显示非模态窗口(不影响用户对其他窗口操作),exec显示模态窗口(阻塞其他窗口,必须在当前窗口操作完成后才能访问其他窗口),open半模态(阻塞其他窗口响应,但不影响后续代码执行)
9.qt容器
常见数据结构理解,例如顺序性,重复性,以及增删改查的基本步骤
lambda表达式
常用在绑定槽和并发处,比较实用,捕获输入返回等
并发,socket,sql等等…
作为开发人员也需要了解,qt都有接口,原理自行学习
代理与场景
这部分我用的不多,不过在一些高级的ui设计中仍是必不可少的部分
设计模式
单例模式,工厂模式,builder模式等等