校招 未知部门 / 硬件工程师 / 一面
[面试日期] 2026-04-17 [面试时长] 未知
[学校背景] 蚌埠坦克学院 | 双非 [学历背景] 未知
[发布人] 面试之星官方收录
<h2>OPPO 嵌入式软件开发 一面 面经</h2>
<h1>1. 请先做一个简短的自我介绍</h1>
<p>可以从学校背景、技术栈、项目经历和岗位匹配度几个方面来介绍,尽量控制在 1 分钟左右。</p>
<p>回答示例:</p>
<p>面试官您好,我叫 XX,本科/硕士就读于 XX 专业,主修过操作系统、计算机网络、数据结构、嵌入式系统等课程。</p>
<p>我主要学习和实践的方向是嵌入式软件开发,比较熟悉 C/C++、Linux 基础、进程线程、网络通信,也做过 STM32 或 Linux 相关项目。</p>
<p>在项目中我主要负责过底层模块开发、通信协议处理、驱动适配和问题排查优化。</p>
<p>我对底层软件和系统方向比较感兴趣,这次也希望能加入 OPPO,在嵌入式软件开发岗位上继续深入积累。</p>
<h1>2. 说一下 TCP 和 UDP 之间的主要区别</h1>
<p>TCP 和 UDP 都属于传输层协议,但两者的设计目标不同。</p>
<p>TCP 是面向连接的,通信前需要先建立连接,能够保证数据可靠、有序到达,并且具备确认应答、超时重传、流量控制和拥塞控制等机制。</p>
<p>UDP 是无连接的,发送前不需要建立连接,不保证数据一定到达,也不保证顺序,因此开销更小、传输效率更高。</p>
<p>简单来说:</p>
<p>TCP 更强调可靠性,适合文件传输、网页访问这类场景。</p>
<p>UDP 更强调实时性,适合音视频、直播、语音通话这类场景。</p>
<h1>3. 为什么 TCP 建立连接需要三次握手</h1>
<p>TCP 三次握手的核心目的是让通信双方都确认收发能力正常,并同步初始序列号。</p>
<p>第一次握手,客户端发送 SYN,请求建立连接。</p>
<p>第二次握手,服务端返回 SYN + ACK,表示自己收到了客户端请求,并且同意建立连接。</p>
<p>第三次握手,客户端再返回 ACK,表示自己也收到了服务端的确认。</p>
<p>如果只有两次握手,服务端无法确认自己发出的确认信息是否被客户端收到。</p>
<p>所以三次握手可以保证双方都明确连接已经建立,避免无效连接和历史报文带来的问题。</p>
<h1>4. 你怎么理解 HTTP 协议</h1>
<p>HTTP 是应用层协议,主要用于客户端和服务器之间传输请求和响应数据。</p>
<p>它规定了请求方法、状态码、请求头、响应头和消息体等内容。</p>
<p>HTTP 本身不负责底层的可靠传输,它通常运行在 TCP 之上,由 TCP 来保证数据可靠送达。</p>
<p>如果是 HTTPS,则是在 HTTP 基础上加入 TLS/SSL,实现数据加密和身份认证。</p>
<p>常见请求方法有 GET、POST、PUT、DELETE。</p>
<p>常见状态码有 200、404、500 等。</p>
<h1>5. C++11 中你比较熟悉哪些新特性</h1>
<p>C++11 常用新特性很多,面试里可以重点说几个自己熟悉的。</p>
<p>比如:</p>
<p><code>auto</code>,用于自动类型推导。</p>
<p><code>nullptr</code>,替代 NULL,避免二义性。</p>
<p>范围 for 循环,让遍历容器更方便。</p>
<p><code>lambda</code> 表达式,适合写简单匿名函数。</p>
<p>右值引用和移动语义,用来减少不必要的拷贝。</p>
<p>智能指针,如 <code>unique_ptr</code>、<code>shared_ptr</code>、<code>weak_ptr</code>。</p>
<p>并发库,如 <code>thread</code>、<code>mutex</code>、<code>condition_variable</code>。</p>
<p>如果结合工程实践去讲,会更有说服力,比如智能指针能减少内存泄漏风险,移动语义能提升性能。</p>
<h1>6. 智能指针一般有哪些,各自作用是什么</h1>
<p>常见的智能指针主要有三种:<code>unique_ptr</code>、<code>shared_ptr</code> 和 <code>weak_ptr</code>。</p>
<p><code>un</code> 表示独占所有权,一个对象同一时间只能被一个指针管理,不能拷贝但可以移动,适合资源归属明确的场景。</p>
AI 推荐面试题
