【无标题】
| 这个作业属于哪个课程 | https://bbs.csdn.net/forums/FZU_university_2026 |
|---|---|
| 这个作业要求在哪里 | https://bbs.csdn.net/topics/620518050 |
| 这个作业的目标 | <为本学期的软工实践学习做准备,也为新学期开始热身> |
| 其他参考文献 | csdn构建之法社区,《构建之法》 |
作业基本信息
回首过去
问题1
当时高考完IT行业行情还不错,第一志愿填报的是电气想冲一冲,福大在云南只招软工所以第二志愿报了软工。
问题2
期待就是毕业后优秀的就业前景和工资,至于想象就是长时间面对屏幕敲代码搞算法?
问题3
emmm…当时希望自己在暑假能提前学习编程算法,先别人一步,结果就是到处旅游四处完了ovo。当时报了学校acm队的训练吧,没跟下来,现在有些后悔。flag就是之前和家人说过会尽力冲保研的,结果从开学就一直在懈怠啊。。。
立足当下
- 个人成长
tags: - 简历
- 软件工程
- 学习总结
- Java
- C++
description: 福州大学软件工程大三学生的阶段总结:C++ 与 Java 的真实代码量、四个项目、以及接下来要补的短板。
一、名片
| 昵称 | 郑伟航 |
| 头像 | 🧑💻 |
| 学校 / 专业 | 福州大学 · 软件工程 |
| 年级 | 大三在读 |
| 专业排名 | 103 / 143 |
| 方向 | 【暑期实习 / 考研 —— 两条线都在准备,尚未最终确定】 |
| 坐标 | 【福州】 |
| 兴趣爱好 | 🏀 篮球 · 🎮 游戏 |
| 联系 | 【 3054173044@qq.com 】 |
关键词
C++ Java Swing JDBC Socket MySQL 数据结构 链表 IDEA Dev-C++ Git
二、专业水平
编程语言
| 语言 | 熟练度 | 代码量 | 主要用途 |
|---|---|---|---|
| Java | 能独立完成带界面的完整小系统 | ≈1693 行 | Socket 网络通信、JDBC 数据库、Swing 界面 |
| C++ | 课程主力语言 | ≈1479 行 | 数据结构实现、多文件工程组织 |
| 合计 | ≈3172 行 |
技术栈明细
| 类别 | 内容 | 用在哪里 |
|---|---|---|
| 网络编程 | ServerSocket / Socket / 多线程通信 | 联机五子棋的服务端与客户端 |
| 数据库编程 | JDBC · DriverManager · PreparedStatement · ResultSet · 资源显式释放 | 图书管理系统、DBUtil 工具类 |
| 桌面 GUI | Swing(JFrame / JPanel / JTable / JButton)· AWT 事件监听 | 五子棋棋盘绘制、图书查询界面 |
| 设计模式(初步) | DAO 分层(BookDAO / ReaderDAO / RecordDAO)· 工具类抽取 | library 工程 |
| 开发工具 | IntelliJ IDEA · Dev-C++ · VS Code · Git · MySQL Connector/J | 全部工程 |
| 课程基础 | 数据结构 · 面向对象程序设计 · C++ 程序设计 | 课程作业 |
代码量明细(可逐项核对)
Java wuziqi(联机五子棋) 312 行 3 文件
library(图书管理) 484 行 5 文件
SQL(图书查询系统) 238 行 1 文件
tanqiu(弹球动画) 257 行 1 文件
untitled / untitled1 239 行 2 文件
untitled2(Swing 练习) 75 行 3 文件
tic-tac-toe / prime number 88 行 2 文件
─────────
小计 1693 行
C++ 课程实践作业(链表) 446 行 3 文件
C++ 程设练习 1020 行 5 文件
mycode 测试仓库 13 行 1 文件
─────────
小计 1479 行
总计 ≈3172 行
三、项目经历
项目一:联机五子棋(Socket 网络对战)
技术栈:Java · Socket · 多线程 · Swing
这是我第一个"两个程序真的能互相说话"的项目,也是我理解网络编程的起点。
- 服务端
GobangServer.java:用ServerSocket(9999)监听端口,为连入的客户端分配处理线程 - 客户端
BlackClient.java/WhiteClient.java:new Socket("127.0.0.1", 9999)建立连接,继承JFrame绘制棋盘,用MouseAdapter监听落子 - 我的收获:搞明白了"黑棋"和"白棋"为什么必须是两个客户端 —— 状态不能只存在一台机器上,这就是分布式最朴素的形态
- 踩过的坑:【补充一个真实的 bug,例如"客户端先启动会报 Connection refused" —— 面试官最爱问这个】
- 规模:3 个类 / 312 行
项目二:图书管理系统(JDBC + DAO 分层)
技术栈:Java · JDBC · MySQL · Swing · DAO 分层
这个项目让我第一次把"数据库"和"代码"接起来。
- 数据库工具类
DBUtil.java:封装getConnection(),统一用PreparedStatement防注入,用close(conn, pstmt, rs)收口资源释放 - DAO 分层:
BookDAO(76 行)/ReaderDAO(31 行)/RecordDAO(94 行)—— 把 SQL 从界面代码里彻底剥出来,第一次体会到"分层"的意义 - 界面
BookManageFrame.java(232 行):Swing 构建图书管理窗体,联动 DAO 完成增删改查 - 依赖管理:手动引入
mysql-connector-j-9.7.0.jar—— 第一次知道.jar要放进lib并配置模块依赖 - 规模:5 个类 / 484 行
项目三:图书查询系统(SQL 综合练习)
技术栈:Java · JDBC · Swing 表格
- 单文件 238 行的完整查询工具:条件查询面板 +
JTable结果表格 + 排序功能 - 用
DefaultTableModel把ResultSet映射成表格数据 —— 第一次写"数据驱动界面" - 规模:1 个类 / 238 行
项目四:课程实践 —— 链表实现(第 1 次作业)
技术栈:C++ · 头文件与实现分离
- 用
list.h定义接口,list1.cpp/list2.cpp分别实现,配套《实践报告1》 - 这是我第一次理解声明与实现的分离 —— 也是后来看懂 Java 里 interface 的基础
- 【补充:实现了哪些操作?插入 / 删除 / 遍历 / 查找?】
- 规模:3 个文件 / 446 行
其他小练习
tanqiu(弹球动画,257 行)· Calculator(计算器,127 行)· tic-tac-toe(井字棋,49 行)· prime number(素数判断,39 行)· Swing 组件练习(JPanel / JScrollPane / 事件,75 行)
四、成果与获奖
| 项目 | 内容 |
|---|---|
| 竞赛 | 暂无 |
| 奖学金 | 暂无 |
| 证书 | 暂无 |
| 学生工作 | 【组织部成员】 |
五、教育背景
| 学校 | 福州大学 |
| 专业 | 软件工程 |
| 年级 | 大三在读 |
| 专业排名 | 103 / 143 |
| 核心课程 | 【数据结构、面向对象程序设计、C++ 程序设计、数据库原理、计算机网络 …… 只填真正上过的】 |
展望未来
七个我没想通的问题
《构建之法》第四版我读了第 1、2、3、4、6、8、9、12、13、16 章,剩下的章节是跳读的。有意思的是,读完能记住的几乎不是"流程""模型"这些词,而是几个卡住我的问题。
社区里的提问很多,我挑了七个:四个来自 CSDN 构建之法社区 的「书评&讨论」频道,三个来自社区里转述的其他同学的原问。它们有一个共同点 —— 都直接撞在我这两年的真实经历上。
总览
| # | 问题 | 关涉章节 | 我的核心观点 |
|---|---|---|---|
| 1 | AI 工具是否改变了软件工程的根本? | 全书 | 没改变根本,只换了瓶颈 |
| 2 | 复杂项目里如何高效地进行程序理解? | 第 1 章 | 理解成本是写代码时就埋下的 |
| 3 | 学生如何像健身学员一样找到自身定位点? | 师生关系 | 教练质量取决于学员输入质量 |
| 4 | 初学者如何参与开源? | 第 3 章 | 先要"第一个功绩",再谈高星 |
| 5 | 人类软件工程师的角色将如何重新定义? | 第 1 章 | 从构建者到验证者,但要验证的东西变了 |
| 6 | 软件工程的核心为什么是权衡而非零缺陷? | 第 1 章 | "最佳实践"是带约束条件的答案 |
| 7 | 要多少代码训练量才能写得高效且不易出错? | 第 2 章 | 训练量不是重点,"不欠账"才是 |
问题一:AI 工具是否改变了软件工程的根本?
原问题:AI 工具是否改变了软件工程的根本?
关联章节:全书多处提及 AI 对软件工程的影响。上下文:书中承认 AI 工具在代码生成、测试等方面的作用,但仍强调软件工程核心不变。支持资料:1、GitHub Copilot 等工具已能生成复杂代码;2、AI 测试工具可以自动发现边界情况;3、但 AI 幻觉问题导致新类型缺陷产生。提问原因:这与我的观察产生疑问。如果 AI 能处理 90% 的编码任务(如 Kent Beck 所言),那"程序 + 软件工程 = 软件"的公式是否需要重构?软件工程师的价值是否正在从"写代改变了软件工程的根本?](https://bbs.csdn.net/topics/620008978)
我的思考:
我的答案是:根本没变,变的是瓶颈的位置。
需求、设计、评审、测试、维护、团队协作 —— 这六件事一件没少。变的是它们之间的成本结构:写代码变便宜了,于是验证代码变得昂贵了。
那个"90% 的编码任务"的说法,其实有个陷阱:它没说"90% 的功能交付"。我自己的经历很能说明问题。写图书管理系统时,我用 AI 辅助生成过一段 JDBC 查询逻辑,代码是对的、能跑,但里面混了 PreparedStatement 的参数绑定和一个我没想到的空值分支。我花了将近一个小时才真正读懂它在干什么 —— 那一刻我意识到:AI 没有替我省下工作,它只是把"写"的工作换成了"读"的工作。而读别人的代码,比读自己的代码难得多。
所以真正变的是:以前你的瓶颈是"我能不能写出来",现在你的瓶颈是"我能不能判断这段代码为什么是对的、在什么条件下会错"。这不但没有削弱软件工程,反而让协作规范、代码评审、测试这些"看起来不写代码"的东西变得更值钱了。
我给自己立了一条底线:AI 生成的代码,我必须能口头讲清每一个关键决策,讲不清就不合入。 这条底线在课程项目里会直接被我拿来用。
问题二:在项目或程序比较复杂的情况下,如何高效率地进行程序理解?
原问题:本书第一章概论(第 3 页)提到一个名词 —— 程序理解(Program Comprehension):「软件团队的人员也会流动,新的成员要尽快读懂已有的程序,了解程序的设计,这叫做程序理解。」这个问题是我在暑期实习时体会到的。在接受前团队成员留下的一个较为复杂的项目时,需要从多角度理解项目内容,例如系统业务流程、各模块功能、实现功能的代码等。需要理解的内容不仅仅是代码部分,往往需要从产品原型开始理解。在代码风格不同、注释比较少的情况下,如何高效率地完成程序理解呢?
我的思考:
这个问题把第一章里一个不起眼的名词变成了实打实的难题。社区里那位朋友后来补的答案我觉得是对的 —— 先跑起来、按功能划分模块、再对照代码、最后集中攻没理解的部分。但我想补一句更难听的话:
程序理解最大的成本,不是读的时候产生的,是写的时候埋下的。
我拿自己的项目做了个实验。那个联机五子棋一共 3 个类 312 行:GobangServer 负责 ServerSocket(9999) 监听并给每个客户端分配线程,BlackClient 和 WhiteClient 各自继承 JFrame 画棋盘、用 MouseAdapter 监听落子。现在假设明天来一个同学要接手,他多久能跑起来?我没有把握说"半小时",因为里面有一堆只有我知道的隐性决策:
- 为什么黑白棋要做成两个类,而不是一个类加一个
color参数? - 为什么服务端要给每个客户端开线程?(因为一个线程阻塞在
read()上,就没法同时管另一个连接) - 棋盘坐标为什么从 0 开始、边界判断为什么写成
>= 15?
这些"为什么"一个都没写在代码里。代码只记录了"怎么做"。
所以我的结论是:程序理解能力不是一种阅读技巧,而是一种写作纪律。 我能为将来的读者(包括三个月后的自己)做的最有效的事,就是在写的时候把路标立好 —— 模块名、关键注释、README,以及最重要的:一次提交做一件事的提交历史。
这条对我的下一步非常具体:给五子棋和图书管理这两个项目补上 README + 关键注释,验收标准就是"一个没看过这个项目的人,多久能跑起来"。
问题三:学生该如何像健身学员一样找到自身定位点,把握老师身上的那套健身资源,朝自己的目标前进呢?
原问题:第一次听到理想的师生关系为健身教练和健身学员的关系,感觉很新颖。我的问题是我们学生该如何做到像健身学员一样找到自身定位点,把握老师身上的那套健身资源,朝自己的目标前进呢?
社区里的追答:对于如何找到自身的定位点,实际上就是如何评估自身能力的问题,方法可以像《自我评价问题列表》那样,从硬实力和软实力两方面评估自己,再根据自身能力找到自己的定位和方向。
我的思考:
"教练和学员"这个类比里,藏着一个容易被忽略的前提:教练的输出质量,取决于学员的输入质量。
健身教练能给你排计划,是因为他会问:你想练什么?有没有旧伤?一周能来几次?放到课程里就是 —— 我有没有带着具体的问题和具体的代码去找过老师?如果我从没问过,老师只能给我通用建议,那不是他不负责,是我没给条件。
这恰好是我过去两年做得最差的一件事:我几乎没主动问过问题。 总觉得自己代码量少、排名靠后,问出来的东西太基础,怕露怯。但看完这个帖子我明白了一件事:"我不知道该往哪使劲"这种问题之所以看起来没用,是因为它没带自述。一旦补上自述 —— “我写了 3172 行代码,Java 和 C++ 各一半,项目都是单机练手,没有团队协作经验,暑假想找实习但不知道简历该写什么” —— 它就立刻变成了一个可以回答的问题。
所以今年我给自己定了一条规矩:每两周至少带着一个具体问题找一次老师或助教,问题必须包含三样东西 —— 我做了什么、卡在哪、我试过什么。
问题四:初学者如何参与开源?
原问题:其实我的困惑更加集中于,非 CS 背景下的初学者,参与开源是否容易。以我个人的观点来说,在 GitHub 上寻找合适项目时,高星是容易吸引我的,但是初学者做到高星是很难的。所以更想知道如初学者到高星,成为一个合格的开源者,该如何去做。
社区里补充的挑战分析:初学者参与开源的核心挑战是"高门槛"与"低回报"的初期困境 —— 能力门槛(项目是"功绩制",你首先需要有"功绩",但初学者恰恰缺乏证明自己的能力)、社交与沟通门槛(异步文字交流容易误解,社区成员因忙碌显得冷漠,不熟悉行话与流程像个"局外人")、动力维持门槛(缺乏外部约束,正反馈延迟长,初期成就感低)。
🔗 原帖:构建之法社区 · 初学者如何参与开源?
我的思考:
这个问题有个隐藏前提值得挑明:它默认了"参与开源 = 给项目提交代码"。但其实门槛最真实的地方是那句"功绩制" —— 你要先有"功绩"才能证明自己,可你恰恰因为还没有任何记录,所以拿不到第一个"功绩"。这是个死循环。
我在简历上遇到过一模一样的结构:零竞赛、零奖项、排名 103/143,想投实习,简历大概率过不了初筛。死循环的破法和开源是一样的 —— 不去追大成果,去追第一个可以被看见的小贡献:
- 修文档、补一个缺失的测试、复现一个别人报的 issue 并附上最小重现步骤。这些是初学者真能做的,而且维护者确实需要。
- 把"高星项目"换成"有活跃维护、issue 有回复、有
good first issue标签的小项目"。 - 更重要的一点:对初学者来说,"持续"比"高星"重要得多。 第一个 PR 大概率被拒绝或者被要求改三轮,但一旦合入一次,你就从"局外人"变成了"有记录的人"。
我自己接下来的具体动作:先在 GitHub 上把自己项目的 README、.gitignore、目录结构整理到"别人能看懂"的程度 —— 这本身就是最小规模的开源,也是我能拿出来的第一个"功绩"。
问题五:如果 AI 工具能够自动生成大部分程序,人类软件工程师的角色将如何重新定义?
原问题:本问题来源于第 1 章,将 AI 工具的发展比作航空业"探索阶段"的 SpaceX 实验,强调快速试错与创新容忍度。现实中 GitHub Copilot、ChatGPT Code Interpreter 等工具确实能自动编写与调试代码,这似乎削弱了人工编码的地位。这个问题的提出是因为自己在使用 AI 编程工具时发现它虽能加速开发,但也容易产生隐藏错误,令我疑惑未来软件工程师是否会从"构建者"转向"监督者"或"集成者"。
我的思考:
“从构建者到监督者"这个说法我基本同意,但我想把"监督"这个词说得更具体一点,因为它太容易被理解成"看看有没有报错”。
真正的监督是能回答三个问题:这段代码的输入边界在哪?它出错的时候会怎么错?它和系统的其他部分在哪耦合?这三个问题 AI 都答不了 —— 不是因为它不够聪明,而是因为它不知道你的上下文。它不知道你的数据库里 reader 表的 id 可能为 NULL,不知道你们老师要求"不许用触发器",不知道你队友已经在前端假设了"查询永远返回至少一行"。
所以我更愿意这样定义角色:从"写代码的人"变成"定义约束的人 + 承担后果的人"。 约束包括:接口长什么样、错误怎么处理、什么情况算通过。
这件事对我职业规划的冲击是直接的 —— 见 4.2。它意味着我不该把全部筹码押在"我会写 Java"上,而应该押在"我能把一个需求拆成可验证的模块,并且能判断别人(包括 AI)写的代码对不对"上。前者在贬值,后者在升值。
问题六:为什么"软件工程的核心在于权衡(Trade-off)“,而不是追求"零缺陷"或"完美质量”?
原问题:本问题来源于第 1 章,指出软件工程的目标是在时间、成本与质量的约束下创造"足够好"的软件,而非完美的软件。这种观点与传统的质量管理理念形成对比。现实中,像 Windows、Android 这类大型系统,发布时仍包含大量 Bug,却能通过持续集成与补丁维护保持可用。我提出这个问题,是因为我过去一直把"完美无 Bug"视为软件工程的终极目标,但书中认为"权衡"才是核心,让我反思在实际项目中如何判断"足够好"的边界。
🔗 原帖:构建之法社区 · 为什么"软件工程的核心在于权衡(Trade-off)“,而不是追求"零缺陷"或"完美质量”?
我的思考:
我认同"权衡",但我想说得更狠一点:在软件工程里,"最佳实践"是一个危险的词。
因为几乎每一条最佳实践都是"某个团队在某种约束下的最优解",不是普遍真理。分层架构好不好?看项目规模。单元测试覆盖率要高不高?看这段代码的寿命。文档要不要写全?看这个模块半年后还有没有人碰。
我可以举一个自己项目里的真实取舍。图书管理系统一共 5 个类 484 行:DBUtil 封装连接和资源释放,BookDAO / ReaderDAO / RecordDAO 各管一张表的 SQL,BookManageFrame 管界面。按"最佳实践",对一个 500 行不到的项目做严格 DAO 分层其实是过度设计 —— 直接在一个类里写 SQL 完全够用,而且更快。
但我还是做了分层,因为我的目的不是"让这个项目更好",而是"让我自己学会分层这个动作"。这个选择在工程上未必最优,在学习上却是合理的。这就是权衡的另一面:目标不同,最优解就不同。
所以"足够好"的边界在哪?我的答案是:边界由"这个软件的失败代价"决定。 我的课设崩了,代价是我重修;医疗软件崩了,代价是人的生命。所以判断标准不该是"还能不能更好",而该是"这个系统最不能错在哪里"。先划出这条底线,剩下的才谈效率。
问题七:我们需要拥有什么样的基础知识,以及经过多少的代码训练量,才能写出高效且不容易出错的代码?
原问题:我们需要拥有什么样的基础知识,以及经过多少的代码训练量可以达到,自己写的代码高效且不容易出错?(问题来自社区对读者博客的转述与讨论)
我的思考:
这个问题我一看就笑了,因为它的两个关键词 —— “训练量"和"不容易出错” —— 正好戳中我简历上那行数字:
Java ≈ 1693 行
C++ ≈ 1479 行
合计 ≈ 3172 行
三千行,不算多。但我在意的是另一个数字:这 3172 行里,有多少是我能讲清楚、并且经得起别人提问的。
先说"不容易出错"。我认为把"零 Bug"当目标是错的 —— 因为 Bug 数量根本不是一个可比的指标。50 行能跑通的计算器和 500 行带数据库的系统,Bug 数量没有可比性。真正有用的指标是"缺陷密度"(每千行代码的缺陷数)和"返工次数",而这两个数字只有在记录的前提下才有意义。所以 PSP 那套东西的价值不在于数字本身,在于它逼你诚实面对"我到底花了多少时间、在哪儿摔了跤"。
再说"训练量"。我的结论是:别去追行数,去追"完整的返工经历"。 一个人写了十万行 CRUD,可能一次都没经历过"上线后出了线上事故,我顺着日志和提交历史定位到三个月前自己埋的那个坑"。而后者才是真正的成长。要走到那一步,其实不需要十万行 —— 需要一个真有人用、真有反馈的东西。
所以对我自己,目标不是"再写一万行",而是:在课程里做一个真有人用的小东西,完整经历一次需求 → 设计 → 实现 → 测试 → 交付 → 收到反馈 → 返工。 一次完整的闭环,胜过多写三千行。
我未来的职业规划
考研,我会优先考虑专业课考 408 、且对211出身相对友好的985院校,具体目标院校等 3 月再定 —— 现在写下来只会是自我安慰TT。
我对软件工程实践课程的理解和期望
一、我的理解:这门课教的不是"写代码",是"让代码活下来"
我上过 C++ 程序设计、数据结构、面向对象程序设计。这些课的共同点是:作业交上去的那一刻,代码的使命就结束了。 它能不能被别人看懂、加了新需求会不会崩、三个月后我自己还记不记得为什么这么写 —— 没人问,我也不关心。
软件工程实践课在我看来是第一次要面对这些问题。它不是再教一门语言,而是教我:
- 软件 ≠ 程序。 一个能跑的程序,加上文档、版本控制、测试、协作流程、以及后续的维护计划,才叫软件。
- 流程是有意义的。 需求 → 设计 → 实现 → 测试 → 发布 → 维护这条链条,我以前觉得是"背概念",现在明白它是把不确定性一步步消掉的顺序。跳过需求分析直接写代码,就是在赌自己猜对了用户想要什么。
- 协作是被工程化过的。 代码评审、接口定义、任务拆解、估算 —— 这些东西的存在不是为了增加流程,是为了让"三个人一起写"不至于变成"三个人互相拖累"。
二、我希望学到的技术
只列一个最重要的:Java 后端开发(Spring Boot + MyBatis + MySQL + Maven + JUnit)。
为什么是它?因为它是我现有能力和目标岗位之间的最短路径:
| 我现在会的 | 缺的 |
|---|---|
| Java 基础语法、面向对象 | 主流框架(Spring / Spring Boot) |
JDBC + PreparedStatement 手写 SQL | ORM / 连接池 / 事务管理 |
| Swing 桌面界面(已过时) | RESTful API 设计、前后端分离 |
手动往 lib 塞 jar 包 | Maven 依赖管理 |
| 没有测试 | JUnit 单元测试 |
注意:我要的不是"老师讲一遍 Spring 的用法" —— 这种东西 B 站和官方文档讲得比课堂清楚,我自己能学。我希望课程给我的是那些自学学不到的东西:真实的代码评审意见、有约束的项目经历、以及"你的设计会在第三周出问题"这种只有带过项目的人才能给出的判断。
三、我希望能提高的能力
按"我最缺"排序:
-
把一个模糊需求拆成可执行任务的能力。
课程项目开始前,我需要产出:功能列表、优先级、任务拆解(WBS)、工作量估算。这门课最实际的收获之一,应该是让我从"给我需求我就写"变成"这需求我拆成 6 个任务,估 15 小时,风险最大的是第 4 个"。 -
接口设计能力。
我现在写代码的习惯是"写到哪算哪"。团队项目里这样必然出事 —— 我和队友对同一个方法名、同一个返回值格式的理解可能完全不同。我希望被迫在写代码之前,把接口先定下来。 -
代码评审能力(提出和接受)。
我从没让别人认真读过我的代码,也从没认真读过别人的。这是我最心虚的一项 —— 因为写代码的人看不出自己的问题。 -
工程化习惯。
Git 提交有粒度、有信息量;README 能让陌生人跑起来;错误处理不是e.printStackTrace()了事。 -
估算与记录能力。
我从来没有记录过"这个功能实际花了多久"。没有这个数据,我的所有"我觉得两天能做完"都是空话。 -
文档与表达能力。
写清楚"我做了什么、为什么这么做、放弃了什么方案"。这项能力在面试里的权重,比我以前以为的高得多。
思维导图和学习路线
思维导图。
学习路线
…
更多推荐




所有评论(0)