全程接近90分钟,感觉是硬凑够90分钟的。
楼主情况:末流211,去年毕业,目前在一家初创公司使用vtk做可视化方面的开发。
简历是在boss上投的,大概两周后收到了hr的面试邀约,面试时想着录一个面试视频,为了方便自己面试结束时复盘,但是面试时就忘了,,,淦。面试前也在牛客上看了很多面经,链接如下
https://www.nowcoder.com/feed/main/detail/9e25405da6ae456d8afbc6bda87d1378?sourceSSR=search
https://www.nowcoder.com/feed/main/detail/30ba252a55d14b79bd130f3e7716d0a1?sourceSSR=search
1、首先先自己做一个自我介绍,布拉布拉,紧接着就问做过的项目,给了一个场景题,在windows客户端下,聊天窗口有500条消息,但是由于聊天窗口大小的限制,每次只能显示20条消息,聊天窗口可以滑动,每次都显示20条消息,给出优化方案。
2、stl常用的容器,分别的应用场景,vector,map,unordered_map,set等。
3、vector的底层实现原理,没问具体扩容的倍数,问我vector<int>和vector<string>满了之后分别扩容的具体过程,我就回答了如果vector满了之后会开辟新的内存空间,把原来的元素拷贝到新的内存,在添加新的元素,面试官对这个回答不满意,问我int和string分别具体是如何拷贝的,没答上来,说是只要点进stl源码看一眼都知道。
4、map和unordered_map的区别,什么时候用map,什么时候用unorder_map,map的底层实现原理,如何解决哈希冲突。
5、解释一下多态,多态的实现原理,虚函数表是什么时候构造的,虚函数指针是什么时候构造的
6、有没有了解过仿函数,这个还真没了解过,,,
7、多线程编程,没接触过,不了解,,,
8、进程通信,没接触过,也不了解,应该是socket吧
9、父进程启动一个子进程,必须要等子进程运行结束父进程才能继续执行,如何实现,楼主回答的是设置一个全局布尔类型的变量,设置一个循环,父进程判断该值是否改变,否则执行循环里面的语句。面试官好像对这个答案不满意。
10、windows平台的消息循环机制
11、win32窗口的样式都有哪些
12、win32异形窗口
13、c++中右值相关的东西,因为我不会,直接就跳过了
14、解释一下死锁的概念
15、解释一下new delete malloc free, new出来的对象可以直接free嘛,如果直接free会发生什么
手撕:
1、自己实现一个string类,包括string类的构造函数,析构函数,赋值拷贝构造,移动构造,右值拷贝构造
该说不说感觉面试还是挺难的,主要是好多东西都没接触过,压根不会,路漫漫其修远兮,吾将上下而求索。