news 2026/8/29 21:10:15

前端混子面进百度:从八股文到项目深挖的面试复盘

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
前端混子面进百度:从八股文到项目深挖的面试复盘

事情是这样的。我在上一家公司待了快两年,属于那种“文档在手、天下我有,文档一关、直接抓瞎”的前端。圈里人管这个叫混子,我认。手上负责的页面不算少,但论深度,也就是能跑、能上线、不出大事故的水平。某天关系不错的同事发来一条消息,说百度某个前端组在招人,岗位要求写着“三年以上经验、有大型项目优先”,我掰手指一算,年限刚好卡线。他问我投不投,我说投呗,面挂了又不扣工资,万一过了呢。结果从简历筛选到 HR 面,前后折腾了大半个月,我居然一路走到了最后。

先说结论,这轮面试让我最大的感触是:基础前端八股文真的有用,但只靠背八股文绝对过不了。整个过程里,面试官问的东西大部分是网上能搜到的前端面试题,但追问的深度和我平时刷题时想的完全不是一个量级。这篇文章我不打算写那种“标准答案汇总”,而是按照我真实的面试轮次,把每一轮问了什么、我当时怎么答的、哪些答崩了、哪些其实踩到了得分点,原原本本捋一遍。适合正在准备前端面试、尤其是打算冲大厂的朋友参考,也适合那些觉得自己技术一般但想试试水的“混子型选手”——别怕,混子也有混子的打法。

1. 开篇定调:我这个「混子」是怎么混进百度面试间的

1.1 我的技术自画像:混在哪、不混在哪

既然叫混子,我得先老实交代一下自己的技术水平,不然大家以为我在凡尔赛。

我在上一家公司做的是偏业务型的前端,Vue 2 为主,后来项目局部升级过 Vue 3,但组合式 API 用得不算深。UI 库主要用 Element UI 和 Ant Design Vue,日常开发就是写页面、调接口、改 bug,偶尔涉及一点前端工程化配置,比如改 webpack 的 loader、调一下 babel 插件,但你说让我从零搭一套完整工程,我真不行。

混的地方很明显:原理层面一知半解。我用过 Vuex,但说不清它的响应式在插件层面是怎么注入的;我用过 webpack,但只能说出 entry、output、loader、plugin 这些名词;我也写过性能优化,无非就是懒加载、压缩图片、加缓存,再深一点就露怯。

不混的地方是:业务理解力和排查问题的能力还凑合。因为常年跟产品、后端、测试battle,我养成了一个习惯,遇到问题先自己复现、再二分定位、最后看源码或者文档确认,这个能力在面试里意外成了加分项。

1.2 简历与面试机会:混子的简历怎么包装

很多混子同学最头疼的就是简历没东西写。我也是。项目经验就那么几个后台管理系统,总不能写“我写了一个商城后台”吧。

我当时的策略是:不写功能,写问题和方案。比如有一个项目,表格渲染一万条数据卡到爆,我优化成了虚拟滚动,那这个项目就是“基于虚拟滚动的海量数据展示方案设计”;还有一个项目,客户要求上传大文件,我用 web worker 在浏览器端做了文件分片和哈希计算,那这个项目就是“基于 Web Worker 的大文件分片上传实践”。面试官看到这样的表述,第一反应不是“这人在写业务”,而是“这人解决过具体问题”,约面的概率会大很多。

简历上不要撒谎,但可以把做过的事用一种更有技术含量的方式表述出来。我后来复盘发现,正是这两个项目点,成了二面面试官深挖的主线。

1.3 面试前的突击计划:一周时间我是怎么安排的

从投出简历到收到一面通知,中间大概有一周多。我没法辞职全职复习,只能每天晚上抽两三个小时突击。

我的复习顺序是:先看高频前端面试题和前端八股文,再对着自己简历上的项目写故事。八股文主要过了一遍 JavaScript 基础(闭包、原型链、this、事件循环)、浏览器原理(缓存、渲染、跨域)、Vue 响应式原理和组件通信方式,还有手写代码题(防抖节流、深拷贝、Promise 相关)。背诵部分其实网上资料很多,我用的就是一个语雀文档,配合 debugger 实际跑一遍效果更好。

复习到后面我发现一个规律:面试官问八股文不是为了考你背得熟不熟,而是想看你能不能把知识点跟实际场景联系起来。所以我把每个八股文知识点都强行造了一个业务场景,比如“节流用在滚动加载”“闭包用在防抖和柯里化”,后面面试的时候确实用上了。

2. 一面:基础题轰炸,混子差点当场现原形

2.1 面试节奏:40分钟,从闭包问到事件循环

一面约在下午两点,视频面,面试官看着挺年轻,应该是组里比较核心的开发。开场没有太多自我介绍环节,简单问了一下项目就直奔主题,大概 40 分钟,整体节奏很快。

前半段是一些常规八股文,比如“说说闭包是什么,有哪些应用场景”“原型链怎么理解”“this 指向问题”“数组去重有哪些方法”。这些我背过,答得还算顺,但后来我才发现,面试官真正想听的不是定义,而是“你什么时候用过”。问到闭包的时候我举了防抖和节流的例子,面试官明显来了兴趣,顺势让我手写一个防抖——这就是背题和实际动手的区别了,我那会儿手一抖,差点把防抖和节流的触发条件搞反。

后半段上了两道代码输出题,都是事件循环相关。第一道大概是:

console.log('script start'); setTimeout(() => { console.log('setTimeout'); }, 0); Promise.resolve() .then(() => { console.log('promise1'); }) .then(() => { console.log('promise2'); }); console.log('script end');

这个我背过很多遍,知道输出顺序是 script start、script end、promise1、promise2、setTimeout,解释的时候把微任务和宏任务的优先级说了出来。但接下来他变了个花样,问“如果 setTimeout 的延时改成 1 毫秒,输出顺序会不会变”,我当时就有点懵。后来想想,他的意思是要讲清楚宏任务队列的执行时机和定时器的最小延时,这其实前端面试八股文里常考,但我当时没答到点子上,只说了“不一定,要看执行顺序”。

2.2 让混子翻车的三道手写题:防抖、深拷贝、Promise.all

一面最刺激的环节是手写代码。面试官直接在共享文档里出了三道题,前两道我磕磕绊绊写出了个大概,第三道直接卡住,这里详细说说。

第一道是手写防抖函数,要求支持立即执行选项。我一开始写成了节流的样子,被面试官点了一下“你再想想,你这段代码是防抖吗”,我赶紧改回来。最终版本大概是:

function debounce(fn, wait = 300, immediate = false) { let timer = null; return function (...args) { const callNow = immediate && !timer; if (timer) clearTimeout(timer); timer = setTimeout(() => { timer = null; if (!immediate) fn.apply(this, args); }, wait); if (callNow) fn.apply(this, args); }; }

写完之后面试官追问了两个问题:为什么要用apply,为什么用timer = null而不是clearTimeout之后直接赋初值。这两个都是我平时没细想的点,第一问还好,知道要绑定 this 和传参;第二问我支支吾吾,他就直接解释了:置空 timer 是为了让下一次 immediate 判断生效,不然 callNow 永远都是 false。这个细节后来我记下来了,确实是防抖实现里容易漏的点。

第二道是深拷贝,要求考虑循环引用、Symbol 和 Date。我平时背过很多版深拷贝,但现场写的时候还是只能写出JSON.parse(JSON.stringify(obj)),然后在面试官的引导下补了递归。

注意:深拷贝的递归版本,判断对象类型时不要只写typeof obj === 'object',还要排除 null,并且要用 WeakMap 来保存已经拷贝过的引用,否则对象里面有循环引用会直接爆栈。

后来我写出了一个支持基础循环引用的版本,但对 Symbol 和 Date 的处理是在提示下才写出来的。这道题我只能算拿了三分。

第三道是手写Promise.all,要求支持数组项不是 Promise 的情况,并且错误要 reject。我现场写了基础版,但忘了一个关键点:结果的顺序要和输入的顺序一致,不能用 Promise 完成的先后顺序来 push。面试官说“你的代码能跑,但结果顺序是乱的”,我这下才反应过来。回看这段,自己确实太混了,平时用Promise.all用得飞起,但从来没想过它的内部实现要保证顺序。

2.3 CSS 与浏览器问题:真不是背个八股就行

一面中间还穿插了一些 CSS 和浏览器的基础题。CSS 问了“flex: 1 是什么含义”和“实现一个左侧固定、右侧自适应的两栏布局”。flex 那个我答得还行,说了flex-grow: 1; flex-shrink: 1; flex-basis: 0%,但面试官追问“flex-basis 默认值是什么”,我答错了,默认应该是 auto。这个知识点不偏,但属于容易忽略的细节。

两栏布局我提供了一个 float 加 margin 的方案,面试官又问“还有什么方案”,我说 flex,他说“还有吗”,我一时没想起来 grid。其实这些都是前端面试常客,我的问题在于只准备了答案,没有准备“多个方案横向对比”,所以每道题只能说出一种解法,给面试官一种“知其然不知其所以然”的感觉。

浏览器部分问了强缓存和协商缓存的区别,还问了Cache-Control有哪些常见字段。这个我工作中常跟后端对接口时研究过,答得比较细,包括max-ageno-cacheno-storemust-revalidate,以及ETagLast-Modified的优先级。我觉得就是这部分拉回了一点印象分,让面试官觉得这个人虽然手写代码拉胯,但工程常识还是有的。

一面结束后我的感受是:大概率挂了。因为手写题太拉胯,而且有些基础细节答得很虚。结果第二天 HR 告诉我一面通过了,我后来分析可能是因为项目经验描述比较贴合岗位需求,加上网络和缓存那块答得不错,面试官给了个 borderline。

3. 二面:项目深挖与原理拷问,没有项目就只能挨打

3.1 项目复盘:混子项目里唯一能拿得出手的模块

二面约在一面后第三天,这次面试官明显资历更老,问的问题完全围绕着简历上的项目。我已经反复准备了两个主线项目:大文件分片上传和表格虚拟滚动。

先说大文件分片上传。这个项目我做的时候主要用的是 web worker 来计算文件的md5哈希,然后把大文件切成固定大小的分片,逐个上传,全部上传成功后后端合并。面试官听完我的介绍,连珠炮似的问了几个问题:

  • 为什么要在 worker 里计算哈希?直接在主线程算不行吗?
  • 分片大小是怎么确定的?为什么选 5MB 而不是 10MB 或 1MB?
  • 如果一个分片上传失败,怎么处理?要不要重试?
  • 文件的唯一标识怎么生成?如果两个文件内容一样但文件名不同,算一个文件还是两个文件?

第一个问题我答得还行,说计算大文件哈希会阻塞主线程,导致页面卡顿和滚动掉帧,所以放到 worker 里。第二个问题我其实没仔细想过,当时就是拍脑袋定的 5MB,面试官追问后我硬编了一个理由:网络波动大,太小会频繁请求,太大会导致单次失败重试成本高。这个回答勉强算合理,但被面试官听出了我没有做过实际压测。他补了一句:一般会根据网络环境和文件大小动态调整分片大小,有些方案会在秒传时先用 HEAD 请求咨询后端已存在的分片。这句话被我记到了笔记里。

第三个问题我答了失败重试 + 重新上传该分片的方案,面试官追问“并发上传分片的话,怎么控制最大并发数”,我说可以用 p-limit 之类的库,或者自己维护一个并发池,他就没继续追。第四个问题我答的是用内容哈希作为文件唯一标识,所以两个文件内容相同但文件名不同,会被识别成同一个文件,秒传直接返回结果。这块我比较熟,因为他问的正好是我做过的核心逻辑。

3.2 性能优化:从 Network 面板到 Lighthouse 的实战回答

项目深挖之后,面试官很自然地把话题引到了性能优化上:“你在这个表格虚拟滚动里,除了虚拟列表,还做了哪些前端性能优化?”我当时心里一紧,因为简历里写了“首屏加载优化”,但实际做的比较浅。

我回答了几个点:路由懒加载、组件异步加载、图片懒加载、打包时关闭 sourcemap、公共依赖抽成 CDN。面试官表示认可,但接着问了一句让我有点慌的话:“那你有没有真正研究过首屏性能指标?比如 FCP、LCP 这些,你知道它们分别代表什么吗?”

好在我在面试前一周刷到了一个关于 Core Web Vitals 的文章,勉强能说出来:FCP 是首次内容绘制,LCP 是最大内容绘制,LCP 通常比 FCP 更能反映用户感知的加载速度。面试官还追问了怎么优化 LCP,我说了三个方向:优化图片体积和格式、预加载关键资源、减少首屏 JavaScript 体积。他点点头,没有再深挖。

这轮的小心得是:面试官并不指望你把所有性能指标说得倒背如流,但作为一个有项目经验的前端,你需要对自己项目里做了哪些性能优化有清晰的量化认知,比如图片减少了多少字节、LCP 降低了多少毫秒,哪怕只是估算,也比只说“我做了懒加载”强得多。

提个醒:如果简历上写了“性能优化”四个字,一定要准备一个可以量化的case,不然面试官只要追一句“优化前多少、优化后多少”,就很容易暴露出你只是嘴上说说。

3.3 Vue 原理与响应式:背了那么久,终于用到了一次

二面后半段基本是 Vue 原理的天下。面试官看了我的项目是用 Vue 2 写的,但 JD 要求里有 Vue 3,于是从 Vue 2 一直问到 Vue 3。

他先问 Vue 2 响应式原理。这个我熟,Object.defineProperty 对每个属性做 getter/setter 劫持,实现依赖收集和派发更新。他接着问“数组的响应式是怎么处理的”,我说 Vue 2 重写了数组的七个方法,push、pop、shift、unshift、splice、sort、reverse,然后他问“为什么直接通过下标修改数组不能触发视图更新”,我回答是因为 defineProperty 只能劫持对象属性,而下标修改没法触发。这个答得还算顺。

然后他问 Vue 3 和 Vue 2 的响应式有什么区别。我答了 Proxy 和 defineProperty 的区别:Proxy 可以拦截对象的增删和属性修改,不需要像 Vue 2 那样遍历对象属性;还可以拦截数组索引赋值,所以不需要 hack 数组方法。面试官追问“Proxy 的兼容性怎么看”,我说 es6 之后现代浏览器基本都支持,但老浏览器需要 polyfill 或者降级 —— 正好这也是项目选型时需要考虑的点。

最后他问了一个我完全没想到的问题:“Vue 的 nextTick 原理是什么?如果让你实现一个简易版,你会怎么做?”我在项目中用过 nextTick,也知道它跟 DOM 更新后的回调有关,但真正要我说原理就垮了。我只能说跟微任务有关,然后就卡住了。面试官没太难为我,告诉我核心是利用 Promise.then 或者 MutationObserver 把回调放进微任务队列,等 DOM 更新后执行。这道题我后来认真补了,绝对是 Vue 源码里最值得深入的一块,因为它牵扯到事件循环、异步更新、组件渲染机制。

4. 三面:leader 面的终极问题,不是技术是「思考」

4.1 业务与技术的关系:混子如何急中生智

二面过后的第三面,面试官已经明显是技术 leader 级别,开场完全不问代码,先问我:“你在这个项目里,有没有过跟产品经理或者后端发生分歧的时候?你最后怎么处理的?”

这种问题对于混子来说是最容易翻车的,因为平时我就是那个“行行行,你说啥我做啥”的人。但这次我急中生智,讲了一个真实但稍微润色过的故事:之前有一次,产品提了一个需求,要求前端做大量数据的即时筛选和排序,我预估了一下,如果按需求直接实现,页面会有明显卡顿,于是我没有直接拒绝,而是先做了一版 demo,用一万条数据实测,截了性能面板的图给产品看,然后提出了虚拟滚动 + 服务端筛选的替代方案,最终产品接受了。

面试官接着问了一句特别有价值的话:“你觉得自己在这个过程中,除了开发,还承担了什么角色?”我说其实前端不只是把设计稿变成页面,还需要充当技术方案和业务诉求之间的翻译官。这句话后来想想有点装,但在当时居然赢得了面试官的点头。

4.2 成长性问题:你怎么学习、怎么复盘

leader 面后半段偏“软素质”了。问题包括:平时怎么学习前端的?未来三年的规划是什么?最近有没有关注什么前端新技术?

学习路线我是这么说的:日常以项目为主,遇到问题先查文档、再查 issue、最后翻源码;业余会看一些前端社区的高质量文章,重点关注工程化和性能优化方向;偶尔会动手写点小 demo 来验证想法。面试官追问“那你最近看过印象最深的一篇文章是什么”,我愣了一下,临时想到前端工程化里的微前端方案,说最近在研究微前端的沙箱机制。其实那篇文章我只看了半篇,但为了圆场,我硬是把 main 应用和子应用之间的样式隔离、js 沙箱概念讲了个大概。

这轮的心得是:不要给自己挖坑。面试官问你看过什么,一定要挑一个你真的熟悉的技术,不然他顺着你的回答连续追问下去,你就会像我一样哑火。后来面试官真的追问了“沙箱是怎么实现 js 隔离的”,我答得很虚,只能说出 with + Proxy 的 eval 方式,因为他提了,我就顺藤摸瓜说了两句,属于运气比较好。

4.3 反问环节:别问没营养的问题

三面最后留了几分钟反问,面试官很客气地说“你有什么想问我的”。我之前看过不少面经,知道反问环节不能回答“没有”,但也不能问太浅的问题。

我问了两个问题:一个是“团队目前的前端技术栈和工程化建设到什么程度”,另一个是“如果我有幸加入,您觉得我当前最需要补足的能力是什么”。这两个问题的好处是:第一,表现出你对团队感兴趣;第二,能通过面试官的回答反推自己哪些方面弱,即便没拿到 offer,也是很有价值的反馈。

面试官回答第二个问题时,说了一句我印象很深的话:“你基础不算差,但学习方式偏零散,如果你能把一个知识点吃透到能主动教会别人的程度,会好很多。”这句话后来被我当成很长一段时间的座右铭,也彻底改变了我刷前端面试题的方式。

5. HR 面:聊薪资与 offer 的博弈

5.1 HR 面的套路:不是聊天,是谈判

HR 面放在三轮技术面之后,大概 30 分钟。很多人以为 HR 面就是聊聊天,其实不是,HR 面是有明确目的的,她要知道你的期望薪资、最快到岗时间、手里的其他 offer、离职原因、稳定性、学历背景等,每一项都可能影响定级和薪资。

HR 第一个问题就是“为什么从上家公司离职”。我提前准备过,没抱怨加班多、没说领导不好,而是说“做了两年业务型前端,觉得技术成长变慢了,想换一个技术氛围更浓的平台”。这个答案既真实又不招黑。

她接着问“目前手里有其他 offer 吗”。我当时其实手里只有一个中小厂的 offer,薪资还没谈,但我没有撒谎,也没有把话说死,就说“有一个在流程中的机会,但更倾向于这边,因为更想做技术深耕”。后来我复盘觉得,这个回答还行,既表明了竞争力,也给对方留了空间。

5.2 谈薪话术:混子的不算技巧的技巧

薪资环节是 HR 面最核心的部分。我因为上一家薪资不高,所以在定期望值之前做了一点功课:查了市场行情、问了一圈朋友,最后报了一个比当前薪资高大概 25% 的数字,留了 5% 的还价空间。

HR 问“你期望薪资为什么是这个数”,我说了三层逻辑:第一,基于当前市场行情和岗位要求,这个区间在合理范围;第二,对比我现在的能力和项目经验,能独立负责复杂模块;第三,如果定级和期望有差距,也可以考虑其他综合福利和成长空间。整个过程没有硬刚,但也没有一上来就自降身价。

这里有个细节:HR 问“能不能接受定级低一些”,我说“如果定级对应的工作内容是我感兴趣的,可以谈,但薪资上希望尽量靠到某个区间”。这种“定级可以让步,薪资不能太离谱”的回答方式,既显得务实,也给 HR 留下了协商空间。最后 offer 给的薪资虽然比期望少了 2K,但综合下来比我上家涨了不少,我接受了。

6. 面后复盘:混子进场,带着什么离场

6.1 面试中暴露的问题清单

虽然最后拿到了口头 offer,但我清楚这轮面经里我的表现不是“稳”,而是“悬”。回看整个流程,我暴露的问题非常典型,也很有参考价值。

  • 手写代码基本功不扎实:防抖、深拷贝、Promise.all 都属于高频题,但我写得不快且不规范,尤其 Promise.all 的实现顺序问题,暴露了我对 Promise 内部机制的浅层理解。
  • 知识点碎片化,不成体系:flex-basis 默认值、nextTick 原理、宏任务微任务调度这些点,单独问都能聊几句,但一旦被追问“为什么”就卡壳。
  • 项目中的技术决策缺乏数据支撑:分片大小为什么选 5MB、优化效果具体是多少,我说不出来,这是面试官最敏感的部分。
  • 学习方式偏被动:leader 面问我看过什么文章,我只记得大概是某个方向,但没有真正消化成自己的知识结构。
  • Vue 3 知识储备不足:JD 里明确写了 Vue 3,我只知道 Proxy 比 defineProperty 强,但组合式 API 的底层设计逻辑、编译优化等内容基本空白。

这些问题不是面试失败者的专属,反而是很多“能干活但说不出来”的前端共通的短板。我把它列出来,是想让大家明白:混子不可怕,可怕的是不知道自己混在哪。只要能定位到具体的能力缺口,接下来补就是了。

6.2 给下一批「混子」的4条实在建议

结合我这次经历,给同样准备大厂前端面试的同学几条建议:

第一,把简历上的每一条项目经历,都准备成一个 5 分钟的故事。故事要包含背景、难点、你的方案、踩过的坑、最终效果。这样面试官问什么,你都能往这个故事上引,不会出现“你做过什么”和“你会什么”两张皮的情况。

第二,手写题必须脱离背诵,真正动笔跑一遍。我现在都记得 Promise.all 那道题给我带来的屈辱。建议把防抖、节流、深拷贝、Promise.all、Promise.race、数组扁平化、柯里化、new、call/apply/bind、instanceof、EventEmitter 这类高频手写题,全部在本地跑过三遍以上,直到闭上眼睛能写出来。

第三,建立一个“为什么”清单。每刷一道八股文,就追问自己三次“为什么”。比如事件循环,不仅要背宏任务微任务的顺序,还要知道为什么要区分宏任务和微任务;比如 Vue 响应式,不仅要背 Proxy,还要知道 Vue 2 为什么不用 Proxy。面试官最爱追问的点,往往都在三次“为什么”之后。

第四,视频面试一定要录音。我面完之后回听录音才发现,自己有大量的“嗯”“那个”“就是”这类停顿词,而且很多题明明答到了关键点,但因为表达不清晰,听起来像没答到。录音复盘是成本最低、提升最明显的练习方式。

6.3 复盘表格:哪些题该拿分却没拿住

我把整场面试的题目和自己的表现整理成了表格,方便大家直观感受大厂面试的考察密度:

面试轮次核心题目我的表现丢分点得分点
一面闭包与防抖手写中偏下防抖节流条件写反,this 绑定不清能给出防抖的应用场景
一面深拷贝手写偏下循环引用和特殊类型处理不当知道 JSON 方案的局限
一面Promise.all 手写偏下结果顺序错误,边界处理不全能写出基本框架
一面浏览器缓存良好无明显丢分Cache-Control 字段和协商缓存优先级
二面大文件分片上传中上分片大小的技术依据不足对哈希、秒传、并发控制有实践
二面性能优化指标缺少量化数据知道 LCP/FCP 的基本概念
二面Vue 响应式原理中上nextTick 原理不清晰Vue2/Vue3 对比答得较完整
三面业务分歧处理良好无明显丢分有实际案例,表达清晰
三面学习方式与技术趋势技术文章印象不深,微前端细节经不起追问能表达学习方向
HR面期望薪资与稳定性良好无明显丢分谈薪有策略,表达务实

表格里能看出来,我的优势在“有真实项目经历支撑的实战问题”,劣势在“纯基础概念的深度和手写能力”。如果你也打算面大厂,可以先自己模拟打一次分,看自己到底属于哪类选手,然后针对短板集中突破。

回看整个面试过程,我最大的感受是:混子不混、只是平时没把知识形成体系。真正让我通过这轮面试的,不是面试前那两周背了多少题,而是过去两年在项目里踩坑时留下的肌肉记忆,以及对项目细节的认真复盘。如果你也是一枚混子,别慌,把我踩过的坑避开,把我侥幸过关的地方变成你的稳定项,大厂的门没有想象中那么窄。

最后再分享一个小技巧:面试被问到不会的题,别直接说“不会”,试着说出你的思考路径,比如“我对这个问题不了解,但我从另外一个角度推测可能是……”。面试官要的不是满分答案,而是看你遇到未知问题时的反应。这个能力,恰恰是混子最容易被低估的地方。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/29 21:03:09

基于SpringBoot和Vue的新闻发布管理系统源码+文档+讲解视频

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

作者头像 李华
网站建设 2026/8/29 20:51:55

Havenlon | 杂谈:当亲手写代码开始被叫作“古法编程“

最近,程序员圈子里流行起一个颇有意思的词:古法编程。它没有严格定义,大致用来形容不开 Cursor、不用 Copilot、不调 Claude Code,也不把任务丢给 Coding Agent,而是自己打开编辑器,查文档、找接口、写函数…

作者头像 李华
网站建设 2026/8/29 20:51:41

Python高效筛选纯质数:从埃氏筛到BFS的算法实战

1. 项目概述:从一道竞赛题到算法思维的实战最近在复盘一些经典的算法竞赛题目,第十二届蓝桥杯的“纯质数”问题让我觉得特别有意思。它不像那些复杂的动态规划或图论题那样让人望而生畏,但恰恰是这种题目,最能考验一个程序员对基础…

作者头像 李华
网站建设 2026/8/29 20:51:38

硬件SPI终极指南:从协议原理到高速PCB布局与调试实战

1. 项目概述:为什么我们需要一次“终极总结”?搞嵌入式开发,尤其是和各类传感器、存储芯片、显示屏打交道,SPI(Serial Peripheral Interface)这个通信协议绝对是绕不开的坎。我从业十几年,从8位…

作者头像 李华