教程【免费下载链接】InterviewGuide「InterviewGuide」是阿秀从校园-职场多年计算机自学过程的记录以及学弟学妹们计算机校招秋招经验总结文章的汇总包括但不限于C/C 、Golang、JavaScript、Vue、操作系统、数据结构、计算机网络、MySQL、Redis等学习总结坚持学习持续成长项目地址https://gitcode.com/gh_mirrors/in/InterviewGuide点击查看免费下载本文以 InterviewGuide 仓库中收录的一篇校招经验总结为蓝本docs/notes/05-xiustar/05-campus_recruitment/20221007.md完整还原了一位本科 23 届学弟从土木工程转专业到计算机、最终拿下字节跳动基础架构提前批 offer 的全程实录。文章既保留了原作者在秋招面试、项目准备、面经复盘上的第一手经验也结合 InterviewGuide 仓库中的校招时间点科普、提前批专题、面试八股文等资源做了纵深扩充方便在校生与应届生直接对标查漏补缺。这是一篇非典型上岸的经验帖主角不是手握 ACM 金牌的大神而是大二才转专业、本科要读五年的普通学生。他的上岸路径非常清晰——用自研操作系统 CPU 设计的组合项目在提前批杀出一条血路用八股 刷题守住底线用项目 PPT 电子书把面试主动权握在自己手里。读完本文你可以掌握提前批与正式批的正确打开方式、如何从零准备一个有说服力的系统级项目、C/OS/网络/CPU 方向的真实面试考点清单以及一套可复制的学习资料路线。一、背景从土木到计算机弯路不白走先交代主角的基本盘中流 985、23 届本科前两年土木工程专业大二下转专业到计算机因降级本科总共读五年。作者详细记录了自己的转专业心路这段经历本身对很多想转却不敢转的人极具参考价值转专业门槛学校转专业不需要转出条件只是转入有条件每个人都有资格申请关键在于对方院系是否接收。需要考数学英语计算机方向还要笔试 C 数据结构外加面试机试因疫情那年只保留了面试。晚转的三个顾虑对建筑行业仍保有幻想大学咸鱼状态下没有勇气认真规划未来好面子接受不了转专业后的降级。最终下决心的契机疫情居家网课期间与父母深谈正视行业发展现实用一周时间下定决心。为何弯路要打引号一是高考第一志愿本就是建筑理想败给现实二是两年时间的浪费反而让他明白了时间宝贵、明白了自己真正想做什么属于及时醒悟。转专业之后的常态是除了完成学校课业花大量时间沉下心来研究底层技术尤其操作系统方向并把学习过程沉淀为博客与公众号内容。这个持续记录的习惯在后面面试时派上了大用场见电子书一节。仓库对照关于转专业过来人怎么走校招路线InterviewGuide 中还有更多同类素材可参考例如 docs/notes/05-xiustar/02-campus_prepare/20210824-秀哥我学校垃圾我该怎么办.md以及 docs/notes/05-xiustar/02-campus_prepare/20220521-为什么我建议你能内推尽量找内推.md。二、秋招面试四条主线缺一不可作者到发文时累计面试三十多场把备战经验收敛为四条主线这四条也是全文的方法论核心八股、算法——理解着背勤刷题准备一个比较厉害的项目并为每个项目做个简单的 PPT面试时变被动为主动想办法把面试官往自己的闪光点方向引给面试官展示项目 PPT找个好点的实习。1、八股与算法理解背 高频题 自己的三份 md作者对八股算法的态度非常务实没多少可说的就是看、理解、刷题。算法方面作者在力扣刷了 350 多道自评偏少强调力扣、牛客的高频题要使劲刷同时自我检讨笔试基本不会属于反面教材要多刷题、多总结。八股方面作者有个很有特点的习惯——每个科目自己整理三份 md以 C 为例第一份网罗整理所有的 C 面试题/知识点把《C Primer》《Effective C》、侯捷老师视频里的重要知识汇总看面经时遇到不熟、没见过的就补进去第二份把不熟的部分单独放相当于背英语单词时的生词本第三份画思维导图把零碎知识串成体系。复习时直接看导图拿着生词本背一背理解透了应付基本面试八股大概率没问题。这套总库 生词本 思维导图的三层组织法比单纯囤面经更高效值得直接抄作业。仓库对照InterviewGuide 的八股体系正是按科目组织的现成总库例如 C 方向见 docs/notes/03-hunting_job/02-interview/01-03-01-C11.md 与 docs/notes/03-hunting_job/02-interview/01-04-01-STL.md操作系统方向见 docs/notes/03-hunting_job/02-interview/02-01-os.md 至 02-04-os.md计算机网络与数据库、Redis 也都有对应目录docs/notes/03-hunting_job/02-interview可以作为第一份 md的底稿。2、项目及面试用操作系统 CPU项目绝处逢生这是全文最重要的经验。作者的自我评价是算法八股其实都挺拉基本上就是靠项目制胜原话是一个比较牛逼的项目可以让面试更简单可以让面试绝处逢生柳暗花明。项目是怎么来的简历第一版有两个项目——自研设计的操作系统 简易 MIPS CPU 设计。后来与朋友聊天时受启发朋友在跟东大的 CPUOS 项目作者决定把两者合二为一命名为计算机系统设计项目介绍一句话希望在自己的 CPU 上运行自己的操作系统。这既是简历上的亮点也成了他后续毕业设计的目标。作者还提到这个方向上有清华大佬做CPU、OS、编译器三位一体的前例国内有一生一芯、南大 nemu纯软实现 CPU OS 存储、东大的超标量 CPU 移植 xv6 等项目可对标。为项目做 PPT 的三大好处作者亲测强烈推荐方便叙述基本不会出现讲述卡壳也方便面试官理解你做的事掌握主动权展示 PPT 时面试主动权就握在求职者手里变被动为主动灵活应对不同情况最重要的一点——占时间讲述 PPT 很耗时讲完后基本没剩多少时间面试官往往让写两道题就结束甚至全程聊项目不写题面试难度直线下降。项目过硬带来的实际回报只要项目真的过硬即使其他地方没考察到面试官基本会给过作者遇到过的唯一例外是百度的三面但复盘下来问题出在投递方向不相关——C 岗位投的是 AI 平台被问到 AI 问题确实不会与项目本身无关。作者还记录了一场杠上的面试面试官深挖到具体代码质疑项目是不是网上找的、敷衍了事。作者当时据理力争——自己确实逐行分析了半年代码博客有记录、还有电子书可查。结果面试官反而给了过并推荐加面。作者的反思是只要的确有认真做事面试官还是能看到即使环境不好也还是会给我们机会。3、实习早投递别当反面教材作者强调实习很重要自己面试基本都以实习经历 项目为主。他的教训很典型学校实习因疫情变线上比较水于是自己找了美团的实习找实习时投递太晚拖到 4 月基本没人要了四处碰壁最后是美团收留当时的准备也不充分还没有融合项目 PPT 展示的打法有些面试感觉答得不错但面完就挂找实习期间挂麻了。从找实习四处碰壁到秋招相对顺利的转变说明多做准备是有效果的。作者的秋招战果只面了 6 家公司的提前批百度三面挂方向问题 实力不足3 个过了2 个排序等待外加字节基础架构的 offer。对比之下能早投递还是早投递是血泪教训。仓库对照关于实习的完整价值分析转正概率、简历增色、面试深挖可参考 docs/notes/05-xiustar/02-campus_prepare/02-01-校招重要时间点科普.md 中的暑期实习招聘一节实习经历如何写进简历可参考 docs/notes/05-xiustar/03-resume/01-00-简历开篇词.md。4、其他把博客文章做成电子书效果完全不一样针对写博客、做自媒体对面试是否有加成作者给出了反直觉的实测结论单纯说自己有写博客、有开源分享习惯基本没用——自我介绍提及、简历结尾标注网址都没用面试官不感兴趣也不看换个方法把文章做成合集、汇成电子书效果明显不一样。自我介绍后就有面试官主动说你出过电子书看看呢。面试过程中也可以主动引导——介绍操作系统项目时把面试官往电子书上面引让他点链接看文章博客对你产生兴趣然后给过。作者正是把自己啃 xv6 操作系统的全过程写成了一本电子书含逐行中文注释面试时作为作品集递出去。这个输出物化的思路值得所有在校生借鉴博客是过程记录电子书/开源项目才是可展示的成果。三、面经复盘真实面试题考点清单作者主语言是 C面试方向集中在网络、操作系统、C、MySQL、Linux 命令、编译链接与 ELF 文件格式。他把遇到过的题和当时没答上来的题都记了下来这是本文信息密度最高、最值得逐条对照的部分。1、计算机网络与数据库计算机网络方面目前还没有遇到出格的面试题都在常见八股范围内问题在于有些题背得不熟、问法不熟一下子没反应过来MySQL 直接坦诚有了解不深所以也没被问出格的题都是常见八股但学习时间短、理解不深导致没背熟计划后面再补。仓库对照计算机网络八股见 docs/notes/03-hunting_job/02-interview/03-01-net.md 至 03-06-net.mdMySQL 见 docs/notes/03-hunting_job/02-interview/04-01-01-MySQL.md 等。2、C 与编译链接这部分作者列了 6 个当时没答清楚的点个个都是高频考点RVO 返回值优化构造和析构过程中调用 virtual 函数——出自《Effective C》InterviewGuide 的八股中也有收录共享计数管理资源计数器该放在资源一端还是引用指针一端以 Cshared_ptr为例所有指针共享一块内存因此共享计数是所有指针共享同一块计数区域。作者当时没理清计数跟资源放一起、跟引用放一起、第三方又如何的讨论还遇到过模拟实现 shared_ptr写出所有构造函数和析构函数的手写题感觉要点很多没完全写对动态链接挖坑为了表现自己多说动态链接讲了地址无关与延迟绑定结果被追问钩子技术不了解卒ELF 文件细节特别是字符串索引相关忘得差不多编译型 vs 解释型有概念但没说清解释型内部的具体机制较复杂需要再补。仓库对照shared_ptr的引用计数原理与手写实现InterviewGuide 中有完整版——docs/notes/03-hunting_job/02-interview/01-03-01-C11.md 第 242-250 行系统说明了计数器与类指向的对象相关联、创建时计数置 1、拷贝构造时计数加 1、赋值时左对象计数减 1、析构时计数减 1 到 0 删除对象的完整生命周期该文件还给出了引用计数指针的实现_pcount与循环引用、weak_ptr的解法。编译链接的完整链路预编译→编译→优化→汇编→链接静态链接 vs 动态链接见 docs/notes/03-hunting_job/02-interview/01-01-07-basic.md。3、操作系统与 Linux作者的策略很有意思操作系统八股基本没背除了调度算法、死锁这类答案相对固定的硬八股因为项目里就有一个操作系统原理都很熟面试时按自己的理解、按项目实际去答。他的操作系统项目覆盖四大基本模块面试题也围绕这四块展开启动过程启动的详细过程、如何判断启动盘、实模式到保护模式的切换、开启分页机制引申到缺页异常的三种形式交换、写时复制、延迟分配。作者坦诚启动最初的一段汇编代码到 C 的转变细节有遗忘回答模糊——这里涉及 CPU 相对寻址/绝对寻址、变量处理以及汇编到 C 期间全局变量该由哪一侧处理等问题。内存管理基本方式就是链表和位图。物理内存管理项目用的是最简单的空闲链表引申到伙伴系统和 Slab 分配器虚拟内存部分讲了进程虚拟地址空间布局、堆和共享区的管理引申到 Linux 的mm、vm、线性区vm_area等。被问到 Linuxkmalloc的特点分配的物理内存连续不了解卒。驱动管理主要就是中断相关详细描述了按下一个键到显示在屏幕的全过程涉及键盘中断、键盘驱动键盘中断服务程序、显卡驱动。被问 DMA 工作原理不了解卒。文件管理描述分区布局、inode、目录、路径、文件描述符描述文件系统调用write/read的全过程以及open/close/dup所做的事情软链接硬链接。还有一道现场设计题——文件系统的日志设计针对写磁盘操作使磁盘保持一致性原项目设计简陋、存在写大文件溢出问题让现场设计完善没设计好卒。进程管理讲自己设计的进程、线程、协程设计的进程间通信方式除 socket 外常见问题——调度算法、孤儿僵尸进程的概念与解决wait函数、进程线程协程如何切换重点在换栈、进程切换为什么慢页表切换、TLB、特权级转换时内核栈与用户栈的切换x86 下 TSS 段的 ESP0risc-v 的 sscratch。被问 Go 协程的协程队列是否与某个线程关联不了解卒。Linux 侧则被问如何通过ps等命令找到出问题的进程。杂项被某公司大老板问设计模式直接不太熟。老板的忠告是你既然要设计操作系统设计模式这本书得好好看看。作者承认自己只是看过、没理解几个月后忘光也没准备计划找时间细研。仓库对照内存交换对换技术在 docs/notes/03-hunting_job/02-interview/02-02-os.md 的内存交换是什么有什么特点一节有系统讲解内存紧张时把进程换出外存、换入磁盘中的就绪进程写时复制机制见 docs/notes/03-hunting_job/02-interview/02-01-os.md父子进程共享数据、写时复制重新拷贝TLB快表/联想寄存器见 docs/notes/03-hunting_job/02-interview/02-02-os.md堆上动态分配内存时虚拟内存的操作PTE 指向磁盘上新创建的虚拟页见 docs/notes/03-hunting_job/02-interview/02-03-os.md。4、CPU因为项目里有简易 MIPS CPU 设计作者遇到了一些很少在面经里出现的 CPU 题流水线机制谈理解相关性问题结构相关哈佛结构 vs 冯·诺依曼结构、数据相关、控制相关精简指令集RISC与复杂指令集CISC的特点区别有点八股当时没背就天南地北地从 risc-v 和 x86 谈中断、寄存器、分段分页等环境搭建交叉编译、JTAG 等——因为是学校项目前置环境都配好了作者全然不知懵逼卒与上层软件的兼容因为简历上夸下海口在自己的 CPU 上运行自己的操作系统被问到就说还没做、还不了解任重道远Cache 一致性、内存一致性、原子操作内存一致性还没完全搞明白只知道基本概念。作者借此给出了一个很有价值的观点如果某些方向自己有研究、有独到见解就不用背八股按自己的理解说就行。背八股只是对不熟悉知识的无奈做法甚至有些限制思维。当然硬八股如调度算法、死锁直接理解着背即可。面试官更喜欢听个人见解作者就遇到过面试官夸奖你这理解的还不错有自己的看法。四、我用过的一些资料可复制的学习路线作者把学习资料全部贴了出来按科目整理如下均为原文档记录方向资料八股来源秀哥网站即 InterviewGuide、牛客等搜罗整理进自己的文档C《C Primer》《Effective C》、侯捷老师视频编译链接看《程序员的自我修养》常用 cplusplus.com查 reference与 cppinsights.io看 C 代码本质算法leetcode、牛客刷题acwing、OI Wiki 也有题和不错的讲解文章网络《图解TCP/IP》《图解HTTP》、小林的博客、《TCP/IP网络编程》《Linux高性能服务器》数据库《MySQL必知必会》《MySQL是怎样运行的》《Redis设计与实现》自评没完全消化操作系统书籍《操作系统真象还原》领入门的一本、《Linux 内核完全解析》相当于 Linux 0.1 的注释、《深入理解Linux内核》当手册查询操作系统代码mit 6.828xv6 有讲义、清华 rcore有讲义、ucore、Linux 0.1、胡自成大佬的 BookOS前两个有仔细研究后面当作参考触类旁通CPU 设计学校老师著作《计算机系统设计基于 FPGA 的 RISC 处理器设计与实现》自研成果基于 xv6x86 版写的操作系统电子书 逐行中文注释并已在其上加做了缺页异常、线程协程、调度等高级功能及 risc-v、mips 架构移植作者还推荐了几个跟下来绝对收获很大的系统级项目南大 nemu纯软形式设计 CPU OS 存储作者做完了配套实验、国内一生一芯计划、东京大学的相关项目CPU OS 前端演示、胡自成大佬的开源 OS作者评价自己做的 OS 很完备。五、关于学习的一点看法大黑书别硬啃当总纲用作者对学习方法有一段清醒的反思核心观点是一些出名的大黑书CSAPP、现代操作系统、计算机体系结构等不建议拿着就啃没有一定基础看了基本白看。以 CSAPP 为例它涉及很多方面但每方面不算特别深入容易让人摸不着头脑。作者的拆解建议是讲编译链接的部分不如去看《程序员的自我修养》异常、虚拟内存等不如直接看操作系统相关的书/源码网络编程不如直接看《TCP/IP网络编程》。《现代操作系统》更是纯理论不如直接看 OS 源码来得实在。但作者并非否定这些书——把它们当作总纲学到一定程度再回头看会有一种明悟。他最近重读《C 程序设计语言》就有这种感觉书里其实涉及了很多东西每次看都有不同感悟。当然这只是个人看法合适自己的才是最好的。六、结语提前批的正确姿势与后续规划作者最后交代了三个重要信息1. 提前批到底该不该冲作者本人是提前批的受益者字节基础架构 offer但他在文中也承认提前批上岸很难、不建议盲目跟风。InterviewGuide 中对这个问题有更系统的论述值得一并阅读docs/notes/05-xiustar/02-campus_prepare/20210722-提前批和投递城市值得聊聊.md说明提前批全是神仙打架普通学生被刷很正常提前批不是主战场正式批才是同时提醒投递城市的选择逻辑公司多、同一岗位招聘数量大上岸概率更高docs/notes/05-xiustar/09-question_answer/20220628-不要随大流去参加提前批.md详细分析了提前批的利与弊——好处是提前上岸、多一次面试机会复活甲、简历留在系统里正式批会被更快发起邀约坏处是面评会记录在案正式批面试官能看到你提前批的面试记录和面评如果提前批表现太差反而得不偿失。结论是学校好、准备充分的可以去冲简历还没打磨好的不如先迭代简历正式批再发力docs/notes/05-xiustar/02-campus_prepare/02-01-校招重要时间点科普.md完整梳理了暑期实习、提前批6-7 月、正式批7-10 月、秋招补录10 月末-11 月、来年春招次年 3-5 月的时间线与策略。2. 简历是被秀哥改出来的作者特别提到自己的简历由阿秀改了多个版本面试时有面试官评价简历写得很清楚能够很好地方便他们了解我。关于简历迭代的方法论可参考 docs/notes/05-xiustar/03-resume/01-01-一份百投百中的计算机校招简历是如何迭代足足26版的.md。3. 后续规划作者计划继续尝试考研冲更好的学校秋招大概率去字节方向感兴趣、大老板还是学长唯一顾虑是北京的地点毕业设计就是完善计算机系统设计项目——CPU 与 OS 之间的兼容性问题还没解决希望在毕业前做出一个粗胚。这篇经验帖最有价值的地方在于它展示了一条普通背景学生可以复制的差异化竞争路线——当大多数人在八股和算法上卷生卷死时作者选择花半年时间逐行啃透一个操作系统、设计一个 CPU把项目 PPT 电子书组合成面试的主动武器。正如作者所说背八股只是我们对于不是很熟悉的知识一种无奈的做法真正能让你绝处逢生的永远是那些你亲手做出来、能讲清楚每一行代码的东西。赞分享教程【免费下载链接】InterviewGuide「InterviewGuide」是阿秀从校园-职场多年计算机自学过程的记录以及学弟学妹们计算机校招秋招经验总结文章的汇总包括但不限于C/C 、Golang、JavaScript、Vue、操作系统、数据结构、计算机网络、MySQL、Redis等学习总结坚持学习持续成长项目地址https://gitcode.com/gh_mirrors/in/InterviewGuide点击查看免费下载相关推荐从土木转专业到字节基础架构提前批上岸手写操作系统与 CPU 项目的备战实录从土木转专业到字节基础架构提前批上岸手写操作系统与 CPU 项目的备战实录 本篇技术文章基于 InterviewGuide 仓库收录的 23 届本科生校招提前教程大二土木转专业上岸字节基础架构自研操作系统与CPU项目如何帮他提前批突围InterviewGuide 23届秋招经验全复盘大二土木转专业上岸字节基础架构自研操作系统与CPU项目如何帮他提前批突围InterviewGuide 23届秋招经验全复盘 本文收录于 Interview文档教程知识库被字节捞了六七次才上岸一位非科班研究生的校招备战全记录与计算机基础速查手册CS-Base 图解笔记实践篇被字节捞了六七次才上岸一位非科班研究生的校招备战全记录与计算机基础速查手册CS Base 图解笔记实践篇 本文是 CS Base 仓库「读者专栏」中一位读文档教程知识库创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?