校招 未知部门 / 客户端-IOS / 一面
[面试日期] 2026-02-23 [面试时长] 未知
[学校背景] 未知 | 未知 [学历背景] 未知
[发布人] 面试之星官方收录
<h2>滴滴 IOS客户端-C++ 一面</h2>
<p><em>来源为牛客付费专栏,以下仅收录公开可见内容,付费部分未收录。</em></p>
<h2>介绍 C++11 的一些新特性</h2>
<p>C++11 是现代 C++ 的分水岭,重点是语言层面支持并发、资源管理和泛型能力增强。面试里可以优先说这几类:语法简化、内存与对象语义、并发库、类型推导。</p>
<p>常见可答内容是:auto 和 decltype、范围 for、右值引用与移动语义、nullptr、lambda、std::thread/mutex/condition_variable、smart pointer、unordered_map、constexpr、static_assert。如果只给一句总结,可以说 C++11 让“写对代码”和“写高性能代码”同时更容易。</p>
<h2>智能指针的实现原理</h2>
<p>本质是 RAII:把“资源释放”绑定到对象生命周期。对象离开作用域时自动析构,析构里释放资源。 unique_ptr 独占所有权,不可拷贝可移动;shared_ptr 通过控制块维护强引用计数,计数归零时释放对象;weak_ptr 只观察不拥有,不增加强引用,用来打破循环引用。</p>
<p>shared_ptr 的关键结构是控制块:通常包含强计数、弱计数、删除器等元数据。拷贝 shared_ptr 会原子地增加强计数,析构会原子减少;当强计数变 0,执行删除器销毁对象;当弱计数也为 0,再释放控制块。</p>
<h2>智能指针的优缺点</h2>
<p>优点是显著降低手动 new/delete 出错概率,减少泄漏和悬空指针;异常路径也能自动回收资源。缺点主要在 shared_ptr:有额外控制块和原子计数开销,错误使用容易出现循环引用,且所有权语义复杂时可读性下降。</p>
<p>实践里通常建议:默认用 unique_ptr,确实需要共享生命周期再用 shared_ptr,涉及双向关系时引入 weak_ptr。</p>
<h2>C++ 中的内存分布</h2>
<p>进程虚拟内存通常可分为代码区、全局/静态区、堆、栈,以及常量区(通常映射在只读段)。 </p>
AI 推荐面试题
