RepoPilotOpen in app →

0voice/introduce_c-cpp_manual

一个收集C/C++新手学习的入门项目,整理收纳开发者开源的小项目、工具、框架、游戏等,视频,书籍,面试题/算法题,技术文章。

Concerns

Stale and unlicensed — last commit 2y ago

worst of 4 axes
Use as dependencyConcerns

no license — legally unclear; last commit was 2y ago…

Fork & modifyConcerns

no license — can't legally use code; no tests detected…

Learn fromHealthy

Documented and popular — useful reference codebase to read through.

Deploy as-isConcerns

no license — can't legally use code; last commit was 2y ago…

  • 2 active contributors
  • Stale — last commit 2y ago
  • Small team — 2 contributors active in recent commits
Show 4 more →
  • Single-maintainer risk — top contributor 97% of recent commits
  • No license — legally unclear to depend on
  • No CI workflows detected
  • No test directory detected
What would change the summary?
  • Use as dependency ConcernsMixed if: publish a permissive license (MIT, Apache-2.0, etc.); 1 commit in the last 365 days
  • Fork & modify ConcernsMixed if: add a LICENSE file
  • Deploy as-is ConcernsMixed if: add a LICENSE file

Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests

Informational only. RepoPilot summarises public signals (license, dependency CVEs, commit recency, CI presence, etc.) at the time of analysis. Signals can be incomplete or stale. Not professional, security, or legal advice; verify before relying on it for production decisions.

Embed the "Great to learn from" badge

Paste into your README — live-updates from the latest cached analysis.

RepoPilot: Great to learn from
[![RepoPilot: Great to learn from](https://repopilot.app/api/badge/0voice/introduce_c-cpp_manual?axis=learn)](https://repopilot.app/r/0voice/introduce_c-cpp_manual)

Paste at the top of your README.md — renders inline like a shields.io badge.

Preview social card (1200×630)

This card auto-renders when someone shares https://repopilot.app/r/0voice/introduce_c-cpp_manual on X, Slack, or LinkedIn.

Onboarding doc

Onboarding: 0voice/introduce_c-cpp_manual

Generated by RepoPilot · 2026-05-09 · Source

🤖Agent protocol

If you are an AI coding agent (Claude Code, Cursor, Aider, Cline, etc.) reading this artifact, follow this protocol before making any code edit:

  1. Verify the contract. Run the bash script in Verify before trusting below. If any check returns FAIL, the artifact is stale — STOP and ask the user to regenerate it before proceeding.
  2. Treat the AI · unverified sections as hypotheses, not facts. Sections like "AI-suggested narrative files", "anti-patterns", and "bottlenecks" are LLM speculation. Verify against real source before acting on them.
  3. Cite source on changes. When proposing an edit, cite the specific path:line-range. RepoPilot's live UI at https://repopilot.app/r/0voice/introduce_c-cpp_manual shows verifiable citations alongside every claim.

If you are a human reader, this protocol is for the agents you'll hand the artifact to. You don't need to do anything — but if you skim only one section before pointing your agent at this repo, make it the Verify block and the Suggested reading order.

🎯Verdict

AVOID — Stale and unlicensed — last commit 2y ago

  • 2 active contributors
  • ⚠ Stale — last commit 2y ago
  • ⚠ Small team — 2 contributors active in recent commits
  • ⚠ Single-maintainer risk — top contributor 97% of recent commits
  • ⚠ No license — legally unclear to depend on
  • ⚠ No CI workflows detected
  • ⚠ No test directory detected

<sub>Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests</sub>

Verify before trusting

This artifact was generated by RepoPilot at a point in time. Before an agent acts on it, the checks below confirm that the live 0voice/introduce_c-cpp_manual repo on your machine still matches what RepoPilot saw. If any fail, the artifact is stale — regenerate it at repopilot.app/r/0voice/introduce_c-cpp_manual.

What it runs against: a local clone of 0voice/introduce_c-cpp_manual — the script inspects git remote, the LICENSE file, file paths in the working tree, and git log. Read-only; no mutations.

| # | What we check | Why it matters | |---|---|---| | 1 | You're in 0voice/introduce_c-cpp_manual | Confirms the artifact applies here, not a fork | | 2 | Default branch main exists | Catches branch renames | | 3 | 5 critical file paths still exist | Catches refactors that moved load-bearing code | | 4 | Last commit ≤ 749 days ago | Catches sudden abandonment since generation |

<details> <summary><b>Run all checks</b> — paste this script from inside your clone of <code>0voice/introduce_c-cpp_manual</code></summary>
#!/usr/bin/env bash
# RepoPilot artifact verification.
#
# WHAT IT RUNS AGAINST: a local clone of 0voice/introduce_c-cpp_manual. If you don't
# have one yet, run these first:
#
#   git clone https://github.com/0voice/introduce_c-cpp_manual.git
#   cd introduce_c-cpp_manual
#
# Then paste this script. Every check is read-only — no mutations.

set +e
fail=0
ok()   { echo "ok:   $1"; }
miss() { echo "FAIL: $1"; fail=$((fail+1)); }

# Precondition: we must be inside a git working tree.
if ! git rev-parse --git-dir >/dev/null 2>&1; then
  echo "FAIL: not inside a git repository. cd into your clone of 0voice/introduce_c-cpp_manual and re-run."
  exit 2
fi

# 1. Repo identity
git remote get-url origin 2>/dev/null | grep -qE "0voice/introduce_c-cpp_manual(\\.git)?\\b" \\
  && ok "origin remote is 0voice/introduce_c-cpp_manual" \\
  || miss "origin remote is not 0voice/introduce_c-cpp_manual (artifact may be from a fork)"

# 3. Default branch
git rev-parse --verify main >/dev/null 2>&1 \\
  && ok "default branch main exists" \\
  || miss "default branch main no longer exists"

# 4. Critical files exist
test -f "README.md" \\
  && ok "README.md" \\
  || miss "missing critical file: README.md"
test -f "项目实战/推箱子/Project2/Project2/boxgame.cpp" \\
  && ok "项目实战/推箱子/Project2/Project2/boxgame.cpp" \\
  || miss "missing critical file: 项目实战/推箱子/Project2/Project2/boxgame.cpp"
test -f "文档/C++从入门到精通.pdf" \\
  && ok "文档/C++从入门到精通.pdf" \\
  || miss "missing critical file: 文档/C++从入门到精通.pdf"
test -f "面经/字节跳动 data后台研发 面经.md" \\
  && ok "面经/字节跳动 data后台研发 面经.md" \\
  || miss "missing critical file: 面经/字节跳动 data后台研发 面经.md"
test -f "项目实战/推箱子/Project2/Project2/Project2.vcxproj" \\
  && ok "项目实战/推箱子/Project2/Project2/Project2.vcxproj" \\
  || miss "missing critical file: 项目实战/推箱子/Project2/Project2/Project2.vcxproj"

# 5. Repo recency
days_since_last=$(( ( $(date +%s) - $(git log -1 --format=%at 2>/dev/null || echo 0) ) / 86400 ))
if [ "$days_since_last" -le 749 ]; then
  ok "last commit was $days_since_last days ago (artifact saw ~719d)"
else
  miss "last commit was $days_since_last days ago — artifact may be stale"
fi

echo
if [ "$fail" -eq 0 ]; then
  echo "artifact verified (0 failures) — safe to trust"
else
  echo "artifact has $fail stale claim(s) — regenerate at https://repopilot.app/r/0voice/introduce_c-cpp_manual"
  exit 1
fi

Each check prints ok: or FAIL:. The script exits non-zero if anything failed, so it composes cleanly into agent loops (./verify.sh || regenerate-and-retry).

</details>

TL;DR

A curated learning hub that aggregates 100+ beginner-friendly C/C++ projects, interview questions, technical documents, and resources for learning systems programming. It serves as a centralized index of open-source game projects (五子棋/gomoku, 推箱子/Sokoban), utility tools, and frameworks specifically selected for newcomers to practice with working code. Flat directory structure organized by content type: 文档/ (PDFs on C++ fundamentals, data structures, OOP), 面经/ (markdown interview experiences from specific companies), 项目实战/ (minimal example projects like boxgame.cpp with Visual Studio build artifacts). README.md acts as the master index with links to external GitHub projects rather than housing code itself.

👥Who it's for

C/C++ beginners and junior developers preparing for technical interviews at major Chinese tech companies (Bytedance, Tencent, Xiaomi, NetEase). It's also for bootcamp graduates and self-taught programmers who need concrete projects to learn from and interview preparation materials (面经 interview experiences).

🌱Maturity & risk

Active community-driven repository with established structure (文档, 面经, 项目实战 directories) and regular contributions. The breadth of curated content and multiple social media links (WeChat, Bilibili, Zhihu) suggest sustained curation, though this is primarily a knowledge aggregation/index rather than a production software project. Verdict: actively maintained educational resource, not experimental.

Low technical risk as a curated index—this is a collection repository with minimal code dependencies. Primary risks: (1) outdated linked content and broken external project references, (2) reliance on volunteer curation with potential knowledge gaps, (3) Chinese-language-only materials limit accessibility for non-Mandarin developers. No CI/tests are expected for a documentation hub.

Active areas of work

Repository appears to be in steady-state curation mode. The top-level README promises '100+ projects' but actual committed code is minimal (4.7K C++ lines mostly in example game projects). Active areas: collecting 面经 interview transcripts, maintaining categorized PDF documentation links, and indexing third-party open-source projects in the '100个一学就会的项目' section.

🚀Get running

Clone the repository: git clone https://github.com/0voice/introduce_c-cpp_manual.git. No installation step needed—browse README.md to find curated project links and 面经/ for interview prep. For included projects like 推箱子, navigate to 项目实战/推箱子/Project2/ and open Project2.sln in Visual Studio 2017+.

Daily commands: This is a documentation/index repository, not a runnable application. To run included example project: Open 项目实战/推箱子/Project2/Project2.sln in Visual Studio 2019+, press F5 (or Build→Build Solution, then Debug→Start Debugging). The project links against Windows image assets in images/ folder.

🗺️Map of the codebase

  • README.md — Primary entry point documenting the repo's purpose as a C/C++ learning resource collection with 100+ projects, interview experiences, and study materials.
  • 项目实战/推箱子/Project2/Project2/boxgame.cpp — Core game implementation demonstrating practical C++ project structure; the only substantial source code file available in the repo.
  • 文档/C++从入门到精通.pdf — Foundational learning document for C++ beginners; primary educational resource referenced throughout the collection.
  • 面经/字节跳动 data后台研发 面经.md — Representative interview experience document; shows the interview preparation content that forms a major component of this learning resource.
  • 项目实战/推箱子/Project2/Project2/Project2.vcxproj — Visual Studio project configuration file; demonstrates the build setup for practical C++ projects included in this collection.

🧩Components & responsibilities

  • Learning Documentation Layer (PDF documents, Markdown content) — PDF guides covering C++ fundamentals, OOP, data structures, algorithms, and interview preparation
    • Failure mode: Outdated or incomplete documentation leads to incorrect understanding of C++ concepts; broken external links prevent access to referenced resources
  • Interview Experience Curation (Markdown files, crowdsourced content) — Real-world interview transcripts and outcomes from major tech companies; provides patterns and expected questions
    • Failure mode: Biased or unrepresentative interview experiences mislead learners about actual company expectations; lack of recent updates makes content stale
  • Practical Project Examples (C++, Visual Studio, Windows executable) — Working C++ projects (e.g., Sokoban game) demonstrating real coding patterns, build configuration, and graphics integration
    • Failure mode: Broken projects, compilation errors, or missing dependencies prevent learners from studying and running functional code
  • Repository Organization (Git, GitHub, Markdown README) — GitHub-hosted curated index of C/C++ learning resources; serves as single entry point for beginner learners
    • Failure mode: Poor organization, broken links, or unclear navigation discourages learners; lack of maintenance allows content to become obsolete

🔀Data flow

  • GitHub Repositoryundefined — undefined

🛠️How to make changes

Add a New Interview Experience Document

  1. Create a new Markdown file in the 面经 (Interview Experiences) directory with company name and position (面经/[Company]_[Position]_面经.md)
  2. Follow the narrative structure of existing experience files: interview rounds, questions asked, and outcomes (面经/字节跳动 data后台研发 面经.md)
  3. Update README.md table of contents to include the new interview experience link (README.md)

Add a New Learning Document

  1. Place PDF documents in the 文档 (Documents) directory with clear naming convention (topic.pdf) (文档/[Topic].pdf)
  2. Ensure document covers C/C++ concepts appropriate for beginners to intermediate learners (文档/C++从入门到精通.pdf)
  3. Add reference to the document in README.md learning materials section (README.md)

Add a New Hands-On Project

  1. Create a new directory under 项目实战 with a descriptive project name (项目实战/[ProjectName]/)
  2. Include main C++ implementation file and necessary project configuration (e.g., .vcxproj for Visual Studio) (项目实战/[ProjectName]/[ProjectName].cpp)
  3. Organize assets (images, resources) in a dedicated subdirectory following the pattern shown in the Sokoban project (项目实战/[ProjectName]/images/)
  4. Document the project structure and usage instructions in README.md (README.md)

Expand Algorithm & Data Structure Documentation

  1. Create or update PDF documents in 文档 directory for specific data structure topics (文档/[DataStructure].pdf)
  2. Reference existing algorithm documentation structure and naming conventions (文档/常用简单算法与技巧-c++版.pdf)
  3. Include practical C++ implementation examples and complexity analysis (文档/数据结构和算法.pdf)

🔧Why these technologies

  • PDF Documentation — Static, portable learning materials for offline study; natural format for comprehensive learning guides and algorithm explanations
  • Markdown Interview Experiences — Easy to write, version control friendly, and simple to search; ideal for crowdsourced interview preparation content
  • Visual Studio / C++ Projects — Industry-standard IDE for Windows-based C++ development; lowers barrier for beginners on primary development platform
  • GitHub Repository — Central curated collection of open-source resources; enables community contributions and version tracking

⚖️Trade-offs already made

  • Collections-based approach vs. interactive platform

    • Why: Simpler to maintain and scale; leverages existing open-source projects rather than building tools
    • Consequence: Limited interactivity; users must navigate external links; no progress tracking or personalized learning paths
  • Static documents (PDF) vs. interactive tutorials

    • Why: PDF content can be downloaded, studied offline, and doesn't require ongoing platform maintenance
    • Consequence: Content becomes stale over time; harder to update collectively; less engagement than interactive learning
  • Real interview experiences vs. curated interview prep

    • Why: Authentic, unfiltered accounts provide genuine insights into company expectations and interview difficulty
    • Consequence: Content quality and depth varies; some interviews may not be fully representative; emotional/narrative bias

🚫Non-goals (don't propose these)

  • Not an interactive learning platform (no code execution environment, no auto-grading)
  • Not a comprehensive C++ reference (curates existing resources rather than creating original documentation)
  • Not a real-time mentorship system (no live Q&A or instructor feedback)
  • Not a recruitment or hiring platform (curates interview experiences but does not facilitate actual job placement)
  • Not cross-platform build tooling (focused on Windows/Visual Studio; Linux/macOS support implicit from individual projects)

🪤Traps & gotchas

(1) Windows-centric: example projects use Visual Studio (.vcxproj, .sln) and Windows image assets (BLANK.png, BOX.png)—non-Windows users cannot easily run included examples without porting. (2) External link rot: README extensively links to external GitHub projects without version pinning or mirrors, making content fragile over time. (3) Stale build artifacts: Debug/ folders contain compiled binaries (.exe, .ilk, .pdb) and logs that should be .gitignored; may cause merge conflicts. (4) No installation guide for the linked projects—README just lists project names without dependency/build instructions.

🏗️Architecture

💡Concepts to learn

  • Game Loop Architecture — The 推箱子 and 五子棋 example projects demonstrate the classic game loop pattern (input→update→render)—foundational for understanding how real-time applications structure execution flow in C++
  • STL (Standard Template Library) — MyTinySTL project (listed as #1 in curated projects) is a from-scratch reimplementation of STL containers (vector, list, map)—learners need to understand template metaprogramming and container design patterns to build systems programming skills
  • Microkernel Architecture — FreeNOS project (#3) demonstrates OS design with a minimal kernel core and message-passing IPC—critical for understanding how large C++ systems like databases and distributed systems are architected
  • Terminal Multiplexing (TUI/Terminal UI) — tmux and musikcube projects show how to build professional terminal-based user interfaces in C++—essential for backend development and DevOps tools that interviewers often ask about
  • Data Structures: Linear Tables and Trees — 文档/线性表.pdf and 数据结构与算法 PDFs cover these fundamentals—core to solving the interview algorithm problems in 面经 materials
  • Object-Oriented Programming (OOP) in C++ — 文档/C++面向对象.pdf and multiple game projects exemplify inheritance, polymorphism, and encapsulation—required for passing design questions in 大厂 (big tech) interviews referenced in 面经
  • Visual Studio Project System (.vcxproj/.sln) — The 推箱子 project uses this Windows build system—learners must understand MSBuild and project configuration to build and debug the included examples on Windows
  • Light-City/CPlusPlusThings — Similar comprehensive C++ learning resource with tutorials, code examples, and interview prep—serves the same beginner-to-junior developer audience
  • changkun/modern-cpp-tutorial — Modern C++ (C++11/14/17/20) tutorial repository targeting developers upgrading from C++98—complementary learning path for graduates of this repo
  • haoel/leetcode — Curated LeetCode solutions in C++ covering algorithm interview prep—natural pairing for users of this repo's 面经 interview experience materials
  • tsonglew/awesome-cpp — Broader awesome-cpp list of libraries and frameworks—supersedes some of the project curation in this repo with more comprehensive ecosystem coverage
  • 0voice/learning_mind_map — Sibling repository from same author (0voice) collecting mind maps for C/C++, Linux, and system design—extends this repo's study materials

🪄PR ideas

To work on one of these in Claude Code or Cursor, paste: Implement the "<title>" PR idea from CLAUDE.md, working through the checklist as the task list.

Create a curated projects index with metadata and difficulty levels

The 项目实战/ directory contains actual project folders but lacks a structured index. Currently only '推箱子' and 'C++实现五子棋项目' are visible with minimal documentation. Create a projects-index.md that catalogs all projects with: difficulty level (beginner/intermediate/advanced), required libraries, estimated hours to complete, and learning outcomes. This helps new contributors find projects matching their skill level.

  • [ ] Audit all existing projects in 项目实战/ directory and gather metadata
  • [ ] Create 项目实战/README.md with structured project listing (use a table format)
  • [ ] Add difficulty badges and learning tags (e.g., 'Game Dev', 'Data Structures', 'GUI')
  • [ ] Include setup instructions and dependencies for each project (reference the Visual Studio files in 推箱子/Project2)
  • [ ] Link each project to relevant 文档/ PDFs and 面经/ interview notes

Add .gitignore and remove compiled binaries from version control

The repo currently tracks Visual Studio build artifacts (*.exe, *.obj, *.pdb, .tlog files) in 项目实战/推箱子/Project2/Debug/ and 项目实战/推箱子/Project2/Project2/Debug/. These bloat the repository and violate best practices. Create a comprehensive .gitignore that excludes compiler outputs while preserving source code and project files.

  • [ ] Create .gitignore in root directory with patterns for Visual Studio (Debug/, Release/, .vs/, .vcxproj.user), GCC/Clang (.o, *.a, .so), and executables (.exe, *.dll)
  • [ ] Create .gitignore entries in 项目实战/ subdirectories if needed for project-specific artifacts
  • [ ] Remove existing tracked binaries: Project2.exe, *.ilk, *.pdb, *.obj, *.tlog, vc142.idb files
  • [ ] Add *.recipe and .log files from build output to .gitignore
  • [ ] Document in README.md why these files are excluded and how contributors should build locally

Organize and index interview question documents with category mapping

The 面经/ directory contains 10+ interview experience documents mixed with company-specific notes, but lacks searchability and organization. Create a face-exam-guide.md that indexes all interview questions, organizes them by topic (algorithms, system design, C++ concepts), links to relevant 文档/ resources, and difficulty estimates. This transforms scattered notes into a structured learning path.

  • [ ] Create 面经/README.md with an index table (Company, Position, Topics Covered, Difficulty, Questions Count)
  • [ ] Extract and categorize questions from all .md files into 面经/question-bank.md organized by: C++ Fundamentals, Data Structures, Algorithms, System Design, Networking, and Company-Specific
  • [ ] Add back-references: each question should link to related 文档/ PDFs (e.g. '数据结构与算法内容梳理.pdf')
  • [ ] Create 面经/company-guide.md mapping companies to relevant interview notes and common question patterns
  • [ ] Add difficulty ratings (⭐-⭐⭐⭐⭐) and success rates from existing notes (e.g. 字节跳动的六次面试经历,终不过.md)

🌿Good first issues

  • Add Linux/macOS build instructions to 项目实战/推箱子/ by documenting how to compile boxgame.cpp with g++/clang and replace Windows-only EasyX graphics calls with cross-platform SDL2 or SFML equivalents—currently unusable on non-Windows systems.
  • Audit and update external project links in README.md's '100个一学就会的项目' table: verify all 100 links return 404 or redirect, add 'Last Verified' date column, and document any archived/moved projects—currently unclear which curated projects are still maintained.
  • Extract and document build/run commands for the top 10 referenced projects in README by creating a 构建指南.md file with git clone, dependency install, and compile steps for each (e.g., 'MyTinySTL: git clone ... && cd ... && cmake ...')—currently no guidance on how to build linked projects locally.

Top contributors

Click to expand

📝Recent commits

Click to expand
  • 346fa0e — Update README.md (wangbojing)
  • 0982997 — Update README.md (wenchao1024)
  • b0034f2 — Update README.md (wenchao1024)
  • e440e92 — Update 深信服C++二面-面经:40min(发面经许愿offer).md (wenchao1024)
  • 379926d — Create 深信服C++二面-面经:40min(发面经许愿offer).md (wenchao1024)
  • 61fc650 — Update README.md (wenchao1024)
  • 4695809 — Rename 小米一二面(已offer).md to 小米一二面O(已offer).md (wenchao1024)
  • 48aa042 — Update README.md (wenchao1024)
  • 7862bb9 — Create 腾讯天美C++后台一面凉经.md (wenchao1024)
  • 903c2c6 — Create 字节跳动的六次面试经历,终不过.md (wenchao1024)

🔒Security observations

This is a learning resource aggregation repository with relatively low security risk due to its educational nature and lack of runtime dependencies. However, it has moderate operational security issues: build artifacts should be excluded from version control, interview content should be reviewed for confidential information, and a responsible disclosure policy should be established. The primary concern is the uncurated nature of aggregated third-party content without apparent security review mechanisms. For a learning project, the security posture is acceptable but could be improved through better repository hygiene and clear security policies.

  • Medium · Compiled Binaries and Debug Artifacts Included in Repository — 项目实战/推箱子/Project2/Debug/ and 项目实战/推箱子/Project2/Project2/Debug/. The repository contains compiled executable files (.exe), object files (.obj), and debug database files (.pdb, .ilk, .idb) in the source tree. These should not be version controlled as they are platform-specific, can contain sensitive debugging information, and increase repository size unnecessarily. Fix: Add a .gitignore file to exclude build artifacts: *.exe, *.obj, *.pdb, *.ilk, *.idb, Debug/, Release/, .tlog/ directories. Use build output directories outside source control.
  • Low · Potential Intellectual Property Exposure — 面经/ directory. The repository contains interview experience documents (面经) from major tech companies including Bytedance, Tencent, NetEase, and others. While these are user contributions, they may contain proprietary information or confidential interview processes that could violate NDAs. Fix: Review interview documents for sensitive company information. Add a disclaimer about user responsibility for content accuracy and legality. Consider anonymizing company-specific details. Recommend contributors review their NDAs before submission.
  • Low · No SECURITY.md or Security Policy — Repository root. The repository lacks a SECURITY.md file with responsible disclosure guidelines. Users reporting vulnerabilities have no clear path for safe reporting. Fix: Create a SECURITY.md file with instructions for responsible vulnerability disclosure, including a security contact email and expected response timeline.
  • Low · Unverified Third-Party Code Sources — 项目实战/ directory and all aggregated content. The repository aggregates code from external sources without apparent verification of security quality or malware scanning. The README states 'all data sourced from the internet' with no mention of code review processes. Fix: Implement a code review process for all aggregated projects. Add security scanning tools (SAST) to CI/CD. Document the vetting process. Include checksums or signed commits for critical projects.

LLM-derived; treat as a starting point, not a security audit.


Generated by RepoPilot. Verdict based on maintenance signals — see the live page for receipts. Re-run on a new commit to refresh.

Concerning signals · 0voice/introduce_c-cpp_manual — RepoPilot