FEATURED · 精选文章

同盾科技2024秋招开发岗笔试复盘:Java、SQL与风控场景题全解析

发布时间 / 2026/9/1 14:27:12
来源 / 创域科博编辑部
栏目 / 资讯中心
同盾科技2024秋招开发岗笔试复盘:Java、SQL与风控场景题全解析 作为一个经历过2024年秋招的人同盾科技这轮笔试给我的印象还挺深的。它不像有些大厂上来就是四道hard级算法题压阵也不像某些公司笔试全是八股文默写。同盾这套题更偏向“基本功扎实度业务场景敏感度”的组合考察和它做风控、反欺诈的基因是对得上的。这篇文章我就把整个笔试的复盘、题目类型拆解、答题思路、以及我踩过的坑全部整理出来给后面准备风控类、大数据类开发岗的学弟学妹们做一个参考。先说结论同盾科技的开发岗笔试整体难度在秋招里算是中等偏上一点点时间给得不算宽裕题量不小覆盖范围广。如果你只刷LeetCode热门题、完全不做场景题准备很可能会在前面算法题上花太多时间后面的大题和简答题写不完。这是一场非常考验“时间分配”和“知识广度”的笔试。1. 笔试整体构成与考察逻辑1.1 同盾科技笔试到底考什么同盾科技的核心业务是智能风控、反欺诈、信用评估这一套它的技术栈偏Java为主同时涉及大数据实时计算、规则引擎、机器学习模型部署等方向。所以它的开发岗笔试内容基本就是围绕“通用开发能力风控业务场景”来展开的。2024年秋招同盾开发岗的笔试题型分布大概是这样的选择题约30道覆盖Java基础、并发编程、JVM、数据结构、计算机网络、数据库、Linux常用命令。难度比牛客网上的“Java题库”稍微低一点但坑很多尤其是并发和JVM部分选项设置得非常细。编程题2道一道偏数据结构和算法一道偏场景模拟/逻辑设计。不是纯LeetCode风格第二道题特别像工作中会遇到的实际问题简化版。简答/设计题2~3道考察系统设计思路、场景解决方案或者让你写一段SQL/伪代码。这部分是整个笔试的分水岭。我当时在网上看到很多人的面经说“选择题直接用牛客背题就行”实际上不完全是。它有些选择题会结合风控场景出比如给你一个实时风控链路问你觉得哪个环节是性能瓶颈或者说在大量特征计算场景下哪种数据结构更合适。这种题如果是纯背八股很容易被绕进去。1.2 时间分配与答题策略我记得整套笔试的总时间是90分钟题量加起来差不多35~38道。90分钟做这么多题平均下来每道题只有两分多钟所以时间非常紧。这里我强烈建议一个策略先做编程题再做简答题最后做选择题。原因很简单编程题分值最高而且需要比较完整的思路和时间。如果放到最后做很容易因为时间不够而写不完核心逻辑白白丢分。简答题属于“写了就有分”的题型只要你思路清晰、要点踩对就算代码有瑕疵也能拿大部分分。选择题虽然多但很多是概念题凭记忆和直觉就能快速选出。把它放在最后即使压缩了时间损失也可控。我实际考试的时候先花30分钟做两道编程题然后花20分钟做简答/设计题最后留了差不多40分钟做选择题刚好卡着时间点交卷。如果你反过来先做选择题大概率会出现编程题只能写个半成品的情况那就很亏了。2. 核心知识点拆解与备考重点2.1 Java基础与并发编程别只背“八股”要理解底层同盾的选择题里Java部分占比很大。具体来说我遇到的考点集中在以下几个方面。集合框架是必考的。比如HashMap在JDK7和JDK8之间的区别、ConcurrentHashMap的锁粒度变化、ArrayList和LinkedList在插入删除时的性能差异。这些题目单独拿出来都不难但同盾的出题方式喜欢给一段代码让你判断输出结果。比如给你一段用HashMap存储自定义对象、但没有重写hashCode()的代码问你会出现什么现象。这种题考察的就是你是否真正理解“哈希值决定存储位置equals决定是否相等”这一对核心逻辑。并发编程部分是重灾区。同盾特别爱考volatile、synchronized、ReentrantLock的差异以及线程池的参数设置。我印象很深的一道题是给你一个线程池核心线程数2、最大线程数5、阻塞队列容量10问提交15个任务时任务的执行顺序是什么。这道题很多人会答错关键在于理解“先核心线程、再阻塞队列、再最大线程数”的处理顺序。就这个知识点我建议备考时把《Java并发编程的艺术》里线程池那一章吃透比刷十道面经题都管用。JVM部分主要考内存区域划分、垃圾回收算法、类加载过程。同盾不太会考特别偏门的问题但会给你一段代码问你创建的对象在哪个区域、什么时候会被回收。如果你对“栈管运行、堆管存储、方法区存类信息”这个概念不够清晰很容易在 Eden区、Survivor区、老年代的流转过程上卡壳。我自己的体会是准备Java相关笔试不要只停留在“记住结论”的层面。比如volatile为什么能保证可见性、为什么不能保证原子性你得能从内存屏障或者MESI协议的角度解释出来。笔试题目一变花样只有真正理解底层原理的人才能稳拿分。2.2 数据库与SQL优化风控场景下的高频考点数据库部分在同盾笔试里的比重不低尤其是SQL优化和索引失效的问题。这和公司的业务强相关——风控系统要查的设备指纹、IP库、交易记录表动辄就是千万级甚至亿级的数据量SQL写得好不好直接影响线上接口的响应时间。我遇到的数据库考点主要有三类第一类是索引失效的经典场景。比如在索引列上使用函数、隐式类型转换、LIKE前置通配符、OR连接非索引列哪些会导致索引失效。这类题属于“背了就会”但需要记扎实。第二类是SQL编写。它给一个表结构比如用户表、订单表、风控命中记录表让你统计“某个时间段内命中规则次数超过N次的用户”。这种题考察的是JOIN、GROUP BY、HAVING的综合应用以及你对聚合逻辑的理解。写SQL时要注意GROUP BY的字段要和SELECT的非聚合字段保持一致HAVING是在分组后过滤、WHERE是在分组前过滤两个搞混了结果就错了。第三类是慢查询优化的分析题。它给出一段慢SQL和表结构问你有哪些优化方案。我的答题套路是先看有没有全表扫描加索引解决、再看有没有回表过多用覆盖索引解决、然后看有没有filesort用ORDER BY字段和WHERE条件建联合索引解决、最后看数据量是否过大考虑分页或分表。把这个思路写完整即使不是最优答案也能拿到大部分分。2.3 计算机网络与操作系统高频考点相对固定计算机网络和操作系统这两块同盾考得比较常规但覆盖面广。网络部分我遇到的考点有TCP三次握手/四次挥手的状态变化、TCP和UDP的区别与适用场景、HTTP和HTTPS的差异、DNS解析过程。操作系统部分则集中在进程和线程的区别、死锁产生的必要条件、虚拟内存和页面置换算法。值得注意的一点是同盾的计算机网络题目有时候会结合场景出。比如它会问一个风控接口调用第三方数据源耗时波动很大可能的原因有哪些这时候TCP队列溢出、连接复用失效、DNS解析延迟、GC停顿导致的线程阻塞都是值得写的点。这种题没有标准答案主要看你知识面的广度。操作系统里“进程和线程的区别”这种基础题肯定会考但更值得注意的是上下文切换和锁竞争相关的题。比如多线程高并发场景下为什么线程数不是越多越好因为CPU上下文切换的开销会增大甚至超过任务执行本身的时间。答案是“上下文切换”不是“内存不够”。这类题坑就坑在选项里会有好几个看似沾边的干扰项。3. 算法题实战复盘3.1 第一道编程题最长连续序列变种同盾笔试的第一道编程题和我刷过的LeetCode 128题“最长连续序列”非常相似但加了点风控业务背景——它改成“给定一批设备ID的上报时间戳找出最长的连续活跃天数”。题目核心本质是给定一个无序数组时间戳去重后求最长连续递增序列的长度。这道题最优解法是用HashSet去重一次遍历时间复杂度O(n)。我当时写的核心思路是这样的public int longestConsecutive(int[] nums) { SetInteger set new HashSet(); for (int num : nums) { set.add(num); } int longest 0; for (int num : set) { // 关键只从连续序列的起点开始找 if (!set.contains(num - 1)) { int currentNum num; int currentLen 1; while (set.contains(currentNum 1)) { currentNum; currentLen; } longest Math.max(longest, currentLen); } } return longest; }这里最关键的是找到连续序列的起点。如果你遍历每个数都往两边扩展时间复杂度会退化到O(n²)。而先判断!set.contains(num - 1)保证每个数只被访问一次整个算法就是严格的O(n)。这道题我踩过的一个坑是没有先对数组去重就直接排序导致重复元素干扰了连续判断。后来改成HashSet存储天然去重问题就解决了。如果你做题时也遇到类似情况一定要先考虑输入数据是否存在重复元素这往往决定算法能不能AC。3.2 第二道编程题规则命中统计场景模拟题第二道编程题就很有同盾特色了。它给定一组风控规则每个规则有规则ID、触发条件、优先级再给一批事件数据每个事件有用户ID、事件类型、事件属性要求统计每个用户命中了哪些规则并按规则优先级输出。这题本质上是一个多条件匹配分组聚合的问题。我的解题思路是把规则解析成“条件对象”每个规则包含一个或多个条件字段名、操作符、阈值。遍历事件数据对每个事件依次判断是否满足规则。这里我用了“短路判断”一旦某个条件不满足就提前跳出避免无效计算。命中后按照用户ID分组记录命中的规则ID最后按优先级排序输出。需要注意的细节是同一用户可能命中同一条规则多次需要做去重处理或者题目要求“最近一次命中”等其他逻辑读题的时候要看清楚。我考试时就因为没仔细看这一句导致排序结果和预期输出对不上改了好一会儿。这类场景模拟题在牛客上直接搜“风控规则引擎”不一定有原题但它的套路和“日志聚合统计”类题目完全一样。建议备考时多练多思考不同维度分组统计、优先级排序、条件组合匹配这类能力才是核心。3.3 手写代码的注意事项在线笔试的手写代码和你在本地IDE里写代码完全是两回事原因主要是没有自动补全、没有编译提示、不能随时运行验证。所以平时练习时就要养成“手写代码也能一次通过”的习惯。我总结了几条实操经验变量命名要“自解释”。比如用longestStreak而不是max用isMatched而不是flag。笔试时没人给你代码评审但清晰的命名能降低你自己写错逻辑的概率。边界条件一定要处理。数组为空、只有一个元素、数值溢出、字符串为空串这些情况都要在动手写主逻辑之前考虑清楚。能用简单解法就先写简单解法。如果第一遍写出O(n²)的解法发现时间不够可以先提交保底分不要一开始就死磕最优解。我认识不少同学编程题明明会做但因为环境不熟悉、没处理好输入输出格式最后0分。同盾的笔试平台是牛客网输入输出要自己写Scanner或BufferReader这个和力扣直接填函数完全不一样考前一定要上牛客网熟悉IO写法否则慌起来连nextLine()和next()的区别都可能搞混。4. 场景设计与业务题拉开差距的关键4.1 风控系统设计题的答题框架同盾的简答题里有一道非常典型的系统设计题。题目原型大概是设计一个实时风控系统要求在高并发下对交易请求做实时拦截延迟要低、准确率要高问你会怎么设计。这类题目没有标准答案但阅卷人看的是你的思维框架是否完整。我建议按下面这个框架来回答第一层整体链路。从请求进入开始经过参数校验、设备指纹采集、规则引擎匹配、模型打分、最终决策、异步上报每一步都要讲清楚。第二层核心组件选型。规则引擎可以用Groovy脚本动态编排也可以基于Drools或者自研一套可配置的规则DSL。特征存储用Redis或内存网格实时计算用Flink或Storm消息队列用Kafka。第三层性能优化手段。包括规则本地缓存、特征结果复用、异步日志上报、多级降级方案模型超时直接走规则兜底、以及弹性扩缩容策略。第四层数据一致性与监控。比如Redis和数据库的数据一致性怎么保障规则变更如何准实时生效整个系统的监控指标接口RT、命中率、规则超时率怎么设计。我当时就把这四个层次按顺序写了出来每个层次下补充了一些具体的技术选型和理由。虽然不知道阅卷标准但至少展示出了一个从业者该有的全局视野。4.2 一道SQL场景题的详细解析除了系统设计同盾还考了一道SQL场景题给出了三张表用户表、借款申请记录表、风控黑名单表要求查询“2024年8月被黑名单命中的用户他们的借款申请通过率是多少”。这道题考察的是多表关联条件过滤聚合计算。我的答案是SELECT COUNT(CASE WHEN status APPROVED THEN 1 END) * 1.0 / COUNT(*) AS pass_rate FROM application a JOIN user u ON a.user_id u.user_id JOIN blacklist b ON u.user_id b.user_id WHERE a.create_time 2024-08-01 AND a.create_time 2024-09-01这里有几个关键点用JOIN blacklist而不是WHERE user_id IN (SELECT user_id FROM blacklist)是因为JOIN通常比子查询效率更高。计算通过率时一定要加* 1.0否则整数除法会直接取整结果变成0。用 AND 而不是BETWEEN可以避免时间精度问题。如果你在笔试中遇到类似的SQL题先从“表之间的关系”入手再想“过滤条件怎么下推”、“聚合怎么计算”基本就能把思路理清楚。5. 常见问题与避坑实录5.1 在线笔试环境的“隐形坑”在线笔试平台的坑不真正经历一次是很难意识到的。第一个坑是输入输出的格式问题。牛客网不同的题目输入格式可能完全不同有的用空格分隔、有的用逗号分隔、有的需要你处理多行输入。如果解题思路完全正确但Scanner读错了格式照样是0分。第二个坑是代码无法本地运行。有些平台可以跑测试用例有些需要你手动调试。建议考前先做一套模拟题体验一下题目的读取和提交方式。第三个坑是网络不稳定导致提交失败。考试时如果提交代码一直转圈不要反复点提交先检查代码里是不是有死循环或者过大的遍历否则反复提交占用的时间会让你崩溃。遇到网络问题第一时间截图存档联系HR说明情况大多数公司都会给你补考机会。5.2 时间不够用的应对策略根据我和身边同学的反馈同盾这套题很多人都觉得时间不够用。如果你也遇到这种情况下面这几招可以救急编程题如果第二道暂时没思路先写一个暴力解法或部分通过的用例。牛客的OJ是“按通过用例比例给分”的先拿保底分。简答题不要求写完整代码把思路、关键步骤、可能出现的问题写出来也能拿分。不要空着。选择题不会的别纠结直接蒙一个跳过。一道选择题2分不值得为了它丢掉后面8分的设计题。我当时就是卡在第二道编程题上差点把简答题的时间挤没了。后来果断放弃“最优解”转用“分组暴力排序”写了一个能跑通的版本拿了部分分然后赶紧去做简答题。笔试比的是总分不是一个题目完美。5.3 考后复盘与后续准备笔试结束不代表这个岗位就结束了。复盘时我建议你把当时没做出来的题目重新写一遍尤其是场景模拟题和SQL题因为复面的面试官很可能拿着你的笔试答卷来提问。我有个同学就遇到过这种情况笔试时系统设计题只写了框架没细化面试时面试官直接追问“你这套方案怎么保证规则变更实时生效如果决策引擎挂了怎么办”你要是笔试结束后不复盘这些问题基本答不上来。另外同盾科技的面试流程里笔试成绩和面试有一定关联性。笔试中算法题AC情况、SQL题完成度都可能在后面技术面中被拿出来聊。所以“考完就扔”是大忌。6. 总体的心得与建议同盾科技这套开发岗笔试给我最大的感受是它不是一个纯刷题就能搞定的考试。算法题只是基础门槛场景题和设计题才是筛选真正“能做业务开发”的候选人的关键。如果你只会写LeetCode不理解风控系统里“规则引擎、特征计算、实时决策”这些业务关键词背后的技术逻辑后面的简答题会很吃亏。如果你准备投递同盾或者类似的风控/金融科技公司开发岗我建议在常规八股文算法刷题之外额外花点时间做三件事去了解一下行业主流的规则引擎实现原理比如Drools、Groovy脚本、Aviator表达式引擎想想它们各自的优缺点和适用场景。好好练一下SQL特别是GROUP BYHAVING的组合、多表JOIN、窗口函数这是笔试和面试的高频考点。把分布式系统的基础知识缓存、消息队列、分布式锁、幂等设计过一遍因为系统设计题基本逃不开这些组件。最后再说一个小技巧笔试时边上放一张白纸和一支笔遇到分析题先画图理思路再写答案比直接在答题框里敲要清晰得多。我个人用过几次尤其是做系统设计题时先画出请求链路和数据流向写着写着思路就通了。这个习惯我一直保留到现在工作中做技术方案设计依然在用它。2024年秋招的同盾科技笔试复盘下来其实和其他做B端金融科技的公司大同小异。核心考察的是项目落地能力和基础功底的结合。希望这篇复盘能帮到后面准备笔试的同学按这个方向去准备大概率能拿到一个不错的笔试成绩。
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻