校招 未知部门 / 客户端-IOS / 二面

[面试日期] 2026-02-23 [面试时长] 未知
[学校背景] 未知 | 未知 [学历背景] 未知
[发布人] 面试之星官方收录
<h2>滴滴 IOS客户端-C++ 二面</h2> <p><em>来源为牛客付费专栏,以下仅收录公开可见内容,付费部分未收录。</em></p> <h2>为什么选择 iOS 客户端方向</h2> <p>我选择 iOS 的核心原因是能直接对用户体验负责,从性能、交互到稳定性都能看到即时反馈。客户端工程同时要求工程化能力和产品理解能力,我喜欢这种“技术深度 + 用户价值”结合的方向。iOS 生态对质量要求高,也更适合长期沉淀架构和性能优化能力。</p> <h2>Objective-C 的特点</h2> <p>Objective-C 是在 C 语言基础上加入面向对象与消息机制的语言,运行时特性非常强。它的消息发送是动态绑定,支持反射、方法交换、动态添加方法等机制,适合做灵活扩展。语法上兼容 C,历史包袱较重但生态成熟,尤其在老项目和运行时相关能力上依然重要。</p> <h2>一般如何学习 Objective-C</h2> <p>按“语法 -&gt; Runtime -&gt; 工程实践”三层推进。先掌握对象模型、内存管理、分类协议等基础,再深入 Runtime 与消息转发,最后通过真实业务代码理解架构和调优。学习时会结合调试工具看对象生命周期和调用链,而不是只背概念。</p> <h2>你的英语水平怎么样</h2> <p>当时回答过了4 6级 能看懂英文文档 , 让我用英语做了一段自我介绍</p> <h2>实习经历拷打</h2> <p>这个根据个人情况自己回答了</p> <h2>解决 TP 初始化失败问题</h2> <p>典型处理思路是先确认失败发生在时序、依赖未就绪还是硬件通信异常。然后做分层日志和错误码归一化,保证能区分“偶现失败”和“必现失败”。工程上会加入初始化状态机、超时与重试机制、兜底降级路径,并把初始化前置依赖显式化,避免隐式竞态。</p> <h2>class 和 struct 的区别(C++)</h2> <p>在 C++ 中两者本质几乎相同,主要默认权限不同:class 默认 private,struct 默认 public。两者都支持成员函数、继承、模板等完整能力。工程上一般用 struct 表示轻量数据聚合,用 class 表示有封装和不变量约束的对象。</p> <h2>C++ 常用容器</h2> <p>常用容器包括顺序容器 vector、deque、list,关联容器 map/set,无序关联容器 unordered_map/unordered_set,以及适配器 stack/queue/priority_queue。选择核心是访问模式、是否有序、插删位置和内存开销。</p> <h2>这些容器应用场景</h2> <p>vector 适合高频遍历和尾部追加;deque 适合头尾都要高效操作;list 适合中间插删频繁但不适合随机访问。 map/set 用于有序和范围查询,unordered_map/set 用于高频点查。 priority_queue 适合 TopK,queue 适合 BFS 和任务流,stack 适合括号匹配与回溯状态管理。</p> <h2>深拷贝和浅拷贝</h2> <p>浅拷贝只复制对象表层字段,指针成员会共享同一块堆内存;深拷贝会复制指针所指向的资源,得到独立副本。浅拷贝快但易出现双重释放或联动修改,深拷贝安全但成本更高。带资源所有权的类型必须明确拷贝语义,现代 C++ 常用移动语义减少深拷贝成本。</p> <h2>解释图片里的 Objective-C 代码</h2> <p>这类题目通用方法是先判断对象类型和内存语义</p>
AI 推荐面试题