行业资讯
📅 2026/9/1 12:13:45
vivo秋招软件岗笔试复盘:题型拆解与备考策略指南
2023年vivo秋招软件岗第一批笔试我是在牛客网上完成的整个过程下来最大的感受是题目不算偏但覆盖面很广编程题更考验基本功而非炫技。这篇复盘我拖了很久最近整理笔记时翻到当时的做题记录觉得还是有不少值得分享的细节尤其是对准备2024届及以后校招的同学来说笔试风格虽然每年会有微调但核心考察逻辑是稳定的。这篇文章不打算写成标准答案集更多是还原我当时的做题思路、踩过的坑以及对各个知识模块的权重分析希望能给正在准备大厂软件岗笔试的同学一些实际参考。这篇文章适合几类人一是准备投递vivo软件岗包括Android、后端、算法等方向的应届生二是想了解大厂校招笔试难度梯度和出题风格的在校生三是已经拿到面试机会、想反向复盘笔试环节的求职者。下面所有内容都基于我参加2023年vivo秋招软件岗第一批笔试的真实经历结合同批其他同学的反馈整理而成。1. vivo秋招软件岗笔试的整体认知与岗位画像1.1 vivo笔试在秋招流程中的位置与筛选逻辑vivo的秋招流程一般是网申投递 → 在线笔试 → 技术面试通常2-3轮→ HR面试 → offer审批。笔试是投递简历之后的第一道硬性关卡它的目的不是选拔天才而是用统一标准筛掉基础不扎实的候选人。从筛选逻辑来看vivo的笔试成绩在整体评估中占的比重因岗位而异。软件岗的话笔试成绩基本决定了你能不能进面试池尤其是第一批笔试因为投递人数多、岗位HC有限笔试分数会直接影响简历的排位。我当时投的是Android方向笔试成绩出来后大概一周左右收到了面试邀约同批有个同学投了后端笔试分数比我高一些面试通知也比我早两天。这里想提醒一点vivo的笔试并没有一个公开的及格线它是按照岗位维度分层排名的。也就是说你不需要考满分但需要在同一批候选人中排名靠前。这意味着即使你自认为答得不错如果这批投递的人整体很强面试门槛也会相应提高。反过来如果一批笔试的整体水平偏弱哪怕你的绝对分数不算高也可能拿到面试机会。1.2 软件岗具体方向与考察侧重点的差异vivo软件岗笔试虽然在同一个平台、同一时间段进行但不同方向的题目是有差异的。我根据同批参加笔试的同学反馈整理了一个大概的对比方向选择题侧重点编程题风格附加题型AndroidJava/Kotlin语言基础、Android四大组件、Handler机制数据结构与算法为主偶尔考字符串处理无iOSObjective-C/Swift基础、内存管理、Runloop数据结构与算法为主无后端Java基础、Spring框架、MySQL索引与事务算法题占比高可能有SQL题偶尔有数据库设计题算法/机器学习机器学习基础、概率统计、线性代数偏数学模型实现可能有数学推导题我自己的感受是vivo软件岗笔试对方向的区分并不像互联网大厂那么极端核心还是考察通用的计算机基础能力。Android方向的笔试中Java和数据结构是绝对的主角编程题全部可以用C或Java作答我用的Java全程没有任何问题。第一批笔试的另一个特点是“稳”字当头。题目难度不是那种一下子吓退你的类型但题量不小需要你在有限时间内合理安排节奏。后面我会详细拆解题型和时间分配的问题。2. 题型结构、考察范围与核心知识点拆解2.1 选择题/填空题的考察范围与高频考点vivo软件岗笔试的第一部分是选择题印象里是30道左右题目涉及的范围很广但每道题本身不算深。按我当时的回忆和同批同学的讨论高频考点主要集中在以下几个模块Java/C语言基础这部分题量最大约占总选择题的30%左右。考察内容包括但不限于访问修饰符的作用范围public、protected、default、private抽象类和接口的区别重载与重写的区别静态变量、静态代码块的执行顺序字符串常量池与equals、的区别集合框架的底层数据结构HashMap、ArrayList、LinkedList等异常处理机制checked/unchecked exception这些题目的难度相当于学校的期末考试水平但有一个陷阱它会在题目中挖一些很细节的点。比如我记得有一道题问“多个catch块的执行顺序”选项里故意把异常继承关系搞混如果不熟悉异常类的层级关系很容易选错。计算机网络大约占20%左右。考点集中在TCP/IP协议栈HTTP协议DNS解析过程TCP三次握手与四次挥手TCP与UDP的区别滑动窗口机制等。这些是软件岗必考的基础不算难但需要概念清晰。操作系统大约占20%左右。进程与线程的区别死锁产生的四个必要条件进程调度算法先来先服务、短作业优先、时间片轮转虚拟内存与页面置换算法PV操作相关的同步互斥问题等。vivo的题目不会考太复杂的PV应用题一般就是直接考的哲学家就餐问题的变种或生产者消费者模型。数据库在选择题中的占比大约10%-15%。主要考察SQL基础语法、索引的分类聚集索引与非聚集索引的区别、事务的ACID特性、隔离级别读未提交、读已提交、可重复读、串行化等。vivo更偏理论不像大厂后端那样会深入考索引底层数据结构B树的细节。其他包括设计模式单例、工厂、观察者等、Linux常用命令grep、awk、sed的简单用法、计算机组成原理原码反码补码Cache的基本概念等约占10%-15%。这些题目不会太深但如果你完全没接触过就很容易丢分。2.2 编程题的出题风格与难度梯队vivo软件岗笔试的编程题一般是3道难度呈梯度上升。我记得当时的情况大致是第一道题是“签到题”难度较低主要考察输入输出处理和基础的数组/字符串操作。这道题的目的是让你热身也确保大部分人能拿到基础分。我当时遇到的是一道字符串处理题大意是给定一个字符串输出每个字符出现的次数按ASCII码升序输出。这种题只要认真读题基本都能AC。第二道题是“中等题”难度介于面试手撕代码和竞赛入门题之间常见的出题方向是数组排序与双指针、贪心算法、简单动态规划如斐波那契数列变种、爬楼梯问题带限制条件、链表操作。这道题是分水岭基础扎实的同学能AC基础不牢但刷过题的同学也能拿部分分。第三道题是“压轴题”难度明显上升一般会涉及到动态规划的高级应用、图的遍历DFS/BFS的最短路径变种、线段树或树状数组偶尔会出一些需要数学推导的题目。这道题的目标就是拉开差距。从编程题的整体风格来看vivo的题目不算刁钻不会刻意出那种“脑筋急转弯”型的算法题。它更看重你是否能用熟悉的算法模型解决实际问题。这意味着只要刷过LeetCode中等难度的题并且对经典算法模板比如二分查找、DFS、BFS、背包问题足够熟悉拿到前两题的分数问题不大。2.3 各知识模块的权重分析与复习优先级结合选择题和编程题的整体分布我做了一个权重分析这样大家复习时可以有明确的优先级模块选择题占比编程题可能性复习建议数据结构与算法10%100%3题都涉及强优先双指针/栈队列/二叉树/动态规划必须熟练Java/C语言基础30%0%强优先语法细节是选择题拿分的关键计算机网络20%0%中优先重点掌握TCP/IP和HTTP操作系统20%0%中优先进程线程和死锁是核心数据库15%0%中优先SQL语法和事务概念为主Linux/设计模式等5%-10%0%低优先时间够就扫一遍这里有一个值得注意的结论数据结构与算法虽然在选择题中占比不算高但在编程题中100%出现而且编程题的分数权重通常高于选择题。以我当时参加的笔试为例选择题每题分值大约相同而编程题是每道题占总分的比例明显高于单道选择题。所以复习策略上算法能力永远是第一位的。3. 笔试实操过程从投递到交卷的关键环节3.1 笔试平台与考试环境准备vivo秋招使用牛客网作为笔试平台。这个平台在国内校招中使用率很高如果你之前用过其他公司的笔试对它的界面和操作方式应该不会陌生。牛客网在线笔试最需要关注的是两个细节一个是编程题的输入输出模式另一个是考试期间的浏览器约束。输入输出模式方面牛客网采用的是“标准输入输出”模式也就是你的代码需要自己处理输入数据的读取和输出结果的打印。对于习惯了LeetCode那种“只写核心函数”的人来说这是一个需要特意练习的环节。我当时用的是Java需要记住Java标准输入输出的写法尤其是BufferedReader和InputStreamReader、StringTokenizer的组合用法。环境准备上有几个硬性要求值得重视浏览器通常要求使用Chrome或Edge并确保摄像头可用建议提前在牛客网找一个模拟笔试做一遍确认自己的设备可以正常打开摄像头功能笔试当天提前30分钟进入考试页面检查网络连接是否稳定我这里插一句忠告千万不要在考试时用无线网络。我参加笔试时有两个同学都因为考场网络波动导致提交编程题时出现了延迟虽然最终没有丢分但心理上肯定受影响。有条件的话直接用有线网络做不到的话至少确保路由器稳定并且关闭所有下载任务。3.2 时间分配策略与答题顺序vivo软件岗笔试的总时长一般是120分钟题量包括30道选择题和3道编程题。我当时的时间分配策略是前40分钟做完全部选择题。这个速度意味着平均每道选择题只有80秒左右的时间要求你对基础概念足够熟练不能在个别题目上过度纠结。如果遇到拿不准的题我采用的原则是标记后跳过先保证做完所有题目再回头用剩余时间思考。因为选择题的得分效率比编程题高做对一道选择题的成本远低于调通一道编程题所以先把有把握的分拿住是明智的。接下来60分钟处理编程题。编程题的顺序严格按照第1题、第2题、第3题来。第1题通常5分钟内解决第2题控制在20分钟以内。如果第2题卡壳超过20分钟我的策略是先把第3题的暴力解法或部分分方案写出来再回来继续思考第2题。因为第3题虽然难但通常可以根据数据范围判断出题人期望的算法复杂度有时候写出暴力枚举也能拿到不少测试点的分数。最后20分钟是缓冲时间用于检查已提交的代码是否有漏洞回看标记过的选择题以及处理可能出现的编译或运行错误。这个复盘环节很重要我在实际考试中就发现了一道第一题的小bug——字符串处理时没考虑空字符串的情况直接在检查阶段修复了。3.3 编程题的输入输出规范与细节陷阱这个部分是我最想强调的因为在实际笔试中代码逻辑正确但输入输出格式不对导致扣分的情况太常见了。首先说输入读取。牛客网的编程题通常有多种输入格式常见的有第一行一个整数n接下来n行每行多个整数第一行两个整数n和m表示数组长度和操作次数整个输入全部在一行用空格分隔我当时的做法是不管题目描述是什么都优先用Scanner或BufferedReader读取整行然后用split或StringTokenizer解析。虽然Scanner更方便但BufferedReader性能更好遇到大量数据时不容易超时。我参加的笔试第一题数据量不大Scanner完全够用但第三题如果涉及大数组的读取BufferedReader的优势就体现出来了。其次是输出格式。这是最容易踩坑的地方因为题目通常要求“每个结果占一行”或“结果用空格分隔”而有些题还要求输出结果保留特定小数位。我的经验是写代码之前先把输出逻辑想清楚特别是处理最后一个元素时不要多出一个空格或换行。当时同批笔试的同学中有人因为最后多输出了一个空格被判错这种失分真的很可惜。最后是核心函数的写法。牛客网允许你自由定义类名和方法名但主类名通常要求是Main。如果你的代码中类名不是Main有可能会导致编译错误。这是新手最常犯的低级错误在模拟笔试时一定要确认这个细节。4. 典型真题思路解析4.1 高频数据结构题以“区间合并”为例区间合并类问题在vivo软件岗笔试中出现频率较高因为它能考察排序、数组处理和边界条件处理三个维度。我在笔试中虽然没有遇到原题但同批次的同学反馈他们的编程题中有一道是“合并所有重叠区间”和这个非常类似。题目大致描述是给定若干个区间的起始和结束位置将所有存在重叠或相邻的区间合并输出合并后的区间列表按起始位置升序排列。解题思路分三步将所有区间按起始位置排序如果起始位置相同按结束位置排序维护一个当前合并区间的起点start和终点end初始化为第一个区间遍历后续区间如果当前区间的起始位置小于等于end说明有重叠更新end为当前end和区间结束位置的较大者否则将[start, end]加入结果集然后更新start和end为当前区间这道题的核心是理解“重叠”的定义区间[a, b]和[c, d]重叠的条件是c b而不是c b。题目中说“相邻也算重叠”时条件变为c b 1。这个边界细节往往就是通过率和卡壳的分水岭。如果遇到这题我建议用Java的int[]数组存储区间排序时使用Arrays.sort并传入自定义比较器。整个过程的时间复杂度是O(nlogn)空间复杂度是O(n)。这个题只要排序正确、边界处理到位基本能AC。4.2 动态规划题以“最长递增子序列”为例动态规划是vivo软件岗笔试中第三题或第二题的热门考点。虽然我参加的批次没有直接考“最长递增子序列”但考了一道它的变种在一个整数数组中找出最长的“严格上升且相邻元素差值大于等于k”的子序列长度。这个变种本质上是LIS加上一个额外约束。经典的LIS问题有两种解法动态规划O(n²)和贪心二分O(nlogn)。对于笔试场景我的建议是优先掌握O(n²)的写法因为它的代码短、思路清除、不容易出错。如果题目数据范围明确提示n可能达到10⁵级别那就必须用贪心二分的优化写法。LIS的DP思路定义dp[i]表示以nums[i]结尾的最长递增子序列长度。对于每个i遍历所有j i如果nums[j] nums[i]则dp[i] max(dp[i], dp[j] 1)最终答案为max(dp)。变种题的改法其实很简单在状态转移时加上差值约束条件即nums[j] k nums[i]时才允许转移。这是我当时做题时的第一反应也确实是正确答案。如果你对动态规划不熟悉我建议在备考时把以下几个模型吃透背包问题0-1背包、完全背包、最长公共子序列、最长递增子序列、编辑距离、区间DP和状态机DP。vivo的第三题基本逃不出这些范围。4.3 其他常见题型回顾除了上面两类题vivo软件岗笔试中还会大概率出现这些题型双指针/滑动窗口这类题通常跟数组或字符串相关比如“找出字符串中不含重复字符的最长子串”或“按某种规则重新排列数组”。双指针的核心在于维护一个“窗口”或“指针区间”通过移动左右指针来更新答案。这类题想通了非常简单但有些变种需要你仔细分析指针的移动条件。栈和队列的灵活运用比较经典的是“有效的括号”、“最小栈”、“用队列实现栈”。这些题考察你对数据结构容器的掌握程度。vivo这类题不会考太复杂的变种基本都是教材级别的题目。二叉树遍历前序、中序、后序、层序遍历是必会的。vivo的笔试偶尔会把二叉树遍历和递归结合在一起比如“求二叉树的最大深度”、“判断一棵树是否对称”。这类题只要熟练掌握递归模板基本没有悬念。图的BFS/DFS当题目中的数据结构呈现出“网格”或“邻接表”的形式时BFS/DFS几乎总是正解。常见问题是岛屿数量、格子迷宫最短路径、拓扑排序。vivo的题一般不会考到Dijkstra或Floyd这种最短路算法除非是算法方向。我的建议是备考时把以上几类题型各刷10-20道熟悉题型的“套路”和代码模板笔试时就算遇到变种也不会手忙脚乱。5. 备考时间线与复习资源建议5.1 从零开始的时间线安排如果你是计算机相关专业有数据结构、操作系统、计算机网络这些课程基础但之前没怎么刷过题我建议至少提前8周开始准备vivo秋招笔试。前4周以“打基础”为主。每天固定刷2-3道LeetCode题目难度从easy到medium优先按标签刷数组、字符串、哈希表、双指针、栈、队列、二叉树、排序、二分查找。每道题做完后不要急着看下一题花10分钟复盘一下这道题用到的数据结构和算法思想并记录下来。同时每天抽30分钟过一遍计算机网络和操作系统的核心概念可以用《图解HTTP》、《图解TCP/IP》这类书快速建立体系。第5-6周是“强化练习”阶段。开始刷动态规划、贪心、DFS/BFS这些稍高难度的题型每天保持2-3道但要求自己一遍写对并针对代码的边界条件进行反思。这个阶段还要开始练习牛客网风格的编程题熟悉标准输入输出格式。建议去牛客网的题库里找几套模拟笔试做计时练习模拟真实考试节奏。第7-8周是“冲刺模考”阶段。每隔两天做一套完整模拟卷严格按照120分钟的时长控制。做完后认真分析错题尤其是编程题找出是算法思路卡壳还是代码实现有bug。同时针对选择题薄弱模块突击背诵比如Java集合类的底层实现细节或TCP状态转换图。5.2 刷题平台与资料推荐关于刷题平台我用过好几个最推荐的组合是LeetCode 牛客网 CodeTop。LeetCode用于刷算法题尤其是“LeetCode 75计划”或“LeetCode Hot 100”这种整理好的题目集合覆盖了大厂笔试的高频考点。我自己的体会是LeetCode的题目质量比一般OJ高题解区也有很多大神的思路分享很适合系统学习算法。牛客网的题库则更贴近国内校招的笔试风格尤其是编程题输入输出格式和在线笔试环境完全一致。它的“华为、腾讯、百度、字节跳动”等各种真题题库很有参考价值。建议考前至少做两套接近真实考试的模拟卷。CodeTop是一个面试题汇总网站它按照公司维度整理高频题包括vivo。虽然vivo在CodeTop上的题目样本量不如一些大厂多但依然可以从中看出vivo笔试和面试的考察倾向值得花时间研究。数据结构与算法的基础书籍方面我推荐《剑指Offer》和《代码随想录》代码随想录的网站和PDF都是免费开放的学习资源。《剑指Offer》适合快速复习面试常考题型代码随想录则对题型的总结和模板化写法讲得很清楚特别适合备考时间紧的同学。6. 常见问题与避坑经验实录6.1 笔试环境与突发状况处理我参加笔试的那天最大的突发状况是开始前5分钟发现摄像头指示灯不亮。当时心跳直接飙升后来检查发现是浏览器权限设置问题chrome的摄像头权限被默认禁用了。这里给大家一个建议提前一天在牛客网的“设备测试”页面把所有硬件检查一遍包括摄像头、麦克风、屏幕录制权限。笔试开始前再确认一次能避免多数硬件问题。另外牛客网笔试过程中系统可能会弹出“切屏警告”。这个警告一般在检测到浏览器切出到其他页面时触发比如不小心中断了考试页面的焦点。我当时虽然没遇到但同批次有同学因为电脑上开了其他软件弹出了一个系统通知导致切屏警告他当时还算镇定没有在后续操作中被系统判定为作弊。这里我的建议是笔试当天关闭所有非考试必需的软件尤其是微信、QQ等可能弹出消息的应用并且把操作系统的通知中心设成免打扰模式。6.2 做题策略与心态调整笔试过程中的心态问题经历过的同学应该都懂。编程题一旦卡住很容易陷入焦虑越焦虑越写不出来。我的处理方案是“先拿住能拿的分。”如果第三题想了15分钟完全没思路就直接写一个复杂度正确的暴力解法确保至少通过部分测试点。一般来说笔试评分系统是分测试点给分的部分通过也是分数放弃整题才是最亏的。另外还有一个细节编程题的“代码编辑区”默认可能会有一些模板代码不要盲目删除。我见过有人把主类名或主方法的模板改了导致编译失败。正确的做法是仔细阅读代码编辑区顶部的注释它通常会明确说明你不需要修改哪些部分、只需要补充哪些函数。如果题目要求采用“核心代码模式”而非“ACM模式”那你甚至不需要写输入输出直接完善指定函数即可。6.3 笔试后的跟进与复盘笔试结束后很多同学会忽略复盘环节。实际上复盘是提升面试通过率的重要一步。我当时笔试结束后做的第一件事不是干等结果而是快速回忆所有题目把编程题的代码思路整理到备忘录里。后来技术面试中面试官问到了我笔试时第三题的解法因为当时认真复盘过我不仅能复述思路还能针对面试官的追问展开解释面试体验明显加分。所以我的建议是笔试结束后24小时内趁记忆还清晰把选择题中不确定的知识点和编程题的算法思路完整记录下来。这不只是为了下一次笔试更是为了即将到来的面试做准备。vivo的面试官手上有你的笔试记录针对笔试中的题目进行追问是家常便饭。7. 关于vivo秋招笔试的个人体会与建议写到这里我想再分享几点个人体会。第一vivo软件岗笔试的难度在同级别手机厂商中属于中等偏上但它的题风相对稳健不会出现特别偏门的考法。这意味着只要你把基础打得足够牢笔试成绩就不会差。相反如果抱着“考前突击刷题”的心态去裸考大概率会在选择题的细节题和编程题的第三题上翻车。第二笔试只是整个求职环节的开端不要因为笔试成绩不理想就丧失信心。我见过不少笔试一般、但在面试中表现优秀最终拿到offer的案例。笔试的目的是帮你争取面试机会而面试是更综合的考察包括你的表达能力、项目经验、逻辑思维和工程素养。把笔试当作一次自我检验考完后仔细复盘把暴露出来的问题在面试前解决掉这才是这笔经历最大的价值。第三无论你最终是否拿到vivo的offer秋招期间刷题、复盘、笔试面试的经历都会让你成长很多。我身边不少朋友都是经历了多家公司的笔试后才逐渐找到感觉的——第一次笔试紧张得手抖第五次笔试已经能从容地分配时间和控制情绪。这种进步是刷题之外最大的收获。最后如果正在看这篇文章的你准备参加下一届秋招我想说现在开始刷题永远不晚。每天2道题坚持两个月你会感谢那时候拼命练习的自己。如果这篇文章对你有帮助或者你有其他笔试问题想交流欢迎留言我会尽量回复。祝大家笔试顺利早日拿到心仪的offer。