Hypereal C++工程师面经(已挂)
Hypereal电面,由于面的太惨,凭印象写下问题吧(1个小时)
因为面试之前做了一个笔试题,所以面试刚开始就是围绕笔试题来的
1.有虚函数的类中,类对象的内存结构。(我笔试卷纸上写了vtable_ptr**,所以面试官就问我为啥是**,我其实不确定,随便写的。)
2.类对象都拥有一个虚函数表吗?
3.子类和父类的虚函数表示同一个吗?子类的虚函数表是怎样的
4.rand3()构建rand5()。(因为我之前看过,所以就说是3rand3()+rand3()。然后面试官让计算这个公式得到rand5(),需要随机的次数的期望。我数学渣,不会用错位相消法)
5.vector插入,删除,取值的复杂度。
6.vector扩容机制,push_back n个数需要扩容的次数
7.priority_queue的底层。(堆)
8.如何构建一个堆?复杂度
9.我实习时用的版本管理工具,我说svn,但是我不了解,然后又给我讲了svn和git的区别。掩面。。。。
10.写一个二叉树的Z字形遍历
11.shared_ptr,unique_ptr,weak_ptr。shared_ptr的循环引用。由于这个问题回答的太过垃圾,面试官直接终止面试了。
哎。面试的都是常规,我也都看过,但是从错位相消法没弄出来之后,我就知道我在面试官心里已经是个渣了。后面就感觉很尴尬。整个面试就崩盘了。