最近刚带一位学员做完一场 Citadel Online Assessment 。这位同学是 北美在读 CS 硕士背景,平时算法基础还不错,但量化公司 OA 经验不算多,这位学员整场做下来 十来分钟就全部 AC,整体还是比较顺利。下面把这次 OA 里比较有代表性的两道题思路简单整理一下,给准备 Citadel 或类似量化公司笔试的同学一个参考。
最多 k 次替换求最优
题目描述
根据工作日程安排,计算在最多 k 个额外工作日下可获得的最大总收益。工作规则:连续工作日获得固定日薪 + 奖金,中断后重新计算。
解题思路
统计原有工作日天数 cnt1 和连续工作段数 runs。若原无工作日,则直接计算 k 天内收益。否则收集各段间空闲天数,优先用 k 填补较短空闲以合并工作段(减少 runs),剩余 k 用于增加工作日。最终总收益 = (固定日薪 + 奖金) × 总工作日 – 奖金 × runs。
内存块的所有有效大小
题目描述
给定内存块数组,找出所有可能的有效内存块大小,使得分配后满足特定条件(涉及计数和可用空间判断)。
解题思路
统计每个值出现的次数,遍历计算累积可用计数 M。根据 M 和数组长度 n 以及 cnt[0] 的情况,依次添加 0、1 到 M 范围内的值,以及可能的 n-1 和 n 作为有效大小。
OA 笔试卡题怎么办
整体来看,Citadel 这场 OA 难度其实没有想象中夸张,关键还是思路要快、代码要稳。很多同学在做量化公司 OA 的时候,往往不是题不会,而是容易在几个地方卡住。如果担心自己在正式笔试时 卡思路、调 bug 太久或者时间不够,现在也有不少同学会提前找一些 OA 实时协助 一起准备,如果你最近正好要做 量化公司 OA / 大厂 Coding Test,欢迎联系我们了解。