软件工程本科生宝典
首页/求职全流程指南
求职与出路

求职全流程指南

从大三上的方向定型,到大四下的入职衔接:时间线、简历、笔试、面试、offer 决策,一步不落。

求职是一场信息战 + 时间战,而不是大三下才开始的短跑。真正的分水岭在大三上:你此时的技术深度、项目质量与信息差,直接决定暑期实习的天花板,而暑期实习又基本决定秋招的起点。下面按时间线拆解从大三上到大四下的关键节点,再给出简历、笔试、面试、offer 四段实操指南。请把它当作一张行军地图:先看清节点,再倒推每个阶段该产出什么,别等公告发出来才慌。

⏳求职时间线(大三上 → 大四下)

  1. 大三上 9-11月
    技术路线定型 + 项目冲刺
    确定主攻方向(后端/前端/算法/客户端等),把 1 个主线项目做到能上线并有量化指标。同时刷完《剑指 Offer》第一遍。此阶段目标不是投递,而是攒出「一份敢发出去的简历」。
  2. 大三上 12-1月
    刷题与八股启动 + 简历初稿
    LeetCode 累计 150-250 题,覆盖数组、链表、哈希、二分、双指针、树、DP。同步复习操作系统、网络、数据库、语言特性四大八股。写出简历初稿并找人改。
  3. 大三下 2-3月
    简历打磨 + 内推渠道搭建
    项目描述量化落地,准备 2 个能讲 20 分钟的项目故事。加入内推群、牛客、学长学姐渠道,整理目标公司清单(分冲刺/匹配/保底三档)。
  4. 大三下 3-4月
    暑期实习投递高峰
    春招实习主战场:腾讯、字节、阿里、美团、百度、网易等陆续开放暑期实习。字节等公司 3 月即开始,越早投机会越多,实习转正率普遍高于秋招直招。
  5. 大三下 4-6月
    实习面试 + 拿 offer
    多轮技术面 + HR 面密集进行。策略是「海投练兵、重点突破」:先面几家练手,再面最想去的。拿到 offer 后尽快确认入职时间,别拖到名额关闭。
  6. 大三下 6-8月(暑假)
    暑期实习在职
    实习是秋招最强的背书。目标:拿到转正意向(return offer);即使不能转正,也要沉淀一份完整项目经历与导师评价,写进秋招简历。
  7. 大三下 7-8月
    秋招提前批(关键窗口)
    提前批早于正式秋招,很多公司(如华为、部分外企、部分大厂)7-8 月就开。提前批通常不占用正式批名额,等于多一次机会,务必投入。
  8. 大四上 8-10月
    秋招正式批主战场
    秋招黄金期,岗位最多、竞争最激烈。建议同时投 30-60 家,做好投递、笔试、面试日历管理,避免撞车。这一步决定大多数人第一份工作的层位。
  9. 大四上 10-11月
    补录 + 谈薪 + 签约
    部分岗位补录、谈薪与签三方在此阶段。三方签字前务必看清违约金、户口、地点、岗位、薪资构成。拿到多个 offer 时理性排序,别被单一因素绑架。
  10. 大四上 11-12月
    防「背刺」与保底兜底
    「背刺」指企业临近入职/发 offer 后毁约。对策:手里至少保留 2 个意向,别只押一家;应届生毁约维权可走校方就业办与劳动仲裁参考。同时准备春招兜底方案。
  11. 大四下 2-4月
    春招(最后窗口)
    春招岗位少于秋招,但仍有大厂补招与考研失利者的机会。此时手里没有合适 offer 的同学务必全力投入;有 offer 的可尝试跳一跳更好的岗位。
  12. 大四下 3-5月
    毕业设计 + 入职准备
    毕设尽量与实习/工作方向结合,一举两得。同步处理体检、档案、派遣证、落户材料与租房。提前 1-2 个月学习入职技术栈,避免入职即掉队。
  13. 大四下 6-7月
    毕业、报到与正式入职
    完成答辩与毕业手续,按时报到。入职前搞清试用期考核标准、转正流程与五险一金基数。入职前 30 天是建立第一印象的黄金期,多问多看少抱怨。
  14. 长期 贯穿始终
    信息与人脉经营
    关注牛客、学校就业网、公司招聘公众号、内推群,定期维护学长学姐关系。信息差能让你比别人早知道一个月的岗位,这一个月往往就是差距。

📄简历:一页纸决定你有没有面试

简历是求职的入场券:HR 平均只扫 10-20 秒,技术面官只看与岗位相关的 3-5 行。它的目标不是「记录你做过什么」,而是「让看的人 10 秒内判断你值得一面」。所以:一页纸、强相关、可量化、能追问,四者缺一不可。以下铁律、结构、范例与常见错误,请逐条对照自查。

⚡ 十条铁律

  1. 一页纸原则:应届生简历严格控制在一页,写不满说明没东西写,写超说明没取舍。
  2. 倒序排列:教育背景、实习、项目一律按时间倒序,把最新最强的放最上面。
  3. 量化优先:凡是能写数字的都用数字,「提升了性能」改成「P95 从 480ms 降到 90ms」。
  4. 动词开头:每条描述用动词开头(设计、实现、优化、主导),不要写「负责了」「参与了」这种弱词。
  5. 与岗位强相关:投后端就突出并发、数据库、分布式;投算法就突出数据、模型、指标;无关的社团经历果断删。
  6. STAR 压缩成一行:情境 + 你的动作 + 技术选型 + 量化结果,一行讲完一件事。
  7. 可验证、可追问:简历上每一行都要做好被深挖的准备,不懂的千万别写,写了就是给自己挖坑。
  8. 技术栈写熟悉的:列出你能被追问到底的语言/框架,别把「了解」的东西全堆上去。
  9. 格式统一:字号、行距、标点中英文一致;不要用花哨模板、彩色背景和照片(除非明确要求)。
  10. 命名规范:文件名用「姓名-学校-岗位-电话.pdf」,方便 HR 归档,也显得专业。
  11. PDF 格式:Word 在不同设备会错版,务必导出 PDF 再投递。
  12. 针对不同岗位微调:为后端、算法、客户端各存一版,调整项目排序与关键词,别一份简历投所有。
  13. 别写无用信息:身高体重、家庭住址、与岗位无关的证书(普通话二甲)能删就删。
  14. 留联系方式且可打通:邮箱用正式地址,电话保持畅通,面试通知往往当天来。

🧱 模块怎么写

模块怎么写
基本信息姓名、电话、邮箱、GitHub/博客(有就放,是加分项)、求职意向。一行搞定,不要大头像和身份证号。
教育背景学校、专业、起止时间、GPA/排名(好就写)、核心课程(与岗位相关才写)。成绩一般可不写 GPA,改突出项目。
专业技能按语言、框架、数据库、工具分类列出。只写能被追问的,注明熟练度(熟练/熟悉/了解)或干脆不标。
实习经历公司、岗位、时间 + 3-4 条量化成果。写清你负责的模块、用了什么技术、带来了什么可度量结果。
项目经历项目名 + 技术栈 + 2-3 条「做了什么/怎么做的/结果如何」。这是应届生简历的核心,最好有 2 个能深聊的项目。
竞赛/科研/开源有含金量的竞赛(ACM、数模、挑战杯)、论文、开源贡献放这里,注明获奖等级、排名或 Star 数。
其他英语能力(四六级分数、雅思托福)、技术博客、写的技术文章等。可选,宁缺毋滥,不占宝贵版面就别写。

✨ 项目描述范例(量化写法)

后端开发工程师
  • 设计并实现高并发短链服务(Java + Redis + MySQL),采用号段发号与布隆过滤器防穿透,单机压测 QPS 8000+,跳转接口平均耗时 6ms。
  • 重构订单模块的表结构与 SQL,为热点字段建立复合索引并引入 Redis 缓存,接口 P95 从 480ms 降至 90ms,数据库 CPU 峰值下降 40%。
  • 基于 Kafka 解耦下单与通知流程,通过消息幂等表与消费重试保证最终一致,重复下单投诉从每周 12 起降为 0。
前端开发工程师
  • 主导校园二手平台前端架构(Vue3 + TypeScript + Vite),抽象 20+ 复用组件并落地按需加载,首屏体积从 1.8MB 降至 700KB,LCP 从 3.2s 优化到 1.1s。
  • 实现基于虚拟列表的长列表渲染,支持 1 万条数据流畅滚动,实测滚动帧率稳定在 58FPS 以上,页面卡顿投诉归零。
  • 搭建前端监控与错误上报(Sentry),上线后 2 周内定位并修复 15 个线上问题,前端错误率从 1.2% 降至 0.15%。
算法/数据工程师
  • 基于百万级用户行为数据搭建召回 + 排序推荐链路(Spark + Faiss),离线 AUC 从 0.68 提升至 0.76,线上点击率相对提升 18%。
  • 构建 RAG 知识问答系统,入库 1.2 万段文本,通过向量 + BM25 混合检索将答案命中率从 62% 提升到 88%,平均响应时间 1.8s。
  • 搭建模型部署平台(FastAPI + Docker + K8s),将模型上线周期从 3 天缩短到 2 小时,服务在 3 倍流量下自动扩容无宕机。

⚠️ 最常见的错误

  • 堆砌技术名词却讲不清原理,面试一问就露馅。
  • 项目描述全是「负责/参与」这类弱动词,看不出你的具体贡献。
  • 全部用形容词,「大幅提升」「性能优化」没有数字支撑。
  • 写了不真实或夸大的经历,背调或追问时崩盘。
  • 简历超过一页,把无关的社团、兼职经历塞满版面。
  • 技术支持与岗位错配,投后端却满篇前端与设计。
  • 错别字、格式混乱、字体不统一,第一印象直接扣分。
  • 用 Word 发送导致错版,或文件名是「简历最新版最终版2.pdf」。
  • 邮箱是昵称乱码地址,电话打不通,错过面试通知。
  • 罗列「了解」级别的技术栈,被追问后自曝短板。

✏️笔试:怎么准备才有效率

笔试是筛人的第一道大闸,尤其大厂和金融科技岗。它考的不是天赋,而是熟练度 + 题型覆盖 + 时间管理。多数笔试由「编程题 + 选择/填空(八股、数学、行测) + 部分岗位的英语/性格测评」构成。策略很简单:提前 2-3 个月按题型专项训练,用在线平台限时真题模拟,把会做的题稳稳做对,不会的果断跳过。

📋 题型构成

算法编程题

占分最高,2-4 道,难度接近 LeetCode 中等,覆盖数组、字符串、DP、图、二分、模拟。大厂按通过率筛人,AC 数量直接决定进面。

计算机基础选择题

操作系统、计算机网络、数据库、数据结构、编译原理的客观题,考概念辨析与计算(如页面置换、TCP 窗口)。

语言/框架专项题

按岗位出题,如 Java 的 JVM 与并发、C++ 的内存与模板、前端的 JS 原型链与事件循环。

数学与逻辑题

概率、组合、数论、智力题、图形推理,常见于算法岗、量化与部分外企笔试。

行测(言语/数量/推理/资料)

国企、银行、公务员类笔试的主体,题量大、时间紧,需要专门刷题找手感。

英语题

外企与部分岗位考阅读理解、完形填空,或英文技术文档理解。

性格/职业测评

常在面试前或笔试后,考察稳定性与匹配度;答案要一致、正向,不要刻意伪装。

🌐 刷题平台

题库、公司真题、在线编程与讨论区一应俱全,是国内校招笔试准备的主阵地。

算法刷题首选,按标签和难度系统训练,Hard 题可跳过但中档题必须刷熟。

众多大厂笔试的实际承载平台,熟悉其输入输出格式与判题方式很重要。

外企与部分大厂使用的编程测评平台,题型偏工程实现。

国际通用的编程与技能测评平台,外企笔试常见。

竞赛向,适合想冲击高难算法岗或保持比赛手感的人。

算法岗的数据分析与建模实训/竞赛平台,适合数据方向作品积累。

🎯 备考策略

  1. 提前 2-3 个月开始,按标签系统刷题,先保证数组/字符串/哈希/二分/双指针/树这六类题稳过。
  2. 限时训练:把每次练习当作正式笔试,60-90 分钟 3 道题,培养时间压力和取舍能力。
  3. 真题优先:笔试风格因公司而异,找到目标公司近 1-2 年的真题限时模拟,比盲目刷题有效得多。
  4. 先易后难:进考场先通读全部题目,先拿稳能 AC 的题,再回头啃难题,避免在难题上耗尽时间导致简单题没时间做。
  5. 强制输入输出练习:赛码/牛客的 ACM 模式要自己处理输入输出,提前熟悉,别在格式上丢分。
  6. 建立错题本:每道没做出来的题,写清卡点(思路/边界/复杂度),一周后重做。
  7. 八股与编程并重:选择题占比不低,用碎片时间过计算机网络、操作系统、数据库的高频考点。
  8. 复杂度和边界意识:写代码前先说清时间和空间复杂度,主动检查空数组、单元素、溢出等边界,这是很多人的隐形失分点。
  9. 笔试是筛人不是选秀:目标是进前 20%,不必追求满分,稳定 AC 中等题比死磕 Hard 更划算。
  10. 心态管理:笔试挂掉非常正常,一次没过不代表水平差,别因一场笔试怀疑自己,继续面下一家。

🎤面试:从一面到 HR 面

面试是双向选择,你要在 45-60 分钟里证明「我能干活、我能成长、我靠谱」。技术面考硬实力(八股、算法、项目、系统设计),HR 面考匹配度与稳定性。核心准备有三块:把八股讲成「能背也能画图」的体系、把手撕代码练到肌肉记忆、把项目打磨成可以承受 30 分钟深挖的故事。下面按流程、题型、技术题、行为题、技巧逐项展开。

大厂校招标准流程(如字节/腾讯/阿里)
简历筛选 → 在线笔试 → 2-3 轮技术面(算法 + 八股 + 项目) → 交叉面/总监面 → HR 面 → offer 审批与谈薪

技术面重算法与项目深挖,越往上越看潜力与业务理解;HR 面看稳定性、薪资预期与是否有其他 offer。

中小厂 / 创业公司流程
简历筛选(或内推直聊) → 1-2 轮技术面(偏工程实操) → CTO/技术负责人面 → HR 谈薪

更看重「能不能立刻上手」,会问具体框架用法、调试经验与独立解决问题能力,算法难度较低。

国企 / 银行科技岗流程
网申 + 资格审查 → 笔试(行测 + 专业 + 英语) → 多对一结构化面试 → 体检与政审 → 签约公示

流程长、周期久,重视稳定性、政治面貌、家庭情况与政治素养,专业面相对温和但行测不容忽视。

算法 / 研究岗流程
简历 + 论文/竞赛筛选 → 笔试(数学 + 编程 + 机器学习) → 技术面(论文复现、模型原理、实操) → 论文/项目答辩 → HR 面

会深挖论文细节、实验设置与指标,常要求白板推导公式或现场写模型代码,准备时要能讲清 every choice 的理由。

⌨️ 手撕代码

  • 手撕算法:多为 LeetCode 中等题,常见「两数之和、链表反转、二叉树遍历、快排/归并、LRU、Top-K、字符串处理」。练到能边写边讲思路,注意边界与复杂度分析。
  • 手撕数据结构:现场实现 LRU Cache、阻塞队列、最小栈、Trie、并查集,考的是你把抽象数据结构代码化的熟练度。
  • 手撕 SQL:多表联查、分组统计、窗口函数、行转列、找第 N 高薪,准备时把常见场景写成模板背下来。
  • 手撕设计模式/多线程:写单例、生产者消费者、线程池、死锁复现与解决,考并发基本功。
  • 手撕前端题:防抖节流、深拷贝、Promise 并发控制、数组扁平化、手写 bind/call,前端面试几乎必考。
  • 白板/共享文档编程:有些公司用白板或共享编辑器,练习在没有 IDE 补全的情况下写完整可运行代码。
  • 边写边说:不要闷头写,把思路、复杂度、边界检查讲出来,面试官更看重沟通与工程思维。

🏗️ 系统设计与项目深挖

  • 系统设计从需求澄清开始:先问清楚量级(QPS、数据量、读写比)、功能边界与一致性要求,再谈方案,切忌上来就画架构。
  • 用「分层 + 组件」思路回答:客户端 → 网关/负载均衡 → 应用层 → 缓存 → 数据库 → 消息队列 → 存储,逐层说清为什么需要。
  • 常见设计题要提前准备模板:短链、秒杀、朋友圈/Feed、聊天系统、排行榜、限流器,套用「容量估算 + 数据模型 + 核心流程 + 瓶颈与优化」框架。
  • 项目深挖要点:被问最多的三个问题是「你做了什么、为什么这么做、有没有更好的方案」,提前把每个技术选型的 trade-off 想清楚。
  • 讲清取舍而非炫耀技术:不用为了显得高级硬上分布式,说明「在给定规模下选简单方案更合适」反而加分。
  • 被问不会的问题不要硬编:诚实说没接触过,但讲你会如何查资料、如何类比已知方案去思考,考察的是解决问题的能力。
  • 准备一个「踩坑与重构」故事:讲你如何定位线上问题、如何推动改进,这比炫技更能体现工程成熟度。

🗣️ 行为面(STAR 回答)

Q:请做一下自我介绍(1-3 分钟)

STAR 的 S+T:用「我是谁 + 我做过什么最有代表性的事 + 我为什么匹配这个岗位」三段式,控制在 90 秒内,结尾抛一个钩子引导面试官追问你最想聊的项目。

Q:你认为你最大的优点和缺点是什么?

优点选一个与岗位强相关的并有例子支撑(如「执行力强」配一个加班啃下难题的案例);缺点选一个真实的、非致命的、且你正在改进的(如「过于追求细节,现在会用优先级清单管理时间」),避免用「我太追求完美」这种套话。

Q:讲一次你和队友意见不合/冲突的经历。

STAR:说清冲突点、你如何倾听与用数据/原型说服对方、最终结果如何、你学到了什么。重点展示沟通技巧与以目标为导向,而不是评判谁对谁错。

Q:讲一次你失败或受挫的经历。

STAR:选一个真实但已经翻盘的失败(如竞赛失利、项目延期),重点是你如何复盘、采取什么行动、之后如何避免同类问题,结尾落到成长。

Q:你遇到过的最大技术挑战是什么?怎么解决的?

STAR:讲清问题背景、你如何定位(日志/复现/二分排查)、你尝试了哪些方案、最终怎么解决、量化结果如何。考察的是解决问题的路径而非结果本身。

Q:为什么选择我们公司/为什么投这个岗位?

做足功课:说出公司具体的业务/技术亮点(用过你们的产品、读过技术博客、认同某个方向),再连接自己的能力与意愿,避免「因为你们是大厂」这类空话。

Q:你的职业规划是什么?

给一个 3-5 年的务实规划:短期(1 年)成为能独立负责模块的工程师,中期(3 年)在某个技术方向形成深度,与公司发展方向挂钩,展现稳定性与成长意愿。

Q:你手里还有哪些 offer?怎么选?

诚实但有策略:可以说在做选择,重点讲你的评判标准(技术成长、业务方向、团队氛围、地点),让 HR 感受到你的理性与对该公司真实的兴趣,为谈薪留余地。

Q:如果让你做一个你没接触过的项目,你怎么上手?

展示方法论:先理解目标与验收标准 → 调研同类方案与文档 → 搭最小可运行原型验证 → 逐步迭代补齐功能与测试,强调快速学习与拆解问题的能力。

Q:你能接受加班/出差吗?

展现态度但守底线:表达能配合项目节奏、在关键节点愿意投入,同时说明你更看重效率与目标达成。避免一口回绝,也别承诺无底线加班显得没判断力。

❓ 高频技术题与答题要点

TCP 三次握手和四次挥手的过程,为什么是三次/四次?

三次握手确保双方收发能力都正常并同步初始序号,两次无法确认客户端收到服务端序号;四次挥手因为 TCP 全双工、被动方可能还有数据要发,故 ACK 与 FIN 要分开,且需 TIME_WAIT 等待 2MSL 让旧连接报文消散。

HTTP 和 HTTPS 的区别,HTTPS 握手过程是怎样的?

HTTPS = HTTP + TLS,用非对称加密协商对称密钥、再用对称加密传数据,并提供证书验证身份与完整性。握手核心:ClientHello → ServerHello + 证书 → 客户端验证并生成预主密钥(用服务端公钥加密)→ 双方导出会话密钥 → 加密通信。

进程和线程的区别?协程呢?

进程是资源分配的最小单位、有独立地址空间;线程是 CPU 调度的最小单位、共享进程资源。协程是用户态的轻量级线程,由程序自行调度,切换开销小、适合 IO 密集场景(如 Go 的 goroutine)。

进程间通信有哪些方式?

管道/命名管道、消息队列、共享内存(最快,需同步)、信号量、信号、Socket。共享内存加信号量是高性能场景的常用组合。

死锁的四个必要条件及如何避免?

互斥、请求并持有、不可剥夺、循环等待。避免手段:统一加锁顺序(破坏循环等待)、超时放弃锁、一次性申请全部资源、用无锁结构或资源分级。

MySQL 索引为什么用 B+ 树而不是 B 树或哈希?

B+ 树高度低、非叶子只存键,磁盘 IO 少;叶子节点用链表连接,天然支持范围查询和排序;哈希虽等值查询 O(1) 但不支持范围查询且无法利用最左前缀。B+ 树是范围与等值兼顾的最优折中。

什么是数据库事务的 ACID?隔离级别有哪些?

原子性、一致性、隔离性、持久性。隔离级别由低到高:读未提交、读已提交、可重复读(MySQL 默认)、串行化。级别越高一致性越强但并发越低,可重复读一定程度上靠 MVCC 避免不可重复读。

MVCC 是什么?解决什么问题?

多版本并发控制,通过 undo log 版本链 + ReadView 让读操作不加锁地读取快照,实现读写不阻塞,避免不可重复读和部分幻读,是 MySQL InnoDB 支持高并发读的核心机制。

Redis 的持久化 RDB 和 AOF 各自的优缺点?

RDB 是定时快照,文件小、恢复快,但可能丢最后一次快照后的数据;AOF 记追加命令,实时性好、可按策略 fsync,但文件大、恢复慢。生产常用混合持久化(RDB 全量 + AOF 增量),兼顾恢复速度与数据安全。

缓存穿透、击穿、雪崩分别是什么,怎么解决?

穿透是查不存在的数据绕过缓存打库,用布隆过滤器或缓存空值;击穿是热点 key 过期瞬间大量请求打库,用互斥锁/逻辑过期或热点永不过期;雪崩是大量 key 同时失效,用过期时间加随机、多级缓存和限流降级。

什么是一致性哈希?为什么需要它?

把节点和数据都映射到哈希环上,数据顺时针归到最近的节点。普通取模在扩缩容时几乎全量迁移,一致性哈希只迁移相邻节点数据,并引入虚拟节点解决数据倾斜,常用于分布式缓存与负载均衡。

JVM 内存结构是怎样的?垃圾回收怎么做?

运行时数据区含堆、方法区(元空间)、虚拟机栈、本地方法栈、程序计数器。堆分新生代(Eden + 两个 Survivor)和老年代。回收算法有标记清除、复制、标记整理,GC 通过可达性分析判断存活对象,Minor/Full GC 分别回收新生代与整堆。

Java 中 HashMap 的底层实现,为什么容量是 2 的幂?

数组 + 链表 + 红黑树,哈希冲突时链化,链表长度≥8 且容量≥64 转红黑树。容量取 2 的幂可用 (n-1) & hash 代替取模提高效率,扩容时元素要么原位置要么原位置 + 旧容量,迁移更高效。

volatile 和 synchronized 的区别?

volatile 保证可见性和有序性(禁止指令重排)但不保证原子性;synchronized 保证原子性、可见性、有序性但会加锁。volatile 适合状态标志位,synchronized 适合复合操作的临界区。

线程池的核心参数有哪些?工作流程是怎样的?

核心线程数、最大线程数、空闲存活时间、时间单位、阻塞队列、线程工厂、拒绝策略。流程:核心线程未满则新建;满了入队;队列满且未达最大线程则新建;再满则执行拒绝策略。参数要按任务类型(CPU/IO 密集)调优。

浏览器输入 URL 到页面展示发生了什么?

DNS 解析 → TCP 三次握手 → (HTTPS 则 TLS 握手)→ 发送 HTTP 请求 → 服务端处理并返回响应 → 浏览器解析 HTML 构建 DOM/CSSOM → 合成渲染树 → 布局与绘制 → 执行 JS。期间还涉及缓存、重定向与资源并发加载。

闭包是什么?有什么用途和风险?

闭包是函数与其定义时词法环境的组合,使内层函数能访问外层变量。用途:封装私有变量、实现柯里化与模块化。风险:被引用的变量无法释放,循环中误用 var 会共享同一变量,需注意内存泄漏与作用域。

== 和 === 的区别?JS 的类型转换规则?

== 会做隐式类型转换后再比较,=== 严格比较类型与值。== 规则复杂(null == undefined 为 true,字符串与数字比较会转换),工程中建议一律用 === 以避免意外。

跨域是什么?有哪些解决方案?

受同源策略限制,协议/域名/端口任一不同的请求即为跨域。方案:CORS(服务端设 Access-Control-Allow-Origin,最常用)、JSONP(仅 GET)、代理(Nginx 或开发服务器转发)、WebSocket、postMessage。首选 CORS + 代理。

如何设计一个高并发系统?

分层优化:接入层负载均衡与 CDN、应用层无状态 + 水平扩展 + 限流降级、缓存层多级缓存、数据层读写分离 + 分库分表 + 最终一致(消息队列)。核心是识别瓶颈、按读写比与一致性要求做取舍,并用容量估算与压测验证。

什么是幂等?如何保证接口幂等?

同一操作执行一次和执行多次结果一致。方案:唯一索引/去重表、Token 机制(先取 token 再校验)、状态机约束(只允许合法状态迁移)、乐观锁版本号、分布式锁。支付与订单场景必问。

Git 中 merge 和 rebase 的区别?

merge 保留分支历史并生成合并提交,历史真实但有分叉;rebase 把当前分支提交嫁接到目标分支,历史线性整洁但会改写提交哈希。团队协作中公共分支尽量用 merge,个人分支整理用 rebase,且不要对已推送的公共分支 rebase。

Linux 常用命令有哪些?如何排查 CPU/内存问题?

常用:ps、top/htop、grep、awk、sed、netstat/ss、df、du、tail。排查:top 看 CPU 与负载,vmstat/iostat 看 IO,free 看内存,jstack/jmap 看 Java 线程与堆,perf 做火焰图,结合日志定位。

什么是 CAP 定理?BASE 理论是什么?

CAP 指一致性、可用性、分区容错性三者不可同时满足,分布式系统必须选 P,再在 C 与 A 之间权衡(如 CP 的 ZooKeeper、AP 的 Eureka)。BASE 是基本可用、软状态、最终一致,是对 CAP 中 AP 的工程实践延伸。

💡 面试技巧与禁忌

  • 面试是概率游戏:投 30 家才拿 3 个 offer 非常正常,别因几次失败否定自己,控制情绪比技术更重要。
  • 每次面试后立即复盘:把被问倒的问题记下并当天查清,第 5 场面试会比第 1 场强很多。
  • 自我介绍练到滚瓜烂熟但不背稿:要自然、有重点、能引导面试官问你准备好的项目。
  • 项目准备「三问」:我做了什么、为什么这么做、有没有更好方案,把每个技术选型都想透。
  • 不会就承认,别硬编:说「没接触过,但我理解是…,我会这样查证」比胡说更受认可。
  • 手撕代码时先口述思路和复杂度再动手,写完后主动跑几个边界用例,展示工程素养。
  • 主动引导话题:在回答里埋下你熟悉的钩子(「这块我用过 XX 优化」),让面试官顺着问你擅长的地方。
  • 面试时保持平等心态:你在选公司,公司也在选你,紧张时深呼吸,把面试当技术交流而非审判。
  • 准备好 2-3 个反问问题(团队技术栈、新人培养、业务方向),体现你的认真与主动性。
  • 注意软性禁忌:不要贬低前任公司/同学,不要抱怨加班文化,不要透露其他公司的保密薪资,不要迟到或失联。
  • 着装与设备:线上面试提前测网络、摄像头与麦克风,环境安静、背景整洁,着装整洁得体即可。
  • 跟进与礼貌:面试后当天可发感谢邮件/消息,被拒后礼貌询问反馈,很多机会来自长期关系维护。

🤝Offer 决策、谈薪与入职

拿到 offer 只是开始,选对、谈好、签稳同样决定你的起点。这一步要理性判断「薪资不是唯一」,看清岗位、地点、成长空间与合同条款;同时保护自己不被毁约、不被虚假承诺套路。以下主题覆盖选择、谈薪、三方、违约金、背调与入职准备。

如何选择 offer(多 offer 决策)
  • 给维度打分:技术成长、业务方向、团队氛围、薪资与涨幅、地点与户口、稳定性、通勤与生活成本,加权后比较。
  • 优先看「三年后的你」:第一份工作最大的价值是能力与平台背书,别只盯月薪高几百块。
  • 警惕伪高薪:算清时薪与总包结构(月薪 × 月数 + 股票 + 补贴),有的高月薪对应高强度加班和低成长。
  • 文科/体制内 vs 互联网:稳定性与收入弹性是两条完全不同的路,想清楚你要什么,别两头都想占。
如何谈薪与提高总包
  • 谈薪前提是「有牌可打」:手里有其他 offer 或不可替代的技能,才有议价空间。
  • 了解市场行情:查同城同岗位应届薪资区间、公司薪资结构与评级(如 SP/SSP),做到心中有数。
  • 不要先报数字:被问期望薪资时,可先问岗位薪资范围,或给一个基于行情的区间而非具体数字。
  • 谈总包而非月薪:把签字费、股票、年终、补贴、住房补贴都算进去,股票要问清 vesting 与兑现规则。
三方协议与劳动合同
  • 三方协议是就业意向协议,不等同劳动合同;签署前看清违约金、服务期、户口与岗位约定。
  • 违约金有上限:一般不超过实际损失,多数地区约定不超过一个月或几个月工资,别被天价违约金吓住。
  • 入职后应及时签订正式劳动合同,明确试用期时长(一般不超 6 个月)、薪资、岗位与工作地点。
  • 留意「阴阳合同」和口头承诺:所有关键条款写进合同,口头 offer 不具约束力,务必留存书面证据。
被毁约/背刺怎么办
  • 保留所有证据:offer 邮件、聊天记录、三方协议、录用通知,维权时是核心凭证。
  • 第一时间联系学校就业办与辅导员:校方在集中签约期有一定协调能力,也能协助补录。
  • 依法维权:可依据协议约定要求赔偿,必要时走劳动仲裁或法律途径;应届生有专门的就业权益保护渠道。
  • 快速止损:立刻重启春招/补录投递,把毁约影响降到最低;很多公司愿意接收被大厂毁约的候选人。
背景调查与材料准备
  • 校招背调相对宽松,主要核实学历、在校经历与实习真实性;互联网大厂部分岗位会做更细的核查。
  • 确保简历信息真实:学历、GPA、实习时间与公司,能提供证明人(导师、实习主管)最佳。
  • 提前准备材料:成绩单、学籍证明、身份证、四六级证书、获奖证明、体检报告,扫描成电子版备用。
  • 有瑕疵提前沟通:如实习经历断档或有处分记录,主动说明往往比被查出更好。
入职准备与第一印象
  • 入职前学习技术栈:把团队使用的框架、代码规范、工具链提前过一遍,第一天就能上手的人最受喜欢。
  • 处理手续:档案、户口、社保公积金基数与缴纳地、党组织关系转移、租房与通勤方案。
  • 调整心态:从学生到职场,关键是从「完成任务」转向「解决问题并交付结果」,主动汇报与沟通。
  • 设置 90 天目标:摸清业务与代码、交付出第一个小功能、建立与团队和 mentor 的信任关系。
试用期与转正
  • 搞清考核标准:试用期目标、转正评估维度与周期,主动向主管确认,别等到评估才发现不达标。
  • 主动要反馈:定期向 mentor 和主管询问做得如何、哪里要改进,把试用期变成快速成长窗口。
  • 守住权益:试用期同样享有五险一金和法定工资标准(不得低于转正工资的 80% 且不低于当地最低工资)。
  • 记录产出:把每个任务的成果与数据记下来,转正答辩和后续调薪都用得上。