尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

浩鲸科技校招研发岗笔试复盘:题型分布、高频考点与编程题解法

浩鲸科技校招研发岗笔试复盘:题型分布、高频考点与编程题解法 又是一年秋招季不少同学在群里问浩鲸科技的笔试该怎么准备。我翻到自己当年整理的那份浩鲸科技2019校招普通研发类笔试题复盘发现很多内容放到现在依然有参考价值。这家公司的前身是中兴软创后来引入阿里投资更名浩鲸科技主做电信运营商和政企的B侧软件与数字化解决方案研发岗笔试风格和一线互联网大厂有明显区别——不追求“恶心人的难题”更看重基础功的扎实程度和工程思维的完整性。这篇文章不打算只贴卷面回忆我会把题型分布、高频考点、编程题解法、刷题路线全部串起来讲适合正在准备校招或想了解传统B2B软件公司笔试风格的同学参考。1. 先搞清楚这是一家什么样的公司再谈笔试1.1 公司背景决定出题风格浩鲸科技的前身中兴软创多年深耕电信行业OSS/BSS系统这类业务的典型特征是业务逻辑复杂、系统稳定性要求高、项目周期长。研发人员日常接触最多的不是高并发秒杀而是海量数据的批处理、接口协议的对接、业务规则的梳理。所以校招笔试很少看到“设计一个支持千万QPS的系统”这种题更多是考察你对数据结构、操作系统、数据库、网络这些基础课的理解是否到位。2019年这个时间点比较特殊正好是公司更名后大规模校招的阶段笔试整体难度属于中等偏上。和同期阿里、腾讯的笔试比起来明显更“亲民”题目基本都在经典教材范围内不会出现那种需要竞赛经验的刁钻题。但要注意题目常规不代表容易过因为题量不小选择题的陷阱也不少节奏控制不好照样翻车。1.2 笔试整体结构与现场体验普通研发类笔试我当时做下来整套卷子大致分三块计算机基础选择题、编程题、逻辑或开放题。总分100分左右编程题占比接近一半。考试时长一般120分钟有些批次会压缩到90分钟平台多用赛码网或牛客网也有部分场次是公司自研的在线评测系统。说一个很多人在考场上容易忽略的点在线笔试系统通常不允许跳出页面切屏次数多了会被警告甚至强制交卷。我当年就见过有同学习惯本地IDE调试切来切去被系统标记最后成绩作废。建议提前一周就适应牛客网那套在线编辑器把代码补全、断点调试这些习惯改掉练习在浏览器里写代码。时间分配上我个人的经验是选择题控制在45分钟左右编程题留足60分钟以上剩下时间给逻辑题和检查。如果选择题超过50分钟还没做完果断蒙上几个赶紧进编程题编程题一道满分就顶选择题十道这个账要算清楚。2. 选择题部分计算机基础的广度和细节2.1 数据结构与算法树、排序、哈希是重头浩鲸的选择题范围非常“教科书”数据结构与算法大概占到三分之一最常考的集中在三块二叉树遍历、排序算法特性、哈希表。二叉树必考中序/前序/后序的遍历序列推导或者给一个层序遍历结果让你判断可能的树结构。这种题没有捷径就是手动画树推演建议考前把递归和栈模拟两种遍历写法都练熟。排序算法喜欢考“稳定性”和“时间复杂度”组合判断比如问“以下哪个排序算法是不稳定的”堆排序、希尔排序、快排这类不稳定的经常混在一起。这里有个记忆技巧稳定的排序算法就记住“归并排序、插入排序、冒泡排序、基数排序”名字里带“归、插、冒、基”的都是稳定派。另外还会结合场景考比如“按成绩排序后保持原来的学号顺序”问用什么排序合适答案就是稳定排序。哈希表常考冲突处理方法拉链法和开放定址法的区别还会结合Java的HashMap问扩容机制我印象里连续两年都考了类似题目。关于HashMap重点搞清楚默认负载因子0.75、数组大小为什么是2的幂、链表转红黑树的阈值8、JDK 1.8之后尾插法解决了死链问题。这些知识点在牛客网的面经里被翻来覆去问笔试考到也不意外。2.2 操作系统与网络死锁、进程、TCP细节操作系统这部分2019年考得比较多的是死锁和进程调度。死锁的四必要条件基本是送分题但反过来问“破坏哪个条件可以预防死锁”就会刷掉一批人。四个条件分别是互斥、持有并等待、不可剥夺、循环等待破坏任意一个都能预防死锁但互斥条件通常无法破坏因为资源本身的属性决定的。银行家算法这种经典死锁避免算法也出现过考的是安全性检查序列只要理解了“剩余可用资源能不能满足某个进程的最大需求”这个逻辑就能推出来。网络部分几乎必考TCP三次握手和四次挥手而且喜欢考细节。比如“第三次握手失败会发生什么”答案不是直接断开连接而是服务器端进入SYN_RCVD状态等待超时超时后重传SYNACK重传达到上限才断开。这种题没有接触过真实排障的人很容易懵建议大家把TCP状态机在纸上完整画一遍特别是SYN_SENT、SYN_RCVD、ESTABLISHED、TIME_WAIT这几个状态的流转原因。还有个高频考点是虚拟内存页面置换算法。FIFO、LRU、OPT这三种必须会算尤其是LRU笔试里经常给一个访问序列让你写出缺页次数。计算的时候要注意初始内存为空前几个页面加载进来都算缺页这个坑每年都有人踩。2.3 数据库与Linux索引和常用命令数据库的选择题以索引和SQL为主。索引部分高频考点是“最左前缀原则”比如联合索引(a,b,c)查询条件只用b走不走索引答案是不走。还有索引失效的几种场景对索引列使用函数或运算、类型隐式转换、LIKE以通配符开头这三个要刻在脑子里。SQL题一般会给两张表问某个查询的结果集或者问某条SQL能不能用上索引。考前把内连接、左连接、右连接的差异彻底搞清楚尤其是NULL值在连接时怎么处理这个点是选择题重灾区。事务隔离级别也会涉及读未提交、读已提交、可重复读、串行化这四级对应的并发问题脏读、不可重复读、幻读要能一一对应。Linux直接考命令参数的情况比较多比如awk、grep、sed三件套的基本用法还有查看进程的ps -ef和查看端口监听状态的netstat -anp。说实话如果你平时开发不用Linux考前突击性价比很低我的建议是抓大放小——把高频命令背熟剩下的遇到不会就结合上下文猜不要在冷门参数上耗时间。3. 编程题拿到题之后的解题链路3.1 题型分布与考察重点浩鲸的编程题通常是2到3道难度梯度比较明显。第一道一般是链表或数组的基础操作比如反转链表、删除重复元素第二道是字符串或模拟题比如实现一个简单的字符串解析、日期计算第三道开始上强度常见的有DFS/BFS搜索、动态规划。整体没有到LeetCode Hard的难度但第三题DP你做不出来也很正常关键是前面两道题要拿满。值得一提的还有输入输出格式。在线评测系统里很多同学挂在不规范的数据读取上。比如输入第一行是一个整数n接下来n行是数据如果你没读第一行直接开始读后面的数据整个程序就偏了。建议养成一个习惯拿到题目先看清楚输入的第一行是什么要不要外层套while处理多组测试用例。牛客网的笔试尤其喜欢考这种“规范输入”和LeetCode直接把参数传进函数体完全不一样。3.2 典型题目思路演示反转链表第一道编程题大概率是类似的经典链表题这里以反转链表为例讲一下考场上怎么快速写出两种解法。迭代法思路非常直接当前节点的next指向前一个节点然后整体往后移动直到走到链表末尾。public ListNode reverseList(ListNode head) { ListNode prev null; ListNode curr head; while (curr ! null) { ListNode nextTemp curr.next; curr.next prev; prev curr; curr nextTemp; } return prev; }递归法核心在于把“反转整条链表”拆成“反转第二个节点开始的后半段再把头节点接上”代码更短但递归栈容易让新手绕晕。考场上如果时间紧张建议直接写迭代版不容易出错而且空间复杂度O(1)也是加分项。写完代码后一定要在样例上手动走一遍比如链表1-2-3看prev和curr的移动过程是否符合预期这一步能拦住大量边界情况错误。3.3 典型题目思路演示最长不含重复字符的子串第二道题如果出到字符串很可能会出现“最长不含重复字符的子串”这道题。它用滑动窗口做是典型的“看似不难但写错边界很可惜”的题目。思路是用一个哈希集合或数组记录窗口内出现的字符右指针不断向右扩展遇到重复字符时左指针向右收缩直到重复字符被移出窗口每次更新窗口长度的最大值。def lengthOfLongestSubstring(s: str) - int: window set() left 0 ans 0 for right in range(len(s)): while s[right] in window: window.remove(s[left]) left 1 window.add(s[right]) ans max(ans, right - left 1) return ans这道题有两个常见错误一是忘记在左指针收缩时从集合里移除字符二是把ans的更新放在收缩操作之前导致结果偏大。这类滑动窗口题的核心就是维护“当前窗口合法”这个不变量理解了这一点类似的题都能应付。3.4 动态规划题写出状态定义就有分第三题如果考动态规划基础版本大概率是背包问题、爬楼梯、最小路径和这几种。以01背包为例考场上即使不能AC也一定要写出状态转移方程这就足以说明你具备DP思维。01背包的状态定义是dp[i][j]表示前i个物品放入容量为j的背包能获得的最大价值。状态转移方程是dp[i][j] max(dp[i-1][j], dp[i-1][j-w[i]] v[i])其中w[i]是第i个物品的重量v[i]是价值。如果j w[i]则只能不取即dp[i][j] dp[i-1][j]。笔试的时候时间不够可以把二维DP先写出来一维滚动数组优化可以放在代码注释里写上这是给阅卷人看的信号。判题系统只认AC不认注释但有些公司的笔试题后面还有人工筛选简历的环节有注释能体现你真的理解优化思路。这里也说句实在话如果DP确实不熟优先保证前面题目全对比第三题死磕拿部分分划算。4. 逻辑题与开放题拉开差距的地方4.1 经典逻辑题的思考方式浩鲸的笔试卷里时不时会夹带一两道看似和生活相关的逻辑题比如经典的“两个水桶互相倒水得到指定容量”“1000瓶药中有一瓶毒药最少需要多少只小白鼠”这类。这类题考察的信息论和状态搜索思维刷题的时候遇到就积累不刷也没关系考场上先写推理过程再给答案能拿一分是一分。举一个最常见的例子“8个球1个略重用天平最少几次找出重球”答案是两次先分成3、3、2称3对3如果平衡重的在2个里再称一次如果不平重的在一端的3个里从中任取2个称一次即可。我当年见过类似的题在笔试里反复出现这类题的核心就是每次称量尽量让三种结果左重、右重、平衡的信息量最大化也就是二分或三分思想的变体。答题时务必把推理步骤列出来不要只写一个数字。因为机器判题判不了这类题一般是人工阅卷你写了推理过程阅卷人一眼就能看出思路对不对分数自然不一样。4.2 开放题不是考答案是考思维链路除了纯逻辑题偶尔还会有业务场景下的开放题。比如“如果让你给大量用户按城市分组你会怎么设计”“某个报表统计速度很慢你会从哪些方向排查”。这类题没有标准答案但答题结构是有套路的先明确约束条件再给出设计方案然后分析复杂度或风险点最后补充优化方向。拿“大量用户按城市分组”来说你可以先问清楚数据量级是百万还是亿级再决定方案比如单机用Hash分桶分布式场景用MapReduce或Spark的groupByKey然后补充一个注意点比如城市字段有脏数据需要清洗最后说如果要扩展可以考虑布隆过滤器快速过滤不存在的城市。答成这样比一句“用SQL的group by”强出一大截。要注意开放题不是“话越多分越高”而是“信息密度越高越好”。写成四大段废话不如一小段结构清晰的回答。考场上时间有限给自己5分钟打好框架再落笔别上来就写写到一半又划掉重来。5. 备考路线这样刷题不白费5.1 三个月备考周期规划不管目标公司是不是浩鲸秋招研发岗的备考节奏都差不多。我按三个月规划来拆覆盖了基础课扫盲、编程题专项、模拟实战三个阶段。阶段时间核心任务产出目标筑基期第1-4周过一遍数据结构、操作系统、网络、数据库基础能默写核心概念选择题正确率70%以上专项期第5-8周按题型刷编程题每天2-3道LeetCode中等到Easy稳定ACMedium有思路实战期第9-12周每天一套模拟笔试复盘错题控制好时间整套卷子分数稳定提升筑基期不要直接刷题先把《王道考研复习指导》里计算机基础的核心章节过一遍或者看对应的公开课。很多选择题的选项都来自教材原话你看过就有印象没看过就只能靠逻辑硬猜效率完全不同。专项期重点是编程题每天保持手感。这里提一个容易忽视的动作把做错的题统一整理成错题本标注错误原因边界没考虑、思路错误、输入输出没处理好每周末专门回刷这周的错题。错题本这个习惯我在秋招全程受益最大。5.2 选题优先级与刷题数量说到刷题没必要盲目追求数量。如果目标是传统B2B软件公司LeetCode Hot 100里的中等题刷两遍基本能应付大多数笔试。刷的时候按专题来别今天链表明天动态规划一个专题吃透再换下一个。每个专题的核心题型都过一遍链表的反转、删除倒数第N个节点、判断是否有环树的层次遍历、前中后序非递归、最近公共祖先字符串的滑动窗口、回文子串动态规划的背包、子序列、路径计数。覆盖这些编程题第一道第二道基本稳了。选择题也需要对应的刷题资料。牛客网的“计算机基础专项练习”是比较好的题库按知识点分类题目量也不小。每天用零碎时间刷50道坚持两周整体正确率会有明显变化。5.3 常见复习误区和避坑经验误区一只看不写。选择题看答案解析觉得自己都会编程题看一眼答案觉得“哦原来是这样”关上手机自己写还是写不出来。编程必须动手过一遍哪怕耗时间也要自己AC了才算过。误区二只刷题不总结。很多人刷题刷了几百道正确率没提升核心原因就是陷入“题海”但没提炼方法。每道题AC之后反问自己这题用的是什么数据结构核心思路是什么能不能抽象成更多的场景总结过的题才是你的没总结的题只是过客。误区三笔试前不模拟。很多人第一次上笔试系统就是正式考试面对不熟悉的在线编辑器和输入输出格式心态直接裂开。建议至少留出一周每天上午9点到11点固定在牛客网做一套模考完全按照考试时间走把生物钟调整到考试状态。6. 我从这场笔试里带走的几件事个人体验来说浩鲸2019年这场笔试给我最大的收获不是拿到了面试机会而是第一次意识到“稳”比“炫”值钱。选择题考的全是基础编程题出的全是经典你不需要做出多惊艳的解法只需要把该拿的分都拿到就已经能跑赢大部分竞争对手。分享一个我后来一直沿用的考场技巧拿到卷子先不急着动笔花两三分钟把每道题都扫一眼在心里给难度排序。先做有把握的再做需要思考的最后啃硬骨头。这个排序动作花不了多长时间但能避免在一道题上卡到天荒地老结果后面全是送分题却没时间做的遗憾。另外笔试之后记得做一件事——把每一家公司的题型结构记录下来。你会发现所有校招笔试套路高度重合浩鲸考了滑动窗口另一家公司可能考一模一样的变体。把这些信息整理成一个表格秋招后半程你的备考效率会高很多。这场笔试只是一个起点真正拉开差距的是你能不能从每场考试里提取到经验然后应用到下一场。
返回列表