CVTE 面试题
面试者:徐欢
一面:
1. 指针和引用区别,new 和 delete 区别
2. 构造函数或析构函数能不能为虚函数?他们内部能不能调虚函数?
3. 虚函数表在什么时候生成,构造函数前,中还是后?
4. 虚表属于类还是对象,虚表存在哪里?
1.虚函数表是全局共享的元素,即全局仅有一个.
2.虚函数表类似一个数组,类对象中存储 vptr 指针,指向虚函数表.即虚函数表不是函数,不是
程序代码,不肯能存储在代码段.
3.虚函数表存储虚函数的地址,即虚函数表的元素是指向类成员函数的指针,而类中虚函数的
个数在编译时期可以确定,即虚函数表的大小可以确定,即大小是在编译时期确定的,不必动
态分配内存空间存储虚函数表,所以不再堆中.
根据以上特征,虚函数表类似于类中静态成员变量.静态成员变量也是全局共享,大小确定.
所以我推测虚函数表和静态成员变量一样,存放在全局数据区.
c/c++程序所占用的内存一共分为五种:
栈区,堆区,程序代码区,全局数据区(静态区),文字常量区.
显而易见,虚函数表存放在全局数据区.
在 gcc 编译器的实现中虚函数表 vtable 存放在可执行文件的只读数据段.rodata 中。
5. shared_ptr 对象在内存中的存储?
6. map 的第二个模版参数传一个类,这个类没有默认的构造函数会不会出错?如果出错,
是
什么错误?
答:编译错误。当调用 operator[ ]时,如果 map 中没有这个 key 时,他会它会自动构造一
个 pair 元素插进去,构造这个元素时就会调用 value 的默认构造函数,如果没有就会在编译
时报
构造函数找不到的错误。
7. 多线程怎么实现同步与互斥?
8. tcp 和 udp 区别
9. http 怎么防止粘包问题,如果发送的是比特流,你怎么设计防止粘包?
10. 仿函数和函数指针有什么区别?仿函数能做的事函数指针都能做吗?那反过来呢?
11. 有没有了解过什么 c++11 的新特性或 boost 库的新知识?
12. 有没有了解过开源项目?
13. 代码:合并两个有序链表
二面:全项目,全程在看 github
1. 自我介绍
2. 介绍一下你的项目
3. 介绍一下协程
4. 说一下协程内部怎么切换
5. 你这个服务器性能怎么样?有没有测过?
6. 我说我是用 webbench 简单测了一下,可能不太准,他说那你有没有了解过 webbench,
讲
一下他怎么实现的?
7. 画一下服务器的执行流程图
8. 协程还能优化吗?
9. 我说他已经很优化了,他说那你现在的性能瓶颈是什么
10. 有没有用过什么检查性能瓶颈的工具
11. 有没有了解过服务器集群
12. 职业规划
一面 (C/C++研发) 面试者:汶阳
1.私有继承是 is-a 还是 has-a 关系?
2.了解迭代器失效吗?如何解决迭代器失效?
3.了解智能指针吗?谈谈你对 sharedptr 的认识?
4.STL 中 map[]与 find 的区别是什么?哪个速度更快?
5.vector 如何实现扩容,它在删除元素时是否释放空间?
6.仿函数与函数指针的区别,二者是否可用相互转换?
7.谈谈 TCP 的粘包问题,顺便说说你的 HTTP 项目是如何解决粘包问题的?
8.谈谈你对 TCP 和 UDP 的区别与认识?
9.如何理解 NAT 技术,说一下你熟悉的路由算法?
10.你平时是如何学习的?
11.你有什么问题要问我吗?
面试者:段黎明
1.怎么计算一个类到底实例化了多少对象?
2.如果还有一个派生类继承了这个类,那么如何计算这两个类,各自实例化了多少对象?
3.你了解联合体和结构体吗?
4.如何测试一个机器是大端还是小端?
5.你了解队列和栈吗?
6.怎么用两个栈实现一个队列。
7.你使用过模版吗?
8.写一个比较两个数大小的模板函数。
9.你使用过容器吗?
09.判断两个链表是否相交。
10.Vector 和数组的区别。
11.你在学校里做的最满意的一个项目是什么?简述一下这个项目。
分别问了 c,c++,linux,操作系统,人生
抓着项目往死里问,自我介绍都省了,知道还得聊为什么要做项目的心路历程,还好楼主
狼人
杀 66 的
为什么做?怎么做的?怎么测试的?结果呢?
还有什么项目吗?
与别人合作过什么项目吗?
自己平时怎么学习的看过什么书
内存分配
static
new/malloc
怎么实现多态,继承,多继承,虚表,虚表内存什么的
全局变量,局部变量,能不能命名相同
指针,数组
指针和数组的内存分配
引用,指针
进程,线程
linux 开机过程
嵌入式
vim 用过吗?怎么写,怎么跳到第一行,怎么查找匹配字符
静态区,栈区,堆区
通信方式
自己用过什么通信方式?主要用 socket
3 个简单的编程思路,说不清就一直问
谈谈对技术支持工程师的理解
介绍工作内容,问是否可以接受
聊聊自己的大学生活,我就开始与面试官讲段子了,然后各种吹逼。
时间关系到此为止,有什么想问的吗?
我要工作,现在主要看什么?面试官一边说,我一边讲段子。。。
结束。。。48 分钟。。。。还有好多的忘了。。。
一面
1.自我介绍
2.STL 中的 list 和 vector 的区别,map 的使用场景,在有几个连续的节点后,要增加几百个
的时
候,选哪个?
3.4 个智能指针,C++11 中是怎么回事
4.C++虚函数机制。
5.说下 Linux 的命令,我说到 gdb 的时候,他问了 gdb 调试的下断点,以及后面的各种调试
命令
6.Linux 中的进程间通信,我全说了,他问了共享内存的优缺点
7.我在简历上写了理解路由器的工作原理,他让我把路由器的工作原理,三次握手,四次挥
手
讲一下,我把路由器的工作原理讲完,他就跳过了,后面的忘了问
8.socket 编程服务端客户端的调用那些函数。
9.写个代码,合并两个有序链表,递归,普通。
10.职业规划
二面
1.自我介绍
2.挑一个你熟悉的项目讲一个
3.我讲的空间配置器,他说的就是在 Java 里面油垃圾回收机制,要去了解这个语言的思想
4.怎么实现一个高并发的服务器,epoll 中是怎么实现链接无上限的?
5.说一下怎么实现一个服务器监控系统。?。
6.你有什么要问我的吗。。
后台开发
1.简单介绍一下自己
2.介绍一下你最满意的项目,然后问了问细节
3.多态 虚拟继承 虚表 之类的
4.模板 写自己实现的模板
5.写代码 strcpy 不能修改源字符串
6.给代码判断输出
7.链表判断环之类
8.还有啥问题
1.代码:两个矩阵的外接矩阵,单链表逆置,最优字符串逆置
2 我题用 vector 写的,问 vector 怎么释放内存
3 问容器有哪些
4 问动态内存管理,两个区别
5 指针和引用,引用过程中需要注意的地方
6 进程与线程区别
7 同步机制实现方法
8 你要问我什么问题
cvte 1 面
1 大学都学了什么,写过多次时间代码?
2 选一个你简历上熟悉的项目讲讲?
3 你这个 http 服务器的流程给我说下?
4 点击一个 url 会发生什么大体说下?
5 tcp/udp 区别?
6 tcp 用于什么场景 ,udp 用于什么场景?
7 tcp 的滑动窗口算法 讲一下?
8 Reactor 模式 你了解过吗 说下?
9 写程序的时候什么场景用多进程,什么场景下使用多线程?
10 算法题 top K 问题,找第 K 大的节点,并在数组中输出这个节点的位置?
11 sort 函数用的是什么排序?
12 有没有看过 stl 源码?
cvte 2 面
1 自我介绍
2 都学了什么编程语言,用了多久?
2 说下多态?
3 在 Linux 下 ,当前目录下有个叫 ABC 的子目录,该目录下有*.cpp *.c 文件 ,请写个指
令找
出该目录下含有 helloworld 的文件输出出来?
4 我现在写好了一个驱动,怎么加载到内核中?
5 请设计一个类,该类有个成员函数,该函数可以输出该类所有实例化对象的个数?
6 写一个代码 :hello ni hao 转 hao ni hello 中间可能有多个空格?
7 讲下三年内的计划?
8 给了个 a[3][3]的二维数组
说说 a 、*a+1、**a 的地址 假设 a 的地址为 0x1000
cvte 一面
1.今天去面试官先让我写一个程序,两个矩形的外接矩形(自定义一个矩形数据结构);
2.然后问我内存申请的机制,malloc 和 new 的区别;
3.进程线程区别,创建方式分别是;
4.STL 的容器有哪些,list 与 vector 应用场景分别是;
5.用 shell 编程做过什么,查找文件命令;
比特科技
© 彩程设计
不想打字?试试
6.如何判断链表是否带环;
7.TCP 的握手与挥手,为什么进行四次挥手;
8.是否还有问题。
CVTE 一面
1.自我介绍
2.讲一下你最擅长的一个项目,内存池各种问
3.面向对象基本特征
4.怎么解决菱形继承二义性
5.讲一下多态
6.重载 C++的命名约定是怎么样的,和 C 语言区别
7.虚继承怎么实现的,虚表中怎么存储的
8.讲一下进程与线程区别
9.进程地址空间中堆与栈的区别
10.堆与栈申请会互相重叠么,标准是什么,它们在同一处么
11.两个进程间的线程是怎么通信的
12.说一下 OSI 参考模型
13.一个数据包发送过程最少封装几层,过程
14.字符串翻转
CVTE 二面 【比特科技制作】【18629043527】
1.一个类某一时刻统计对象的个数
2.继承以后派生类统计对象个数,父类静态成员也改变怎么解决
3.深拷贝浅拷贝什么场景下使用(两个线程同时写出现什么情况)
4.strcpy 实现在 vim 上写出来,用 gdb 调试
5.strcpy 注意哪些,源码怎么实现的(我不知道,给我讲是地址冲突)
6.熟悉哪些容器,vector 怎么扩容的
7.释放 vector 一段空间,怎么解决(不知道,给我讲用 SWAP 函数)
8.union 与 struct 大小求取
9.写一个宏求数组大小
10.向一个 char* p=&c 中拷贝一段字符串,打印可以打印出来么?会发出警告还是错误(不确
定,给我讲可以打印出来,让别的程序崩溃)
11.和我聊天
12.写一个邮箱验证的测试用例一分钟之内
13.和我聊天
14.写一个 swap 函数,哪些情景下写的这个函数不可用