项目面试、自我介绍与面试表达

2022-02-11T10:00:00+08:00 | 20分钟阅读 | 更新于 2022-02-11T10:00:00+08:00

@

学习目标

学完本章后,你将具备以下能力:

  1. 能够使用 STAR 法则(情景-任务-行动-结果)结构化地介绍一个项目,在 3 分钟内讲清业务背景、技术方案和量化成果。
  2. 能够根据项目介绍模板(简介、技术栈、职责、难点、方案、成果)组织语言,避免流水账式叙述。
  3. 能够具体且有证据地评价自身技术优势,并用对比分析的方式表达技术选型决策的理由。
  4. 能够按照"问题现象、排查过程、根因、解决方案、效果"的框架讲述一个真实的项目难点。
  5. 能够建立面试复盘习惯,在每次面试后系统记录与改进,并掌握简历包装的基本原则。

前置知识: 有至少一个完整项目经历(课程项目或实习项目均可),了解基本的后端技术栈(Go、Redis、MySQL、Gin 等)。

动手做 3 件事:

  • 用 STAR 法则写一段 200 字以内的项目介绍,大声朗读计时,控制在 2 分钟以内。
  • 找一个同学或朋友互相模拟面试,让对方问你"为什么选这个技术",练习技术选型表达。
  • 面试后(或模拟面试后)用复盘模板记录:问了什么、答得好或差的、新学到的、下次改进方向。

一、如何介绍自己的项目(STAR法则)

1.1 用生活类比先建立直觉

想象你在讲一个探险故事:如果你说"我去爬山了,挺累的但挺好玩的",听众会觉得无聊。但如果你说"那天山上突然起了大雾(情景),我必须在天黑前找到下山的路(任务),我用手机指南针定位方向、沿着溪流往下走(行动),最终在日落前安全到达山脚(结果)"——听众立刻被吸引了。

面试中介绍项目就是讲一个"技术探险故事",STAR 法则就是讲故事的骨架:

  • Situation(情景):业务背景是什么?为什么要做这个项目?
  • Task(任务):你负责什么?要解决什么问题?
  • Action(行动):你具体做了什么?用了什么技术方案?
  • Result(结果):最终效果如何?有没有量化数据?
graph LR
    A[Situation
情景背景] --> B[Task
目标任务] B --> C[Action
具体行动] C --> D[Result
量化成果] D -->|复盘反馈| A

桥接: 探险故事的"起因到目标到行动到结局"对应 STAR 的"情景到任务到行动到结果"。关键理解:面试官不想听你背技术名词,他想听你在什么背景下、面对什么问题、做了什么决策、取得了什么效果。STAR 的价值在于强制你按因果链条组织语言,而不是东一榔头西一棒子。

1.2 工程要点

STAR 法则逐项详解

要素核心问题常见错误正确示范
Situation业务背景是什么?跳过背景直接讲技术“电商订单系统日均 50 万单,大促期间峰值 QPS 达到 3000”
Task你的职责是什么?把团队的功劳都说成自己的“我负责订单查询接口的性能优化”
Action你具体做了什么?只说"用了 Redis"不说为什么“分析发现瓶颈在数据库查询,我用 Redis 缓存热点数据,设置 5 分钟过期”
Result效果如何?只说"变快了"没有数据“接口平均响应从 200ms 降到 20ms,QPS 从 500 提升到 3000”

项目介绍模板

按以下顺序组织你的项目介绍:

  1. 项目简介(1句话):什么系统、什么规模、解决什么问题
  2. 技术栈:语言、框架、中间件、数据库
  3. 你的职责:负责哪些模块、什么角色
  4. 核心难点:遇到了什么挑战
  5. 解决方案:怎么解决的、为什么这么选
  6. 量化成果:性能提升多少、成本降低多少

Go 后端项目介绍示例

// 项目介绍模板(伪代码,用于面试口述)

// 步骤1:项目简介 - 一句话说清是什么
项目:电商平台后端服务
规模:日均订单 50 万,大促峰值 QPS 3000

// 步骤2:技术栈
语言:Go 1.21
框架:Gin
存储:MySQL 8.0 + Redis 7.0
消息队列:Kafka
部署:Docker + K8s

// 步骤3:你的职责
负责订单核心链路的接口开发与性能优化
独立设计并实现订单查询、状态流转两个模块

// 步骤4:核心难点
大促期间订单查询接口响应时间从 50ms 飙升到 500ms
数据库 CPU 使用率持续超过 90%

// 步骤5:解决方案
用 Redis 缓存热点订单数据,过期时间 5 分钟
用 context.WithTimeout 为每个查询设置 2 秒超时
用 Kafka 削峰填谷,异步处理非核心逻辑

// 步骤6:量化成果
接口平均响应从 200ms 降到 20ms(提升 10 倍)
QPS 从 500 提升到 3000(提升 6 倍)
数据库 CPU 降到 40% 以下

⚠️ 新手必踩的坑: 把项目介绍讲成"技术名词堆砌"——“我用了 Go、Gin、Redis、MySQL、Kafka、Docker、K8s……"。面试官听完只知道你用了一堆技术,但不知道你解决了什么问题、你做了什么决策。正确做法:每提到一个技术,就跟一句"因为……所以用它来解决……问题”。


二、评价自身优势与技术选型表达

2.1 用生活类比先建立直觉

想象你在相亲节目上做自我介绍:如果你说"我人很好、什么都行",没人会记住你。但如果你说"我擅长做饭,上个月学会了做法餐,正在学做日料",对方立刻有了具体印象。

面试中评价自身优势也是一样:不要说"我什么都会",要给出具体优势 + 具体证据 + 成长方向。

graph TD
    A[具体优势
如:并发编程] --> B[项目证据
如:用goroutine池优化] B --> C[量化结果
如:QPS提升5倍] C --> D[成长方向
如:正在学习分布式系统]

桥接: 相亲介绍的"具体特长到实例证明到未来计划"对应面试优势表达的"具体优势到项目证据到成长方向"。关键理解:面试官评估的不是你"知道多少名词",而是你"能不能用知识解决实际问题"。一个有证据的"我擅长并发编程"远胜于一个空洞的"我精通 Go"。

2.2 工程要点

评价自身优势的三层结构

// 优势表达模板(伪代码,用于面试口述)

// 步骤1:说出具体优势(不要说"我什么都会")
优势1:并发编程能力
  // 步骤2:给出项目中的具体案例作为证据
  证据:在订单系统中,我用 goroutine + channel 实现了并发订单处理
  // 步骤3:量化结果
  结果:将订单处理吞吐量从 200/s 提升到 1000/s

优势2:问题排查能力
  证据:线上服务出现内存泄漏,我用 pprof 定位到是 slice 未释放导致
  结果:修复后内存从持续增长变为稳定在 200MB

优势3:系统设计能力
  证据:独立设计了消息推送系统的架构,支持百万级长连接
  结果:使用 WebSocket + Redis Pub/Sub,单机支持 5 万连接

// 步骤4:诚实说明成长点
成长方向:目前在深入学习分布式系统设计,对一致性协议的理解还不够深入

技术选型表达

面试官常问"为什么选 A 不选 B",你需要给出有对比、有理由的回答:

选型决策对比项选择理由
Gin vs BeegoGin 更轻量,中间件机制灵活;Beego 较重,约定多于配置选 Gin:项目需要灵活定制中间件,团队偏好"只引入需要的功能"
Redis vs MemcachedRedis 支持持久化、多种数据结构、Pub/Sub;Memcached 只支持 KV 且无持久化选 Redis:需要用 Sorted Set 做排行榜,需要持久化防止数据丢失
gRPC vs HTTP+JSONgRPC 用 Protobuf 序列化更小更快、强类型;HTTP+JSON 可读性好、调试方便选 gRPC:内部服务间调用频繁,对延迟敏感;对外 API 用 HTTP+JSON
Kafka vs RabbitMQKafka 吞吐量高、支持消息回溯;RabbitMQ 延迟更低、路由灵活选 Kafka:日志和订单事件吞吐量大,需要消息回溯能力

⚠️ 新手必踩的坑: 回答技术选型时只说"A 很好"不说"B 有什么不足"。面试官想看到的是你的对比分析能力——你不仅知道选了什么,还知道不选什么、为什么。正确句式:“A 和 B 都能解决问题,但 A 在 X 方面更优,B 的 Y 特性我们用不上,所以选 A。”


三、项目难点讲述

3.1 用生活类比先建立直觉

想象你去看病:医生不会只听你说"我肚子疼"就开药。医生会问"什么时候开始疼的"“疼在什么位置"“吃了什么之后开始的”,然后做检查,最后给出诊断和治疗方案。

面试中讲项目难点也是"看病"的过程:

  • 问题现象(症状):线上出了什么问题、怎么发现的
  • 排查过程(检查):你用了什么工具、查了什么日志、做了什么假设
  • 根因(诊断):最终找到的真正原因
  • 解决方案(治疗):你怎么修的
  • 效果(康复):修复后是否复现、有没有预防措施
graph TD
    A[问题现象
线上内存持续增长] --> B[排查过程
pprof分析goroutine] B --> C[根因定位
channel未关闭导致泄漏] C --> D[解决方案
添加context取消机制] D --> E[效果验证
内存稳定不复现] E --> F[预防措施
添加监控告警]

桥接: 看病的"症状到检查到诊断到治疗到复查"对应难点讲述的"现象到排查到根因到解决到效果”。关键理解:面试官关注的不是问题本身有多难,而是你的排查思路是否清晰。一个简单问题配上一套清晰的排查过程,比一个难问题配上一句"后来就好了"更有说服力。

3.2 工程要点

项目难点讲述示例

// 项目难点讲述模板(伪代码,用于面试口述)

// 步骤1:问题现象 - 描述症状,说明严重性
现象:线上服务运行 3 天后内存从 200MB 涨到 2GB
      触发了 OOM Killer,服务被系统强制杀掉
      发生频率:每周 1-2 次

// 步骤2:排查过程 - 展示你的思路和工具
排查1:查看应用日志,没有明显的错误日志
排查2:查看 Grafana 监控,发现 goroutine 数量从 200 涨到 5000
排查3:用 go tool pprof 采集 goroutine profile
排查4:在 pprof 中发现大量 goroutine 阻塞在 channel 接收

// 步骤3:根因定位 - 说明真正原因
根因:有一个 worker goroutine 从 channel 读取任务
      但 channel 的发送方在出错时没有关闭 channel
      导致 worker 永久阻塞在 channel 接收,goroutine 无法退出
      每次出错都泄漏一个 goroutine,累积导致内存增长

// 步骤4:解决方案 - 说明怎么修的
解决:给每个 worker 传入 context
      在发送方出错时调用 cancel()
      worker 通过 select 监听 ctx.Done() 主动退出

// 步骤5:效果验证 - 量化结果
效果:修复后运行 30 天,goroutine 数量稳定在 200-250
      内存稳定在 200MB,未再出现 OOM

// 步骤6:预防措施 - 展示你的工程素养
预防:添加 goroutine 数量监控告警,超过 500 触发告警
      在 CI 中加入 goroutine 泄漏检测(go.uber.org/goleak)

讲述难点的注意事项

要素正确做法错误做法
真实性讲真实遇到的问题编造没经历过的"难点"
细节程度给出具体数字和工具名只说"内存有问题"
排查思路展示推理过程只说"后来发现是 xxx"
你的角色强调"我"做了什么全程说"团队"做了什么
预防措施展示复盘和改进意识解决了就结束,没有预防

⚠️ 新手必踩的坑: 编造一个你没真正经历过的难点。面试官会追问细节:“你 pprof 里具体看到了什么函数?““你的监控是怎么配置的?“如果你没真正做过,追问两三层就会露馅。正确做法:选一个你真正解决过的问题,哪怕它不够"难”,只要排查思路清晰、讲述有条理,就是好的回答。


四、实习的目的与认知

4.1 用生活类比先建立直觉

想象学开车:你在驾校学了倒车入库、侧方停车,考试也过了。但第一次在真实马路上开车——旁边有公交车按喇叭、前面有行人突然横穿、导航说"前方路口左转"但你看不清路牌——你才发现"驾校学的"和"实际开的"之间有一道巨大的鸿沟。

实习就是把你从"驾校"扔到"真实马路"上的过程:

  • 驾校(学校):知识点是隔离的、题目有标准答案、环境是受控的
  • 真实马路(实习):问题是交叉的、没有标准答案、环境随时变化

桥接: 学开车的"驾校到上路"对应实习的"书本到工程”。关键理解:实习的核心价值不是"学新技术”(新技术你可以自己学),而是把书本知识变成工程能力——学会在真实约束(时间紧、代码烂、需求变)下做出合理的工程决策。

4.2 工程要点

实习的两大目的

目的具体内容错误回答
技术落地把课堂学的算法、数据结构、设计模式用在真实项目中;学会用 Git 协作、写 PR、Code Review、看线上日志“为了学新技术”(新技术可以自学)
职业认知了解真实的开发流程(需求评审、技术方案、开发、测试、上线、运维);体验团队协作和沟通;判断自己是否适合这个方向“为了学分/为了钱”(太功利,没有成长视角)

面试中如何谈实习

// 实习认知表达模板(伪代码,用于面试口述)

// 步骤1:说明技术落地的收获
技术落地方面:
  在学校学的 Go 语法和并发模型,之前只写过 demo
  实习时真正用在了一个日活 10 万的 API 服务上
  学会了如何在真实项目中做错误处理、日志记录、监控告警

// 步骤2:说明职业认知的收获
职业认知方面:
  了解了完整的开发流程:需求评审、技术方案设计、
  编码、自测、Code Review、测试、灰度发布、全量上线
  学会了和前端、产品、测试同学的协作沟通方式
  确认了自己对后端方向的兴趣和长期发展意愿

// 步骤3:诚实说出不足
不足之处:
  实习期间主要做业务开发,对系统架构设计参与较少
  希望在正式工作中能有更多架构层面的成长

⚠️ 新手必踩的坑: 面试官问"你实习的目的是什么”,回答"为了拿到转正 offer"或"为了赚钱"。虽然这是很多人的真实想法,但在面试中这样说显得缺乏成长意识。正确做法:从"技术落地"和"职业认知"两个维度回答,展示你对实习价值的深层理解。


五、面试复盘与简历包装

5.1 用生活类比先建立直觉

想象运动员赛后复盘:比赛结束后,教练和运动员一起看录像回放——哪个球处理得好、哪个球失误了、对手有什么新战术、下次遇到类似情况怎么应对。不看回放的运动员,同样的错误会犯一百次。

面试也需要"赛后复盘":每次面试结束后,趁记忆还新鲜,立刻记录面试官问了什么、你答得好不好、有什么新知识点、下次怎么改进。

graph TD
    A[面试结束] --> B[记录问题
问了什么] B --> C[自我评估
答得好或差] C --> D[补充知识
新学到的] D --> E[制定改进
下次方向] E -->|下一次面试| A

桥接: 运动员复盘的"看回放到找问题到改进训练到下次比赛"对应面试复盘的"记录问题到自我评估到补充知识到下次改进"。关键理解:面试本身也是一种学习——面试官的问题暴露了你的知识盲区,每次面试后的复盘就是你查漏补缺的最佳时机。

5.2 工程要点

面试复盘模板

// 面试复盘模板(伪代码,每次面试后填写)

// 步骤1:基本信息
公司:xxx
岗位:Go后端开发
日期:2026-08-11
轮次:技术一面

// 步骤2:记录问题与回答情况
问题1:context.WithCancel 和 WithTimeout 的区别?
  回答情况:答得好,举例说明了手动取消和自动超时的区别
  补充:可以再加一句 WithTimeout 内部调用 WithDeadline

问题2:Go 的 GMP 调度模型?
  回答情况:答得一般,只说了 G/M/P 的含义,没讲清楚抢占式调度
  改进方向:复习 work-stealing 算法和抢占机制

问题3:Redis 持久化 RDB 和 AOF 的区别?
  回答情况:没答上来,只记得 RDB 是快照
  新学到的:AOF 是追加日志,可以配置 fsync 策略

// 步骤3:总结
答得好的:Go 基础和 context 相关
答得差的:Redis 持久化、GMP 调度细节
下次改进:面试前重点复习 Redis 和 Go 运行时原理

简历包装原则

原则正确做法错误做法
真实为主写你真正做过的、能说清楚的编造没做过的项目或职责
量化结果“QPS 从 500 提升到 3000”“优化了性能”
突出难点“解决了 goroutine 泄漏问题”“写了 CRUD 接口”
技术关键词Gin、Redis、Kafka、pprof只写"后端开发"
简洁精炼一条经历 2-3 行一条经历写半页纸

简历项目描述示例

// 简历项目描述(伪代码)

// 步骤1:项目名称和时间
电商平台后端服务 | Go后端开发 | 2026.03 - 2026.06

// 步骤2:项目简介(1-2句话)
日均订单 50 万的电商平台,负责订单核心链路开发与性能优化

// 步骤3:具体职责与成果(用动词开头,量化结果)
- 设计并实现订单查询接口,使用 Redis 缓存热点数据,
  接口平均响应从 200ms 降至 20ms,QPS 从 500 提升至 3000
- 使用 context.WithTimeout 为数据库查询设置超时,
  避免慢查询导致的 goroutine 泄漏
- 使用 pprof 排查线上内存泄漏问题,
  定位并修复 channel 未关闭导致的 goroutine 泄漏
  修复后内存稳定在 200MB,未再出现 OOM
- 编写 Swagger 接口文档,规范前后端协作流程

⚠️ 新手必踩的坑: 过度包装简历。写"精通 Go"但面试官一问 GMP 就卡壳,写"独立设计架构"但追问时发现只是照着模板抄。面试官不怕你不会,怕你不诚实。正确做法:简历上写的每一句话,你都要能展开讲 3 分钟。如果讲不出来,就不要写。


六、实习的目的:学习成长与验证匹配

本章从更精炼的视角重述实习价值——把它归纳为两个目的:学习成长验证匹配。它与第四章"技术落地 / 职业认知"的观察角度不同,但互为补充:前者的"职业认知"里其实就藏着"验证匹配"这层意思,这里把它单独拎出来讲透。

6.1 用生活类比先建立直觉

想象你买鞋:你在网上看了很多测评(这相当于自学),觉得自己应该穿 42 码、适合跑步鞋。但真正把鞋穿上脚、在店里走两步(这相当于实习),你才发现两件事——

第一,鞋带怎么系才不磨脚、不同路面脚掌怎么用力、走久了哪里会酸,这些是测评里学不到的(学习成长);

第二,你才走了半公里就脚疼,原来你根本不适合跑步鞋,更偏爱休闲鞋(验证匹配)。

graph TD
    A[实习] --> B[学习成长
把知识变成工程能力] A --> C[验证匹配
确认方向是否适合自己] B --> D[需求评审与协作
真实踩坑与修复] C --> E[喜欢吗
擅长吗
能长期做吗] D --> F[能力沉淀] E --> G[职业决策依据]

桥接: 买鞋的"试穿学穿法 → 确认是否合脚"对应实习的"学习成长 → 验证匹配"。关键理解:很多人以为实习只是为了"学技术",其实它的第二个价值更隐蔽也更重要——验证你和你想象中的方向/岗位到底匹不匹配。没有真实体验,你对一个职业的全部认知都来自想象和二手信息,很容易在毕业时选错赛道。

6.2 工程要点

实习的两大目的(学习成长 / 验证匹配)

目的核心问题具体体现常见错误认知
学习成长我能在真实环境里学到什么?把课堂知识用在真实项目;学会 Git 协作、写 PR、Code Review、看线上日志;体验需求评审到上线的完整开发流程只把实习当"学新技术"的渠道(新技术你自己也能学,实习真正的增量是工程落地能力)
验证匹配这个方向 / 岗位真的适合我吗?验证自己是否喜欢敲业务代码、能否接受真实工作节奏、是否对某个技术方向有持续热情“学计算机 = 做后端 = 赚钱”,从没验证过自己是否真的喜欢或擅长

⚠️ 新手必踩的坑: 面试官问"你实习的目的是什么",回答"为了拿转正 offer"或"为了赚钱"。虽然这可能是真实想法,但在面试中这样讲显得缺乏成长意识,也丢了"验证匹配"这个高级视角。正确做法:从"学习成长"和"验证匹配"两个维度回答——既展示你通过实习把知识变成了能力,也展示你通过实习理性地确认了职业方向,而不是凭想象选赛道。

面试中如何谈实习目的(两点框架)

// 实习目的表达模板(伪代码,用于面试口述)

// 目的1:学习成长 - 强调能力落地,而非"学新技术"
学习成长方面:
  把学校里学的 Go 并发模型,第一次用在日活 10 万的 API 服务上
  学会了在真实约束(需求变、时间紧、代码有历史包袱)下做工程决策
  这比单纯"学新技术"更有价值,因为新技术我自己也能自学

// 目的2:验证匹配 - 强调双向确认,而不是"想象中喜欢"
验证匹配方面:
  通过实习确认了自己对后端方向的兴趣和长期意愿
  也看清了真实工作的节奏和协作方式,确认这是我想长期从事的方向
  如果没有这段实习,我可能只是"想象中喜欢后端"
  现在是有依据地选择了它,而不是凭一腔热血

七、自测题与动手练习

自测题

  1. STAR 法则的四个字母分别代表什么?在介绍项目时,最容易遗漏的是哪个要素?为什么?

  2. 面试官问"你有什么优势",以下回答有什么问题?请改写:

    "我 Go 语言掌握得很好,什么都会,数据库、缓存、消息队列都了解。"
    
  3. 面试官问"为什么选 Redis 不选 Memcached",你的回答应该包含哪几个维度的对比?

  4. 在讲述项目难点时,“排查过程"这一环节的目的是什么?如果跳过排查过程直接说"后来发现是 xxx 问题”,面试官会怎么想?

  5. 面试复盘应该在面试结束后多久进行?为什么要在这个时间点做?复盘记录中最重要的三个字段是什么?

动手练习

  1. STAR 项目介绍练习:选一个你做过的项目,用 STAR 法则写一段 300 字以内的项目介绍。然后用手机录音,计时朗读,控制在 2 分钟以内。听一遍录音,检查是否有"技术名词堆砌"的问题。

  2. 技术选型模拟练习:列出你项目中的 3 个技术选型决策(如 Gin vs Beego、Redis vs Memcached、Kafka vs RabbitMQ),对每个选型写出"选了什么、不选什么、为什么"。找一个同学互相提问,练习被追问时的临场表达。

  3. 面试复盘实战:参加一次模拟面试(或真实面试),结束后立即用复盘模板记录。重点记录:答得差的问题、新学到的知识点、下次改进方向。一周后回顾复盘记录,检查改进项是否已落实。


八、本章小结

本章从 STAR 法则出发,建立了"讲技术探险故事"的直觉模型——用情景、任务、行动、结果四个要素组织项目介绍,让面试官在 3 分钟内理解你做了什么、为什么做、效果如何。我们提供了项目介绍模板(简介、技术栈、职责、难点、方案、成果)和一个完整的 Go 后端项目示例。

在优势表达方面,核心原则是"具体优势 + 项目证据 + 量化结果 + 成长方向",避免空洞的"我什么都会"。技术选型表达要有对比分析——不仅说选了什么,还要说不选什么及原因。项目难点讲述遵循"现象、排查、根因、解决、效果"的看病式框架,重点展示排查思路而非问题难度。

最后,实习目的应从"技术落地"和"职业认知"两个维度回答,面试复盘要趁热记录、系统改进,简历包装以真实为底线、以量化为标准。面试不是一场考试,而是一次双向匹配——展示真实的自己,找到适合的团队。

复习提示:
  • STAR 法则核心:不要只讲"做了什么",要突出"为什么做"(S/T)和"做得怎样"(R),用数据说话。
  • 技术选型的表达公式:“选择 X 因为 [具体优势] + 项目证据 [具体实现] + 量化结果 [数据] + 成长方向 [下一步计划]"。
  • 项目难点讲述框架:现象 → 排查过程 → 根因定位 → 解决方案 → 效果验证,展示完整的问题解决能力。
  • 简历底线原则:所有经历必须真实可追溯,面试官会深挖细节;宁可少写也不要造假。
面试官
面试时介绍项目,应该从技术栈开始还是从业务场景开始?
候选人
正确顺序是 先业务后技术

推荐结构
业务背景:“这是一个 xxx 场景的项目,解决用户 yyy 的需求”
核心挑战:“当时面临的主要问题是 aaa(如高并发、数据一致性)"
技术方案:“为此我采用了 xxx 方案,选型原因是…"
成果量化:“最终实现了 xxx 效果,QPS 从 A 提升到 B”

错误示范
一上来就说"我用的是 Spring Boot + MySQL + Redis…"——面试官更关心你解决了什么问题,而不是你用了什么工具。

面试加分点:提到"技术方案一定要和业务需求挂钩”,说明每个技术决策都有明确的业务动机,而不是为了用新技术而用新技术。
About Me

没什么想介绍的,一个很大众的码农…

喜欢代码,车,马,真的是 🐎

讨厌别人让我给自己的代码写注释 最厌烦别人的程序没有写注释

目标

学AI,加油!加油!