一面 大概15-17分钟
1、自我介绍,介绍项目
2、一个项目里QT编程SDK二次开发的框架和流程。
答了功能和流程,感觉回答的不太对头。
3、开发里是否使用了多线程,线程间的数据传输是怎么实现的?
用了一点,实现功能后就销毁了,没有涉及线程间的数据传输。
4、QT开发里C++的代码量多少?
主界面大概一千多行,不多。
5、平时用什么语言?
写应用程序和开发使用C++,个人方向课题使用matlab。
以下是八股
6、C++的内存泄露一般是怎么回事?怎么避免?
内存泄露一般是因为分配内存后没有释放,或者多次释放(现场忘了基类析构函数没有写成虚函数这一条)。避免:只会回答检查代码保证内存合理释放,和使用内存泄露检查工具。
7、线程同步是怎么实现的?(简历里不知死活地写了会基础的Linux多线程编程,面试官说因为这个问的)
通过阻塞的方式。
8、阻塞是怎么实现的?(因为我不太确定就问这个,很犹豫,所以面试官又问了一遍)
现场只回答了通过阻塞函数去实现,忘了互斥锁、条件变量和信号量,g
阻塞函数是什么?
join阻塞函数。
9、线程间的通信方式有哪些?
只回答了共享内存。(进程间的看八股知道,线程确实只知道共享内存)
10、有A、B、C三个线程,同时创建执行,怎么实现顺序执行?
答:在一个线程运行时,阻塞其他线程。(应该是想要我回答用互斥锁实现)
11、A、B、C三个线程,怎么循环打印?使用join函数的话,执行完一个就释放掉了。
太菜了,没答出来。(其实还是引导我回答互斥锁,奈何人不行)现场真就把互斥锁忘光了。
12、TCP和UDP的区别
在连接上一对一等,可靠性上,数据保证上,使用场景都有区别。(简略版)
13、TCP是怎么保证可靠的?
数据包校验,重复数据包丢失,重传。其他的重排序、流量控制没说出来。
以下是编程
14、二叉树的层序遍历是怎么实现的?
答:使用队列进行实现,将每一层的结点加入队列,然后得到队列的大小进行遍历,遍历中将下一层的节点加入队列,直到遍历结束,再使用下一次节点的队列进行遍历,这样一次进行层次遍历。(说得比较乱)
15、链表的排序(可以在聊天框写伪代码)。
还是只讲了思路(笨办法):取出结点来,用外部空间数组的方式进行排序。(这样就不管是什么排序了,算是投机取巧)
反问:
16、如果进去了之后,这个岗位是做什么,针对什么设备和什么功能方向?
具体要看进去后分配什么部门和职位,有路由器,有通信等等很多。
17、大概有几面(其实不该问)?
一般两三面。
18、面试的部门岗位要学习什么比较细化的知识吗?
Linux开发、计算机通信、嵌入式开发等等,主要就计算机那些东西。
应该就这么多,面官挺好的,不算严肃也不算很放松,从多线程那里就能看出来实际上一直在从浅到深地引导。问题都比较基础,问的那个项目大概因为感觉没什么难点,也没有深挖。
还是自己太菜了,那么基础的问题现场没有答出来,总共也就16分钟的样子,可能对我不太感兴趣,感觉g了。
最后反问的环节感觉面试官是有点不耐烦的,建议在反问环节,事先准备好有针对性的问题,不要问我这种谁都问没有价值的问题,或者干脆就别问。
#tplink联洲##面试##牛客解忧铺##如何判断面试是否凉了##tplink联洲面试#