在算法的失败后,我下定决心换一个方向继续学习。。。。。。
先讲讲在算法中难忘的故事
算法篇
学习
我的成长转折,始于高考放榜那天的晴天霹雳。在此之前,我一直坚信“努力就有回报”,可当成绩单弹出在手机屏幕上时,这句话瞬间碎得片甲不留。数学科目比平时模拟少了整整三十分,这个数字像一把重锤,砸得我眼前发黑。脑海里不受控制地回放着高中三年的片段:寒冬腊月里凌晨五点的台灯、堆满演算纸的书桌、课间十分钟还在请教老师的身影……这些曾让我骄傲的努力,此刻都成了刺向自己的利刃。眼泪像断了线的珠子,怎么擦都止不住,心里只剩一个重复的疑问:“为什么?明明我那么拼,怎么会是这样的结果?”
比成绩更让我窒息的,是父母的不理解。他们拿着成绩单反复翻看,语气里满是失望与指责:“怎么才考这点分?你是不是在学校玩了三年?”我张了张嘴想辩解,却发现所有话都堵在喉咙里。后来我才慢慢读懂,他们的愤怒里藏着“在亲戚面前没面子”的窘迫——原来我的成绩,成了他们维系体面的筹码。可我搞不懂,为什么比起我付出的心血,他们更在意旁人的眼光?在他们的认知里,“成绩好”与“努力”画着等号,却看不见我错题本上密密麻麻的批注,也没听过我深夜背书时的沙哑嗓音。我一直很在意他们的看法,这份不被认可的委屈,让那个暑假彻底成了灰色。我每天浑浑噩噩地待在房间,吃饭、睡觉、对着天花板发呆,曾经坚信的目标和方向全没了,连“重新再来”的勇气都提不起来,用现在的话来说,算是“道心破碎”了。
转机来得毫无征兆。八月末,我被拉进大学新生群,群里学长学姐宣传ACM竞赛的消息,像一颗石子投进我沉寂的心里。起初我只是好奇,点开学长分享的资料,发现那些用代码解决的逻辑问题,居然有种独特的吸引力。“要不试试?”抱着打发时间的念头,我开始在暑假自学C/C++。现在还记得第一次写“hello world”的窘迫——对着教程敲代码,却因为一个标点错误调试了半小时,最后成功运行时,屏幕上跳出的简单字符,竟让我久违地笑了。
从那以后,我像是找到了新的方向。为了吃透一个算法,搞懂一个知识点,我常常在临时借用的实验室一待就是一下午。有时候对着一道动态规划题卡壳,草稿纸上画满了状态转移图,直到傍晚听见食堂开饭的广播,才发现肚子已经饿得咕咕叫。但这种专注的感觉格外踏实,比起高中时“为了成绩而努力”的紧绷,研究算法时的我,是真的沉浸在逻辑推演的乐趣里。遇到不懂的问题,我就厚着脸皮在新生群里@学长学姐,他们总会耐心地发来思路解析;开学后,指导老师也常常在实验室陪我们刷题,指出我代码里的漏洞,教我更高效的学习方法。
在这个过程中,我不仅收获了编程技能——从连基础语法都生疏,到能熟练运用贪心、DFS等算法解决问题,更重要的是,我重新学会了“如何学习”。算法教会我沉下心来拆解问题,把复杂的题目拆成一个个小步骤,就像把高考失利的挫败感,拆成“接受结果”“寻找方向”“稳步提升”一样。我还认识了一群志同道合的小伙伴,我们一起在实验室刷题到深夜,为解开一道难题击掌欢呼,也会在模拟赛失利后互相打气。
现在回头看,高考的那场“失误”,或许是命运让我拐个弯,遇见更适合自己的路。曾经让我崩溃的成绩单,如今已不再是定义我价值的标尺;父母的不理解,也随着我在ACM中的进步慢慢化解。那些在实验室里熬过的夜、调试过的代码、收获的鼓励,都成了照亮我迷茫的光。我终于明白,努力从来都不会白费,只是它有时会换一种方式回馈你——比如让我在算法的世界里,找回了专注与自信,也找到了属于自己的成长节奏。
省赛
一场算法赛,一堂成长课 省赛落幕的那个傍晚,体育馆里逐渐散去的人群、领奖台上闪耀的灯光,还有手心残留的笔杆温度,在我脑海里盘旋了很久。那场5小时的算法角逐,最终以“差一题获奖”的遗憾收尾,却成了我成长路上最深刻的一堂实践课。
故事的起点,是校赛选拔时的热血与惊喜。我和另外两位小伙伴组成团队,带着对算法的好奇和一股不服输的冲劲,在密密麻麻的代码和复杂的逻辑推演中一路突围。当拿到省赛入场券的那一刻,我们相视一笑,信心满满地将目标锁定在省铜——那是对我们连日付出的期许,也是对自身实力的初步认可。
省赛当天的炎热至今记忆犹新。体育馆里座无虚席,键盘敲击声、鼠标点击声交织成紧张的节奏,空气中弥漫着专注与焦灼。比赛一开始,我们迅速进入状态,分工明确:有人负责读题分析,有人负责代码实现,有人负责调试优化。凭借在校期间的积累和赛前的密集训练,前三个题目还算顺利,我们一步步朝着目标靠近,甚至已经开始畅想领奖时的场景。
然而,第四道题成了我们绕不开的“拦路虎”。这道题的逻辑复杂度远超预期,看似熟悉的题型,却在细节处理上暗藏玄机。我们反复读题、画图推演,尝试了多种算法思路,从暴力破解到动态规划,从贪心策略到图论模型,每一次修改都伴随着希望,又每一次调试失败都让人备受打击。时间一分一秒流逝,3个小时里,我们推翻了一次又一次的代码,草稿纸上写满了密密麻麻的公式和思路,手心的汗把键盘都浸湿了,却始终没能敲出正确的答案。
当比赛结束的哨声响起,看着屏幕上未通过的测试用例,我们三个都沉默了。看着其他团队陆续走上领奖台,接过奖牌和证书,羡慕之余,更多的是深深的遗憾——就差一步,我们就能实现最初的目标。那一刻,我甚至有些怀疑自己:是不是真的不适合走算法这条路?这场比赛,像一盆冷水,浇灭了赛前的热血,也让我陷入了短暂的自我否定。 但遗憾过后,沉淀下来的更多是清醒的认知和成长的收获。我逐渐明白,“差一题”的遗憾,从来不是运气使然,而是实力差距的客观体现。那3个小时的挣扎,暴露了我们在算法深度、边界条件处理、临场应变能力上的不足:我们对复杂问题的拆解能力还不够强,对算法的优化思路还不够开阔,甚至在长时间高压下,出现了思路僵化、细节疏忽的问题。这些都是平时训练中被我们忽略的短板,而比赛,恰恰把这些问题赤裸裸地摆在了面前。
更重要的是,这场比赛让我重新审视了“适合”的定义。曾经以为“不适合”是因为失败后的挫败感,但后来才发现,所谓“适合”,从来不是一开始就一帆风顺,而是在认清自身不足后,依然有勇气面对、有动力提升。虽然我可能没有顶尖算法选手的天赋,但这段经历让我学会了如何在高压下保持冷静,如何与团队高效协作,如何从失败中提炼经验。这些能力,远比一块奖牌更有价值。
如今再想起那场省赛,遗憾仍在,但更多的是感激。它像一面镜子,让我看清了自己的优势与短板;它像一次试炼,让我在挫折中学会了坚韧与反思。我不再纠结于“是否适合算法”,而是把这场遗憾的经历,转化为后续学习的动力——补全算法短板,提升编程功底,锻炼逻辑思维。 成长从来不是一路坦途,那些看似遗憾的经历,往往藏着最珍贵的馈赠。这场省赛的“未完成”,不是终点,而是我成长路上的一个重要里程碑。它让我明白,比赛的意义不在于是否获奖,而在于过程中的全力以赴,以及赛后的复盘与沉淀。未来的路还很长,我会带着这份遗憾与收获,继续脚踏实地,在编程与实践的道路上稳步前行,不负曾经的努力,也不负每一次成长的机会。
自己组织的比赛
这里就不说了,我们直接上视频吧 www.bilibili.com/video/BV1TA…
前端篇
大二上学期结束时,我陷入了一段迷茫期 —— 大一到大二上,我一直深耕算法领域,可付出了不少时间和精力,却没能打出理想的成绩。看着身边同学要么在专业领域稳步前进,要么找到明确的方向,我开始反思:或许算法这条路并不适合我。一番纠结后,我把目光投向了前端开发 —— 这个能直观看到成果、兼顾创造性与实用性的领域,成了我新的目标。
自学遇困,工作室成了我的 “指路明灯”
大二下学期,我正式开启了前端学习之旅。最初我打算自学,搜罗了一堆网课和文档,可越学越迷茫:知识点零散杂乱,不知道该往哪个方向深耕,也抓不住重点,遇到问题没人请教,只能自己瞎琢磨,常常卡在一个小细节上浪费半天时间。学了一段时间后,不仅没形成系统的知识体系,反而对前端产生了畏惧心理。
就在这时,我了解到学校的前端工作室。这里有清晰的学习路径,不会的问题能随时请教经验丰富的学长,还有现成的优质学习资源、模拟面试机会和前辈们的面试经验分享 —— 这正是我急需的学习环境。抱着试试看的心态,我参加了工作室的第一次面试,结果紧张到语无伦次,学长的问题要么答非所问,要么一知半解,毫无疑问地失败了。但这次失败反而让我更坚定了加入的决心,我知道,只有在这样的氛围里,我才能快速成长。
三次面试,三次蜕变:在试错中补齐短板
第一次面试的失利让我意识到,光有学习的热情远远不够,扎实的基础和清晰的表达同样重要。后来,工作室竞选前端负责人,我又鼓起勇气参加了第二次面试。可当时我连前端基础知识点都没吃透,面对提问频频卡壳,再次遗憾落选。这次失败给了我沉重的打击,但也让我清醒地认识到自己的不足 —— 基础不牢,一切都是空谈。
从那以后,我把更多精力放在夯实基础上,每学一个知识点都反复琢磨、勤练代码。在第三次面试(投简历前的模拟面试)中,学长耐心指出了我项目中的漏洞、知识点的模糊地带以及表达上的问题。我把这些建议一条条记下来,针对性地改进:补全知识漏洞、优化项目逻辑、练习表达能力。这三次面试,就像三次 “体检”,让我一次次看清自己的短板,也逼着我不断完善自己,为后续的求职之路铺好了基石。
8 个月系统学习:把 “知识点” 变成 “实战能力”
第一阶段(2-3 周):HTML/CSS—— 搭建前端的 “骨架”
这是前端学习的基础,核心就是 “学一个知识点,练一个小案例”。第一周我主攻 HTML 基础和语义化标签,用有意义的标签搭建简单的页面结构;第二周重点突破 Flex 布局,搞定导航栏、卡片排列这类一维对齐问题;第三周攻克 Grid 布局,掌握复杂响应式布局的实现方法。对于浮动,我只浅学了基本概念和清除方法,没有过多纠缠。
那段时间,我每天保持 3-5 小时的学习时长,2 小时学理论,3 小时练代码。遇到问题先自己用 F12 调试工具和 MDN 文档查错,实在解决不了再请教学长或借助 AI。但我始终记住一个原则:AI 只是 “帮手”,不是 “代笔”,绝对不直接抄 AI 的代码,而是看懂思路后用自己的理解重写优化,把别人的知识转化成自己的能力。
第二阶段(4-5 周):JavaScript—— 赋予页面 “灵魂”
JS 是前端的核心,学习的关键是 “练逻辑>背语法,写项目>看教程”。我没有死记硬背语法规则,而是通过大量代码实践理解 “为什么这么写”。第一周熟悉 JS 运行环境,掌握变量、数据类型、流程控制,养成良好的编码习惯;第二周攻克函数、作用域和闭包,虽然闭包一开始很难理解,但通过反复写案例、画内存图,慢慢摸清了它的核心逻辑;第三周学习 DOM/BOM 操作,实现页面动态交互,比如点击按钮修改元素样式、本地存储数据;第四到五周重点突破异步编程,用 Promise 和 async/await 完成了 Todo List、天气查询等小项目,把零散的知识点串联起来。
第三阶段(1-2 周):复习 + 小项目 —— 巩固基础,查漏补缺
复习不是 “重学一遍”,而是抓核心知识点、补全漏洞;项目也不是 “随便写个 demo”,而是检验学习成果的试金石。我把 HTML、CSS、JS 的核心知识点梳理了一遍,然后独立完成了一个有交互功能的静态网页,不仅巩固了基础,还学会了如何把零散的知识点整合起来。
第四阶段(4-5 周):Vue3+Git—— 提升开发效率
这一阶段我采用 “绑定学习” 的方式,用 Git 管理 Vue 项目代码,边学框架边练工具。第一周掌握 Git 的 init、add、commit、push 等核心命令和分支操作,同时搭建 Vite 环境,学习 Vue3 的模板语法和响应式数据;第二周深入 Vue 组件化开发,理解父传子、子传父的通信方式,同时学习 Git 进阶知识,比如.gitignore 配置和冲突解决;第三周攻克 Vue 的生命周期钩子、Vue Router 和 Pinia;第四到五周跟着 “黑马大事件” 项目实战,这个项目的配置的很多内容在后续项目中都能用到,让我对 Vue3 的实战应用有了更深刻的理解。
第五阶段(4-5 周):Node+Express+TypeORM—— 打通前后端
为了成为 “全栈型” 前端,我开始学习后端相关知识。第一周掌握 Node.js 基础,了解模块系统和异步编程;第二周用 Express 框架开发 RESTful API,学习路由和中间件的使用;第三周通过 TypeORM 操作数据库,不用直接写 SQL 就能实现 CRUD 功能;第四到五周重点突破前后端联调,解决了跨域等关键问题,还完成了一个待办系统,实现了 Vue 前端与后端 API 的无缝对接。
第六阶段(6-7 周):全栈项目实战 —— 积累实战经验
这一阶段我全身心投入到两个核心项目中:一是个人博客全栈开发,从前端页面搭建到后端服务部署,全程独立完成;二是一个融入 AI 功能的项目,探索 AI 在前端开发中的实际应用。通过这两个项目,我不仅熟练掌握了之前学的所有技术,还学会了项目架构设计、问题排查等实战技能,这些经历也成了我简历中的亮点。
第七阶段(3-4 周):简历 + 八股 + 面试 —— 冲刺 offer
求职准备阶段,我遵循三个原则:一是简历不掺 “水分”,写在简历上的技术必须吃透原理、应用场景和优缺点,不会的绝不乱写,避免面试时被问住;二是准备要 “挖深拓广”,不只是死记硬背知识点,而是按 “200 分” 标准延伸相关内容,比如提到 token 就会梳理存储方式和安全问题,成体系地应对面试官的追问;三是态度要 “较真”,核心概念必须准确掌握,追求标准答案级的精准,不让面试官觉得我基础不牢。
写在最后:8 个月逆袭的核心感悟
从算法失意到拿到前端实习 offer,这 8 个月的经历让我深刻体会到:学习前端没有捷径,唯有 “坚持 + 实践 + 反思”。
我想给和我一样从大二下开始准备前端的学弟学妹们几点建议:第一,基础一定要打牢,HTML、CSS、JS 是所有框架和技术的根基;第二,少依赖 AI 写代码,遇到问题先自己琢磨,AI 只能作为辅助工具,真正的能力是在独立解决问题的过程中培养的;第三,一定要多做项目,“输出” 是最好的 “输入”,只有把知识点用在实战中,才能真正掌握;第四,保持连续学习的节奏,每天 4-5 小时,比三天打鱼两天晒网效果好太多;第五,给自己设定明确的目标,一周、一个月、一学期要完成什么,有目标才有动力。
这段旅程中,我曾因面试失败沮丧过,曾因攻克不了技术难点焦虑过,但每一次坚持都让我离目标更近一步。如果你也在前端学习的路上,别怕迷茫,别怕失败,只要找对方向、踏实努力,终会收获属于自己的成果。
面试篇
投了1900+份简历,从迷茫到offer到手,哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈......