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

资讯详情

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

奇安信校招笔试复盘:安全工程师考点、题型与备考思路

奇安信校招笔试复盘:安全工程师考点、题型与备考思路 这场2020年秋招里安全方向的同学讨论度最高的笔试奇安信IT工程师绝对算一个。身边不少投了网安、运维、系统集成方向的朋友都在用同一套卷子练手大家的评价高度一致这不是一场靠背题能过的考试更像是一次网络基础、安全意识和工程实操的综合摸底。试卷2整体难度比第一套更贴近真实工作场景环节之间没有冗余每一道题都在提醒你——安全工程师不是只会写代码更要能扛事。这篇文章把试卷2的考察逻辑、高频考点和踩坑经验完整复盘一遍。无论你是准备投奇安信还是想走同类安全厂商的技术岗这份梳理都能帮你少走很多弯路。1. 试卷定位与考察逻辑安全厂商的IT工程师在考什么1.1 岗位画像代码能力只是入场券奇安信作为国内头部的网络安全企业它的IT工程师岗位并不是传统意义上的“程序员”更多承担着安全产品交付、系统运维、安全服务、售前售后技术支持等复合职责。笔试要筛选的是那种既懂TCP/IP、又懂Linux、还能快速定位业务故障的“多边形工程师”。所以试卷2的出题风格非常务实。选择题占了大头但里面几乎每道题都能在真实工作里找到对应场景。比如网络题不会简单问你“TCP和UDP哪个可靠”而是给你一个“内网访问慢、丢包率高”的现象让你判断该用哪条命令排查安全题不会只让你背OWASP Top 10而是直接给一段带漏洞的代码或一份Nginx访问日志让你找问题。这个定位决定了备考方向不要死磕偏难怪算法要把精力花在通信原理、系统原理、安全原理的横向串联上。1.2 题型分布与分值权重从个人复盘和身边同学的反馈来看试卷2的题型结构大致如下题型题量分值占比考察重点单选题20-25题25%计算机网络、操作系统、数据库、安全基础多选题10-15题20%安全漏洞原理、系统加固、协议细节判断题8-10题5%易混淆概念、位运算、权限管理简答题4-6题20%故障排查思路、安全事件处置流程编程题2-3题30%字符串处理、基础算法、脚本编写请注意这套卷子有个特别容易栽跟头的设计多选题的评分规则是“多选、错选、漏选均不得分”。这意味着你不能凭感觉蒙答案必须对知识点有精确的把握。我见过太多人在多选题上翻车一错就是好几道直接和面试机会说再见。1.3 第二套试卷的特殊之处和第一套相比试卷2最明显的差异有三个第一工程实践题占比更高。第一套偏重算法题试卷2则多了不少“给定场景让你给出排查步骤”的简答题比如“网站响应缓慢你怎么一步步定位”这类。第二Web安全的知识点被加重了SQL注入、XSS、路径遍历这类题目高频出现这明显是因为奇安信的产品线里WAF、Web扫描器占据重要位置。第三Linux命令相关的选择题变得非常细节不是让你选功能而是让你判断不同命令的参数组合会产生什么效果。可以说试卷2的难度不在于单个题有多深而在于覆盖面极广任何一个技术短板都可能成为你丢分的口子。2. 高频考点与核心原理拆解2.1 网络基础协议细节决定你能不能做安全网络安全工程师的立身之本就是网络协议。试卷2对网络的考察集中在TCP/IP协议栈但不是死记硬背而是反复从“异常角度”考你。举个例子TCP三次握手几乎是必考题但卷子不会让你默写SYN、SYNACK、ACK这么简单。它会把问题包装成“SYN Flood攻击为什么会让服务器资源耗尽”这时候你就要理解三次握手过程中服务器端的半连接队列SYN Queue和全连接队列Accept Queue机制。攻击者发送大量SYN但不回复ACK导致半连接队列被塞满后续正常连接无法建立这就是典型的DDoS场景。再比如HTTPS握手的过程卷子会结合证书链验证来考。你需要清楚TLS握手里客户端和服务端是怎么协商加密套件的、证书的签发和验证流程是什么、对称加密和非对称加密分别在哪个环节发挥作用。这块知识对理解中间人攻击尤其重要我在后面的安全考点里还会展开。网络排障类的题目也很折磨人。给你一个“内网某台机器无法访问外网但内网互通正常”的场景让你选择排查顺序。正确的思路是先确认本机IP、掩码、网关配置对不对再ping网关确认链路然后检查DNS解析最后看防火墙规则。这套逻辑和实际运维一脉相承答题时一定要按“从底层到上层、从自身到外部”的步骤来。2.2 操作系统与Linux实战权限和日志是重灾区Linux在试卷2里的存在感极强几乎可以说没有Linux知识这套卷子一半的题都做不了。考察方向集中在三块文件权限、进程管理、日志分析。文件权限题年年有而且年年有人错。chmod 755和chmod 4755的区别要刻在脑子里4755多出来的4是setuid位它意味着执行该程序时进程的有效用户ID会切换为文件属主比如/usr/bin/passwd就带setuid权限普通用户才能改自己的密码。笔试可能给你一个“想让某个脚本以root身份运行但又不希望赋予所有用户执行权限应该怎么设置”的题答案就是数字模式下的4750这类组合。进程管理方面top和ps是基础但卷子更爱考的是strace和lsof。比如“某个进程CPU占用高你如何确认它在做什么”有经验的人会先top找到PID再strace -p PID跟踪系统调用或者用lsof -p PID查看进程打开的文件。这些命令不是让你写出来而是混在选择题的选项里让你挑出最合适的一个。日志分析更是安全工程师的核心技能。试卷里可能会给一段/var/log/secure或Nginx的access.log片段让你判断发生了什么。比如一条日志里出现连续多次“Failed password for root from 192.168.X.X”答案肯定是暴力破解。再比如“GET /../../etc/passwd HTTP/1.1”这种请求本质就是路径遍历攻击尝试这也是很多安全公司的产品重点防护的攻击类型。2.3 Web安全原理漏洞怎么打就怎么防奇安信笔试里Web安全的数量占比很高这很好理解——Web是攻防的主战场。试卷2里反复出现的是OWASP Top 10里的老面孔SQL注入、XSS、CSRF、SSRF、文件上传、路径遍历。SQL注入的核心原理是“将用户输入拼接到SQL语句中导致语义改变”。笔试不会让你手工注入但会给你一段这样的代码String sql SELECT * FROM users WHERE name userName ;然后问你如何修复。标准答案是用参数化查询PreparedStatement把用户输入当作参数而不是SQL语句的一部分。同时还要说清楚为什么不能只依赖过滤单引号因为绕过的姿势太多了编码、宽字节、堆叠注入都能把过滤打穿。XSS分存储型、反射型和DOM型。试卷2喜欢考的是区别和防御差异。存储型是把恶意脚本存在服务器数据库里每个访问页面的人都会中招反射型是通过URL参数注入只有点击恶意链接的人才会受害DOM型则完全在浏览器端发生服务器根本看不到恶意载荷。对应防御手段也不同输出编码、输入校验、CSP内容安全策略要组合使用少一个都不行。CSRF的题也很典型。核心是“攻击者诱导受害者浏览器发起一个受害者不知情的请求”。防御手段里最硬的是CSRF Token服务端生成随机Token并嵌入表单提交时校验其次是SameSite Cookie属性它能让跨站请求不携带Cookie。试卷里可能拿这两种方案做选择题你不仅要认识它们还得知道各自的适用场景。路径遍历在搜索热词里被专门提到了这说明哪年的卷子里路径遍历相关题目确实出现得不轻。它的原理是用../序列跳出应用目录读取服务器上任意文件。一个典型的Nginx错误配置是location /static { alias /home/user/static/; }如果用户请求/static../etc/passwd且Nginx没有做规范化处理就可能读到系统文件。修复方式一是使用try_files和root指令并确保路径规范化二是做严格的输入白名单校验三是部署WAF。这道题完美体现了安全工程师的工作方式既能看懂攻击payload也能从配置层面给出土办法。2.4 密码学基础不要求你会实现但必须懂流程密码学在试卷2里一般不会考得太深但基础概念必须扎实。高频考点是这四件事对称加密、非对称加密、哈希算法、数字签名。对称加密要用AES密钥和加密解密用同一个优点是效率高缺点是密钥分发难。非对称加密用RSA或ECC公钥加密、私钥解密反之亦可用于签名优点是密钥管理相对简单缺点是性能差。所以实际场景都是混着用用非对称加密协商出会话密钥再用对称加密加密业务数据。哈希算法是另一个重点。MD5和SHA-1现在都不建议用于安全场景因为碰撞攻击已经足够成熟存储密码应该用bcrypt、scrypt或PBKDF2这样的慢哈希算法。卷子里可能给你一条“某网站数据库泄露密码全是MD5存储”的新闻问你风险点在哪其实就是考你对彩虹表和哈希碰撞的理解。数字签名里要弄明白“私钥签名、公钥验签”和“加密、解密”这两组操作的镜像关系签名是私钥持有者证明自己身份加密是公钥持有者向私钥持有者传输秘密。这个理解了HTTPS证书链验证的题目基本就通了。2.5 数据库与系统设计事务、索引与缓存数据库题在试卷2里以基础为主但对细节要求很高。事务的ACID特性是必考的尤其要理解隔离级别的含义读未提交、读已提交、可重复读、串行化。有一个经典问法是“InnoDB默认的隔离级别是什么”答案是可重复读但你以为这就完了吗不卷子还可能继续问“间隙锁在这个级别下怎么解决幻读”这就要看你对MySQL锁机制的理解了。索引题也经常出现。最核心的是“最左前缀原则”联合索引(a,b,c)能用到a、ab、abc但直接用b或者c做查询条件就用不上索引。另外like %xx%这种前模糊查询也无法使用B树索引这在实际生产环境里是个很容易踩的坑。Redis在某些偏运维的IT工程师卷子里也会出现重点是缓存穿透、缓存击穿、缓存雪崩的区分和应对。简单说穿透是查询一个不存在的key每次都打到数据库击穿是某个热点key过期瞬间大量请求打到数据库雪崩是大批key集中在同一时间过期导致数据库被压垮。应对方案分别可以做空值缓存、互斥锁重建缓存、过期时间加随机值分散。3. 编程题与逻辑题这里更看重你用代码解决问题的能力3.1 常见编程题类型与解题思路试卷2的编程题一般控制在2-3题难度在LeetCode简单到中等之间但有一个显著特点偏爱字符串处理和逻辑模拟题而不是复杂的图论和动态规划。因为对安全IT工程师来说处理日志、解析协议报文才是日常考算法更多是验证你的代码基本功和逻辑严谨性。最常出现的一类是“给定一个字符串按某种规则处理”。比如去除字符串中的重复字符并保持相对顺序不变。这个题看着简单但考察点在于你是否能想到用HashSet StringBuilder在线性时间内解决。def remove_duplicates(s): seen set() result [] for ch in s: if ch not in seen: seen.add(ch) result.append(ch) return .join(result)另一类常见题是“日志解析”。比如给一段Nginx访问日志让你统计每个IP的访问次数并降序排列。这题在测试工程师和运维工程师的卷子里都出现过本质就是考察split、字典、排序的组合使用但如果在考场上一紧张容易在正则解析上卡太久。我的建议是遇到这类题直接用最稳妥的split加简单逻辑不要一上来就写复杂正则省时间才是王道。还有一类“URL参数解析”题让你从一串Query String里提取指定参数的值。这种题跟Web安全高度相关解的时候要注意URL编码问题比如%20代表空格、%2F代表斜杠。有些同学代码逻辑都对了但忘了做decode白丢分。3.2 工程能力题日志分析与故障定位除了纯算法题试卷2还会出现一种介于简答题和编程题之间的工程场景题比如给出下面这段Nginx访问日志192.168.1.10 - - [18/Sep/2020:14:23:05 0800] GET /admin/login.php HTTP/1.1 200 2563 192.168.1.10 - - [18/Sep/2020:14:23:06 0800] GET /admin/login.php HTTP/1.1 200 2563 192.168.1.10 - - [18/Sep/2020:14:23:08 0800] POST /admin/login.php HTTP/1.1 302 0 10.0.0.4 - - [18/Sep/2020:14:23:10 0800] GET /index.php HTTP/1.1 200 1024问你从中能看出什么问题。正确答案里至少要包含这两点第一192.168.1.10在极短时间内反复请求/admin/login.php这是典型的暴力破解或撞库行为第二POST返回302说明登录接口被重定向可能是登录成功也可能是跳转到验证页需要进一步跟踪。这种题的答法非常讲究不是让你随便写两行字就算完而是要有“信息-判断-行动”的完整链条。我看到好的答案是这么写的先指出异常IP和异常行为模式再判断攻击类型最后给出处置建议封IP、启用双因子认证、检查是否有成功的登录记录、调整密码策略。这种结构不仅能拿分也能让阅卷人觉得你确实有处理安全事件的经验。3.3 代码审阅和漏洞识别题这部分是我个人最喜欢的设计。试卷2会让你看一小段代码并找出安全问题这种题比单纯考原理更考验真实水平。比如import os from flask import request def download_file(): filename request.args.get(name) filepath os.path.join(/data/files, filename) with open(filepath, rb) as f: return f.read()你一眼就能看出这是个路径遍历漏洞。用户传一个../../etc/passwdos.path.join的过滤形同虚设。修复方式是对filename做严格的白名单校验或者用os.path.realpath检查最终路径是否还在指定目录内。这种题做多了你会发现出题人不是要你背CVE编号而是要你养成“代码一上手就找输入入口、找信任边界”的思维习惯。4. 实操复盘我在笔试现场踩过的坑4.1 时间分配策略我为什么建议先做编程题这套卷子的题量在60-70分钟里要做完压力不算小。第一次做的时候我把太多时间放在了一道多选题上反复犹豫结果编程题最后只剩不到15分钟草草写了一个能跑但边界条件全没处理的版本最后当然挂了。第二次复刷时我调整了策略先用5分钟快速浏览全卷把编程题放在最开始做。原因很简单编程题分值高且对状态要求高越到后面越没脑子写。选择题再难也是确定性的可以用后面的时间慢慢抠。这个策略帮我从“勉强做完”变成了“还能留10分钟检查”。具体的时间分配可以参考编程题25分钟简答题15分钟选择和判断20分钟最后5分钟扫一遍多选题和填空。简答题不需要长篇大论把关键几个点写清楚就够了写得多不一定是好事反而容易漏出破绽。4.2 我在多选题上的三个典型失误多选题是这个卷子里失分最惨的地方后来复盘时我总结了自己的三个问题相信很多人也有同感。第一个问题是“过度联考”。比如题目问“下列哪些命令可以查看TCP连接状态”选项里有netstat、ss、lsof、ps。我心里清楚netstat和ss是正解lsof也能通过-i参数看到连接于是把lsof也选了结果漏选了nmap。这暴露了我对“边界”拿捏不准的问题。这种题的解法是尽量按“最常用、最直接”的标准选别为了展示知识面硬凑选项。第二个问题是“知道一个选项错误以为整题都错”。当看到某个明显错误的选项时潜意识里会对其他选项也放松警惕结果把本该选上的正确选项漏了。后来我强迫自己每个选项独立判断不受前后选项干扰。第三个问题是“多选题里碰到不确定的选项”。我的做法是宁少勿多因为漏选扣分概率低于错选得0分的概率。别贪保证能拿的分拿到手就是胜利。4.3 编程题踩坑边界条件和输入校验编程题最容易踩的坑反而不是算法本身而是边界条件。有一道题是处理日志里的IP并统计次数题目没说输入是空的时候输出什么。我按最常规的空列表处理了但忘了考虑“IP不合法”的情况。这要是真实日志肯定会有脏数据所以做笔试题时看到描述涉及“日志”“用户输入”这类词第一反应就是加非空判断、非法输入判断。from collections import Counter def count_ip(log_lines): if not log_lines: return {} ip_counter Counter() for line in log_lines: parts line.split() if len(parts) 0: ip parts[0] ip_counter[ip] 1 return ip_counter.most_common()这是我后来优化过的写法虽然简单但至少保证了空输入不报错。笔试答题时不求惊艳求稳健。4.4 面试官在反问环节追问什么笔试过了之后面试官一定会从笔试卷子里挑几道题追问我在面试里被问过的就有SQL注入怎么绕过参数化查询、如果让你给一台刚装好的Linux服务器做安全基线加固你会做哪些事、如何从日志中判断一个请求是爬虫还是攻击扫描。这些追问的本质是看你是不是真的理解原理而不是背答案。所以备考时不要只记结论要多问自己几个“为什么”为什么WAF能拦截SQL注入为什么它拦不住某些变形为什么流量加密后WAF就失效了。想明白了这些面试环节基本就能从容应对。5. 针对校招备考的完整路线与建议5.1 三个月的备考时间表如果你从现在开始准备奇安信这类安全厂商的IT工程师笔试我建议把备考拆成三个阶段。第一个月打基础主攻计算机网络、操作系统和安全基础。这个阶段的重点是把原理吃透而不是刷题。TCP/IP协议栈、Linux权限模型、常见Web漏洞原理这三块是地基建议每天固定花2-3个小时看书加动手做实验。网络用Wireshark抓包看三次握手Linux自己装个虚拟机练习用户管理、权限管理、日志查看安全漏洞可以用本地靶场去复现。只有亲手看到漏洞的效果印象才深。第二个月进入刷题和查漏补缺。每天固定做一套笔试题或专项题库做完立刻复盘建一个错题本。错题本的关键不是记录答案而是记录你当时为什么想错。这个阶段同时要开始刷LeetCode的字符串和数组题每天两道就够重点是保持手感。第三个月做模拟和实战。严格按照90分钟的时限做套卷做完后把每类题型的得分率统计出来针对弱项再补强。同时在Github上找一些开源的靶场和日志分析练习项目练手的同时也能积累面试时能讲的实战案例。有条件的同学去参加CTF比赛哪怕是校内赛也能让自己的漏洞理解上一个台阶。5.2 资料清单少而精备考资料不需要太多但要选对。网络方面推荐《图解TCP/IP》配《Wireshark数据包分析实战》协议看得见摸得着比死记硬背效率高。操作系统方面看《鸟哥的Linux私房菜》的权限、进程、日志三章就够了没必要整本啃完。Web安全方面最好的是啃一遍OWASP Top 10官方文档和PortSwigger的Web Security Academy网上可以免费练习而且实操性强。编程题方面LeetCode前100题里的简单和中等难度题刷熟即可不需要碰困难题。但请重点练字符串、哈希表、双指针这三类因为它们在笔试卷里出现频率远超其他类型。5.3 答题心态这套卷子没人是满分最后想说一个很多人会忽略的事实这类校招笔试卷子并不指望你拿满分。它的作用是筛选不是竞赛。一张70分以上的卷子可能比一张85分但多选题全靠蒙的卷子更有竞争力因为面试官能从你的答题过程里看到你哪些能力是扎实的。我在复盘时最大的感受是做这套卷子就像重建一条安全链路的信任链基础原理是证书链工程能力是加密握手代码能力是会话密钥。每一环都得验证过整条链路才稳。你不需要在每个环节做到顶尖但一定不能有致命的脱节。如果你准备投奇安信不妨把这份复盘当成一份地图先查看自己的网络基础是否牢固再检查Linux实操是否有短板最后用Web安全和编程题测试自己的实战嗅觉。把这三关都过了校招这道坎就算迈过去了一半。剩下的就看你在面试桌上能不能把笔试里的思考过程讲成属于你自己的故事了。
返回列表