尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

PayPal笔试复盘:外企技术岗考察重点与手写代码技巧

PayPal笔试复盘:外企技术岗考察重点与手写代码技巧 2018年春天我在交大闵行校区参加了PayPal的实习生招聘笔试。那场线下纸质笔试给我留下的印象比后来参加过的所有在线笔试都深。倒不是因为题目难到让人崩溃而是这种外企技术岗笔试的考察风格和国内互联网大厂完全不一样——它不追求偏题怪题但非常看重你把一个基础问题讲清楚的能力。如果你正在准备外企技术实习或者单纯想看看这类笔试和国内笔试有什么区别这篇复盘应该能给你一些参考。那次笔试的流程、题型分布、答题节奏甚至考场里发生的几个小插曲我都记得比较清楚。接下来就按时间线从准备阶段开始把整场笔试拆开揉碎讲一遍。1. 笔试前先搞清外企笔试和国内大厂的差别1.1 从岗位描述倒推考察重点收到笔试通知之后我没有立刻打开题库开始刷题而是先花了两天时间做了一件事研究PayPal技术岗到底想要什么样的人。这个思路看起来简单但很多人忽略。国内大厂的笔试往往侧重刷题量算法题占大头而外企的笔试会更偏“基础概念 工程素养 英语能力”的组合。PayPal是做全球在线支付起家的业务核心是账户、交易、风控、商户服务这些方向。我当时从岗位描述里提取了几个关键词Java开发、分布式系统、数据一致性、支付安全。于是把复习重心放在了四个方面数据结构与算法、Java基础与并发、数据库事务与索引、网络协议。后来证明这个方向判断基本准确——卷子里的客观题和主观题几乎都能落到这几个领域里。1.2 复习资料怎么选时间怎么分确定重点之后我给自己定了一周的复习计划。每天3到4小时不贪多但要求每个知识点都能用自己的话讲明白。资料上我没有用特别厚的书主要就是大学教材加一些经典的总结类资料。算法部分重点过了一遍链表、二叉树、排序、动态规划和字符串处理因为这几类是笔试编程题最常见的出题范围。数据库部分我多花了一点时间专门看了事务的ACID特性、四种隔离级别、索引的底层结构。后来客观题里果然考了隔离级别也考了索引相关的内容。这里有一个建议外企笔试考基础概念时喜欢在“细节”上做文章比如不仅考“什么是脏读”还会问你“哪种隔离级别能防止脏读但防止不了不可重复读”。所以复习的时候不要只背名词要把每个概念之间的差异和边界弄清楚。1.3 为什么手写代码必须专门练笔试通知里写明了是线下纸质考试这就意味着编程题要靠手写代码完成。这一点和LeetCode上刷题完全是两码事。没有编译器提示没有自动补全写错了也不会立即发现甚至字迹潦草还会影响阅卷人判断。我在考前专门用纸笔练了五六道题包括链表反转、字符串压缩、二叉树遍历这些常见题目。练习的时候强迫自己先写思路注释再写代码最后再单独检查边界条件。这个过程很枯燥但非常值得。后来考场上我写字符串压缩题时就因为平时练过才没有在最后一行代码上栽跟头。如果你准备外企笔试一定要在考前做这个“纸上编程”训练。不练的话你可能连函数签名都要想半天。2. 笔试当天交大考场的真实流程2.1 踩点、入场与签到笔试安排在交大闵行校区的一栋教学楼里。我提前一天去踩了点确认了教室位置和从校门到考场的步行时间。这个步骤别省尤其是对不熟悉交大校园的同学来说闵行校区大得很找错楼是常有的事。当天下午我提前半小时到了考场。教室门口已经排了一条队伍人手一个文件袋气氛有点像期中考试。工作人员在门口核对身份证和学生证在名单上找到你的名字后签字入场。我排在后面扫了一眼签到表发现来参加笔试的学生不只交大的还有从市区赶过来的其他学校同学。这场笔试的竞争范围比我想象中大。一个提醒证件一定要带齐。外企笔试流程比较规范缺证件基本没商量直接不让进。我那天亲眼看见一个同学因为忘带学生证在门口跟工作人员沟通了很久最后能不能进场我也不知道但光是那个折腾的过程就足够影响心态了。2.2 线下纸质考试的环境与规则教室里的桌椅是那种连排的坐进去之后空间不大胳膊肘容易碰到旁边的人不过每人之间隔开了一个空位基本不会互相看到卷面。试卷是A3纸正反面印刷装订成一份。客观题用2B铅笔涂答题卡编程题和主观题用黑色签字笔直接写在试卷上。监考官宣读了考场规则手机静音并放到包里考试期间不许翻阅任何资料不许交头接耳。全程大概两个半小时。这里有个很容易被忽略的细节——笔要多带几支。我那天刚坐下邻座同学就发现自己的黑色签字笔不出水了我多带了一支帮他解了围。这种小事看起来不起眼但在考场上能救急。整个考场大概40个人开考之后非常安静只听得见翻卷子和写字的声音。纸质考试比在线考试多了一层心理压力你能看见别人翻页的速度听到别人奋笔疾书的声音容易不自觉地去比较进度。所以我全程都在心里反复提醒自己按自己的节奏来别人翻页快不代表他做得对。2.3 发卷后的五分钟全场预判与时间预算监考官说“可以动笔”之前我先快速翻了一遍全卷把题型和题量摸了个底。整张卷子分四大部分计算机基础客观题、逻辑推理题、编程题、英语翻译加主观设计题。客观题数量最多占了将近一半分值编程题有两道大题英语和主观题合在一起占比也不小。看完卷面我在脑子里做了一个粗略的时间预算客观题40分钟逻辑推理15分钟编程题45分钟英语和主观题30分钟最后留10分钟检查和填涂答题卡。这个预算看起来合理但实际操作中我在客观题上多花了将近10分钟导致后面编程题被压缩。后来复盘时我想明白一个道理考场上最贵的资源是时间所以时间预算一定要留缓冲并且尽量严格执行。3. 题型拆解每一类题该怎么打3.1 客观题基础概念的细颗粒度考察客观题部分是整张卷子题量最大的部分以单选和多选为主考察范围集中在计算机基础。我印象比较深的几道题包括进程和线程的区别、TCP三次握手的原因、死锁产生的必要条件、数据库事务隔离级别、HashMap的底层实现原理。题目本身不偏但选项设置得很有迷惑性。拿TCP三次握手的题来说有一个选项是“确认双方收发能力是否正常”另一个是“建立加密通信通道”。如果你只是死记“三次握手建立连接”很容易选错。实际上三次握手最核心的目的就是让通信双方确认彼此的收发能力正常同时同步初始序列号。这种题考察的是你有没有真正理解网络协议的设计动机而不是背结论。多选的策略要特别小心。我的原则是拿不准的选项宁可少选不选错。因为多选错选直接整题零分少选通常还能拿到部分分。你在考场上时间紧张但多选一定要克制只选自己有把握的选项。另外客观题时间超支是常态。我建议如果一道题想了30秒还没有头绪先随便选一个跳过去在题号上做个标记等全部做完再回来细想。陷在一道两分题里出不来是最亏的。3.2 逻辑推理题先读选项再回原文逻辑推理题放在客观题后面大概四五道题干有中文也有英文。这类题不是纯粹的技术题更像GMAT或公务员考试里的推理题给你一段材料让你判断哪个结论必然成立。我第一次接触这种题时有点懵这不是技术笔试吗怎么考阅读理解后来才明白外企很看重员工从信息中提炼结论的能力尤其是涉及业务分析、风险判断的岗位。这类题的正确打开方式是先读选项再回原文定位而不是把整段材料先精读一遍。如果你的阅读习惯是一字一句读题干建议直接改掉这个习惯否则时间根本不够。我在这部分就踩了坑。一道英文逻辑题我读了两遍才注意到题干里有一个“not”的限定词导致前面选的选项全都得推翻重来。浪费了差不多5分钟。从那以后凡是不带技术符号的成段题干我一定先用笔把否定词和限定词圈出来再快速回到选项。3.3 编程题手写代码的边界与稳定性编程题一共两道分值占比很高是整个笔试的核心。我到现在还记得这两道题因为它们都很典型。第一道是字符串压缩。给定一个字符串把连续出现的相同字符压缩成“字符出现次数”的形式比如“aabbbc”输出“a2b3c1”。题目要求自己写函数要考虑空字符串和单字符输入。这题难度不大但手写时特别容易遗漏最后一个字符组的处理。我写的代码框架是先遍历字符串统计遇到不同字符就拼接一次结果遍历结束后再把最后一组字符补上。当时我差点忘了最后一步好在平时练过类似题目扫了一眼代码就发现了问题。第二道是链表题判断一个链表是否有环如果有环找出环的入口节点要求时间复杂度和空间复杂度都要说明。这道题有标准的快慢指针解法快指针每次走两步慢指针每次走一步如果两者相遇说明有环找入口时把一个指针移回链表头另一个留在相遇点两个指针都改成每次走一步再次相遇的位置就是环入口。为什么这个做法能成立我当时在代码旁边写了一段推导设链表头到环入口距离为a入口到第一次相遇点距离为b环长为L。第一次相遇时慢指针走了ab快指针走了abkL。因为快指针速度是慢指针的2倍所以2(ab)abkL得到abkL即akL-b。换句话说从第一次相遇点继续走a步正好绕环一圈再回到入口。把快指针放回头节点走a步到入口时慢指针从相遇点也走了a步位置刚好也是入口。这道题我当时把推导过程写得很清楚虽然代码有点紧张但思路是很完整的。手写代码有几点经验。第一先写注释再写代码包括函数签名、输入输出、整体思路这样即使后面代码没写完阅卷人也能看到你的逻辑。第二代码写完之后一定要检查边界条件空输入、单元素输入、全是相同字符、没有环的情况。第三如果题目要求说明复杂度一定要写清楚。这道题快慢指针的时间复杂度是O(n)空间复杂度是O(1)比哈希表方案的空间O(n)更有优势这个差异很可能是采分点。3.4 英语和主观题外企笔试的分水岭英语部分有一道翻译题材料是关于反欺诈系统的英文短文要我翻译成中文。原文大意说的是机器学习模型被越来越多地用于实时检测欺诈交易帮助降低商户的拒付率。生词不多但有几个支付行业的专业术语需要准确对应比如“fraud detection”要译成“欺诈检测”“merchant”要译成“商户”“chargeback”要译成“拒付”或“退单”。如果平时不接触支付业务词汇这几个词容易译不准。翻译题不需要文采多好但专业术语必须准确句子逻辑要通顺。我当时还特意把“real time”译成了“实时”而不是“即时”因为“实时检测”在支付风控语境里是更地道的表达。这部分主要考查你能否用专业的语言做技术沟通对外企来说这是一个很重要的日常工作能力。主观设计题是整张卷子最拉开差距的题。题目是设计一个支持高并发的交易系统要求画出核心模块并说明需要考虑哪些问题。这道题没有标准答案考的是系统设计思维。我当时的解题思路是先分模块再讨论一致性。模块拆分上我写了接入层、交易服务、账户服务、消息队列、数据库五块。接入层负责鉴权和限流防止恶意请求打爆系统交易服务负责订单创建和状态流转账户服务负责余额变更和流水记录消息队列用来削峰和解耦比如支付成功后发异步通知给商户数据库做了分库分表支撑水平扩展。一致性方面我重点讨论了幂等性和最终一致性。支付系统里用户重复点击支付按钮是常态所以接口必须做幂等用订单号或交易流水号作为唯一键防重。账户扣款和入账不能丢可以用本地事务加消息表或者分布式事务方案来实现最终一致。我特别喜欢这道题因为它让我觉得自己在学校学的课程第一次真正用到了“为什么”的层面。4. 常见问题与避坑指南4.1 现场最容易翻车的几个细节下面这些坑是我自己踩过或者亲眼见过的整理出来供参考。笔的问题。我前面提到了黑色签字笔至少要带两支2B铅笔提前削好。考试中途笔没水或者笔芯断掉非常影响心态。别指望借别人的每个人的笔都只有一两支。时间分配失控。这是最常见的问题我自己也栽在这上面。客观题纠结太久后面编程题就只能草草收尾。后来总结了一套策略开场先把全卷浏览一遍然后从分值最高、性价比最高的题开始做。我当时是先做编程题再做客观题会不会更好回头想想其实是先做自己最有把握的题把分数先落袋为安才是最优解。填答题卡太晚。客观题的答案最后统一填涂会有风险一旦时间不够就麻烦。我是边做边涂的做一道涂一道虽然多花几秒但避免了最后手忙脚乱。4.2 考后复盘的正确姿势交卷出来之后我没有立刻对答案或者刷手机而是找了一个角落把记得的题目和我的答案快速记在手机备忘录里。回家之后重新做了一遍尤其是那道链表题我把推导过程完整写了一遍确认自己当时在哪个环节写错了。这种复盘方式比再去刷十道新题更有价值——因为你在考场上暴露的问题才是你最真实的弱点。如果你也想复盘笔试建议尽量在记忆还新鲜的时候立刻记录不要等几天之后。记录的内容包括题目考察的知识点、你的解题路径、不确定的点、时间分配情况。这样既能帮助后续面试准备也能为下一场笔试积累策略。4.3 笔试常见问题速查表常见问题原因分析解决建议客观题选项反复琢磨时间超支对概念边界掌握不牢30秒没思路先蒙一个标记后跳过手写编程题忘记考虑边界条件平时IDE太便利缺少手工检查习惯考前用纸笔练题代码写完后单独检查边界英语翻译术语不准不熟悉支付/金融业务词汇考前准备专业词汇表主观题不知道怎么展开缺少系统设计训练按“模块拆分核心问题”两步走先搭框架再填内容答题卡最后填涂时间不够习惯性统一填涂边做边涂每部分完成后及时填卡考场受他人翻页速度影响心态不自觉地与别人比较提醒自己按节奏做题别管其他人5. 从笔试到面试这场考试给我留下的东西5.1 两周后的面试笔试内容成面试考题笔试之后大概两周我收到了面试通知。面试环节里有一道技术题问的恰恰是笔试那道主观题——高并发交易系统怎么设计。面试官手里是有我笔试答卷的他直接问我“笔试时你提到了幂等性设计能展开说说当时是怎么考虑的吗”这就是我反复强调考后复盘的原因。如果当时交卷就抛到脑后面试被问到这道题肯定会卡壳。但因为我认真复盘过把幂等、分布式事务、消息队列这些东西又重新梳理了一遍所以面试时能够把笔试时的思路和后续补充的思考一起讲出来。面试官能明显感觉到你对自己的方案有完整的理解。这种“笔试—复盘—面试”的闭环会给你加很多印象分。另外面试中有英文自我介绍环节我在笔试前准备的内容在这里派上了用场。虽然后来发现笔试和面试的英文考察形式不同但提前准备总归没有坏处。5.2 这套笔试策略的可复用性参加完PayPal这场笔试之后我又陆续参加了几家外企和合资公司的实习笔试发现这套策略完全可以复用。核心就三条先研究岗位决定复习范围再针对基础概念做深度辨析最后专门训练手写代码和主观题的答题结构。这三个动作听起来不复杂但每一条都需要时间投入尤其是“手写代码”和“主观题结构化表达”不是临时抱佛脚能练出来的。外企笔试的风格其实透露出一个职场信号工作中没有人会要求你像竞赛一样快速解难题但很多人需要你清晰地解释自己的设计决策并且用书面或口头的方式跟团队沟通。笔试里那些看似繁琐的主观题和英语题本质上都是在模拟这个工作场景。5.3 最后分享一个阅卷细节交卷的时候我做了一件事也许值得借鉴。在编程题最后我用两三行字写了一句“这道题我先用哈希表做空间复杂度是O(n)如果有空间限制可以换快慢指针时间复杂度不变空间降到O(1)”。虽然我已经用了快慢指针但这句话让阅卷人看到我对不同方案的权衡。后来我面试时偷偷问了一句面试官说批卷的时候确实会注意到这种额外注释因为这体现了一种工程思维不满足于一个能跑的解法而是会去比较方案的优劣。所以如果你在考场上对某道题有额外的思路哪怕没有完全写出代码也建议用简洁的话补充在卷面上。它可能拿不到满分但至少能让阅卷人看到你的思考深度。在我看来PayPal这场笔试带给我的收获远不止拿到一张面试通知。它让我第一次意识到技术笔试不是“做题比赛”的延续而更像一次预先的职业沟通。你在卷面上写的每一行字都在模拟未来工作中如何跟同事讲清楚自己的方案。从那以后我准备笔试的心态变了不再只盯着刷了多少题而是更关注自己能不能把一个基础问题真正讲明白。这个转变比记住任何一道具体题目都更有价值。
返回列表