CVTE面试凉经
-
楼主面试的是CVTE C++软件开发工程师岗位
-
第一次技术面试
- 1.线程池的大概情况
- 2.linux的select poll和epoll的情况
- 3.虚函数表的指针,存放在什么位置?头部还是尾部
- 4.为什么构造函数不能是虚函数
- 5.为什么构造函数里面不能调用虚函数
- 6.智能指针的概念
- 7.如果析构函数不是虚函数,就是会出现内存泄露?
- 8.进程间通信的媒介有哪几个
- 9.进程间如何自主分配,比如两个进程如何共用一个:muex,
- 10.vector的实现机理;
- 最后也提到了我的博客,称赞了一下我写的一篇文章
-
第二次技术面
- 是等了好久的电话面试
-
1.请说一下暑期实习为什么没拿到offer,是哪些原因?
- 附:我是暑期去CVTE实习过的,没有拿到offer
-
2.你在那边如何解决问题的?
- 拿了一个具体的问题分析,一步一步抽丝剥茧,最后运用的是:注释代码和printf到串口上面,查看那些函数运行
- 你清楚GDB调试吗?
-
3.你对设计模式了解吗?
- 扯了一下单例模式,以及其他的巴拉巴拉。。。
-
4.针对单例模式问了一下问题
- d为单例模式的动态链接库,如果a,b,c三个进程,同时访问,会如何,是否会产生多个对象?为什么?如何访问?
-
说到了在a,b,c三个进程之间开创一个共享内存
-
如何管理共享内存呢?
- 通过互斥锁
- 通过信号量
-
如何管理共享内存呢?
- 单例模式的原理?
-
5.QQ可以打开多个,微信只能打开一个,为什么微信只能打开一个?
-
首先打开微信是打开一个进程,那为什么后面打开微信进程的时候失败?
- 主要是使用共享互斥锁。当创建一个进程的时候,互享互斥锁会检查是否已经创建,若没有,则打开成功。若已经有了,则不可以创建。
-
首先打开微信是打开一个进程,那为什么后面打开微信进程的时候失败?
-
6.项目中使用的是TCP通信,为什么不使用HTTP通信呢?
- 没学过HTTP这玩意,巴拉巴拉,然后扯到了TCP和UDP的优缺点,以及我为什么使用TCP原因
- 7.假如有十万个TCP连接,可以吗?为什么
- 8.请问Qstring和string的区别(关于QT的),他们的实现原理是否相同?
- 你还有什么想问的吗?
-
总结
-
一面主要考得是你知识的广度,可能知识点会跳来跳去,但这个一个不会不要紧,只要别一个也不会就行。
- 主要看看你的知识涉及到哪些地方,学过哪些,看过哪些书,看过那些博客
-
二面主要考察深度,挖的是真的深,刚开始回答的都很顺利,到后面问着问着就只能靠语感回答了
-
通过上面的问题,大概可以了解到二面问的是什么?
- C/C++语言方面的性质已经不问了,因为没什么好问的了,就那点
- 数据结构方面这次也没有涉及到,可能也是因为一面问过了,就不在询问了
- 下面是重点!
-
进程线程
- 通信的方式,如何管理进程线程
-
通过进程线程联合单例模式一起询问
- 单问一个知识点问不出来什么,就几个知识点一起来
-
还有网络通信方面
- TCP,UDP,HTTP,问了一下语言方面的知识,也结合实际情况问了一下
-
IO口多路复用
- 主要是poll,epoll和select这三个
- 主要就这几大知识点,但每一个知识点都会不断地往下挖,挖的很深很深
-
通过上面的问题,大概可以了解到二面问的是什么?
- 上面所说的那些问题,只是举了面试中一部分问题作为例子。
- 附:楼主是暑假期间去CVTE实习的,然后最后没有留下来,秋招又去跑的
-
最后第二天打电话给我二面反馈
- 对QT容器的了解不够
- 对协议的了解不够,比如HTTP
- 对进程的了解有些偏颇
-
一面主要考得是你知识的广度,可能知识点会跳来跳去,但这个一个不会不要紧,只要别一个也不会就行。