柠檬微趣-C++客户端一面凉经

#面试吐槽bot##柠檬微趣#
一、自我介绍
二、C++内存对齐,计算三个结构体的大小
三、介绍多态,虚函数、虚函数表、虚函数表指针、虚析构函数(主要就是考查内存布局)、构造函数能否为虚函数?为什么
四、多继承中多个虚函数指针是存放在数组中还是单独的指针变量(之前只大致扫了一下多继承/菱形继承问题,没想到问这么细)
五、map底层原理,是否有序,介绍一下红黑树(根叶黑/不红红/黑路同),查找/删除/插入的时间复杂度(O(logn))(习惯性直接回答成unordered_map了,重新回答了,笑死)
六、内存泄漏是什么,如何避免、检查、解决(例如析构函数调用前发生程序异常,造成内存泄漏等等,代码逻辑考虑准确、RAII手法/智能指针、valgrind)
七、介绍一下智能指针:shared_ptr/weak_ptr/unique_ptr/scope_ptr,各自特点、区别、应用场景
八、手写shared_ptr,包含六个函数:无参构造、有参构造、拷贝构造、移动构造、赋值运算符重载、析构函数
九、测试上面的所有函数,打印引用计数值(测试析构的时候,面试官给了提示)

补充:问多态的时候,也问到了一些子类、父类指针的类型转换/直接对象转换

周三面,周日感谢信;面试过程中感觉良好,都是纯C++八股,被挂了还蛮沮丧

找不到暑假实习了,挂麻了
全部评论
这问的已经挺难了,虽然也是常见面试题,但都是深度提问,要求掌握比较熟练,还有手写shead_ptr,大部分人都过不了
5 回复 分享
发布于 05-19 11:32 河南
离谱,这tm是实习面试?
1 回复 分享
发布于 05-22 23:58 广东
本来不想学手撕共享指针的,怎么真考啊
点赞 回复 分享
发布于 06-09 21:39 黑龙江
放心兄弟起码你还有面,我有你这水平学院本面都没有
点赞 回复 分享
发布于 05-27 15:31 广东
我也是,这家感觉要求好高...我感觉我也很良好,一直在手写
点赞 回复 分享
发布于 05-20 17:33 重庆
byd难死了
点赞 回复 分享
发布于 05-20 07:49 湖南

相关推荐

1. js中变量都是怎么定义的2. 说一下为什么 const 是不可变的3. let和var变量提升的时候提升到什么地方了4. js中在a.js中var a = 1,在b.js中能访问到吗5. 输出?为什么?var a = 1{console.log(a)var a = 2}console.log(a)6. 输出?为什么?var a = 1;{console.log(a)let a = 2}console.log(a)7. promise是什么8. 什么是同步,异步9. 那么promise中哪些是同步哪些是异步10. promise的方法执行顺序是怎么样的11. js中有哪些数据类型12. 对于number,怎么定义二进制、十进制、八进制、十六进制,除了加前缀还有什么方法13. 假如要定义浮点类型,.2这种方式对吗14. string定义方式15. 单引号、双引号、反引号定义有什么区别16. === ==区别17. true == -118. null == underfined19. 令underfined = 1这种写法对吗20. 输出?为什么?let a = 0 / 0;let b = 1 / 0;a == b21. 输出?为什么?let a = 0 / 0;let b = 0 / 0;a == b如何准确比较22. 输出?为什么?'' == '0'0  == ''23. 说一下浅拷贝和深拷贝24. 什么情况用浅拷贝/深拷贝25. 怎么实现深拷贝,哪些情况stringify无法实现26. 讲一下什么是webpack27. 有哪些loader28. 热更新怎么实现的29. http,https有什么区别,为什么https更安全30. git中怎么拉取代码31. git clone/fork/branch有什么区别32. git pull 和fetch有什么区别33. git rebase/merge有什么区别34. Branch B中提交了commit1,commit2,在branch A中想要拉取branch b的commmit1,怎么做35. 算法,给一个数组nums,要找出数组中没有出现的最小正整数
发面经攒人品
点赞 评论 收藏
分享
评论
12
56
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务