八股原来要这么背!

之前出了一篇怎么写简历,发现数据不是很好,或许是许多牛友不太存在这个问题,那今天讲讲八股要怎么背。

首先,我们要对八股有一个正确的认识。

八股是面试常问的一些知识点,可以作为自己的专业技能写到简历上。在校招/实习中,八股是必问的也是重要的考点。由于同学们没有充足的可探讨的项目经验,只能通过八股来考察。或者换个角度,公司对于这些同学的基础更加看重,八股就是公司定义一个同学基础好不好的标准。

接着,讲讲怎么找八股。一般来说都是从别人那里找现成的+自己梳理补充。我这里推荐几个八股比较好的:JavaGuide、小林coding和B站up程序员回家养猪(付费,但是有整理,比较适合较快速应对面试)这些都是比较成体系的八股。自己梳理的八股主要针对项目中使用到的算法和结构进行拓展思考。

最后,也是最关键的是,怎么把这些看似繁杂的八股一点点梳理记忆。

第一,多看是必需的。这里结合我的经验,我在找实习之前的两个月几乎每天都会翻开八股(我把买的八股打印成了一册,每张纸A4大小)。我发现只要你一个星期不看,那么就会忘很多,可能只是记得一个大概,但是细节决定会忘记。那本册有大概近100页,百分之八九十的内容我可以背下来,外加之自己补充的内容。

第二,尝试理解再去记忆。八股实际上都是对于某些结构的设计思想进行抽取与提炼。实际上在逻辑上是有可循之处的。比如说jdk1.6之后对于synchronized锁进行了锁升级。那为什么要进行锁升级呢?因为加锁是通过操作系统底层原语mutex进行的,会经过用户态到内核态再到用户态的两次切换,非常消耗资源。所以,设计了锁升级。那怎么升级的呢?从无锁到偏向锁再到轻量级锁再到重量级锁。偏向锁是针对某个锁只被一个线程反复获取,这时候加锁就没有任何必要,只需要保存线程的id到偏向id,每次只要判断获取的线程id与这个偏向id是否相同,相同就能直接执行代码逻辑,否则才结束偏向状态。…… 不难发现,我们的八股都是与某些场景/问题一起出现的,如果我们自己去设计也必然碰到这些问题,八股为我们作出了解答。这个思考逻辑下,八股就不再是空中楼阁而与我们的思考紧密结合。

第三,八股迁移。许多问题在不同结构中都是互通的,那么它们对应的八股也很可能是有可迁移之处。只要搞清楚了解决某个特定问题的八股,就可以尝试迁移到这一类的问题上,做到触类旁通。

八股蕴含它自己对我们设计思想的训练与启迪,不仅是面试过程中,更是学习过程中非常重要的一部分。大家可以把它当成提升自己能力的工具而不仅仅是应付面试的某一部分。而且把自己理解的八股流利地吟唱出来是非常爽的一件事。祝大家都能早日获得自己理想的offer

#牛客AI配图神器#
全部评论
确实,八股看多了发现有些思想在Java中用了,mysql,消息队列也有类似的思想
点赞 回复 分享
发布于 2025-08-12 20:17 广东
看看扒股闻
点赞 回复 分享
发布于 2025-07-13 10:34 上海

相关推荐

03-31 00:30
已编辑
门头沟学院 golang
无手撕,被面试官暴打一小时,第一次被拷打 go 相关的内容,被拷打得我想找个地缝钻进去,😭我是菜🐶,我的腾讯面试之旅结束了 qwq。1. go routine 是啥怎么调度的。2. 如果 gmp 中 p 的分配是怎么分配的(go语言 runtime系统进行内存管理,调度器还有系统调度封装)3.向一个 nil channel发送读取消息会怎么样?4.向一个close的channel接发消息会有什么结果?5.slice是引用还是还是拷贝(我最开始很干脆地说是引用,结果面试官一副匪夷所思的语气:你确定?我就跟他说是拷贝,被戏耍麻了😭,只能怪自己基础不牢)6.内存逃逸是什么,简单介绍一下。7.接口的底层实现,接口的类型。8.闭包求输出:funcs := []func(){}for i := 0; i < 3; i++ {funcs = append(funcs, func() {fmt.Println(i)})}for _, f := range funcs {f()}其实这个答案根据 go 的不同版本,输出结果不同。在 1.22 之前,输出是三个 3, 因为循环内的 i 实际上地址是指向同一处的。但是在 1.22 及之后,结果是 0, 1, 2, 如果这个时候你打印一些 i 的地址,你会发现地址是不相同的。因为 go 在 1.22 更新了 for 循环(包括 range)的方式,循环内的临时变量 i 和 range 中取出的数据都是完全独立的一份拷贝,而且指向的地址不相同!9.Go GC 机制讲解一下,什么是写屏障,如果没有写屏障,可能会有什么情况?10.让我们来聊聊你的项目吧,来看看你的项目,啊哈!~达人探店项目,高并发店铺点评博客项目",介绍一下你的项目,你如何实现异步秒杀的?如何防止超卖,如何实现一人一单,如何使用分布式锁,lua 脚本是怎么写的?怎么实现消息不丢失的?压测怎么做的?有没有使用过阿波罗普罗米修斯宙斯哈迪斯盖亚(已晕qwq)等压测工具,有没有压测过你的各个缓节的时间,你的性能瓶颈在哪里?Redis 如果 set 数据量较大的情况下如何进行大 key 值拆分,你的 Redis 是单机还是主从?你的 kafka 有几个节点,划分了几个 partition?有几个消费者节点,你的项目有几个服务?11. 有什么经常用的 AI coding 的工具?有 Agent 开发相关的经历吗?哦?你还了解过 Agent 开发? MCP、RAG#@$*^~你能展开讲讲吗?12. 反问:请教之前空接口,受教了。给了本菜🐕一点建议:go 的基础太不牢了,作为主要的开发语言来说是不够格的。期间面试官一直没开视频,但我隐隐听到他在偷笑
点赞 评论 收藏
分享
评论
5
10
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务