CVTE提前批c++开发一面
早上约了cvte西安面试,cvte面试总体感觉还是很好的,从环境到面试官,除了自己太菜。
一面全程46分钟,前二十分钟都是在问项目,项目问的还是很细,虽然面试小哥哥对这部分不是很懂,但是整个问项目的过程就是让我把项目给他讲清楚。剩下的问的都是c++的东西,问的不难,但是小哥哥让我深挖的时候我就有点方了。。。。
面试官:手写定义一个空类。
我:默认构造函数,拷贝构造函数,赋值运算符,析构函数(手写。。赋值运算符忘了写返回值,尴尬。。)
面试官:还有吗?
我:没了
面试官:拷贝构造函数的参数(const A&),const可以省略吗?
我:最好不要省略吧,毕竟只是拷贝,不用改动。。
面试官:你见过哪种情况省略的?提示你,标准库里面的,。
我:。。。。。
面试官:&可以省略吗?
我:不可以,因为会不断调用拷贝构造函数巴拉巴拉。。。。。
面试官:A a;A b = a; A c,c = a;分别调用什么函数?
我:默认构造函数,拷贝构造函数,赋值符。。
面试官:A *p = new A 和 A a;有啥区别?
我:(刚开始没反应过来,说了一个是指针一个是直接声明一个对象,后来小哥提醒后)第一个在堆开辟内存,一个在栈上。new的话先开辟空间后调用构造函数。
面试官:p在哪?
我:栈,然后指向堆上的一块内存。
面试官:说说堆和栈吧。。
我:堆手动,栈自动吧啦吧啦吧啦。。。。
面试官:那你画一下堆和栈在内存中的样子?
我:(方)我只知道堆朝着地址增长的方向生长,栈朝着地址减小的方向增长,不怎么会画。。。。
面试官:栈上为什么是系统自动进行内存分配和释放呢??
我:(方)。。。。。(后来想想是不是想让我说栈的地址存在寄存器中,各种压栈出栈指令都是机器指令???)
面试官:一个源程序到可执行文件的过程:
我:预处理,编译,优化,汇编,连接,
面试官:预处理做些什么
我:三种吧啦吧啦吧啦。。。。
面试官:预处理头文件的时候做了些什么事?
我:(回答比较模糊,就说了把头文件包含进代码中。。。)
面试官:编译生成什么?
我:.s文件(尴尬,没说汇编代码)
面试官:链接做了什么?
我:(又是一顿模糊回答)。
剩下的都是网络的问题,我直说还没复习网络,小哥让画了网络模型,然后举例应用层协议。tcp与udp区别,拥塞控制,浏览器中输入网址发生了什么?基本只答出了皮毛。
最后,小哥让写了简答的一个代码,统计一个句子中有哪些不同的单词。刚开始用了map<string,int>,后来小哥让优化,说不用统计次数的,我说直接set好了。
。。。。
总结:得深入。