ARTICLE DETAIL

资讯详情

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

交银金科后端岗笔试复盘:考点、编程题与避坑指南

交银金科后端岗笔试复盘:考点、编程题与避坑指南 每年九、十月份都是秋招最热闹的时候后端开发岗的笔试一场接一场交银金科的这场笔试我印象还挺深。交银金科是交通银行旗下的金融科技子公司笔试风格既有互联网大厂那种算法题又有传统银行体系对基础知识和金融业务理解的考察整体感觉是“偏稳、偏扎实”不整花活但覆盖面很广。如果你正在准备银行系金融科技的秋招这篇复盘应该能帮你少走不少弯路。我会从题型分布、考点拆解、编程题实战、金融特色题这几个维度展开顺便把我踩过的坑和一些复习建议一起写出来希望对你有用。1. 笔试基本情况与备考思路1.1 交银金科后端岗笔试的整体定位先说结论交银金科这场笔试不像互联网大厂那样动辄三小时四道Hard题也不像部分国企纯考行测和英语。它的整体定位是“专业能力n部分行测”的混合体技术部分占比很高但算法难度中规中矩更看重基础知识的广度和编码基本功。我记得当时考试时间还是比较充裕的大概两个小时左右题型包括单选、多选、填空题和两道编程题。单选题主要覆盖Java、数据库、操作系统、计算机网络多选题则偏重一些容易混淆的概念比如TCP拥塞控制、MySQL隔离级别、JVM内存区域这些。编程题不是那种需要复杂算法的竞赛题更像是业务里常见的逻辑处理题只要基础扎实、代码规范拿满分并不难。另一个值得注意的点是交银金科会结合金融场景出一些业务设计题或者场景问答题比如让你设计一个支付对账流程或者分析某个分布式事务方案的优缺点。这类题目如果不提前准备现场容易懵因为课本上不会直接讲。所以备考思路不能只看算法要把计算机基础、数据库原理、Java进阶、分布式基础以及金融业务常识串起来。后面我会把每个模块的重点详细列出来。1.2 题型分布与时间分配技巧从公共题库反馈和实际考试体验来看题型大致可以分成四块专业客观题单选多选约40%-50%的分数占比。覆盖Java、数据库、计算机网络、操作系统、数据结构。填空题/简答题少量可能是让你补全某段代码的某个条件或者写出某个Linux命令的作用。编程题两道一道偏算法/数据结构一道偏业务逻辑模拟总分占比大概30%-40%。行测/性格测试视批次而定部分批次会有但不影响专业排名主要做参考。时间分配上我建议客观题控制在40分钟以内因为很多题一眼就能看出答案犹豫太久反而浪费时间。填空题和简答题控制在10-15分钟。剩下至少50分钟留给编程题。编程题一定要先读清楚输入输出约定再动手写否则容易漏边界条件。有一个小技巧如果系统支持本地IDE最好在本地调试完再粘贴上去。如果不支持在线编辑器也需要先直接在脑子里跑一遍用例再提交。我见过太多人因为输出格式差一个空格被扣分非常可惜。1.3 备考资料与学习路线建议后端开发学习路线本身就很大但你要针对银行系金融科技笔试可以适当做减法。我当时用的资料是Java基础看《Java核心技术》和JavaGuide的面试题总结数据库看《高性能MySQL》的前几章和索引优化相关博客网络和操作系统就看小林coding的图解系列算法刷的是LeetCode Hot 100和剑指Offer第二轮。这里特别强调一下交银金科对Java技术栈的偏爱非常明显。虽然岗位写的是“后端开发”但几乎所有客观题都围绕Java展开很少涉及Go或C。如果你主语言是Java优势会很大。如果是其他语言建议抽时间把Java语法和集合框架过一遍至少能看懂代码、能写简单的类。另外要关注金融科技特有的知识比如安全方面加密算法、认证授权、支付清结算概念、分布式事务、微服务治理。这些不会考得很深但一定会涉及。2. 核心考点拆解技术基础是重头戏2.1 Java基础与集合框架的考察深度Java基础这部分真题的考察深度让我有点意外它不是简单问“equals和有什么区别”这种烂大街题而是喜欢结合代码场景出题。比如给一段代码让你判断输出结果考点涉及静态代码块、构造代码块、继承时的初始化顺序、try-catch-finally中return的执行顺序等。另一个高频考点是集合框架。我印象很深的一道多选题是关于HashMap以下说法正确的是选项包括底层是数组链表红黑树扩容因子是0.75put操作在链表长度超过8时会转红黑树JDK1.8中HashMap是尾插法。这些都是基础知识点但如果你只背结论、不看源码可能就会在“链表长度超过8”这个选项上犹豫因为实际上还要满足数组长度大于等于64才会树化。所以复习Java基础的时候不能只看面经要尽量多看源码注释和实际执行逻辑。推荐把HashMap、ArrayList、LinkedList、ConcurrentHashMap这几个类的源码大体看一遍不需要每个方法都懂但核心数据结构、扩容机制、线程安全实现方式必须能说清楚。2.2 数据库与SQL索引和事务是高频重点数据库在交银金科笔试中占比非常高几乎每套题都会考到索引和事务。索引这块考点包括聚簇索引与非聚簇索引的区别、联合索引的最左前缀原则、覆盖索引的作用、索引失效的场景。我当时遇到的一道题就是给出一条SQL问哪个条件会导致索引失效答案是“对索引列使用了函数”和“隐式类型转换”。事务这块ACID四个特性肯定要熟记但更常考的是隔离级别和MVCC。比如MySQL默认的隔离级别是什么可重复读和读已提交的区别MVCC如何实现快照读还有间隙锁解决幻读的原理。这些属于后端开发的经典八股但交银金科会结合业务题来考比如问你一个金融转账场景应该选什么隔离级别。SQL题一般会有一道写SQL的填空或简答常见考法是查一个表的某种聚合结果比如“查询每个用户的累计消费金额排名前5的用户信息”。这种题要用到窗口函数ROW_NUMBER()或RANK()如果你没接触过窗口函数可能会卡住。建议专门练习一下窗口函数银行类笔试很喜欢出这种涉及分组的SQL。2.3 操作系统与计算机网络核心概念不超纲操作系统部分考得比较基础主要是进程和线程的区别、死锁的四个必要条件、进程间通信方式、虚拟内存和分页、进程调度算法。这些知识点只要大学课堂没白上基本都能拿分。其中最值得注意的可能是死锁和并发相关题目因为后端开发里并发编程太常用了笔试喜欢把操作系统并发和Java并发放一起考。计算机网络部分TCP三次握手和四次挥手是必考但不会直接问你过程而是问你某个字段在哪个状态发生改变或者某个flag位为1时表示什么。还有HTTP和HTTPS的区别、TCP和UDP的区别、输入一个URL到页面展示的整个过程。我遇到的一道选择题是TCP流量控制和拥塞控制的区别选项设计得容易混淆其实一个是接收方能力一个是网络负载。另外金融科技非常关注网络安全所以SSL/TLS握手流程、非对称加密和对称加密的区别也可能出现。建议复习的时候把HTTPS握手过程讲清楚把数字证书的作用、CA的角色也要理解。2.4 中间件与分布式基础金融场景的必考项银行系金融科技和互联网业务最大的不同就是系统对一致性、可用性、安全性要求极高。因此笔试里面会涉及一些分布式基础比如CAP理论、BASE理论、分布式事务的几种实现方式2PC、3PC、TCC、本地消息表、MQ事务消息。我印象里有一道多选题就是关于TCC的问你在金融支付场景中TCC的Cancel阶段应该做什么选项有“回补库存”“冻结资金”“发送短信通知”“写操作日志”。这种题如果只看理论不去想业务很容易选错。实际上TCC的三个阶段分别对应Try资源预留、Confirm确认执行业务、Cancel取消预留资源并回滚Cancel阶段不会真正扣钱也不会发短信而是把Try阶段预留的资源释放掉。所以复习分布式事务一定要结合账务、支付、库存这类经典场景去理解。此外RocketMQ或Kafka的基本概念也可能考到比如消息队列的作用解耦、异步、削峰、消息重复消费和顺序消费的问题。Redis部分重点突击缓存穿透、缓存击穿、缓存雪崩以及分布式锁的实现这些几乎就是后端开发的必考题。交银金科没有深挖源码只要你能把原理说清楚面试不是问题笔试客观题更轻松。3. 编程题实战两道题决定你能不能进面试3.1 典型算法题复盘不硬核但考察细节从我抽到的题目来看第一道算法题是“求字符串中第一个只出现一次的字符”算是LeetCode简单到中等等级的题。如果只是暴力双重循环也能过但题目要求时间复杂度O(n)意味着你需要用HashMap或者数组做计数。这种题其实没什么难度但恰恰容易在边界条件上出错。比如字符串可能为空、可能含有大写字母或者字符范围不只是26个字母而是覆盖ASCII全集。如果你用int[26]而没有考虑大写字母就会越界或者计数错误。所以笔试第一题别急着写先想清楚字符集和边界。更好的做法是直接用HashMapCharacter, Integer遍历一次统计频率再遍历一次找第一个频率为1的字符返回下标找不到返回-1。时间复杂度O(n)空间复杂度O(n)完全满足要求。最好把方法命名为firstUniqChar符合业务直觉。还有一个小细节遍历字符时用for循环和charAt会比用split成数组更高效虽然笔试不卡这点但写出来更专业。3.2 业务逻辑模拟题按步骤拆解输出格式很重要第二道编程题更像一个业务题我记得是“模拟一个简单的银行账户转账系统要求判断转出账户余额是否足够并处理多笔转账请求最后输出每个账户的最终余额”。输入是账户信息列表和交易记录列表输出是排序后的账户余额列表。这类题考察的不是算法而是你对数据处理和状态更新的掌控力。我当时的思路是用一个HashMapString, Long保存账户ID到余额的映射初始余额从输入中录入。遍历每笔转账记录解析出转出账户、转入账户、金额。判断转出账户是否存在、余额是否足够如果不足则跳过该笔交易或者记入失败列表具体看题目要求。更新两个账户的余额转出账户减金额转入账户加金额。最后将HashMap的entry转成List按账户ID排序输出固定格式。这里有一个容易被忽略的点金额类型应该用long而不是double因为涉及分。如果用double可能因为浮点数精度问题导致结果错误特别是金额较大时。输出格式如果要求保留两位小数而金额是整数也要特别注意。另外如果交易记录里出现不存在的账户是忽略还是报错题目如果有明确说明就按说明来没说明的话稳妥做法是忽略该笔并在代码注释里注明。这道题只要逻辑清晰代码规范完整通过不难。建议写的时候加一些辅助方法比如parseTransaction(String line)来解析交易记录增加可读性。银行类笔试一定不会只考纯算法这种贴近业务的模拟题几乎是标配值得多练习。3.3 编程题的提交与调试经验很多人在笔试现场一紧张习惯直接在编辑器里写完就提交这是大忌。交银金科的在线系统支持本地跑测试用例吗我记不清了但大部分情况下是支持在线“运行”按钮的。你至少要验证三组用例正常情况、边界情况余额刚好等于转账金额、异常情况余额不足、账户不存在。不要只测题目给的示例。另一个经验是如果卡在某个用例过不去别死磕先提交一次拿部分分再回头调。如果题目总分100通过率60%可能也有40分总比空着强。很多人的第一题过了但是第二题只过90%大厂会看排名银行系金科有时候也看排名所以每一分都重要。最后提醒一句命名和缩进要规范有的判分系统会有代码风格检查虽然不清晰但至少不要用a、b、c这种变量名写业务逻辑。用有意义的变量名能让你自己调试也更快。4. 金融科技特色题目提前补课不慌张4.1 业务场景设计题怎么答除了客观题和编程题部分批次的交银金科笔试还有一道简答或设计题给你一个业务场景让你写解决方案。我身边同学遇到的有“设计一个高并发的支付订单查询接口”“如何保证转账业务的数据一致性”“在分布式系统中如何生成全局唯一订单号”等。这类题目没有标准答案但评卷人看的不是你写了多少字而是思路是否完整。我的答题框架通常是明确核心目标性能/一致性/可用性。画出大致的模块划分接入层、服务层、存储层。阐述关键选型及原因为什么用Redis缓存、为什么用MQ削峰。指出可能的风险和应对措施缓存穿透、消息乱序、DB瓶颈。比如“全局唯一订单号”这道题不能只答“用UUID”而要说明UUID在数据库中作为主键时随机性会导致B树页分裂、写入性能下降所以常用“时间戳机器ID序列号”的方式比如雪花算法。如果能讲讲时钟回拨问题和解决方案会加分。答这种题要展示出你有后端工程思维而不只是会背书。4.2 安全与合规基础知识金融科技岗位对安全的要求比其他行业高得多笔试里偶尔会出现安全相关题。比如HTTPS为什么安全对称加密和非对称加密各自优缺点如何安全存储用户密码常见的攻击方式有哪些SQL注入、XSS、CSRF如何预防我当时遇到一道题是“注册功能如何安全存储用户密码”选项包括明文存储、MD5加密存储、MD5加盐存储、bcrypt加密存储。正确答案是bcrypt因为MD5已经不够安全加盐能缓解彩虹表攻击但bcrypt自带盐且计算慢更适合存储密码。这类题提醒我们虽然你是后端开发但安全常识不能缺。复习的时候至少要把密码加密、传输加密、常见Web攻击和防御方法过一遍这些都是加分项。5. 笔试避坑与复习优先级建议5.1 我踩过的坑和同学常见失误先说说我自己踩过的坑。第一我一开始花了很多时间在LeetCode困难题上结果发现交银金科的算法题根本到不了那个难度反而基础题因为细节不牢丢分。比如HashMap的红黑树条件我记得不准确多选题少选了一个选项。第二SQL窗口函数没练熟结果考了一道Rank函数相关的题我用了子查询写了大半天险而又险后来练会了才发现用窗口函数几行就能搞定。还有几个同学反馈的常见失误在线编程题没注意输入格式多读了一行或者少读一个参数。多选题少选漏选有的题评分规则是少选得部分分但有人害怕扣分而不敢选结果丢分更多。其实只要确定正确的选项就大胆选上。时间分配不均客观题耗太久编程题最后只写了一半。不习惯在线IDE的自动补全和快捷键平时在本地IDE写惯了考场慌得连main方法都写错。5.2 复习优先级建议先保证基础分再攻特色题如果从现在开始准备交银金科这类银行金融科技后端笔试我的建议是优先级最高的依然是Java基础和数据库原理这两块占了客观题的大头。把Java基础、集合、并发、JVM核心概念过一遍数据库重点复习索引、事务、SQL书写。第二个优先级是算法题刷LeetCode Hot 100和剑指Offer高频题保证简单题秒杀、中等题能写。交银金科的算法难度不高不要本末倒置。第三个优先级是中间件和分布式记住核心概念和常见的方案特别是分布式事务、消息队列、Redis缓存。最后是金融特色题找几个支付、转账、账务系统的常见场景提前整理答题模板。如果你时间不够至少要保证Java、数据库、算法这三部分。据我了解笔试排名靠前的选手这几个模块的得分率都很高。5.3 笔试后的复盘与跟进笔试结束之后千万不要干等。建议立刻回忆并记录自己遇到的题目尤其是编程题在本地编译器重新实现一遍。因为你可能会在后续面试中遇到笔试原题或者面试官根据你的笔试答案追问你思路。交银金科的笔试结果一般一周到两周内通过邮件或短信通知期间可以准备面试中常见的项目问答、技术深挖、以及金融科技相关的基础知识。笔试不是终点只是筛选门槛真正决定offer的往往是后面的技术面和综合面。最后再分享一点个人体会我到现在还留着当时做错的一道多选题的记录题目是“哪些操作可能导致MySQL索引失效”我漏选了“使用否定条件!、not in”。那次扣分让我意识到后端开发的基础知识光靠死记硬背不够要理解优化器为什么这么做。后来我刷了很多索引失效相关的文章才算真正吃透。如果你准备参加交银金科或者其他银行系金融科技的秋招笔试心态上不用太焦虑。这类笔试更看重你是否是一个基础扎实、做事细致的人而不是一个竞赛型选手。把常见考点过一遍静下心来刷题把你踩过的坑记录下来比盲目追求题量更有效。祝你笔试顺利拿到心仪的面试机会。
返回列表