关于内存管理,以及CVTE面经(2016)

最近去CVTE面试,面试场地稍微有点吓人,36个桌子在一个大厅里,每个面试官西装革履地很专业的样子。

最有趣是刚进去的时候看到面前一个C/C++岗的中年面试官,别的座位都坐满了人但是他面前没人,我自己又报名的C/C++岗位,想直接坐到他面前去,但是HR大姐姐虽然看到了但是并没有叫C/C++岗位的人去,也就算了。之后才知道他是我二面的面试官,CVTE刚成立就在里面的核心人员吧,应该是最后把关的面试官。

一面

一面的时候刚开始还有点紧张,不过面试官很和蔼,年纪也不大,问了很多基础的东西,都答得挺不错的,聊的也很开心,虽然当时问我实现栈用数组还是用链表好我想了好一会儿才说用链表好,而且也没想出很好的理由有一点直觉的感觉,但是运气好也算答对了,在面试的最后也想出来为什么链表更好点了,之后就是自己手写用链表实现栈,给7分钟,很顺利写完了

二面

二面就是那个中年的面试官,他问的就比一面稍微难一点,比如哲学家问题的解决办法,信号量的话需要几个信号量,除了信号量还需要什么,问类和设计模式的关系,看到我项目里有Qt问了Qt的信号槽机制,以及信号槽机制里面一个信号能否有多个槽响应,他们之间的关系问题,都比较简单,之后还要求写一个小的test程序看系统能分给你多少内存(关于这个我之后说),还有就是如果一个程序中有一段花了最多的时间,你用什么办法找到那一段,都答得还不错,但是内存那里事后想了一下,也写了那个test函数,还咨询了知乎的蓝色大大,之后理解得也更加深入了。

内存管理

这一块是最近重读了primer,thinking in C++,之后理解得更加深入的东西。
C++的内存中分静态内存区,栈内存,堆内存,只有堆内存是运行时确定的,而且是动态分配的,而另外两个区域的内存分配是由编译器在编译时确定的,而今天写的test也给出了答案,WIN32的话如果无栈内存,堆内存可以分配2GB(跟系统有关),其实是一个比较简单的问题,当时没有反应过来。

关于堆内存和栈内存,其实是一件很有意思的东西,以后有空写一篇专门的博客。

关于Memory Managment,还可以参见wiki

你可能感兴趣的:(C++,内存管理,CVTE面经)