金山C++已oc

timeline
11.7一面
11.12二面
11.27hr面
12.2oc
全部评论
我也是二面后等两周,明天下午终面cpp,接佬好运,请问佬base在哪儿啊
3 回复 分享
发布于 2024-12-02 16:07 陕西
hr面 直接口头?
点赞 回复 分享
发布于 2024-12-17 15:31 新疆
老哥收到offer了吗
点赞 回复 分享
发布于 2024-12-06 15:19 陕西
给大佬👻了!
点赞 回复 分享
发布于 2024-12-05 16:38 陕西
我25号二面的,现在还没消息,但面试官跟我说一周内来着,请问是流程比较长而已还是G了呀,现在状态显示是“终面”
点赞 回复 分享
发布于 2024-12-03 12:45 辽宁
大佬base哪里啊
点赞 回复 分享
发布于 2024-12-02 13:36 河北

相关推荐

5/8,18min,今天大早上给我发感谢信了,我还很奇怪我大部分都答得上来。大部分问题都是常见八股,智能指针、虚函数、大端小端、内存布局、map、inline没什么好讲的,主要是两个问题问到我了。1、如何获取虚函数指针vptr隐隐约约记得之前看过,但是忘了答不上来,大概就是:vptr是对象内存的第一个字段1)void** vptr = *(void***)ptr;//直接强制转换2)使用unionunion U {Base1* Ptr;void** Vptr;};一般情况到此为止了,但我气不过,仔细查了资料,发现这个问题本质上十分抽象。首先在ISO/IEC 14882 (C++标准)中,只描述了虚函数的行为,没有指定实现方式,之前了解到的vtable、对象内存布局,都是编译器开自己实现的,比如Itanium C++ ABI(GCC)文档:https://itanium-cxx-abi.github.io/cxx-abi/abi.html#vtable中就规定了使用vtable,MSVC貌似没直接说(https://learn.microsoft.com/en-us/cpp/cpp/virtual-functions?view=msvc-170),但调试发现跟GCC差不多,前面获取vptr的手段就是这么来的。问题就在这里了,获取vptr的方法是依赖于编译器实现细节而不是标准接口的,是一种非常危险的未定义行为,哪天编译器给你改了实现那程序通通都得爆炸😅(参考GCC 5.x ABI Break)2、关于shared_ptr基本原理:std::shared_ptr<T>内部指向一个控制块,包含引用计数器、对象的指针(T*)、析构器计数器的类型:通常是原子类型(atomic)多个 shared_ptr<T>,只要是从同一个源shared_ptr拷贝/赋值构造出来的,它们内部就指向同一份控制块。这个问题没什么好说的,单纯不会,但我怀疑这么问下去我是不是得把标准库源码都得看一遍😀。
查看2道真题和解析
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

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