# forthespada/CS-Books

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/forthespada-cs-books).**

26,269 stars · 4,084 forks

## Links

- GitHub: https://github.com/forthespada/CS-Books
- Homepage: https://interviewguide.cn
- awesome-repositories: https://awesome-repositories.com/repository/forthespada-cs-books.md

## Topics

`algorithms` `c` `cpp` `cs-books` `database` `interview` `java` `javascript` `linux` `os` `pdf` `python` `redis` `sql`

## Description

This project is a community-driven knowledge base and career development platform designed to support students and aspiring software engineers in mastering technical domains. It functions as a structured educational framework that aggregates personal study notes, interview insights, and curated learning materials into a unified, searchable repository. By centralizing these resources, the platform facilitates peer-to-peer skill acquisition and provides a clear roadmap for navigating complex computer science subjects.

The platform distinguishes itself through experience-driven content synthesis, where educational materials are derived from real-world recruitment processes and professional career development. It offers practical guidance on essential tasks such as resume building, interview strategy, and evaluating job offers. This context-rich approach helps users bridge the gap between theoretical computer science concepts and the practical requirements of the software engineering industry.

The repository covers a broad capability surface, including mastery of algorithms, data structures, backend systems engineering, and core technical interview preparation. Users can explore structured learning paths across topics like operating systems, networking, and database management, supported by curated coding exercises and interview guides. The content is maintained as markdown-based files and rendered into a static web interface, ensuring long-term portability and efficient knowledge retrieval for the community.

## Tags

### Education & Learning Resources

- [Knowledge Bases](https://awesome-repositories.com/f/education-learning-resources/knowledge-bases.md) — "A collaborative platform model where individual learning notes and interview insights are aggregated to support peer-to-peer technical skill acquisition."
- [Professional Development Platforms](https://awesome-repositories.com/f/education-learning-resources/professional-development-platforms.md) — A professional guidance resource that provides practical advice on resume building, interview strategies, and evaluating job offers in the tech industry.
- [Technical Learning Guides](https://awesome-repositories.com/f/education-learning-resources/technical-learning-guides.md) — Learn complex technical topics through structured guides and curated materials that combine detailed explanations with hands-on practice to build your professional skill set. ([source](https://interviewguide.cn))
- [Interview Preparation Resources](https://awesome-repositories.com/f/education-learning-resources/interview-preparation-resources.md) — Mastering core technical concepts and common interview questions to successfully navigate the hiring process for software engineering roles.
- [Algorithm Practice Collections](https://awesome-repositories.com/f/education-learning-resources/algorithm-practice-collections.md) — - 地址：精选力扣300+算法题 - 简介：阿秀个人在秋招前的于力扣网的刷题笔记整理总结，按照`数组`、`字符串`、`动态规划`、`链表`等13个标签进行刷的。 ([source](https://interviewguide.cn/notes/01-guide/web-guide-reading.html))
- [Career Development Guides](https://awesome-repositories.com/f/education-learning-resources/career-development-guides.md) — - 地址：CS学习心得 - 简介：虽然是科班，但阿秀自己学习计算机编程基本都是靠自学的，这里简单分享一下自己的一些学习心得和方法。 ([source](https://interviewguide.cn/notes/01-guide/web-guide-reading.html))
- [Curated Resource Indexes](https://awesome-repositories.com/f/education-learning-resources/curated-resource-indexes.md) — External learning materials and coding exercises are centralized and categorized to create a unified reference point for skill acquisition.
- [Database Interview Questions](https://awesome-repositories.com/f/education-learning-resources/database-interview-questions.md) — 文件与数据库都是需要较大的存储，也就是说，它们都不可能全部存储在内存中，故需要存储到磁盘上。而所谓索引，则为了数据的快速定位与查找，那么索引的结构组织要尽量减少查找过程中磁盘I/O的存取次数，因此B+树相比B树更为合适。数据库系统巧妙利用了局部性原理与磁盘预读原理，将一个节点的大小设为等于一个页，这样每个节点只需要一次I/O就可以完全载入，而红黑树这种结构，高度明显要深的多，并且由于逻辑上很近的节点(父子)物理上可能很远，无法利用局部性 ([source](https://interviewguide.cn/notes/03-hunting_job/02-interview/04-01-01-MySQL.html))
- [Interview Preparation](https://awesome-repositories.com/f/education-learning-resources/interview-preparation.md) — 可以借助进程的页表将逻辑地址转换为物理地址。 通常会在系统中设置一个页表寄存器(PTR)，存放页表在内存中的起始地址F和页表长度M。进程未执行时，页表的始址和页表长度放在进程控制块(PCB) 中，当进程被调度时，操作系统内核会把它们放到页表寄存器中。 注意:页面大小是2的整数幂 设页面大小为L，逻辑地址A到物理地址E的变换过程如下: 例:若页面大小L为1K字节，页号2对应的内存块号b=8，将逻辑地址A=2500转换为物理地址E。 等价描 ([source](https://interviewguide.cn/notes/03-hunting_job/02-interview/01-01-01-basic.html))
- [Interview Preparation Guides](https://awesome-repositories.com/f/education-learning-resources/interview-preparation-guides.md) — Provides structured explanations of fundamental technical concepts commonly asked during software engineering interviews. ([source](https://interviewguide.cn/notes/03-hunting_job/02-interview/03-01-net.html))
- [Interview Questions](https://awesome-repositories.com/f/education-learning-resources/interview-questions.md) — 24小时中时针走2圈，而分针走24圈，时针和分针重合24-2=22次，而只要时针和分针重合，秒针一定有机会重合，所以总共重合22次 **勘误**： 时针和分针重合的时候，秒针根本就不在重合的地方，而是在其他地方，以下是数学推导： 因此看来就是只有 1 次重合，因为在 12 小时内不包含 12 点这个时间，所以在 24 小时内，也就只有**两次重合**，分别为 0 点和 12 点。 > github issue勘误链接 (opens ne ([source](https://interviewguide.cn/notes/03-hunting_job/02-interview/06-intelligence.html))
- [Knowledge Sharing Platforms](https://awesome-repositories.com/f/education-learning-resources/knowledge-sharing-platforms.md) — Aggregating individual learning notes and practical career insights into a collaborative repository to support peer-to-peer technical skill acquisition.
- [Learning Roadmaps](https://awesome-repositories.com/f/education-learning-resources/learning-roadmaps.md) — A structured educational framework that organizes complex technical domains into logical learning paths for students and aspiring developers.
- [Programming Bootcamps](https://awesome-repositories.com/f/education-learning-resources/programming-bootcamps.md) — 大家好，我是阿秀。 **经常发现有学弟学妹在准备校招时非常迷茫，不知道从何下手，详细聊下来发现和我当时的遇到的问题一模一样，** 所以我打算借这个机会写一篇文章，来给大家详细说说秋招，备战秋招时，最令我难受的有以下几件事： - 迷茫，不知道复习什么，不知道从何下手，以至于前两个月复习效率贼低，后面才慢慢的摸索出来一条学习路线及方法，这个过程确实走了好多弯路 - 缺少可以往简历上写的，含金量高的 C++ 项目经验，而且开源的 C++项目也 ([source](https://interviewguide.cn/notes/09-backend_camp/cpp.html))
- [Programming Interview Questions](https://awesome-repositories.com/f/education-learning-resources/programming-interview-questions.md) — - malloc/free和new/delete都是用来申请内存和回收内存的。 - 在对非基本数据类型的对象使用的时候，对象创建的时候还需要执行构造函数，销毁的时候要执行析构函数。而malloc/free是库函数，是已经编译的代码，所以不能把构造函数和析构函数的功能强加给malloc/free，所以new/delete是必不可少的。 ([source](https://interviewguide.cn/notes/03-hunting_job/02-interview/01-01-01-basic.html))
- [Job Application Strategies](https://awesome-repositories.com/f/education-learning-resources/job-application-strategies.md) — 阿秀以过来人的身份良心说一句，**简历真的很重要**！ 特别是对于一些像我一样普通双非学校的学生而言，简历特别重要！ 很多人貌似根本不知道间的重要性，简历真的很重要，比你们想象中的要重要得多！ 简历是你跟公司的第一次接触，简历不合格直接pass！纵然你有**张翼德一般万军从中取上将首级**的本领，压根不能上场又能有什么用呢？ 你的简历根本到不了面试官手中，就连简历关你都过不了还说什么呢？ 根本就不会给你去尝试的机会！这也就是我为什么会说 ([source](https://interviewguide.cn/notes/01-guide/web-guide-reading.html))
- [Career Success Stories](https://awesome-repositories.com/f/education-learning-resources/career-success-stories.md) — - 地址：校招经验总结 - 简介：同实习类似，世上可能没有完全相同的两篇叶子一样，但至少有N片很相像的叶子，多看看那些成功上岸互联网大厂的前人才能让自己走得更稳！ 如阿秀的学习圈子中大二/大三/大四学弟学妹们以及研一研二的师弟师妹们拿到正式校招offer的经验总结，如阿秀自己的校招总结-双非渣硕的秋招之路总结（已拿抖音研发岗SP）、阿秀自己的完整学习经历复盘-没有什么逆袭，有的只是一点点坚持而已、我的offer基本全是SP，研究生三年总 ([source](https://interviewguide.cn/notes/01-guide/web-guide-reading.html))
- [Technical Interview Prep](https://awesome-repositories.com/f/education-learning-resources/technical-interview-prep.md) — ​ 数据库主要问的都是 **MySQL** 以及 **Redis** 相关的一些知识，普通研发岗掌握这两个基本也够用了，数据库常问知识点包括索引相关、性能优化、**B**\+ 树、**Redis** 底层模型、跳表以及缓存击穿、雪崩、穿透等常见问题。有时候也会让你手写一些简单的 **SQL** 语句，比如给你一个学生表和课程表，让你找出成绩排名前十的学生姓名之类的。 > **推荐资料：** > > **MySQL必知必会（**一本很薄的 ([source](https://interviewguide.cn/notes/01-guide/web-guide-reading.html))
- [Technical Learning Paths](https://awesome-repositories.com/f/education-learning-resources/technical-learning-paths.md) — Building a strong foundation in programming languages, operating systems, and networking through curated study materials and structured learning paths.
- [Algorithm Interview Challenges](https://awesome-repositories.com/f/education-learning-resources/algorithm-interview-challenges.md) — Provides a detailed explanation and solution for a classic algorithmic logic puzzle involving ant movement on a branch. ([source](https://interviewguide.cn/notes/03-hunting_job/02-interview/06-intelligence.html))
- [Algorithmic Puzzles](https://awesome-repositories.com/f/education-learning-resources/algorithmic-puzzles.md) — Provides a classic game-theory logic puzzle frequently used in technical interview preparation. ([source](https://interviewguide.cn/notes/03-hunting_job/02-interview/06-intelligence.html))
- [Computer Networking Interview Questions](https://awesome-repositories.com/f/education-learning-resources/computer-networking-interview-questions.md) — 因为UDP快啊！UDP的DNS协议只要一个请求、一个应答就好了。 而使用基于TCP的DNS协议要三次握手、发送数据以及应答、四次挥手，但是UDP协议传输内容不能超过512字节。 不过客户端向DNS服务器查询域名，一般返回的内容都不超过512字节，用UDP传输即可。 ([source](https://interviewguide.cn/notes/03-hunting_job/02-interview/03-01-net.html))
- [Database Learning Guides](https://awesome-repositories.com/f/education-learning-resources/database-learning-guides.md) — 最近阿秀在自己的学习圈子 (opens new window)里发起了一项`秋招结伴而行、相互监督`的活动。 因为两年前我就是只管学自己的，剩下的全都交给时间了：双非渣硕的秋招之路总结（已拿抖音研发岗SP） (opens new window)、没有什么逆袭，有的只是一点点坚持！ (opens new window) 直到如今工作了，我依然保持每天学一点点：坚持充电！我离开学校后坚持学习135天了！ (opens new window) ([source](https://interviewguide.cn/notes/01-guide/web-guide-reading.html))
- [Internship Guides](https://awesome-repositories.com/f/education-learning-resources/internship-guides.md) — 那既然你在学校课堂或者自学的掌握的东西没什么用，你的已有技能对于你将要从事的岗位没什么帮助的情况下，大公司为什么愿意招你来实习呢？ 我在这篇文章中也总结了国内常见互联网公司的实习薪资：偷偷盘点一下各大公司的实习薪资 (opens new window)，国内很多公司实习生的薪资都是300-400/天，属实不低了。 最主要的原因是这些大公司都希望你能够实习结束后选择留在这家公司，这样这家公司就省去了很多的培养成本，这是很多公司愿意看到的。 ([source](https://interviewguide.cn/notes/01-guide/web-guide-reading.html))
- [Knowledge Maps](https://awesome-repositories.com/f/education-learning-resources/knowledge-maps.md) — "Content is categorized into distinct technical domains, allowing users to navigate complex subjects like operating systems and networking through structured learning paths."
- [Operating System Interview Questions](https://awesome-repositories.com/f/education-learning-resources/operating-system-interview-questions.md) — 虚拟内存的目的是为了让物理内存扩充成更大的逻辑内存，从而让程序获得更多的可用内存。 为了更好的管理内存，操作系统将内存抽象成地址空间。每个程序拥有自己的地址空间，这个地址空间被分割成多个块，每一块称为一页。 这些页被映射到物理内存，但不需要映射到连续的物理内存，也不需要所有页都必须在物理内存中。当程序引用到不在物理内存中的页时，由硬件执行必要的映射，将缺失的部分装入物理内存并重新执行失败的指令。 从上面的描述中可以看出，虚拟内存允许程序 ([source](https://interviewguide.cn/notes/03-hunting_job/02-interview/02-01-os.html))
- [Programming Language Interview Questions](https://awesome-repositories.com/f/education-learning-resources/programming-language-interview-questions.md) — **main函数执行之前**，主要就是初始化系统相关资源： - 设置栈指针 - 初始化静态`static`变量和`global`全局变量，即`.data`段的内容 - 将未初始化部分的全局变量赋初值：数值型`short`，`int`，`long`等为`0`，`bool`为`FALSE`，指针为`NULL`等等，即`.bss`段的内容 - 全局对象初始化，在`main`之前调用构造函数，这是可能会执行前的一些代码 - 将main函数的参数 ([source](https://interviewguide.cn/notes/03-hunting_job/02-interview/01-01-01-basic.html))

### Content Management & Publishing

- [Static Site Generators](https://awesome-repositories.com/f/content-management-publishing/static-site-generators.md) — "A collection of markdown-based educational content rendered into a searchable, static web interface for efficient knowledge retrieval."
- [Documentation Generators](https://awesome-repositories.com/f/content-management-publishing/documentation-generators.md) — A searchable web interface that renders markdown-based educational content into a clean and efficient format for rapid knowledge retrieval.

### Miscellaneous Curated Lists

- [Curated Knowledge Bases](https://awesome-repositories.com/f/miscellaneous-curated-lists/curated-knowledge-bases.md) — Provides a structured collection of learning materials, coding exercises, and interview preparation guides in a unified knowledge base.

### Software Engineering & Architecture

- [Backend Engineering](https://awesome-repositories.com/f/software-engineering-architecture/backend-engineering.md) — Developing expertise in Linux environments, database management, and network programming essential for high-performance server-side development.
- [Algorithmic Problem Solving](https://awesome-repositories.com/f/software-engineering-architecture/algorithmic-problem-solving.md) — Improving problem-solving efficiency through consistent practice and review of classic coding challenges and algorithmic patterns.
