tech-interview-for-developer:面向开发者的技术面试知识库全景导航与使用指南
tech-interview-for-developer:面向开发者的技术面试知识库全景导航与使用指南
本篇指南以仓库根目录 README.md 为索引骨架,系统梳理 tech-interview-for-developer 作为"新人开发者专业知识与技术面试百科全书"的整体架构、九大知识板块的定位、各模块的阅读路径,并结合仓库内真实源码与子文档(如排序算法实现、面试题库、Git 提交规范)给出可落地的学习与引用方法。读完本文,你将掌握如何高效定位该知识库中的任意知识点,并理解其内容组织、贡献与协作规范。
项目定位:一本面向面试场景的"技术百科"
tech-interview-for-developer 在 README.md 中自我定位为 "신입 개발자 전공 지식 & 기술 면접 백과사전"(新人开发者的专业知识与技术面试百科全书),从 Since 徽章 可确认该项目自 2019 年 3 月 1 日 起持续维护,并采用 MIT 许可证(详见 LICENSE)。
项目采用多人协作的内容共建模式:
- Collaborator 列表:README 中明确列出了 gyoogle、GimunLee、b2narae 三位主要协作者;
- 贡献者体系:README 中的
All Contributors徽章显示该项目累计汇聚了 58 位贡献者,并通过 contributors 图表集中展示; - 反馈机制:README 明确说明,发现错误内容可通过 Issue 与 PR 提交,形成"文档即开源共建"的维护闭环;
- 配套学习入口:README 同时提供了基于本仓库内容搭建的 Web 站点入口,便于在不克隆仓库的情况下在线阅读。
从仓库结构看,这一"百科"并非零散笔记的堆叠,而是按学科与场景做了严格分层:Computer Science、Algorithm、Design Pattern、Interview、Language、Web、Linux、New Technology、Seminar、ETC 十个顶层目录各司其职,且多数目录自带 README 导航页(如 Interview/README.md、Algorithm/README.md、Web/README.md),便于读者按图索骥。
仓库全景:十大数据板块一览
基于 README.md 的目录清单,仓库的知识体系可归纳如下:
| 板块目录 | 核心主题 | 典型文档 |
|---|---|---|
Computer Science/ |
计算机基础六大学科 | 컴퓨터의 구성.md、Array vs ArrayList vs LinkedList.md |
Algorithm/ |
排序、搜索、动态规划等算法 | QuickSort.md、HeapSort.md、Binary Search.md |
Design Pattern/ |
经典设计模式与 SOLID | [Design Pattern] Overview.md、Singleton Pattern.md |
Interview/ |
面试题库与模拟测试 | Interview List.md、[Java] Interview List.md |
Language/ |
C/C++/Java/JavaScript/Python 语言专题 | [java] Java 가상 머신.md、[Javascript] Closure.md |
Web/ |
HTTP、认证、前端框架、Spring 生态 | HTTP Request Methods.md、Spring MVC.md |
Linux/ |
基础命令、权限与体系结构 | Linux Basic Command.md、Permission.md |
New Technology/ |
AI、大数据、IT 热点议题 | Linear regression 실습.md、DBSCAN 클러스터링 알고리즘.md |
Seminar/ |
企业技术分享与峰会实录 | 2019 삼성전자 비전캠프.md |
ETC/ |
Git 协作、通用方法论 | Git Commit Message Convention.md |
从源码结构看,README 的索引粒度相当细致:不仅到文件,还通过锚点直达文档内部小节(例如 Algorithm 板块指向了各排序算法的具体讲解位置),说明该仓库在设计上就充分考虑了"面试冲刺期快速检索"的使用场景。
Computer Science:计算机基础六大学科体系
README 将 Computer Science 细分为六个子目录,覆盖了技术面试中最高频的基础题域。
计算机体系结构(Computer Architecture)
该子目录聚焦硬件底层的面试考点:从컴퓨터의 구성.md的整机组成,到중앙처리장치(CPU) 작동 원리.md%20작동%20원리.md)的处理器流水线、캐시 메모리(Cache Memory).md.md)的缓存层次、고정 소수점 & 부동 소수점.md的数值表示,以及패리티 비트 & 해밍 코드.md的检错纠错编码,内容编排明显对齐"计算机组成原理"课程主线,另附 PDF 版 컴퓨터구조 기초.pdf 作为入门材料。
数据结构(Data Structure)
该子目录同时提供概念文档与可运行源码两类资源:
- 概念文档覆盖数组、链表、栈与队列、堆、树、哈希等经典结构,例如 Array.md、Array vs ArrayList vs LinkedList.md、Hash.md、B Tree & B+ Tree.md;
- 源码目录 code/ 中存放了 MaxHeap.java、MinHeap.java、binarySearchTree.java、linked_list.java 等实现,便于读者"先读概念、再跑代码"验证理解。
以 Computer Science/Data Structure/README.md 为例,该导航页直接用大 O 复杂度横向对比各结构:数组通过 index 实现 O(1) 访问但插入删除为 O(N);链表通过节点引用链式访问(O(N)),插入删除则更轻量;堆(Heap)因满足完全二叉树性质可用一维数组表达(根节点 index 为 0 时,左子 index*2+1、右子 index*2+2),从而把优先队列的插入、删除都收敛到 O(logN),并顺带梳理了哈希表线性探测、二次探测、双重哈希、链地址法四种冲突处理策略。
数据库(Database)
Database 子目录覆盖了 SQL 理论到中间件的完整链路:键与约束([DB] Key.md](Computer%20Science/Database/%5BDB%5D%20Key.md))、连接查询([Database SQL] JOIN.md)、安全(SQL Injection.md)、建模(정규화(Normalization).md.md)、[DB] Anomaly.md)、性能([DB] Index.md)、事务与隔离([Transaction.md、Transaction Isolation Level.md),以及 Redis.md、저장 프로시저(Stored PROCEDURE).md.md) 等工程化主题,基本对应后端岗位面试的数据库高频题库。
网络(Network)
Network 子目录从分层模型讲到协议细节:[Network] OSI 7 계층.md](Computer%20Science/Network/OSI%207%20계층.md) 的分层模型、TCP 3 way handshake & 4 way handshake.md 的连接管理、TCP (흐름제어혼잡제어).md.md) 的流量与拥塞控制、[UDP.md 的无连接传输、HTTP & HTTPS.md 与 TLS HandShake.md 的安全通信、대칭키 & 공개키.md 的密码学基础,以及 [Network] Blocking,Non-blocking & Synchronous,Asynchronous.md、로드 밸런싱(Load Balancing).md.md) 等进阶主题。
操作系统(Operating System)
Operating System 子目录覆盖进程线程(Process vs Thread.md)、调度(CPU Scheduling.md)、同步(Race Condition.md、Semaphore & Mutex.md)、死锁(DeadLock.md)、内存管理(Memory.md、Paging and Segmentation.md 及配套 PDF)、中断(Interrupt.md)、系统调用([OS] System Call (Fork Wait Exec).md)与文件系统(File System.md),可视为操作系统课程的面试浓缩版。
软件工程(Software Engineering)
该子目录聚焦开发方法论与工程实践:[Software Engineering] Clean Code & Refactoring.md、TDD(Test Driven Development).md.md)、Object-Oriented Programming.md、Fuctional Programming.md、애자일(Agile).md.md)、마이크로서비스 아키텍처(MSA).md.md) 与 데브옵스(DevOps).md.md),直接对应用人方常问的工程素养类问题。
Algorithm:从概念文档到可运行代码
README 的 Algorithm 板块是知识密度最高的区域之一,覆盖经典排序(QuickSort.md、MergeSort.md、HeapSort.md、Sort_Radix.md、Sort_Counting.md)、搜索(Binary Search.md)、图论(DFS & BFS.md、다익스트라(Dijkstra).md.md)、LCA(Lowest Common Ancestor).md.md))、动态规划(동적 계획법 (Dynamic Programming).md.md))、位运算(비트마스크(BitMask).md.md))等,并针对求职场景提供了 SAMSUNG Software PRO등급 준비.md 这类企业级算法测试备考材料。
该板块的一大特色是文档与源码目录 code/ 配套。以 QuickSort.java 为例,仓库提供了完整的可编译实现:采用中位元素作为 pivot(int pivot = arr[(start+end)/2]),通过双指针(i 从左侧、j 从右侧)相向扫描交换逆序对,再对左右子区间递归排序,是一个标准的 Hoare 分区风格快速排序;对应文档 QuickSort.md 则详细拆解了平均/最坏时间复杂度、递归树结构与退化场景。
同理,HeapSort.md 完整给出了堆排序的 Java 实现与时间复杂表(平均 Θ(nlogn)、最优 Ω(nlogn)、最坏 O(nlogn)),并解释了两个关键细节:初始化建堆时为何从 n/2-1 逆序向下 heapify(因为父节点 index i 的左子为 i*2+1、右子为 i*2+2,从最后一个非叶子节点开始才能保证自底向上的堆有序性),以及 extract 阶段"根与末尾交换 → 缩小堆 → 重新 heapify"的循环。文档还总结了堆排序的实际适用场景(求最大/最小值、对偏移距离不超过 k 的元素排序),而非泛泛罗列。
Algorithm/README.md 则是一份独立的算法题解题思路速查表:它按"数据结构选型"(数组、栈、队列、链表、图、哈希、树)与"算法套路"(递归、BFS/DFS、排序、记忆化、二分、MST、LCA、并查集、分治、Trie、位运算)两个维度给出选题依据,例如"BFS 适合 2 维数组扩散与 visited 标记""二分能把复杂度降到 logN",可直接作为刷题前的方法论清单。
Design Pattern 与 Language:模式体系与多语言专题
设计模式(Design Pattern)
Design Pattern 板块以 [Design Pattern] Overview.md](Design%20Pattern/%5BDesign%20Pattern%5D%20Overview.md) 为入口,系统收录了 Singleton Pattern.md、Strategy Pattern.md、Observer pattern.md、Adapter Pattern.md、Composite Pattern.md、Template Method Pattern.md 等经典 GoF 模式,以及 [SOLID.md 设计原则。README 甚至为部分模式准备了双版本文档(如 Design Pattern_Adapter.md 与 Adapter Pattern.md、Design Pattern_Template Method.md 与 Template Method Pattern.md),体现了不同贡献者视角的互补。
语言专题(Language)
Language 板块按 C / C++ / Java / JavaScript / Python 分册,每一门语言都聚焦面试高频考点:
- C:编译过程([c] C언어 컴파일 과정.md)、结构体内存对齐([C] 구조체 메모리 크기 계산.md)、指针([C] 포인터(Pointer).md)、动态内存([C] 동적할당.md);
- C++:深拷贝与浅拷贝([Cpp] shallow copy vs deep copy.md)、虚函数([C++] 가상 함수(virtual function).md)、输入输出优化、Vector Container.md;
- Java:JVM([java] 자바 가상 머신(Java Virtual Machine).md、[java] 자바 컴파일 과정.md)、字符串三兄弟([java] String StringBuilder StringBuffer 차이.md)、并发([Java] Intrinsic Lock.md、[java] Java에서의 Thread.md、wait notify notifyAll.md)、Java 8+([Java] Java 8 정리.md、[java] Stream.md、[java] Record.md);
- JavaScript:闭包([Javascript] Closure.md)、原型链([Javasript] Object Prototype.md)、ES2015+([Javascript] ES2015+ 요약 정리.md);
- Python:以实用库为主([Python] 매크로 라이브러리.md)。
Web 与 Linux:Web 全栈工程化与系统操作基础
Web 板块
Web 板块是典型的面试向 + 工程向混合组织,README 将其划分为:
- Web 基础:브라우저 동작 방법.md(浏览器渲染)、Cookie & Session.md、HTTP Request Methods.md、HTTP status code.md、[Web] REST API.md](Web/%5BWeb%5D%20REST%20API.md)、Web Server와 WAS의 차이.md、[인증방식.md、OAuth.md、JWT(JSON Web Token).md.md)、CSRF & XSS.md、CSR & SSR.md、PWA (Progressive Web App).md.md) 等;
- Spring 生态:[Spring] Bean Scope.md](Web/Spring/%5BSpring%5D%20Bean%20Scope.md)、Spring MVC.md、[Spring Boot] SpringApplication.md、[Spring Boot] Test Code.md、[JPA.md、[Spring Data JPA] 더티 체킹 (Dirty Checking).md、Spring Security - Authentication and Authorization.md;
- 前端框架:Vue(Vue.js 라이프사이클 이해하기.md、Vue CLI + Spring Boot 연동하여 환경 구축하기.md、Nuxt.js.md)、React(React Fragment.md、React Hook.md、React & Spring Boot 연동하여 환경 구축하기.md);
- DevOps:시스템 규모 확장.md、[Travis CI] 프로젝트 연동하기.md、[AWS] 스프링 부트 배포 스크립트 생성.md。
值得注意的是,Web/README.md 中保留了早期版本的索引(含 Vue.js、React 等目录),与根 README 的导航互为印证,说明该板块随技术演进持续扩展。
Linux 板块
Linux Basic Command.md 覆盖日常高频命令,Permission.md 讲解文件权限模型,Von Neumann Architecture.md 则将体系结构主题收口到操作系统层面,适合作为系统运维面试题的速查入口。
Interview 板块:从准备方法论到真题演练
README 单独把 Interview 板块列为"기술 면접 감 잡기(技术面试找感觉)"入口,其下资源分为两层:
方法论层
Interview/README.md 是一份高质量的技术面试备考方法论,明确建议"不要读题背答案,而要动手解题训练",并给出完整流程:
- 直接尝试解题:先不看提示,尽量独立寻找答案;
- 手写代码:脱离 IDE 的语法高亮与自动补全,先在纸上书写以暴露盲区;
- 自行测试:覆盖基本条件与异常条件;
- 誊写到电脑运行:记录纸面编码时的错误清单,避免重犯。
同时它列出面试必考知识面:数据结构(链表、树/Trie/图、栈队列、堆、Vector/ArrayList、哈希表)、算法(BFS/DFS、二分、归并、快排)、概念(位运算、内存栈/堆、递归、DP、Big-O),并给出拿到算法题后的 7 步解题顺序(倾听 → 构造示例 → 暴力解 → 优化 → 复查 → 实现 → 测试),以及"面试是相对评价,不必每题全对"的应考心态建议。
题库层
Interview/Interview List.md 按 语言 / 操作系统 / 数据库 / 网络 / Spring 五个栏目收录了经典 Q&A,例如:
- 操作系统:进程与线程差异、多线程优于多进程的原因、死锁四条件(互斥、占有并等待、不可抢占、循环等待)与四种解决策略(预防/回避/忽略/检测)、内存分配算法(First/Next/Best fit)、页面置换算法(OPT/FIFO/LRU/LFU/NUR)、内部与外部碎片、虚拟内存、分页与分段、信号量与互斥锁区别、上下文切换、用户级与内核级线程、fork() 与 vfork() 差异、Race Condition;
- 数据库:Oracle Sequence 语法、DBMS 的 DDL/DML/DCL 功能、视图与虚拟表、规范化与异常、数据完整性、触发器、Commit/Rollback、JDBC 与 ODBC、索引选型(B+Tree/Hash)与建索引注意事项;
- 网络:OSI 7 层逐层职责、TCP/IP 四层栈、TCP 的 socket 调用序(服务端 socket→bind→listen→accept→read/write→close;客户端 socket→connect→read/write→close)、3-way/4-way handshake 报文流程、UDP 特性与适用场景、HTTP 与 HTTPS(SSL 层)差异、GET 与 POST 差异、IOCP 与线程池、路由器与交换机区别;
- Spring:DispatcherServlet 的前端控制器职责、DI 依赖注入、AOP 及其术语(Advice/Joinpoint/Pointcut/Weaving/Aspect)、DAO、注解体系(@Controller/@RequestMapping/@Autowired/@Service/@Repository)、Spring JDBC 与 MyBatis 的 SQL 管理方式。
[Java] Interview List.md 则采用"提问意图 → 标准回答 → 关键词与追问点"三段式结构,示例包括:GC 与 Stop-the-World 机制、StringBuilder 与 StringBuffer 同步差异、JVM 五大内存区域(方法区/堆/栈/PC 寄存器/本地方法区)、重载与重写区别、抽象类与接口(含 Java 8 default method、Java 9 private method 演进)、泛型、访问修饰符、Java 编译执行过程等,非常适合作为"答题后自我追问"的复习脚本。
此外,Interview/Mock Test/ 目录保存了历年真实笔试与面试题记录(如 2019년 면접질문.md 中的快排实现与复杂度、设计模式分类、PWA 与 SPA 差异、Vue 生命周期、CPU 调度算法、双向链表实现、页面置换算法等),为读者提供了贴近实战的演练素材。
ETC 与协作规范:贡献者可遵循的仓库约定
Git 提交信息规范
README 定义的本仓库提交规范为 날짜-[주제]-내용-상태(日期-[主题]-内容-状态),示例:2019-10-14 [Algorithm] Sort Add/Update/Delete,即每条提交需注明改动日期、所属知识板块、改动内容与增删改状态。
与之呼应,ETC/Git Commit Message Convention.md 提供了更通用的 Udacity 风格提交模板,将提交信息拆为 type: Subject / body / footer 三段:
- type(小写):
feat(新功能)、fix(修 bug)、docs(文档)、style(格式)、refactor(重构)、test(测试)、chore(构建/工具); - Subject:不超过 50 字符,不用句号与特殊符号,英文首字母大写、用现在时(
Add而非Added); - Body:详述"做了什么、为什么做",超过 72 字符换行;
- Footer:引用 issue tracker,如
Resolves: #123、See also: #456。
两者分别对应"本仓库的轻量约定"与"面向团队的通用规范",可作为开发者建立个人提交习惯的参考。
其他协作专题
ETC/ 目录还收录了 GitHub Fork로 협업하기.md(Fork 协作流程)、GitHub 저장소(repository) 미러링.md%20미러링.md)(仓库镜像)、Git vs GitHub vs GitLab Flow.md(工作流对比)、Collaborate with Git on Javascript and Node.js.md 等协作主题,与 README 的贡献者文化一脉相承。
使用建议:如何高效利用该知识库
结合上述结构与仓库实际内容,推荐以下使用路径:
- 按索引导航:以根 README.md 为总纲,先定位目标领域;多数子目录另有 README 导航(Interview/README.md、Algorithm/README.md),可进一步缩小范围;
- 文档 + 代码对照:涉及数据结构和算法时,同时阅读概念文档与 code/、code/ 下的 Java 源码,动手编译运行验证复杂度结论;
- 用 Interview 题库做自测:先尝试独立回答 Interview/Interview List.md 中的问题,再对照 [Java] Interview List.md 的"关键词与追问"做二次校验;
- 关注企业真题:冲刺阶段可翻阅 Interview/Mock Test/ 与 Algorithm/SAMSUNG Software PRO등급 준비.md,校准复习方向;
- 以贡献促学习:若发现文档疏漏,可按 README 声明的 Issue/PR 机制反馈,遵循仓库的提交信息格式,既帮助社区也巩固理解。
许可证
本仓库采用 MIT License(见 LICENSE),由原作者 Gyuseok Kim(gyoogle)于 2019 年发布,允许自由使用、修改与分发,这为知识库的长期维护与二次传播提供了宽松的法律基础。
综上,tech-interview-for-developer 以 README.md 为总索引,将计算机基础、算法、设计模式、多语言、Web 工程、面试题库等内容组织成一套"可导航、可运行、可共建"的面试知识体系;无论是应届生系统复习,还是工程师临时查阅,都能在该仓库中找到对应的高质量素材。