2016趋势科技校招笔试复盘:安全岗算法与网络基础考点全解析

发布时间:2026/8/30 15:14:46
2016趋势科技校招笔试复盘:安全岗算法与网络基础考点全解析 2016年的秋天我还在读研二。实验室的师兄们到了九月份都开始疯狂投简历那阵子大家嘴边常挂着几个公司名字趋势科技就是其中之一。说实话当时很多同学对它的印象还停留在做杀毒软件的真正了解它业务的人并不多。我投的是安全研发方向收到笔试通知后在网上翻了不少往年的笔经发现信息零零散散真正有营养的复盘屈指可数。后来自己上了考场又经过面试、拿到offer、入职后回头看才意识到当年的笔试筛的不只是会不会写代码而是能不能在压力下把基础问题想清楚。这篇文章写给两类人一类是准备投趋势科技或同类安全公司校招岗位的同学另一类是想了解2016年前后网络安全行业校招笔试套路的朋友。我会按当年的笔试模块逐个拆解讲清楚每个模块在考什么、为什么考、怎么准备也会补充一些我在笔试现场和后来工作中学到的细节教训。题目细节我不敢说能一字不差地复述但考察方向和解题思路基本是八九不离十的。1. 2016年这波笔试趋势科技在筛什么样的人先交代背景。2016年趋势科技在安全圈的名气不算小终端安全、网关安全、云安全都有布局研发中心主要在南京。笔试分线上和线下两种形式我参加的是线下笔试一个教室里坐了上百号人试卷发下来那一刻第一感受是题量大纸张厚英文占比明显比一般国内公司高。1.1 从试卷结构反推企业用人标准整张试卷大体分成四类逻辑推理、网络安全与系统基础、算法与编程、英文阅读理解。这个结构和当时很多互联网公司的笔试题有很大区别。互联网公司通常更偏重算法题和智力题甚至有些公司笔试全是逻辑题和性格测试技术反而放在面试里聊。而趋势科技的试卷里网络协议、操作系统、安全攻防的基础知识占了相当大的比例。这背后其实反映了公司的业务导向。趋势科技的产品大多部署在网络边界、终端和服务器上工程师面对的是一套完整的网络防御体系。如果一个候选人连TCP三次握手、ARP协议的作用都说不清楚很难指望他能在后续的工作里理解流量分析、恶意请求拦截这类业务逻辑。所以笔试第一关就是在海量简历里快速筛出基础面够宽的人。另外我还注意到一个细节试卷首页的答题说明里专门写了请用中文或英文作答均可但代码部分的注释建议使用英文。这个细节透露出的信号是公司对英文有要求但对表达能力更看重的是清楚而不是用什么语言。不过这也给我提了个醒外企对英语的重视程度不是说说而已后面果然有英文阅读理解题。1.2 题量大、时间紧本身就是一道压力题我记得整场笔试的时间大概是两个半小时左右但卷子上的题目量如果按正常速度来做两个半小时实际是偏紧的。很多同学在编程题上花了太多时间导致后面的英文阅读草草收场或者逻辑题全军覆没。这实际上也是企业有意为之——用时间压力模拟真实工作的节奏。在安全行业明天凌晨可能就有一个被曝光的漏洞需要评估影响有客户环境的告警需要马上处理。你需要在有限的信息和时间内做判断。这种能力很难通过一场面试聊出来但笔试可以当你发现时间不够时你是慌慌张张把每道题都写个半吊子还是果断放弃一部分、把能拿分的关键题做到极致这个决策本身就暴露了你的成熟度。我印象特别深的是坐在我旁边的一个同学从开考就一直在死磕一道算法题草稿纸写满了三张结果整张卷子的其他部分几乎全空着。收卷的时候我看到他脸色很难看。这个场景多年后我还会想起就是想提醒后来人笔试是一个总分游戏不是“证明我比题目更强”的擂台。2. 笔试科目与题型透视四类题目各自的筛人逻辑在详细拆解题型之前我觉得有必要把整张试卷的结构先摆出来。这样后面讲到具体题目时脑子里能有一个整体框架也知道该把复习重心放在哪里。2.1 题型分布与时间分配建议我当时拿到的试卷大致结构如下模块估计占比建议用时考察目标逻辑推理约15%15-20分钟思维条理性、快速建模能力网络安全与系统基础约30%30-35分钟计算机基础知识的广度与深度算法与编程约35%60-70分钟编码能力、算法设计、边界思维英文阅读约20%20-25分钟技术英语阅读与理解速度这个时间分配不一定是最优解但它遵循一个原则先做确定性高的题把容易拿的分攥在手里再啃硬骨头。逻辑推理题和部分基础题是看到就会、不会就蒙的类型放在前面做可以稳定心态算法题是分值大头值得留出充足时间英文阅读放在最后避免因为时间不够而产生系统性慌乱。还有一个实用的小技巧拿到试卷后先花两分钟把所有题目从前往后翻一遍。不是为了做任何题而是让自己知道后面大概有什么心里有个底。毕竟人的大脑在预知全局的情况下焦虑感会明显降低。2.2 为什么是这样一个比例很多人会问为什么一家安全公司笔试里英语占比那么高原因很简单趋势科技的技术文档、内部邮件、代码注释大多用英文安全圈的一手漏洞通告和攻击分析报告也几乎全是英文很多最新的恶意样本分析都来自国外研究员的博客和论文。如果连一篇技术说明文都读得磕磕绊绊入职后的成长速度会非常受限光是查资料都比别人慢半拍。而逻辑推理题看似不考专业知识实际上测试的是快速归纳和演绎能力。安全分析里有个常见场景从一堆看似无关的告警日志里找出关联推断攻击链路。比如你看到某个内网主机在凌晨三点向外发起连接同时另一台服务器出现了异常登录记录这两个事件是不是同一波攻击的一部分这个推断过程和做逻辑题的能力高度相关。所以别把逻辑题当脑筋急转弯轻视它背后的筛选信号很明确。3. 算法与编程题读题、建模、边界条件的完整决策链算法与编程这块是整张卷子的重头戏也是决定你能不能进入下一轮的关键。以当时的题目风格来看大部分题目不会刻意出偏题怪题而是用经典的算法模型去考察基本功这和后来很多大厂的出题思路是一致的。3.1 高频考点链表、字符串与基础数据结构我印象比较深的一类题是链表相关操作比如反转链表、查找链表倒数第K个节点、判断链表是否有环。这些题目放在今天依然是校招高频题。它们有一个共同特点代码量不大但非常考验指针操作的严谨性几乎就是为手写代码量身定做的题型。以反转链表为例。当年试卷里类似的题目要求在纸上写出完整可运行的代码不允许伪代码蒙混过关。一个标准的迭代解法是这样struct ListNode { int val; struct ListNode *next; }; struct ListNode* reverseList(struct ListNode* head) { struct ListNode *prev NULL; struct ListNode *curr head; while (curr ! NULL) { struct ListNode *next curr-next; curr-next prev; prev curr; curr next; } return prev; }这道题看起来简单但失分点很多。第一很多人写着写着就忘了保存next指针导致链表断链第二有人会漏掉空指针判断第三返回值应该是新的头节点有人会顺手返回curr此时curr已经变成NULL。这些细节恰恰是面试官想看到的——一个工程师是否习惯性考虑异常路径。后来做了技术面试官之后我更加确信这一点能写对链表题的人多半在平时写代码时就有良好的习惯出线上问题的概率低很多。3.2 从暴力解到最优解的思维升级试卷里的算法题通常不止一档难度。简单题之外还有一两道需要一定算法功底的题目常见的有动态规划、DFS/BFS、字符串处理等。2016年那会儿动态规划的题还比较朴素不会像现在这样动不动就套个状压或者树形DP。以字符串中第一个只出现一次的字符这类题为例。最直观的解法是用哈希表先统计每个字符出现的次数再遍历字符串找答案。时间复杂度O(n)空间复杂度O(字符集大小)。但如果题目加了一个限制比如只能遍历一次那么思路就要转换成记录首次出现位置并维护只出现一次的候选集合。这个能力在实际工程里很常见——不是所有场景都允许你先把数据完整读一遍再做处理流式数据就是典型的例子。我当时在笔试里的策略是先写一个能跑通的暴力解然后明确指出这里可以优化到O(n)并把优化思路写在旁边。笔试试卷不是OI竞赛判卷人更看重的是你有没有从可用到更优的意识而不是一上来就背出最优解。你把朴素思路和优化思路都展示出来反而能体现一个完整的问题解决过程这在真实工作中也是通用的思考方式。3.3 时间复杂度和空间复杂度的作答套路还有一点必须强调凡是算法题不管题目有没有要求最好都写上时间复杂度和空间复杂度。这相当于给判卷人递了一张我清楚自己代码在干什么的名片。我当时的习惯是在代码末尾加一行注释// Time: O(n), Space: O(1)虽然只是很小的一个动作但在几百份试卷中这个细节能让你从一堆代码里跳出来显得更专业。后来我在实际工作中review别人的代码时也特别喜欢看到这种对自己代码有清晰评价的工程师。顺便说一句有些同学担心写时间复杂度会暴露自己算法不优。我的看法是写错了顶多扣一点分不写等于主动放弃一个展示机会。而且如果你能分析出自己代码的复杂度哪怕不是最优解也比写出来但不知道自己在写什么的人强得多。判卷人最怕的是那种代码很满、但完全看不懂思路的卷子。4. 网络安全与系统基础题概念背后的工程直觉这part是趋势科技笔试区别于普通互联网公司的显著标志。整张卷子对网络协议、操作系统、安全知识的考察不是简单的名词解释而是把概念放进实际场景里让你做判断。4.1 网络协议是重头戏不能只会背书我记得当时的题目里有关于TCP三次握手和四次挥手的过程、UDP和TCP的区别、以及一些路由交换基础知识的题目。表面上这些都是《计算机网络》教材上的经典内容但出题方式很灵活经常给你一个具体的网络现象让你分析原因。比如为什么服务器上出现大量TIME_WAIT状态的连接SYN Flood攻击是怎么让服务器资源耗尽的这些题目在教材里都能找到对应的知识点但如果你只是背过三次握手是建立连接的过程没有真正理解状态机的变化看到这种题很容易懵。例如有一类题会问客户端和服务器建立TCP连接时为什么需要三次握手而不是两次这个问题的标准答案是防止已失效的连接请求报文突然又传到服务器端从而产生错误。但更深一层你应该理解三次握手本质上是让双方都确认自己的发送能力和对方的接收能力正常。如果只会背标准答案题目一旦换个包装比如用TIME_WAIT状态、SYN Flood攻击来提问就很容易露怯。我建议准备这类题目时不要只背教材而是尝试用抓包工具去看真实连接的过程。看一遍TCP状态机的迁移比背十遍状态图都有用。这也是我后来在安全工作中经常用到的能力——分析一个异常连接时先看状态再猜原因。4.2 加密与安全的常见考点对称、非对称、哈希的适用边界另一类高频考点是密码学基础。对称加密、非对称加密、消息摘要的区别和适用场景几乎是必考的。很多同学能背出AES、RSA、MD5这些缩写但真问你为什么HTTPS要混合使用对称和非对称加密就答不上来了。这个问题最好是这么理解非对称加密虽然安全但计算开销大不适合加密大量数据对称加密速度快但密钥分发困难。所以实际方案是先用非对称加密协商出一个临时对称密钥之后通信内容全部走对称加密。这就是HTTPS的TLS握手在做的事。你把这个逻辑讲清楚比抛出一堆算法名称更能体现你对安全体系的整体认知。我还记得当时有一道题是关于MD5和SHA-1的问的是在数字签名场景中为什么通常不是直接对消息加密而是先计算消息的哈希值再对哈希值签名。其实就是因为非对称加密效率低而哈希能把任意长度的消息映射成固定长度的摘要签名起来又快又方便。这个知识点看起来基础但如果你自己能推导一遍整个过程对后续理解证书体系、代码签名、软件完整性校验都有帮助。4.3 操作系统与恶意代码分析基础操作系统相关的题目通常会涉及进程与线程的区别、内存管理、堆栈生长方向等。趋势科技有一部分工作是做终端安全产品需要对Windows底层机制有了解。笔试不会考得太深但如果你连堆和栈的区别都说不清肯定会在筛选中被标记为基础薄弱。我当时复习的时候特别花时间整理了一张表把进程和线程在资源占用、调度、通信方式上的差异一条条列出来再把常见面试考点往里填。比如进程是资源分配的基本单位线程是调度的基本单位同一进程内的线程共享地址空间但各自有自己的栈和寄存器上下文。这种整理过程本身就是一个再学习的过程比临时抱佛脚刷题要扎实得多。还要提醒一点安全类的岗位可能会考一些恶意代码分析的基础比如PE文件结构、加壳与脱壳的概念、常见恶意软件的行为特征。2016年那会儿这类题目多以概念题出现不会让你真正去逆向一个样本但如果你对病毒、蠕虫、木马有什么区别都说不清楚那就有点说不过去了。建议至少把基本概念和经典传播方式理清楚这样不管笔试还是面试都不会在常识层面翻车。5. 逻辑推理与英文阅读两场容易被忽视的隐形筛选逻辑题和英文题在整张卷子里的分值占比不算最大但它们往往是划分稳过和擦线挂的分水岭。为什么因为大部分人都把精力压在算法题上这两块成了被放弃的重灾区。尤其是英文阅读我后来问过HR确实有不少人笔试总分不低但英文部分错得一塌糊涂最后在综合评估时被拉了下来。5.1 逻辑题的出题风格偏向工作场景的推理当时的逻辑题目里有一些是经典的图形推理或数字推理但更多的题目带着工作场景的影子。给你一段关于系统告警、人员排班、流程顺序的描述让你判断哪个选项一定正确或一定错误。这种题不考专业知识但如果没有条理性很容易被绕进去。我做这类题的经验是先画简化模型。题目文字越长越不要在大脑里空转直接在草稿纸上把条件列成表格或逻辑链。比如遇到如果A事件发生则B事件一定不发生这类条件时立刻写出它的逆否命题——如果B事件发生则A事件一定没有发生。这种习惯在安全分析中真的很有用看告警逻辑时经常要做类似的布尔推演。有时候几行日志之间的关系本质上就是一连串的逻辑表达式能快速理清的人是占优势的。图形推理那部分说实话更多靠熟能生巧。题目类型来来去去就那几样旋转、对称、数量变化、组合叠加。建议考前拿公务员行测的图形推理题练一练不为了别的就是为了见过题型考场不慌。5.2 英文阅读不追求精读只求快速提取关键信息英文阅读部分一般是几篇技术短文加选择题内容可能和网络安全、软件工程、云计算有关。它的难度不高于六级阅读但时间压力下很多人会读得很挣扎。尤其是当你的大脑已经在算法题上高强度运转了两个小时后突然切换到英文阅读会有一种每个单词都认识但连成句子看不懂的奇怪感觉。我的策略是先看题目再去文章里定位答案。一篇文章大约3到5道题题干和选项里通常会透露很多信息。比如题目问the main purpose of the article你只需要把握首段和末段问according to paragraph 2就只精读对应段。这个方法在时间紧的笔试里能省下大量时间。还有一点值得提醒英文题中出现的技术名词比如malware、intrusion detection、sandboxing最好提前熟悉一下。这些词汇在安全领域是高频词不认识就非常被动了。我当时平时喜欢看安全公司的技术博客所以这类单词基本都见过。如果你时间充裕建议养成每天读一篇英文技术文章的习惯不用精读扫一遍知道大意即可。长期积累下来笔试时英文阅读的语感会好很多。6. 手写代码的实战复盘纸上编程比你想的更考验基本功笔试和在线编程平台最大的区别就是没有编译器没有自动补全没有报错提示。所有的语法错误、逻辑错误都得靠肉眼发现。这就对手写代码的规范性提出了更高要求也逼着你在写之前更仔细地思考。6.1 排版和变量命名是隐形的印象分判卷人一天要看几百份卷子如果你的代码挤成一团、变量名叫a、b、c别人很难有耐心帮你理清逻辑。反过来如果你的代码有清晰的缩进、有意义的变量名、关键步骤有注释哪怕有小瑕疵判卷人也更容易理解你的思路给分自然更宽容。我当时有个习惯写代码做题时先把思路用一两句中文写在题目旁边再开始写代码。这样做有两个好处。一是帮自己理清思路减少写一半卡壳的情况二是万一代码写错了判卷人也能看到我的思路是对的可能只扣一部分分。这其实是很多参加过ACM竞赛的同学都会的做法——先想清楚再动手而不是边写边想。变量命名也是有讲究的。比如链表题用prev、curr、next来命名语义一目了然如果全用a、b、c过两天你自己回来看可能都忘了是什么意思。作为工程师写别人能看懂的代码比写只有自己能跑通的代码更重要这个观念越早建立越好。6.2 边界条件失分重灾区手写代码最容易翻车的地方是边界条件。比如数组是否为空、链表长度是否为0、字符串是否包含空格和特殊字符、数字是否溢出。很多人在IDE里靠调试才能发现的错误在笔试现场就只能靠一遍遍手动模拟。以我当年常犯的错误为例写二分查找时忘记处理low high的递归出口写字符串拼接时忘记给结尾补\0写循环遍历时把i n写成i n导致越界。后来我养成了一个习惯代码写完后不急着交先在草稿纸上模拟一遍输入过程跟着代码走一遍数据流。这个过程大概只要两三分钟但能拦下大部分低级错误。另外有些题目会要求从标准输入读取数据手写时就要注意循环读取的处理逻辑。比如输入包含多组测试数据每组以EOF结尾这种输入格式在在线笔试平台很常见但手写试卷时如果没注意很容易只处理一组数据。反正看到“循环输入”类的描述就条件反射地想到while (scanf(...) ! EOF)或者while (cin n)这种模板。6.3 时间不够时怎么止损如果发现自己时间不够了我的止损顺序是先把所有题目的答题位置都看一眼凡是能写几个字的都写上哪怕是公式、思路、伪代码也比空着强。特别是算法题就算写不出完整代码把暴力解法的思路写清楚也能拿到步骤分。我见过不少考生在最后几分钟还在死磕一道动态规划题结果把旁边一道送分的基础题全丢了。这属于典型的丢了西瓜捡芝麻。笔试的目标不单是展示能力更是总分最大化。想清楚这件事很多时间决策都会变得容易很多。还有一个容易被忽略的点如果某道题的代码写了一半发现思路不对不要全部划掉重写在原代码旁边标注此思路错误改为以下方向再写新方案。判卷人能看到你的思考过程也可能给一部分过程分。直接涂黑重写反而丢掉了展示思考过程的机会。7. 时隔多年回看这套笔试对当下的校招准备还有哪些参考价值现在再看2016年的这套笔试题有些具体题目确实过时了比如那时候还会考一些偏老的Windows API细节现在的云原生和容器安全相关的知识几乎没涉及。但作为一场校招笔试它考察的底层能力——计算机基础、算法思维、英文阅读能力、临场决策能力——到今天依然是安全行业甚至整个技术行业最看重的东西。7.1 底层能力不过时背题有用但不长久我知道很多学生喜欢找题库来刷。刷题当然有价值特别是帮你熟悉题型和考点但纯粹背题应对笔试就算侥幸过了也很容易在面试环节露馅。面试官随便换个角度深挖一个知识点你如果只背过答案而没理解原理很快就会被问住。所以我更推荐的方法是把笔试当作一次自我检查。每道错题都问自己三个问题我为什么错正确思路是什么如果换一个包装我还能不能识别出它考的是同一个知识点这三个问题想透了你收获的不只是一场笔试的通过而是一份扎实的知识体系。当年和我一起准备笔试的同学里凡是后来拿到不错offer的几乎都有这个复盘的习惯。7.2 给有意投递安全方向岗位的同学几句实在话如果你现在准备投趋势科技或者类似的安全公司我会建议你在常规刷题之外额外做三件事一是把计算机网络教材的每一章都用自己的话复述一遍特别是TCP/IP协议族、HTTP/HTTPS、DNS解析流程这些高频考点。不是背给别人听而是找一个同学或者自己对着镜子讲能讲明白才是真懂。二是动手搭建一个简单的实验环境用抓包工具看几次真实流量理解协议状态变化。比如自己搭一个简单的Web服务用浏览器访问一下然后看抓包里TCP握手、HTTP请求响应、连接关闭的全过程。这个过程会加深你对协议的理解效果远超死记硬背。三是坚持读英文安全博客和技术文档把阅读速度提上来。可以先从一些大厂的安全技术博客开始不必逐字逐句读重点是把握技术逻辑和关键术语。持续一两个月后你会发现自己的技术体感明显不同。笔试和面试考察的很多内容其实都源于这种日积月累的体感。当年一起笔试的同学里有人如今还在安全行业深耕有人转了方向但大家回想起那场笔试普遍觉得它像一次浓缩的行业体检把基础扎实与否、思维清晰与否、抗压能力强弱一次性都照了出来。如果你正在准备这类笔试不必被题量吓到也别指望靠运气蒙混过关。把计算机基础一点点啃透把英文阅读习惯养成把算法题当作思维训练而不是应试负担——这些东西会在你未来的职业道路上持续给你回报。说到底一份笔试考的不只是答案更是你面对未知问题时的态度和路径。方向对了慢一点也没关系。