每年秋招季研发岗笔试都是大家最关心的一关。2023年OPPO秋招研发岗笔试我完整走了一遍从投递简历到收到笔试通知再到线上双机位答题整个过程有不少值得复盘的地方。这篇文章就结合我的实际经历和当时一起准备的同学们反馈把整套笔试拆开来看包括题型结构、考点侧重、做题策略、备考重点给后面要参加类似大厂研发笔试的朋友一份可以直接参考的实战经验。1. 2023年OPPO研发岗笔试的整体情况1.1 笔试形式与流程OPPO秋招研发岗笔试用的是在线笔试系统全程双机位监控一台电脑主机位答题一部手机侧后方监控这个模式在2023年秋招里属于标配。正式答题前有身份验证和环境检测环节需要提前准备好身份证件周围环境要安静、光线充足桌面上除了草稿纸、笔和必要的水以外不建议放其他东西监考系统会做环境扫描。整个笔试时长一般是两个小时左右不过不同岗位方向会略有差异。我当时投的是后端研发方向实际登录系统后看到的倒计时是120分钟。系统会提前10分钟开放登录建议不要卡着点进提前完成设备检测、摄像头调试这些操作避免因为环境问题耽误正式答题时间。注意在线笔试系统对浏览器版本有要求一般推荐Chrome或者Edge用旧版浏览器很可能出现代码编辑器加载异常或者题目显示不全的问题。建议提前一天在自家电脑上跑一遍模拟环境把这个问题彻底规避掉。笔试整体节奏非常紧凑几乎没有多余时间反复检查。这也意味着考前对知识点熟悉程度的要求很高不能一边做题一边回忆八股文。1.2 题型构成与分值分布从2023年OPPO秋招研发岗笔试的题型来看大体分成三块题型题量分值占比主要考查内容编程题2~3道50%~60%数据结构与算法偏工程应用场景计算机基础选择题20道左右30%~40%操作系统、计算机网络、数据库、Java/C基础逻辑与思维题少量5%~10%脑筋急转弯类、推理类、开放性问题不同岗位方向后端、前端、客户端、算法等在选择题构成上会有差异比如算法岗会更侧重机器学习和数学基础前端岗会在浏览器渲染、JavaScript特性上多出几道题。但整体框架是类似的。编程题是拉开差距的核心基础选择题决定能不能进入下一轮思维题更像一个锦上添花的参考项。把往年几次笔试的题目放在一起看OPPO笔试风格整体偏稳不会刻意出偏怪难题难度更多体现在题量大、时间紧上。基础题覆盖范围广但不算很深编程题则是中等偏上难度比较考验对常见算法模板的熟练度和能不能快速建模。2. 核心考点与题目类型深度拆解2.1 编程题在有限时间内验证基本功编程题是整场笔试最核心的部分两道题基本能决定你是否进入下一轮。从我做过的题和周围同学的反馈看OPPO研发岗编程题偏重这几个方向字符串处理类。比如给一个字符串要求按照某种规则压缩或展开或者在字符串中寻找满足条件的最长子串。这类题本身算法难度不高但非常考验边界处理能力。常见的坑包括空字符串、全相同字符、超长字符串导致的超时。动态规划类。典型的是背包问题的变形、最长递增子序列的变种、二维网格路径问题等。这类题重点在状态定义和转移方程一旦定义清楚代码其实很模板化。笔试时间紧张建议把常见的DP模板事先准备好比如01背包、完全背包、LIS、LCS这些考场上能省很多推导时间。图论与搜索类。印象里出现过二维网格上求连通区域数量的题本质上就是BFS/DFS的模板题。这类题考的就是对搜索框架的掌握和坐标方向处理的熟练度方向数组写错、visited数组忘记标记都是常见的低级错误。还有一类是模拟题题目描述很长像一个小型业务场景让你按规则逐步模拟。这类题不考复杂算法但考阅读理解能力和代码组织能力读题慢或者逻辑写乱了容易在代码里绕不出来。2.2 计算机基础选择题考查广度与细节选择题部分覆盖了计算机专业核心课程大概可以分为以下几块操作系统。高频考点包括进程与线程的区别、死锁产生的四个条件、页面置换算法LRU、FIFO、进程调度算法、虚拟内存机制等。这类题细节性很强比如考到哪种页面置换算法会产生Belady异常答案是FIFO这种就是纯记忆型知识记得就得分不记得就只能靠蒙。计算机网络。重点集中在TCP/IP协议栈。TCP三次握手与四次挥手的过程、TCP与UDP的区别、HTTP状态码含义、DNS解析过程、IPv4地址分类和子网划分。需要注意2023年的笔试里对HTTPS和TLS握手的考查比例有所上升应该是行业对安全重视度提高后带来的连锁反应。数据库。SQL语句是必考的特别是多表连接查询、分组聚合、子查询。索引相关的选择题也比较高频比如聚集索引与非聚集索引的区别、什么时候索引会失效。事务隔离级别、ACID特性这类知识点也需要掌握扎实。Java/C基础。这部分根据岗位方向有区分。Java方向常见考点是HashMap底层原理、并发编程synchronized与Lock区别、线程池参数含义、JVM内存区域划分。C方向则更常考虚函数、智能指针、内存管理相关内容。我投的是后端方向笔试内容以Java为主基本都在这些范围内。2.3 逻辑与开放性题目考察思路与表达逻辑与思维题虽然分值占比不高也不可忽视。常见题型有数列推理、图形推理以及一些简单的逻辑判断问题。这类题不用刻意刷因为题型范围太广性价比不高考前做几套公务员行测的逻辑题熟悉下套路就够用。开放性题目更像一个小小的问答题让你简述对某个技术问题的理解或设计思路。比如问如何设计一个短链接系统在大流量的场景下怎么做限流。这类题主要考思路的完整性和表达能力。我的经验是用背景-方案-细节的结构来组织答案先点出问题核心再给出方案框架最后补充一两个实现细节。3. 真实笔试复盘与解题思路分享3.1 典型编程题的思路要点下面是我根据自己的实战体验整理的几类题目的解题思路题目细节记不完全准确但思路可以分享出来。字符串压缩类题目。当时遇到一道题大概是要求把连续出现超过一定次数的字符串片段压缩成字符次数的形式比如aaabbbcc压缩成a3b3c2这种。思路很简单就是一次遍历用两个指针标记连续相同字符的起始和终止位置然后拼接结果。这里最需要注意的就是最后一个字符的处理容易漏掉。我当时是把压缩结果用StringBuilder来拼接遍历完之后再单独处理最后一组字符才避免了越界问题。二维网格搜索问题。还有一道题类似找岛屿数量的变种给定一个二维矩阵每个位置有状态要求统计满足某种连通条件的区域个数。解题思路就是遍历每一个格子遇到符合条件的格子就做DFS/BFS展开同时用visited数组记录访问状态。这类题的关键是要把方向数组写好上下左右四个方向。有时候题目要求斜对角方向那就八方向遍历。笔试时时间紧张DFS的递归写法更容易快速写对但要注意递归深度如果矩阵很大建议改写成BFS或者用栈模拟。动态规划题。印象中有一道类似最长递增连续子序列的变种但增加了限制条件。这类题我一般先用暴力递归想清楚状态定义然后推导转移方程再改成DP数组迭代。考场上时间不够时可以直接从某个位置做结尾这个角度去定义状态基本不会跑偏。另外如果时间不够可以先写一个暴力解法保证通过一部分测试用例拿到部分分比分治大法要好得多。3.2 选择题里那些容易丢分的细节根据我的经验选择题丢分往往不是因为知识点完全不会而是毁在看着眼熟但没记准确的状态。下面举几个具体例子一个是关于TCP的拥塞控制题目给出四个阶段或算法的描述让你选错的。如果只记得慢启动、拥塞避免、快重传、快恢复这几个名词但说不清每个阶段阈值怎么变化就很容易被干扰项带偏。这类题的复习方式应该是画状态图把拥塞窗口变化的整个过程过一遍而不是背文字描述。另一个是数据库的隔离级别问题。题目给出一组并发操作场景问在哪个隔离级别下不会出现脏读。这种题我每次都容易在可重复读和读已提交之间犹豫。实际上要理清楚脏读、不可重复读、幻读分别对应哪个级别下的问题建议把四种隔离级别和三种异常现象用一个表格对比记忆。还有操作系统的死锁题目经常给出一组资源分配情况问当前是否处于死锁状态、是否安全。这就要会算资源分配矩阵和安全序列。如果对银行家算法比较熟悉这类题很快就能出答案但没有实际算过的同学容易在这里花很长时间。3.3 时间分配倒推法我在实际笔试过程中总结出一套时间分配方式基本上按这个节奏走整体不会太慌。拿到试卷后先用2到3分钟快速浏览全部题目了解编程题有几道、难度大概如何。不要在选择题上纠结太久每道选择题目标时间控制在1分半以内遇到完全没思路的先标记跳过最后有时间再回来。20道选择题大概用30到35分钟解决。剩下的时间主要给编程题。第一道编程题通常最简单建议先做给自己设定25到30分钟包含读题、编码、自测。第二道编程题如果一时没有头绪先花5分钟想思路想不出来就先把暴力解法写出来保证有部分用例能过。最后留出10分钟检查代码的边界条件并回头处理跳过的选择题。这套倒推法的时间安排大致是浏览题目3分钟选择题35分钟第一道编程题30分钟第二道编程题40分钟最后检查加补漏12分钟。实际执行下来整体节奏是比较稳的。4. 备考方法论与避坑指南4.1 考前一个月的复习重点排序我在准备2023年秋招的过程中最深的感受是如果时间只剩一个月复习优先级一定要排清楚最忌平均用力。第一优先级是编程题。每天至少保持两道题的刷题量重点刷LeetCode中等难度的题目尤其是字符串处理、动态规划、DFS/BFS这几类。刷题不追求数量追求拿到题能快速建模。我在考前一周做了一次高频题整理把常见题型的模板代码单独放到一个文档里比如二分查找模板、并查集模板、拓扑排序模板考前一天集中过一遍。考试时碰到类似题目直接套模板改效率会高很多。第二优先级是计算机网络和操作系统。这两门课内容多、考点散布看起来很难复习但实际秋招笔试考来考去就是那几十个高频点。重点掌握TCP状态机、TCP拥塞控制、进程线程模型、内存管理机制、文件系统基础这些高频考点值得花时间背熟。第三优先级才是数据库和语言基础。数据库重点练习SQL题语言基础重点整理面试高频考点。如果你的岗位方向对语言要求很明确比如后端主Java那Java集合、并发、JVM这三块一定要吃透。4.2 考场实操中的几个关键操作除了知识储备考场上的一些操作细节也会直接影响成绩这些都是真实踩坑换来的教训。本地IDE的使用要提前确认。有些笔试系统自带在线编辑器但体验一般自动补全和格式检查都比较弱。2023年OPPO笔试允许本地编写代码建议用本地IDE代码写完了再复制到答题区。本地环境提前配好Java的话把JDK版本确认好C则要确认GCC版本和标准避免本地能跑、线上编译报错的情况。测试用例一定自己多补充几组。很多同学写完代码只跑题目给的示例觉得没问题就交了。实际上笔试的判题用例会包含很多边界情况比如空数组、超大数、特殊字符。我的习惯是写完代码后至少补充三组测试空值或极简输入、常规中等量输入、边界极值输入。这一步能捞回不少分数。别忘了注意代码输入输出格式。在线笔试通常需要自己处理标准输入输出Scanner或cin的使用要熟练。有些同学算法思路完全正确但因为读取输入时空格和换行的处理不对导致答案错误非常可惜。4.3 笔试后必做的两件事交卷后我不建议第一时间就放松或干等。趁记忆还新鲜最好把刚才的题目和思路整理出来发在备忘录或者自己建的秋招记录文档里。别小看这一步它对接下来的面试非常关键。一是如果后续面试官问你笔试的感受你能清晰说出自己当时怎么想的、有没有更好的解法这是加分项。二是秋招往往多线程投递下一家公司的笔试可能遇到相似的题型有记录就能快速调出思路。第二件事是回看自己卡住的那些选择题。这些题大概率也是技术终面或HR面里容易追问的知识点。我当时就是因为笔试里一道关于Redis持久化策略的选择题没答上来面试前专门补了这一块结果面试里真被问到了RDB和AOF的区别。笔试暴露的盲区正是面试准备里最值得补的漏洞。5. 常见问题排查与经验汇总5.1 在线笔试常见技术问题速查在线笔试过程中偶尔会遇到技术问题这里整理了一份排查思路现象可能原因处理方式摄像头检测失败浏览器权限未开启在浏览器设置中允许摄像头权限并检查是否有其他程序占用摄像头代码编辑器卡顿浏览器版本过旧或内存占用过高关闭多余标签页使用Chrome/Edge浏览器提前重启电脑代码提交后提示编译错误本地与线上JDK/GCC版本不一致考前一天在笔试系统模拟环境测试确认编译命令和版本参数断网网络不稳定准备手机热点作为备用断网后第一时间切换并联系监考官误关答题页面鼠标操作失误不要慌张重新登录系统大多数在线笔试系统会自动保存已提交的答案这些问题的核心解决思路就是提前准备冷静应对不要等出了状况再临时处理。5.2 独家避坑经验整个2023年秋招笔试走下来我总结出三个特别容易踩的坑第一个坑是过度纠结选择题。很多同学对某道选择题似曾相识于是花了五分钟反复推敲。这种投入产出比非常低五道选择题的时间足够把编程题的暴力解法写出来拿部分分。我的建议是选择题犹豫超过1分半立刻标记跳过就算最后没时间回来也只是一道选择题的损失完全在可接受范围内。第二个坑是编程题直接上手写代码没有先花几分钟捋思路。笔试时间紧张但并不是紧张到连想的时间都没有。拿到一道题先花3到5分钟明确输入输出范围、数据规模、可能的边界条件再动手写。如果题目数据量是10^5级别O(n^2)的方案大概率超时一开始就应考虑O(nlogn)的解法。想清楚再编码写出来的代码质量会高很多。第三个坑是没有准备代码模板。平时刷题大家经常用IDE的自动补全和快捷键到了笔试环境如果用的是简陋的在线编辑器一些基础代码都要从头敲。提前把快排、二分、并查集、拓扑排序、前缀和这些代码模板背熟笔试时能大幅节省时间也能减少编码错误。5.3 笔试成绩与后续流程的关联笔试在秋招整体流程中起着筛选和定位的作用从我的经验和了解来看笔试成绩会影响后续面试的深度和方向。通常笔试分数高的同学面试中技术面的部分可能更侧重项目经历和深度扩展而笔试表现一般的同学面试官可能会更倾向花时间验证基础知识的掌握程度问题会更偏八股和基础原理。不过一个重要的经验是笔试没考好不代表秋招结束。见过很多同学因为某一次笔试发挥失常就心态崩了其实完全没必要。秋招是长跑OPPO的笔试只是众多机会中的一个同一家公司不同岗位也可以多次投递。放平心态认真准备下一场比反复纠结已经结束的考试更有意义。我想再分享一个小技巧刷题时养成记录错题和思路的习惯。我用一个简单的表格记每题的类型、卡点、解法亮点考前几天集中看这个表而不是重新翻几百道题效率高很多。这个习惯从2023年秋招一直伴随我到后续的社招准备实测下来非常管用。希望这些经验能给你们一些参考祝笔试顺利。
