每年到了春招秋招的节点,我后台都会收到一大堆同学发来的笔试题目,让我帮忙看看思路、改改代码。前两天正好有学弟甩来一份搜狗2019秋招后端工程师的第二场编程题合集,说想让我讲讲这些题到底该怎么准备、怎么答。我重新把这套题翻出来做了一遍,结合当时笔试的现场情况,把整套题的考点、思路、做题顺序还有容易踩的坑,全部整理成了这篇文章。
先说结论:这套题放到今天来看,含金量依然很高。搜狗后端笔试一贯的风格是“题量适中、单题深度足、非常看重基础数据结构和边界处理能力”。如果你正在准备后端岗位的校招笔试,或者想检验一下自己的算法基础扎实不扎实,这套题都值得拿出来认认真真做一遍。这篇文章我会把做题的完整思路、代码实现、现场取舍讲透,同时也告诉你哪些地方是最容易被扣分的。
1. 为什么这套2019年的题到现在依然值得刷
后端工程师的算法笔试,和前端、客户端、算法岗都不一样。它不追求那种“非人类”的数学推导,也不怎么考特别偏门的套题,而是更看重你对数据结构、字符串处理、排序、哈希、树、动态规划这些基础知识的综合运用能力,以及写出来的代码是否健壮、可读、能扛边界情况。
1.1 搜狗后端笔试到底在考什么
搜狗这家公司的业务线大家都很熟,搜索、输入法、地图、AI这些。它的后端笔试题目风格也跟业务强相关。我当时做完第二场的感觉就是:这套题明显偏重字符串处理和大规模数据的处理逻辑,这和搜狗做搜索、输入法、自然语言处理的底子是完全对得上的。
整套题约四道编程题,题量在秋招笔试里算中等,但每一道题的思考深度都不低。不像有些公司动辄十道选择题加两道编程题,搜狗这四道题更像是在考察你“能不能一个人在限时条件下,把一个小型工程问题拆解清楚并落地实现”。这个能力模型,和真实的后端开发日常非常接近——你在公司里写需求,本质上也是把一个模糊的问题拆清楚,然后实现它。
另外值得说的是,这份题的难度阶梯设计得很典型。从第一题的“热身题”,到最后一题的“筛人题”,梯度很明显。如果你能在一个半小时内稳定AC前两题、第三题拿部分分、第四题能写暴力解,那在当时的通过率环境下已经算很有竞争力的水平了。
1.2 从题目难度阶梯看后端工程师的能力模型
我当时做完这场笔试,回宿舍复盘的时候整理过一个表,把整套题的梯度画出来就是这样:
| 题目位次 | 建议耗时 | 难度 | 核心考点 | 预期目标 |
|---|---|---|---|---|
| 第一题 | 15-20分钟 | 低 | 哈希表、字符串、边界处理 | 必须AC |
| 第二题 | 25-30分钟 | 中 | 排序、数组操作、双指针 | 尽量AC |
| 第三题 | 30-40分钟 | 中高 | 动态规划、状态设计 | 部分分或AC |
| 第四题 | 40分钟以上 | 高 | 数据结构设计、贪心+堆、大数据思想 | 暴力分,冲AC |
这个能力模型其实很有代表性。第一题和第二题考察的是基本功,哈希表、排序、字符串操作,这些是后端开发每天都要用的东西,写不熟练说明基础不牢。第三题开始上强度,考动态规划的状态设计和边界推导,这是区分“会写代码”和“会解算法题”的分水岭。第四题则是真正的拉分题,它往往结合了贪心、堆、离线处理等更复杂的角度,需要你不仅能写出正确解法,还要有时间复杂度的敏感度。
我当时在笔试现场的策略很简单:前两题我必须拿满分,第三题如果状态转移想清楚了就直接写,第四题先写最朴素的暴力版本保底,再想优化。这个策略看上去保守,但在时间有限的情况下非常实用,直接决定了你最后的总分能落在什么区间。
2. 核心考点拆解与审题技巧
刷题最忌讳的就是拿到题目直接上手写代码。我见过不少同学,一看题目觉得“这题我见过”,结果写着写着发现漏了关键条件,整段代码推翻重来,时间全浪费了。这套搜狗题特别明显的地方就在于,它会在描述里埋很多条件,你审题不仔细,后面就会吃大亏。
2.1 字符串处理:搜狗系题目最常出现的考点
先聊字符串。这套题的第一题就是一道典型的字符串操作题,而且背景非常“搜狗”:给定两个字符串,判断其中一个能否通过重排变成另一个,如果可以,再输出重排后的某种字典序结果。这种题在LeetCode上能找到很多类似版本,但搜狗把它稍微改了一点,加入了一个“指定重点字符”的限制条件——意思是重排后某个位置必须放某个字符。
这个改动的杀伤力非常大。很多人在LeetCode上刷过“有效的字母异位词”那种题,看到这题第一反应就是“数一下字符频次不就行了吗”,结果忽略了那个关键位置的限制,导致输出全错。这其实模拟的是后端真实开发里的一种情况:需求方给你提了一个大致需求,但里面藏着一两个特殊条件,你没问清楚、没注
964




被折叠的 条评论
为什么被折叠?



