柠檬微趣-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、自我介绍2、项目拷打3、GMP 模型的调度流程(追问:M 如何与 P 绑定?P 的本地队列满了之后怎么处理?G 的抢占式调度是怎么实现的?)4、Go 的垃圾回收机制(三色标记法+混合写屏障,GC 的触发条件有哪些?)5、MySQL 的 redo log、undo log、binlog 的区别与联系(追问:三者的写入时机?崩溃恢复时的执行顺序?binlog 的两种格式(statement/row)区别及适用场景)6、MTU 的作用,数据包怎么分片(追问:MTU 的默认值(1500)、分片后的数据包如何重组?IP 分片和 TCP 分段的区别?)7、Protobuf 如何序列化数据,为什么比 JSON、XML 好(追问:Protobuf 的 TLV 编码细节?Varint 编码对负数的处理?proto3 相比 proto2 的优化)8、容器编排相关(追问:K8s 的核心组件有哪些?Pod 的生命周期及重启策略?Deployment 如何实现滚动更新?K8s 的 Service 与 Ingress 的区别?)9、Go 的 channel 实现原理(追问:channel 的底层数据结构?无缓冲 channel 和有缓冲 channel 的读写规则?关闭 channel 后读写会发生什么?)10、分布式一致性协议(Paxos/Raft)的核心思想(追问:Raft 如何解决 Paxos 的复杂性?Leader 选举的流程?日志复制的机制?网络分区后如何恢复?)11、哈希表的底层实现(追问:Go 中 map 的哈希冲突解决方式?map 的扩容机制?如何实现并发安全的 map?)12、TCP 的拥塞控制算法(追问:拥塞避免、快速重传的流程?BBR 算法相比 CUBIC 的优势?)13、分布式链路追踪如何设计14、数据库索引的底层结构(追问:InnoDB 的 B+ 树索引和哈希索引的区别?聚簇索引和非聚簇索引的区别?索引失效的场景及原因)15、Go 的接口实现原理(追问:iface 和 eface 的区别?接口断言的底层逻辑?空接口能存储 nil 吗?为什么?)已经凉了,反问阶段直接放弃了,说没啥想问的,面试官暗示说,不希望你浪费掉这次宝贵的面试机会,有啥想问的就问问吧,G
查看15道真题和解析
点赞 评论 收藏
分享
评论
13
57
分享

创作者周榜

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