Skip to content

蕾米小课堂

2025年,什么人适合学计算机专业?

首先,代码是给计算机看的语言。 程序员就是个需求->计算机逻辑的翻译人员。 代码能力,主要是你如何用程序语言去建模现实生活中的物体和事件。 你能否把文字和符号理解为积木,然后用不同的符号代表某个特定的物体或含义?比如你发明一种颜文字,能和生活中常见物体的一些特征对应上,再组合起来表达对应的物体。这就是编码(encoding)。 对计算机程序逻辑的编码,就是编程语言。 但程序员最基础的能力不只是写代码,而是要学会大家都在用的,规范的计算机程序之间的交互方式。 所以程序员要懂「配置文件」「网络」「文件地址」,写代码了还要懂「API」「环境变量」「git版本控制」等等。

举个例子,这有点像插画师不光要会控笔和构图,还要懂像素和图层。

对于新手,理解计算机程序的工作方式 > 写代码能力 > 其他能力(比如数学)。

喜欢自己折腾游戏mod、系统美化、装机、黑客技术等等的人,自带一部分程序员技能。再去学写代码就非常简单。

反观只在学校上课,而从来没有折腾过电脑的人,就会容易毕业即失业。

公司招人每天都能收到几十份简历,如何从人群中脱颖而出,无非就是卷学历、卷经历、卷能力。

学历这块,如果能考研,其实在计算机行业找个月入过万的工作就不难了。

经历和能力则是如何规划自己的职业发展。比如有没有大厂经历呀?做没做过质量高的产品呀?你做的产品比市面上的同行强在哪里呀?

经历这部分,我鼓励大家多看多做,什么应用见到了,先想想"我能不能做个一样的出来","做不出来的话是哪部分不会"。带着兴趣去学习才会有效率。

能力这部分,不是跟着课本背代码逻辑就行了;要么对软件之间的交互方式感兴趣,愿意去理解一个浏览器是怎么打开一个网页的、一个软件是如何安装到电脑上的。 要么对计算机底层感兴趣,能理解文本->字节码->逻辑门->电路这样的深层原理。甚至两个都要会。

诚然工作中这些知识用到的不多。但这就是上限,就是你从一众应聘者脱颖而出的能力。就是你遇到一个奇妙的bug只用2小时和别人用一周时间的区别。

然后就是各项专业技能来衬托你的专业性。Git、Markdown、流程图、英语能力、会用AI的能力。对这些看完不头大、能感兴趣、能坚持,觉得掌握一项技能很开心而不是"我天怎么还有这么多要学",就能在学计算机的过程中得到乐趣。

而且据我所知,我聊到的东西大部分在国内课程里没有涉及到。所以大家要善于在网上找找看,其他顶尖程序员都在用什么技术、用什么工具,你也得自己学会这些。

思维公式:想法 → 方向 → 路线

要不要讲一遍我的思维公式:"想法""方向""路线"。我一直觉得这个思维模式非常标准而且很容易执行。

核心步骤

  1. 想法:先问自己想做什么,有一个想法
  2. 方向:当你的想法产生了,要去学习一个别人的成熟方向
  3. 路线:然后,不断完善自己的路线。每一步慢慢调整,进行阶段性的总结和验收

举例说明

找工作(想法)

看看别人怎么找工作的,有什么需要注意的、有什么容易踩坑的。这样就能决定出"在哪找,怎么找"(方向)。

在实现这个方向的过程中,你会发现自己有些地方没做好,可能找的方向不好、可能简历没准备好、可能沟通能力有待提升。这就是不断完善的过程(路线)。

写内容(想法)

想法: 你想知道该写什么内容

方向: 看看别人在写什么,有什么热门话题,有什么读者感兴趣的内容。这样就能决定出"写什么主题,怎么写"(方向)。

路线: 在写作过程中,你会发现自己有些地方没写好,可能选题不够吸引人、可能结构不够清晰、可能表达不够生动。这就是不断完善的过程(路线)。

具体来说:

  • 先确定你的目标读者是谁
  • 研究他们关心什么话题
  • 找到你的专业领域和读者兴趣的交集
  • 制定内容计划,比如每周写一篇技术文章
  • 不断收集反馈,调整写作风格和内容方向

举例: 如果你想写技术博客,可以先看看其他技术博主在写什么,然后找到自己的特色角度,比如专注于某个技术栈或者某个特定问题的解决方案。

总结

我理解现在很多的各位学生没有自己思考过自己该做什么,所以在自己找目标的时候就会陷入迷茫。

这时候,拿这个公式过来套,就知道现在自己进行到了哪一步,下一步该做什么了。

问题判断与解决

已经学完计算机但找不到面试机会怎么办

  • 城市岗位少 → 换城市
  • 初筛不过 → 改简历
  • 经验不够 → 两周起一个项目出来
  • 能力不够 → 先背八股

执行步骤

  1. 先有一个想法,「我要成为怎么怎么样」「我要做到什么事情」
  2. 再有一个方向去做,「为了达成我的想法,我应该怎么去做什么」
  3. 再有一个坚持「我坚持每天朝我的方向学一些知识」

学习不明白专业名词怎么办

Q: 大一学生。我觉得好难啊 我现在在跟着学长做Linux的项目 可是那些专业名词我都理解不了怎么办[Hurt]什么docker什么镜像[Hurt]:

A: 可以让AI教你,比如把你遇到不会的单词问AI。直接问它你是在学什么情况下看到了这个单词,不理解它在哪句话里的意思。如果效果不好也可以多试试,不要用一种句子。

多试试,不要用一种句子。我有时候找到了喜欢的解释的方式,我会存下来以后发给ai作为模板。这种方式更好。所以如何调教ai也是个学问。能让你最高效的看懂知识点。跟着ai学,让ai"假设你是初中生,用日常的例子向你解释"

Docker 简明解释

考验我水平的时候到了,我来试试看两句话讲明白docker。

Docker 是什么:

Docker 是一个程序,你只需要启动起来,它就能根据不同的程序的镜像帮你在你的电脑上启动一个迷你系统。这个迷你系统只装了对应镜像所需要的文件。

然后它会帮你打开几个用得到的端口,你通过端口去访问你要运行的程序就行了。

类比理解:

体验上像一个MC、泰拉瑞亚的服务器,你只需要开了带mod的服务器别人就能进来玩一样。镜像的功能,也像网吧的那种每次重启都会重置的电脑系统。

所以 Docker 的存在让我们能很轻松的去使用本来安装步骤很繁琐的软件。

打包镜像:

如果你想打包一个Docker镜像也特别简单,只需要编写一个 Dockerfile,用特定的格式写好你的程序的安装步骤,然后就可以给其他人用 Docker 搭一个一模一样的程序运行环境了。

算法菜鸡如何提升

算法题练习的感受和意义

Q:: 我是算法题菜鸡,想问有练算法题的人练过的感受TT。这些题目是如何提高编程能力的,我有时候感觉使用的场景很少出现和算法题直接相关的。

A:: 提升的是思维能力,你不是拿一个算法去解决特定的算法难题的。

算法题的实际应用场景

你做过字符串相关的算法题,以后遇到字符串相关的业务就能得心应手。 你做过树、做过递归,就能在处理相关结构的时候进入自己的舒适区。

具体例子:

  1. 爬虫开发: 把「文件夹 -> 文档」的结构变成本地的文件夹,需要递归创建若干个文件夹,再把文档下载下来。

  2. 游戏战斗系统: 需要控制游戏流程,要思考变量的管理,游戏机制的交互。

  3. AI画图系统: 用一个队列去控制现在还有多少人在等,我有几台机器能同时并行处理画图的需求,任务怎么分配到具体的机器执行,执行完再怎么更新队列。

核心价值

简而言之,你提升的是编程的基本功,是你遇到复杂问题的时候的思维能力。你会在遇到一个「看起来很麻烦」的问题的时候发现「哎我好像做过一个思路差不多的」。

适用场景分析

  • 业务开发为主: 比如前端就做做页面,调用API,那确实应用场景很少。

  • 复杂系统开发: 如果一个任务复杂、逻辑严谨,比如做游戏的技能战斗系统、或者手动管理一些应用的数据,你就会很需要对数据结构的理解。

观点: 我认为数据结构 > 算法,但算法题正好是学习数据结构用法的标准场景。

元编程思维

你有些时候会搞一些元编程(meta programming),意思是,你的代码是为了让你更好的写代码。

实际案例:

项目有一大堆函数都写在一个文件里了,这文件叫utils,有2000行,我们现在为了方便阅读和引用,需要把每个函数提取成单独的文件放在一个文件夹里。

听起来还不难对吧?但如果这文件里还有:

  • 变量声明
  • 注释
  • 还要把没有用到的函数自动删掉
  • 或者根据函数名前缀创建对应文件夹,比如 taskShutdownResolve 需要变成 task/shutdownResolve.ts 文件

总结

这都很考验思维能力,你得大脑清晰的知道「我的代码写起来有几个循环、有几个变量、有什么输入输出」,这种思维能力不经过很多高难度编程题的拷打,不太容易培养起来。

项目开发规划

我最近在开发的浏览器插件嘛。我自己给自己的定的目标是:

  • day1:环境配置好
  • day2:页面基础结构做出来
  • day3:做个logo
  • day4:做个开屏页面
  • day5:做个动画

你要是不会做这个,你就去用一个甘特图,把任务拆的原子化。让自己每天都有可执行的目标和正反馈。

技术栈推荐

有一套自己用着最顺手的,然后没事多去尝试新东西。

  • 框架:国内找工作就 React,只考虑自己写东西就 Svelte
  • 数据库:Supabase 巨好用
  • ORM:DrizzleKit
  • UI:Tailwind 4 + Shadcn
  • 数据可视化:ECharts
  • 部署:个人项目 Vercel,企业项目 国外就AWS、国内就阿里华为火山

代码重构指南

重构步骤

重构一般来说,首先你得懂best practice,然后在这个基础上,我的推荐是你让AI写单元测试,让AI验证,每个功能都可以跑通,然后重构过程中多打commit,改好了一个小功能,就打一个commit,你几乎可以预料到你一定会把某个功能改坏,这时候你就得用旧的东西去看看到底哪里出问题了,而多打commit的好处是,Git有一个git bisect功能,就能帮你基于commit做这个查找的事儿

重构原则

但重构的话,基本上跑不掉复用、模块化那一套。比如说你有一份代码在两个地方用到、或者一个函数超过300行,那就拆拆拆。拆成小函数,传参数。数据驱动是最好的抽象,一定要高内聚低耦合。常见的七种耦合,对着你的代码改掉。

学习方法

先去做一个最简单的demo,hello world 那样,然后一点点深入学习功能。一下子就看很多东西容易脑袋宕机。然后因为你学的是框架,所以要把新的东西和语言原本的内容联系起来,想想看"它是怎么实现的?""实现这个功能是为了解决原本的什么问题?"

你模拟这么一个场景,你今天入职,leader丢给你一个项目:新来的那谁,给我们官网加个页面宣传下新产品,这样学习有目标导向,有正反馈,而且方方面面都涉及的到。比如你可能会发现这个项目没有配置 prettier 导致代码没法自动格式化、没有 eslint 所以写错了也不会报错,那你得去研究怎么配置这些等等。页面的话,前端用 React/Vue/Svelte 框架加 Tailwind、shadcn 是目前的主流。图标用 lucide icons

HR电话面试技巧

高情商回复策略

嗨各位,我整理了一下对于HR电话面的整体思路和具体例子。因为刚才接了一个HR的电话面试,我感觉我整体表现很不错。就把自己的笔记总结分享给大家。

标题: 在HR电话面试中,如果对方提问了一个不好回答的问题,该如何高情商回复的例子。

例如: 「公司现在业务忙/作为初创公司,可能有一些加班的需要,您是否能接受?」

分析思路

首先,分析她这句话的内在含义。

她作为HR,人微言轻,其实没法决定我以后加班多少。她这句话只是为了看一下我的工作积极心,避免浪费大家的时间。

所以,即使我本身不愿意加班,但从我的出发点,我想试试看这个面试的机会,我就应该顺着她的意思说,来保证自己在这个环节不会被pass掉。

回复技巧

1. 强调客观情况的存在,避免把主动权完全给对方

正确示例: 我理解有时候作为初创公司,工作忙起来有加班的需求。但如果正常情况下,我还是希望按照法定的标准来上下班。

负面例子(就是千万不要说出来这种话): 加班多少都可以,我纯牛马

2. 给出负面反馈的典型,让对方明白我的底线在哪

正确示例: 您看我上家公司就在这方面有问题,每天都要工作10~12个小时,这对我的时间占用太大了。

3. 继续维持人设,给对方留下好印象

正确示例: 我一般需要每天有一些时间来进行自我提升,看一些新技术和编程书这样子。所以我希望不要占用我的全部时间。

负面例子: 我得有时间打游戏刷视频睡觉啊。

总结

整体就是要学会高情商的商务回复,让对方对你的印象分拉满,双方又各自满足了自己的需求:她看你是否适合这个岗位,你看岗位是否适合你。

最好你把话题的主动权掌握在自己手上,你可以自己去主导现在的话题,比如用一种轻松的口气带走和打断话题:「哎,你刚才说到你们公司CEO的经历,可否跟我讲一讲?」 以避免聊天陷入尴尬。

学习建议

此外,我希望大家在学习的过程中,多思考、多总结、多写笔记。

我上面的笔记遵循了 STAR 法则 来做记录,就是我在写东西的时候会有一个明确的想法:「我想表达的情况是什么、我目的是怎样的、我怎么做才达成的、我又是怎么思考的」。

聪明的同学们可以看一下,我上面这段笔记跟这张 STAR 法则饼图有哪些是匹配的。我有这样的总结问题的能力,所以我能当大家的好老师。但同理,我也能当 自己的老师。所以希望大家都掌握这样的能力。

让我们用 STAR 法则来分析上面的 HR 面试技巧:

  • Situation (情境): HR 在电话面试中问到加班问题,这是一个棘手的问题
  • Task (任务): 需要既表达对公司的理解,又要维护自己的权益
  • Action (行动):
    1. 首先承认客观情况的存在
    2. 表达自己对合理工作时间的期望
    3. 用上一份工作经历举例说明底线
    4. 强调自我提升的需求
  • Result (结果): 既展现了对公司的理解和配合意愿,又委婉地表达了自己的诉求,达到了双赢的效果

通过这个例子,你可以看到 STAR 法则如何帮助我们系统地分析和记录问题。我有这样的总结问题的能力,所以我能当大家的好老师。但同理,我也能当自己的老师。所以希望大家都掌握这样的能力。

两个月项目实践建议

个人学习经验分享

0基础自学编程指南

能不能0基础自学编程? 能的能的。我就是没人教自己学的编程。 但是一分耕耘一分收获。你比别人付出的多才能得到相应的回报。

为什么我说一定要兴趣驱使,因为再苦再累我都会觉得我喜欢这个事情。从13岁开始写代码,我这10年有一多半时间都在电脑前面。 所以除非你对这个行业有兴趣,否则很简单,你不太可能凭着三分钟热度和想赚钱的欲望,来卷过成千上万个废寝忘食学技术的极客们。

方向的选择永远建立在自己的兴趣为基础,而且要对做这件事有兴趣,而非这件事本身。 举个例子,你喜欢玩游戏,不代表你喜欢做游戏建模、写游戏系统、写游戏攻略。

如何选择学习方向 先找一个看起来感兴趣的方向,我随便列几个,更多选择可以参考计算机招聘岗位:

  1. 前端页面
  2. 移动端开发
  3. 游戏开发

去看一个方向上,大家都需要做什么工作内容。搜视频搜文章都行,不会做也没关系。先初步感受一下。

  • 比如做游戏很难,那可以先做个游戏攻略->游戏mod。
  • 比如做前端很难,那可以先抄一个页面,复制源码下来,改几个标题和关键字。

学习执行方法 如果你选好了学习方向,你应该这样执行:

  1. 找到比较新的教材跟着走。比如JavaScript,《现代JavaScript教程》(https://zh.javascript.info/)。 应该多搜搜相关的评价,大家都说好的一般不会差。跟着学下去,坚持完成。
  2. 思考这个领域的知识共同点,做笔记,将知识点理解到位。比如前端就是HTML是毛坯房、CSS是精装修、JavaScript是家具。将这些概念熟练掌握,融会贯通。
  3. 偶尔比较一下你的学习进度和招聘要求,如果你的目的就是找工作,那就要想"我现在能干什么?"。
  4. 做项目。目标导向。你应该有一个短期目标,比如三个月做出一个网站。也应该有一个长期目标,比如一年学会React。

底层知识与应用知识 自学编程要注意,计算机知识分为"底层"和"应用"。 底层知识做什么都用得上,比如计算机原理、逻辑思维能力(离散数学),这些是大家所说的计算机内功。 应用知识是你工作会用到的东西,但离不开底层知识的支持。

它们还有些区别,比如底层知识学起来稍显枯燥,偏逻辑和数学一点。应用知识是真的在做东西,可能会好玩一点。

建议 如果你刚开始选择方向,我建议从应用做起,先玩起来。大部分底层知识不涉及也没关系,学开车一开始不用知道车是怎么造的。 可如果你已经在学习方向上遇到了一些瓶颈,比如不理解概念、写不出代码,这可能是内功不足,需要多学多练。

觉得计算机难学的可以看看我:我的经验是,作为计算机专业的学生,如果你比较对计算机感兴趣,能自学的很顺利的话你就会发现工作非常好找,学历也不是问题。

反之,如果你只是按照学校教的学,你就发现你在市场上完全没有竞争力,面临人们说的"计算机是夕阳红产业"的感觉。

因此,知道自己想做什么,再知道自己该学什么。比如找工作就去刷boss直聘看需求,喜欢算法就去刷题,喜欢AI就去做一个!

而自学这些知识,提升竞争力,应该是大家找实习之前就在做的事情。因为「在工作当中学习」的前提是「你有能力进行工作」。

0. 自我介绍

今年23岁4年开发工作经验,从小没有上过学(父母的安排),最近一份工作是硅谷的初创公司,月薪三万的全栈开发。

此外,我没有学历是环境导致的而不是自愿辍学的,所以我现在仍在远程在读英国伦敦大学的计算机本科。

所以我想分享我的经验,先讲讲我是怎么学习的吧。

1. 计算机学校只教基础,要自学更实用的知识

比如前端,不光是 JS/HTML/CSS,这些知识「太基础了」,如果你随便打开一个前端岗位的招聘,就会发现:

  • 要会 TypeScript
  • 框架要用 React、Vue
  • CSS 现在普遍在用 Tailwind 框架,还要会用 UI 组件库 然后前后端都得会 Git,会对接 API,会用 Markdown 写文档吧? 最近 AI 这么好用,大家都用 Cursor 写代码,这已经是业内共识了。

因此,我建议各位先发现「自己离找到第一份工作还差什么」,然后缺啥补啥。也建议大家多折腾计算机,比如自己美化桌面、做自己的个人网站等等。

2. 学习要找感兴趣的东西来做

比如我做过:

  • 用程序自动填公司要求的日报周报月报
  • 用命令控制电脑开关机
  • 用 GPS 定位我的位置自动打开我租房的单元门
  • 用正则表达式捕捉美团顾客的备注,自动打印对应杯贴"免葱、免香菜"(我之前工作的餐饮店的杯贴机控制系统是js源码)
  • 用 kali linux 的各种工具当骇客(注意法律风险,我骇入的是我妈的电脑)
  • 用前端做上述的 GUI 界面

我觉得计算机让我无所不能,我可以快速用几个小时解决别人几天的工作量。任何自己感觉很酷的事情都应该去试试,这样才不会觉得学习枯燥。

  • 给自己一个明确周期:给自己两个月做一个项目。
  • 方向选择
    • 想做 AI 就先做一个聊天机器人
    • 想做论坛就做一个论坛
    • 想做小工具就做一个爬虫或 Electron 应用
  • 执行要点
    • 分析这个项目需要哪些模块、哪些组件
    • 多看 GitHub:
      • 别人是怎么实现的、用了哪些库
      • 页面如何拆分成几个模块,模块之间数据如何互通
      • 需要加图标怎么办,需要接 API 怎么办
    • 思考与设计:
      • 类型系统怎么定义
      • 页面跳转(路由)怎么定义
  • 经验原则:这些业务逻辑只能多接触、多尝试;学得越多,就会得越多。
  • 学习心态:学习没有方向,往往是因为学习是一条路。你应该沿路去看风景,而不是只盯着最远的目标。

表达与答题方法

  1. 不会答先审题:先找题目里最关键的词,搞清楚它们的含义与边界。
  2. 想不出具体答案先举例:具体的人或事更容易展开思考。
  3. 从例到概念,再升华观点:例子是具象表达,要把例子抽象为概念,然后讲你对概念的理解。
    • 示例链路:明星受欢迎 → 人设是打造的 → 打造的人设值得被喜欢 → 想知道人们喜欢什么,就看明星人设的特征
    • 讲述顺序建议“倒叙”:先给出中心观点,再给例子、最后给理由。
    • 快速结构:
      • 答案/观点:例如“明星的人设的特征”。
      • 例子:举出谁符合该特征。
      • 理由:例如“明星是社会欢迎的”。
    • 如遇到临场追问,可按思考顺序正序讲出过程,也可行。

思维与沟通的四条原则

  1. 人生目标:有目标才能规划要做什么来靠近目标;是否有目标会带来明显差异。

  2. 多思考:让对世界的认知更客观、更理性;不思考则更主观、更感性。

    比如呢?(不用把抽象概念讲例子,只需要想到一个具体的人或者具体的一件事),多想例子。

  3. 回答要快:体现思维、分析与应对能力。

  4. 讲清楚:能把问题拆清、把概念讲明白,让对方在你的叙述中形成清晰认知。

额外习惯:

  • 持续做笔记,帮助复盘对话内容与思考链路。
  • 多问“为什么”,相当于在分析事物本质。

学习规划

初级课程(平均单科约 16 小时)

  1. 编程能力基础课:如 Human Resource Machine 等逻辑训练。
  2. JavaScript 基础:系统完成 JS 基础课程(参考:现代 JavaScript 教程)。
  3. TypeScript 与 Tailwind:类型与样式工程化入门。
  4. 算法练习:如 LeetCode,选择一段时间集中刷题(没上限,例如 40 节左右完成一个阶段)。
  5. 框架:Vue官方的交互式课程
  6. 后端基本课程(API对接、调用库)
  7. 如何创建一个项目
  8. 从0开始做一个完整的项目
  9. 讲简历、筛选工作的能力

以上是初级课程,学完就基本上掌握找工作的标准能力了。大约一个月你就能有一个不错的基本实力了。
≈ 刚毕业半年的大学生

中级课程

  • 成体系的项目经历
    • 你有一个当下热门的项目经历,比如AI聊天助手、AI平台
    • 你有感兴趣的专业的项目经历,比如你想做游戏,那你做过什么游戏?
    • 你有能展示自我能力的内容平台,比如你发过知乎/小红书/个人网站博客。
  • 面试准备
    • 背面经,对常见的面试题能大概回答清楚。
    • 一定的包装能力,能在找工作的时候把自己的优势展露无遗,让别人认为你比其他候选人要厉害,在对话中掌握主动权。
    • 不一定一直掌握主动就是好事,对方也有可能听到你的「刺头」发言感觉不爽。但这样至少能让你不怵,产生自信,也能在谈薪资上占据一定上风。

高级课程

  • 知识梳理能力:Markdown、5W1H 等拆解方法,输出结构化内容。

  • 面试能力:如何对常见面试题对答如流

  • 英语能力:主要是读写,口语上稍微纠正发音

  • 讲述能力:讲项目的能力,也就是你能把一个你自己做过的项目讲出

    • 项目的特点
    • 项目的设计出发点
    • 项目相对其他同类竞品的优势
    • 项目用到了什么技术、为什么这些技术对你现在要找的这份工作有用
  • 思想课

    • 参考收藏:知乎收藏 :对社会现象有自己的理解和认知
    • 延伸阅读:可以多刷我发的小红书或者蕾米语录
  • 人生规划能力:分析自己的优劣势,把自己的经历转化为自己的积累。比如自己做过了什么项目,以后就能去再找对应的工作内容。

  • 另外推荐视频:大男主如何管理小金库?

    高级课程不是需要一下子学会,而是要慢慢积累的。学生自己也要下意识的去这些方面做出提升(比如多思考一些人一些事、多写笔记、多练英语)。

学习计划

  • 先逐个完成初级课程
  • 高级课程同步进行,因为这需要时间的慢慢积累。
  • 中级课程是打算开始找工作的时候,对自我的一种类似「临考试前整理知识点」一样的为了面试而面试的努力。但不要为了一场面试而做这样的准备,这是长期努力的目标。
  • 具体安排:一天 4~6 节课,1 节思想课,其余按进度推进;一门课不超过 3 节。