2022-10-08《阿里开发者手册 - Redis 专题》

一个小册子?

分享一下刚刚看到的《阿里开发者手册 - Redis 专题》的 PDF 文档,主要内容是Redis 的开发应用、性能优化以及 Redis7.0 的前世今生。

这份 PDF 可以看作是几篇优质长文的整合,内容安排看着会比较乱,但文章质量非常高,尤其是性能优化这块的介绍,还是非常值得一看的。

image.png

image.png

2022-09-17《system_design_interview》

国外大佬编写的系统设计电子书《system_design_interview》,很多人都说不错的资料,分享给大家:

[[system_design_interview .pdf]]

2023-03-30 《Java单元测试实战》

《Java单元测试实战》这本电子书来自于一位阿里大佬多年来的单元测试实践,最初发表在阿里内网的ATA上,成为了很多阿里同学单元测试学习的必读文章。

[[Java单元测试实战.pdf]]

image.png

2021-05-05 《架构整洁之道

#书籍

image.png

架构整洁之道》是我最近两年看过最Nice的一本技术书籍。认真读完之后,我保证你对编程本质、编程语言的本质、软件设计、架构设计可以有进一步的认识。国内的很多书籍和专栏都借鉴了《架构整洁之道》 这本书。

《架构整洁之道》

2023-06-05《卓有成效的管理者》

今天马老师分享的一本书籍,老师说人人都是管理者,本质就是管理自己

[[《卓有成效的管理者》中英双语·珍藏版 彼得·德鲁克(美)_2.pdf]]

搜索技巧

2022-03-04 搜书技巧和工具

搜书的话,我只推荐两个我最常用的网站:

1、https://zh.b-ok.xyz/(需要梯子) : 全球最大的数字图书馆
2、熊猫搜书-熊猫搜索_聚合文档搜索导航_xmsoushu_xmsearch :聚合文档搜索
3、如果会科学上网的话,可以试试这个 –>libgen.is
4、https://zh.usa1lib.org/ 上次看见别人推荐的,说大部分想看的书都有,不过我自己还没有搜过
5、Z-Library项目 (Z-LibraryProject),这个算是官方地址吧,但是偶尔会变

image.png

image.png

2022-09-15 个人使用 Google 搜索的实用建议

分享一些个人使用 Google 搜索的实用建议,这里就不专门介绍各种繁杂的搜索参数了,说了也记不住,实用性不强。

1、选择合适的关键词,多个关键词手动使用空格进分割。如果搜索出来的内容你不满意的话,建议重新更换/删减关键词进行搜索或者调整关键词的顺序。

2、利用好 Google 图片搜索,一张好的技术配图有更大概率带你进入更优质的页面。

3、往往同时需要多打开多个页面之后,才有可能找到自己需要的内容。

你可以先从第一页的搜索结果中选择打开 5 个页面,内容差的直接关闭,全平台采集文章类的盗文网站直接选择屏蔽掉即可。像下面(图3)这个网站就是一个典型的需要被屏蔽的垃圾文章收集网站,文章排版和网站体验极差且文章都是从其他平台收集整理过来的。

你可以使用 uBlacklist 这个 Chrome 插件屏蔽特定的网站。

4、搜索参数上加上 site:网站或域名 搜索指定网站或者域名下的内容

搜索参数有很多,个人比较常用的是 site:网站或域名 ,更多搜索参数你可以在这篇文章中找到:Google Search Operators: The Complete List (42 Adv…

5、过滤搜索结果 你可以通过 Google 高级搜索过滤搜索结果,缩小搜索结果的范围,地址:https://www.google.com/advanced_search 。 我们上面讲到的 site:网站或域名 功能也可以在这个高级搜索页面上完成。

image.png

image.png

image.png

image.png

优质文章推荐

2022-10-02 如何写出高质量的文章:从战略到战术_明明如月学长的博客-CSDN博客

今早看到一篇不错的文章,对于那些有日常编写博客习惯的小伙伴可以看看,无论是沉淀自己的技术还是笔记输出还是bug修复日志记录,我们都可以以输出博客的形式确定自己的技术上的不足于以及基于输出完成对自己的复盘梳理,通过

  1. 列标题归纳知识
  2. 列好提纲梳理知识点
  3. 深入浅出的示例以及实践案例介绍技术点,当然这也我们要对知识有着深入的理解和认识,不断通过网络素材整合泛化知识点
  4. 大量输出以及不断深入思考结合个人过去的知识点完成融汇开通

如何写出高质量的文章:从战略到战术_明明如月学长的博客-CSDN博客

2022-09-05 给做电商系统的小伙伴推荐 4 篇不错的文章

1、如何防止订单重复支付:如何防止订单重复支付? - 掘金
2、如何防止重复下单:如何防止重复下单 - 掘金
3、如何防止支付掉单(钱扣了,订单还是未支付):钱扣了,订单还是未支付,用户炸了!——聊聊如何防止支付掉单! - 掘金
4、聊聊电商的数据体系:CRUD有啥用?关注需求收益,聊聊电商的数据体系! - 掘金

2023-06-12 分享我的进大厂经验(技术面试准备篇之消息队列)

大家好,我是苍何,这是我之前面试前准备的一些复习资料,一边复习,一边整理,希望对你有帮助。 最近思考了一个问题,为什么会出现公司面试造火箭,工作扭螺丝的现象,包括各种八股文的连环大绝杀问到你不会为主,其实这是考察你的知识面以及掌握的深度,而为什么需要这样呢?归其原因,无非是通过筛选找到那些会思考的人,他们需要的并不是CRUD的工具人,而是会思考能创…

分享我的进大厂经验(技术面试准备篇之消息队列) (zsxq.com)

语雀:消息队列yyds (yuque.com)

2023-06-29 整理了一下netty处理不当提交到业务线程导致消息积压的问题

整理了一下netty处理不当提交到业务线程导致消息积压的问题,感兴趣的朋友可以看看: 来聊聊Netty消息发送的那些事_shark-chili的博客-CSDN博客 文章同步更新个人网站: 来聊聊Netty消息发送的那些事SharkChili

image.png

image.png

2023-06-23 我是如何准备八股文的

我是如何准备八股文的?多轮复习法 + 刻意训练 + 事件驱动 + 擅用 GPT + 自我安慰。(4k字长文)

(PDF内容与此内容一致)

大家好,我是 「周三不Coding」,之前名字是 ltyzzz。想了想还是起个接地气的名字吧哈哈哈哈~之后我再与大家闲聊这个名字的意义!

之前我分享了我春招入职大厂的面经后,很有小伙伴来问我如何准备八股文。其实在我写面经的时候,我认为大家可能缺乏的是项目经验,或者对面试没有清晰的认知。于是我当时给大家抛出了一个公式,并着重分析了其中的 Idea 部分,也是大家容易忽视的一点。

今天,我就再给大家分享一下,我是如何准备八股文板块的。

在分享之前,我再给大家抛出一个我认为的 5 个核心点:多轮复习法 + 刻意训练 + 事件驱动 + 擅用 GPT + 自我安慰。接下来,我会逐个分析我是怎么做的。

  1. 多轮复习法

这个方法其实也不是我自己想到的,而是被无数人证实过非常有效、可靠的一套方法论。我想信很多小伙伴在高三的时候,各个学科都会开展一轮、二轮甚至是三轮复习,每一轮都有各自的侧重点、目标,循序渐进地将你过去所学习到的零散知识,整合成为一套完整的适应高考的知识体系。

我们在准备面试时,也可以借鉴这个思路。将我们之前所学的零零散散的碎片知识,整合成为应对面试八股提的知识体系。之前学习的时候,我们只是简单地知道如何使用,模糊地记得一些概念;而经过复习之后,我们便对每个知识点的内容更加清晰,而且知道如何自如地回答。

下面我提供一下我个人总结的多轮复习法。

我们首先假定面试准备时间为 30 ~ 40 天,不宜过长也不宜过短。不能太长是因为战线拉长会使人非常疲惫,当时我准备到 30 多天的时候,整个人已经相当疲惫了。不能太短是因为你可能复习不完所有知识点,容易出大问题。如果你觉得 30 ~ 40 天的时间很紧的话,可能是因为知识点还没有学完,所以得赶紧趁着还没到面试复习阶段的时候,赶紧学一遍这些知识!

接着,我们确定一下在多轮复习中,每一轮需要做什么?

第一轮复习

  • 首先,确定我们需要复习的模块,比如我是以 Java 为主,我选择的模块是:Java基础、JUC、JVM、Spring、MySQL、Redis、计算机网络、操作系统、微服务、分布式等。

  • 之后,准备复习所使用的工具:面经网站、对应知识点的书、GPT。主要以面经网站为主,对应知识点的书和 GPT 为辅助工具。面经网站我就简单提一下,大家应该都知道,Java Guide 和 小林Coding,深度与广度都足够。时间紧张的话,可以不用书籍,因为我当时候担心有些地方不够深,于是我便参考着书来复习的。GPT 主要帮助我们更好地复习,提高效率,接下来的内容中重点说。

  • 接着,确定复习具体规划。具体复习规划因人而异,我一般是交叉着看,因为一整天都看一个模块,很容易疲惫。

  • 开始真正的复习。如何高效地复习某个知识模块?拆分为两步,第一步是根据书和面经网站,巩固一遍之前所学过的知识点,清楚其中的大概内容,对面试中可能会被考察到的知识点做到心中有数。第一步对应到每个模块需要花费 2 天左右时间。之后,开始第二步,进行自查。这时候需要借助于 GPT,帮助我们列出某个知识点的问题清单。我当时是这么问的:帮我列出 100 道关于 xxx 的高频面试题。接着,咱们需要过滤一遍问题清单,因为其中可能存在很多重复的问题。最后,我们对照着问题清单,开始自问自答,感觉回答不上来、模糊的问题,及时去查找资料复习,并将最终完善的答案记录到清单中。(文件中附一份我的 Redis 问题清单笔记)

  • 这样一来,我们便稳扎稳打地复习完了每一个模块对应的知识点,并且进行了及时的自查,加深了对题目的印象,实现了八股文的 “原始积累”。这一轮大约需要花费 20 多天左右的时间

第二轮复习

  • 第一轮复习完之后,我们可能还是很难接得住面试,大家应该很容易发现问题所在。在第一轮复习时,我们都是趁热打铁,复习完一个模块后,就去自问自答对应模块的面试题。但是实际面试是打乱问的。并且,在第一轮复习中遇到的都是常规面试题,很容易忽略零碎、细节且复杂的问题(比如情景设计题、面试官突发奇想问的题目),所以咱们还需要继续加强。在这一轮复习中,咱们就不分模块了,每天直接 “大杂烩”,至于怎么 “烩”,接下来重点说明。

  • 首先,我们在牛客、知乎、Leetcode等各大网站中寻找面经,如果此时已经接到了面试,可以直接寻找对应公司的面试题。

  • 找到面经之后,一道道题目挨着过,仍然是自问自答。新建一个 Markdown 文档,遇到你含糊不清、没有把握甚至完全陌生的题目,记录到文档中。此时先别急着找答案,先把这份面经过完,最后自己统计一下,在这份面经中能回答上来的题目数量。如果看了几份后,每份都能回答上来 80% 以上,说明第一轮复习十分有成效。但事实是可能只有 60% 左右。接下来,我们就需要走出一轮复习的 Comfort Zone,进入较高强度的环节:刷面经、记录陌生题目、搜答案、口头复述(自问自答),循环此过程,直到自认为总体准确率达到 80%。

  • 我当时第二轮复习花了大概 10 天吧,看了几十份面经、几百道题目(应该不超过 500),记录了 100 多道题目,平均一天就只记录 10 题左右的样子。主要还是因为复习过程中比较焦虑、烦躁,复习到后期的时候心烦意乱,所以第二轮复习效率不是很高,之后我也会提到怎么最大程度地克服这种情绪。

  1. 刻意训练

相信很多小伙伴听过这个方法论,我个人一直十分信服这一方法论。之前的多轮复习法中,很多地方也有运用这一方法论。它的核心就是:明确目标、走出舒适区、执行力与自我反馈。如果可以有一个提供指导的前辈,那么就比较接近于真正的刻意训练。

  • 明确目标:在第一轮、第二轮复习中,我们都有明确的目标。第一轮目标是巩固复习基础知识点,第二轮目标是查漏补缺,遍历搜寻零碎知识点。

  • 走出舒适区:在第一轮复习之前,我们的舒适区是近期正在学的知识或者正在做的项目,陌生的是很久之前学过的知识模块;在第二轮复习之前,我们的舒适区是第一轮复习所学的常规基础知识,陌生的是非常规、难度大的真实面试题。每一轮复习,我们并不是在做自己熟悉的事情,而是在反复地接触不熟悉的东西。

  • 执行力:这一点大家心里都清楚,我相信加入星球的小伙伴执行力都不会差。在第三个部分 「事件驱动中」,我会进一步告诉大家如何提高执行力。

  • 自我反馈:我们在两轮复习中,借助于问题清单、真实面经,反复地进行自问自答,不停地给自己反馈,告诉自己哪里做的不够好,哪里还需要继续完善,并且心中有一个准确率数字。达到某个程度,我们就给自己一个正反馈:我目前复习的还算可以。

我们通过有效运用「刻意训练」 方法论,达到最终可以应对基本面试的程度。

  1. 事件驱动

这一点其实是相当关键的,根本原因在于,我们很多情况下清楚各种方法论,但总是因为驱动力不足,造成无法有效执行,最终使得计划泡汤。我也是这样子的,所以我直到投简历的前几天才开始复习,这其实就是事件驱动。我们需要一个真实可见的动力,驱动我们去复习准备八股文。比如投简历、笔试面试临近等等。但是需要注意的点是,事件驱动 ≠ 临时抱佛脚,我们需要将事件驱动控制在一个合理的范围内。比如:在投简历的前 10 天,你便开始第一轮复习,这样你复习的时候就在想,会不会我一投简历就立马发面试?(极有可能)这样,你不会懈怠,执行力十足;在面试的前一周,你便迅速进入第二轮复习,根据面试企业往年的面经,查漏补缺。这样也不太有可能出现懈怠的情况。

我们在不拉长战线的情况下,在每一个时间节点,都给自己一个事件驱动,那么我们懈怠的时间就相对少很多,而且复习效率足够高,很有可能使我们拿到第一波 Offer。

  1. 擅用 GPT

这一点我们其实在多轮复习中已经提到啦。根据我的经验,GPT 给出的面试题回答大部分还是比较准确的,比一些面经的质量要高很多。只要该知识点是 2021年9月之前的,都可以问问 GPT

在你时间很紧张的情况下,直接问 GPT 比你在各大网站中大海捞针,效率要高得多。而且对于基本的面试题,不需要用到什么 Prompt Engineering 技巧,直接问就可以,成本极低。

  1. 自我安慰

在准备面试的过程中,无论准备的情况有多好,一定是伴随着焦虑的,这点无法避免。但是我们可以尽可能地减少焦虑时间,结合之前提到的事件驱动、刻意训练等,不停地反复地找面试题、复习面试题。如果能够一直保持这种复习状态,应该很少有时间焦虑。

这里主要提到的是通过自我安慰来克服焦虑。即使我们一直在准备面试题,但是在复习过程中,可能还会遇到突然的焦虑,比如说:突然复习到一道很陌生的题,完全没有思路,完全不会,这个时候可能就会很慌、很焦虑,并把自己代入到真实的面试情景,想象自己面试中被问到这道题,手心已经在出汗了。这便是我经常遇到的情况,但是,很奇怪的是,这些题目我几乎没有在面试中遇到过,其实按理来说,遇到这些题目的概率本身就不足 50%。所以,我们需要根据这个概率数字,时刻给自己一个正向心理暗示,不要自己吓自己。

此外,我还遇到一种情况,就是复习状态火热,达到很亢奋,很想立马来一场面试的情况。这个时候我便很难静下心来去看八股文、面试题。当时还是挺慌的,但现在细想一下,其实有一个亢奋的复习状态是可以促进面试的表现。所以大家遇到这种情况不必慌张,是好事哈哈哈哈。

以上 5 个部分到这里就都聊完啦~

最后,我再提一下面试复盘的问题。其实我只做过一次文档形式的面试复盘。因为我个人觉得只需要心里记住这次面试遇到不会的问题,面试结束后赶紧去寻找答案,并记录下来即可。自己会的问题就没必要重复记录啦~此外,有些同学可能会复盘面试过程中除技术外表现不好的部分,这一点有一定必要性,但是没有想象中那么重要与必要。在时间有限的情况下,这其实就是一个 trade-off。如果你认为这场面试中,你的语言表达使你的面试大大减分,那么确实需要引起重视,及时调整与提升(比如,有一些你确定你会的知识点,但是由于沟通能力或表达能力问题,使你没有说出来或者面试官没有听懂,那么就需要及时复盘),或者如果你觉得你面试题准备得足够充分,那么你可以利用剩下的时间去想一想如何更加自然流畅地表达想法。

这就是今天的全部分享啦,希望能够对大家有所帮助。

之前很多同学想要看看我做的笔记,目前还在整理中,我把其中一部分放到了我的知识库网站中,等全部做完后,我再与大家进行后续的分享~

这部分是obsidian的外链

[[Redis.pdf]]

[[八股文准备经验分享.pdf]]

image.png

2023-06-11 字节实习,我学到的处理高并发三板斧

分享一篇实习期间处理高并发问题的心得,星球的编辑器太难用了,贴过来一堆格式乱码(或许有大佬可以教教怎么处理),感兴趣的同学欢迎移驾知乎讨论~

字节实习我学到的处理高并发三板斧-知乎

2023-07-05 如何快速了解项目或者吃透一个项目?

#项目

很多小伙伴在学习或者接手一个项目的时候,不知道如何快速了解项目或者吃透一个项目,这里再分享一些不错的文章作为补充资料:

1、如何阅读代码 - ThoughtWorks洞见 - 2022:如何阅读代码-Thoughtworks洞见:作者分享了一些他日常读代码的一点经验比如先通过文档了解全景,再逐步深入代码。
2、快速阅读一个SpringBoot工程 - 掘金 - 2023:快速阅读一个SpringBoot工程-掘金:这篇文章介绍了一个常规的 SpringBoot 项目应该如何上手阅读,这方面基础较差的同学可以看看。
3、如何吃透一个 Java 项目?(附学习实 践) - 淘系技术 - 2021:如何吃透一个Java项目附学习实践:介绍了很多吃透 Java 项目的使用建议。
4、你可以 3 分钟熟悉一个系统吗?- 阿里中间件 - 2020:(你可以3分钟熟悉一个系统吗 :从三个方面进行总结,提供一个系统的方法帮助快速上手一个完全陌生的系统,同时也可以用来 review 已有的系统,查漏补缺。

除了上面推荐的这些文章之外,《Java面试指北》的练级攻略篇中也有一篇我写的“程序员如何快速上手一个新项目?”。

image.png

image.png

2023-06-05 MySQL 避「坑」指南 —— 你能设置出正确的主键吗?

自荐一篇文章:MySQL 避「坑」指南 —— 你能设置出正确的主键吗? - 掘金,MySQL 避「坑」指南 —— 你能设置出正确的主键吗?

合理设置主键,可以帮助我们快而准地查询数据。但是,如何设置一个正确的主键呢?比如,能用业务字段做主键吗?单机系统下如何设置主键?分布式系统呢,如何保证主键的全局唯一性呢?

欢迎球友们评论交流哇,如果有得到帮助,欢迎点赞收藏加关注!

2023-05-12 神独自在轮子项目+文章介绍

今早追加更新了一波,更新内容部分如下图,主要是给我其他两篇文章做了小小推荐,之前的那篇项目亮点的收藏数快够着掘金收藏榜了,冲一冲,哈哈。

六脉神剑-我在公司造了六个轮子 - 掘金

如何挖掘项目中的亮点(多方向带案例) - 掘金

2023-07-07 Thoughtworks洞见

这篇文章详细介绍了业务架构和 IT 架构以及具体的设计方法,并且列举了具体的案例来帮助理解。我们一般探讨的比较多的是业务架构、应用架构、技术架构和基础设施架构(部署架构也很重要,这篇文章没有提到)。另外,架构图就是为了达成交流共识的实现方案演示,并不一定非得拘泥于某种形式,只要你能画的清楚,别人能看懂就可以了。

另外,还可以看看 如何画好架构图_架构_Hockor_InfoQ写作社区 这篇文章,讲解了架构图的作用以及分类,还提到了比较流行的 C4 架构模型。

image.png

image.png

image.png

image.png

悟空聊架构

2023-06-19 面试怎么跟面试官聊项目?

这个问题挺有意思的,聊项目主打一个交心。
简单说下我的看法:
(1)首先简历上的项目需要比较丰富,这里的丰富不是对项目的功能的堆砌,而是要从以下几个方面进行阐述:
1.项目背景
2.项目规模
3.你负责的核心模块、开发的功能
4.项目痛点、难点
5.你做了什么事情,用到了那些技术,解决了什么难题,达成了什么效果,带来了什么效益,还有哪些可以改进的地方
(2)然后你得把你学过的一些技术带入进来,尽量让面试官对你运用的技术感兴趣,然后如何用这些技术解决问题的。
(3)最后你可以说下如何改进方案,引导面试官提供一些其他的建议。

相信经过这么几个来回,面试官会对你“很有意思的”。

猫大人分享

2023-07-11 给大家推荐书第一波

#书籍

今天给大家推荐书第一波:

Effective Java (java必读)
head first 设计模式 (必学,学完自己写点小实践,然后去看出名的开源框架)
java并发编程的艺术(方腾飞写的)
苏菲的世界 (程序员需要懂点哲理的东西)

很多金典好书不是读出来的,一定是结合自己的感悟,自己的工作实践去体验的。可怜

海贼哥补充:

补充一下,java开发必读的130本电子书资源: 链接:https://pan.baidu.com/s/10Mp8N94pq0V5-uEViSVe5g  提取码:44hh

苍何大佬答疑

2023-06-07 如果我想进大厂的话,该怎么准备最好呢?

sky 提问:苍何大佬,我有个问题想咨询下,我之前面试前都是从网上找面试题来针对性复习,然后结合我看的网课的笔记复习。那我有必要专门买书来看吗?市面上技术书好多,看不完,看了可能平常用不到也容易忘,如果我想进大厂的话,该怎么准备最好呢?

同学你好,针对你的问题,以下是我的一些个人建议:
1、关于技术书籍
对于面试前是否需要购买技术书籍,这主要取决于你的学习偏好和学习效果。技术书籍可以提供系统、深入和全面的知识,对于构建坚实的基础和理解底层原理非常有帮助。然而,如你所说,市面上的技术书籍众多,选择困难且很多内容可能平时用不到。因此,下面是一些建议:
确定重点领域:
针对你想进入的大厂,确定你最需要深入学习的核心知识领域。例如,如果你对分布式系统感兴趣,可以选择一本相关的深入学习的书籍。
tips:↙
兴趣是一方面,在面试前,是没有过多时间准备复习的,所以看书得看你对哪方面的掌握不够透彻,才有针对性的去看

参考书籍推荐:寻找经典且广受好评的技术书籍,这些书籍通常被业界广泛推崇,内容质量较高。可以看下 星球中的《Java面试指北》或知识星球使用指南中有很多的 PDF 资料。

打造知识体系:
书籍可以帮助你建立系统的知识体系。你可以选择一本适合自己的全面性的教材,然后结合网课和实际项目经验,逐步构建起你的技术能力。

2、进大厂如何准备
除了技术书籍外,以下是一些建议,帮助你更好地准备进入大厂:
实践项目经验:
技术是需要实践和经验来巩固和提升的。尽量多参与实际项目,积累实践经验,并解决真实的技术问题。
多做练习和面试题:
网上的面试题可以帮助你熟悉常见的问题和解题思路。通过多做练习和模拟面试,提升解决问题的能力和面试技巧。
参与开源项目和技术社区:
积极参与开源项目和技术社区,与其他开发者交流和合作,拓宽视野,学习最新的技术动态。
关注大厂的招聘要求:
了解目标大厂对技术和能力的要求,有针对性地准备和提升自己的技能。查阅目标大厂的招聘信息,了解他们对技术栈、项目经验和软技能等方面的要求,并在准备过程中重点关注这些方面。
学习系统设计和架构:
大厂通常注重候选人在系统设计和架构方面的能力。学习相关的设计原则、架构模式和常见的系统设计方案,培养自己在这方面的思考和解决问题的能力。
面试准备:
除了技术准备外,还需要提前做好面试准备。了解面试流程、常见的面试题型和面试技巧,并进行模拟面试和反思,不断改进自己的表达和应对能力。
持续学习和成长:
技术行业变化迅速,持续学习是保持竞争力的关键。与行业趋势保持同步,关注新技术和新领域的发展,并不断提升自己的技术深度和广度。

也可参考我当时进大厂复习思路:进阿里了——分享一波进大厂经验

提升阅读体验,可以移步语雀:面试前是否有必要买书看,进大厂该如何准备 · 语雀 《面试前是否有必要买书看,进大厂该如何准备》

最后,祝好!希望以上建议能够帮助你在准备进入大厂的过程中取得成功。记住,不仅要注重技术能力的提升,还要关注团队合作、沟通能力和解决问题的能力。祝愿你在职业发展中取得卓越的成就!如有任何问题,请随时向我提问。

image.png

2023-07-12 对框架源码阅读的讨论

提问:

匿名用户 提问:
苍何老师,我想问下现在面试对框架源码考察的要求是怎样的? 之前有人叫我去看nacos 的源码,也有人叫我去看sentinel 的源码,还有的叫我去看kafka ,dubbo 的源码,还有spring相关的各种源码,还有netty源码啥的…… 我之前看过一点spring的源码,但是看完不久就忘得一干二净了……,但是有的招聘要求确实对框架底层要求熟悉得很深,我想问问苍何老师哪些框架的源码是比较重要需要熟练掌握的呢?如果有些框架平常工作没用到,比如我们公司用的SCA,没用到dubbo和kafka,那需要深入理解dubbo和kafka吗? spring相关的框架是不是需要重点掌握源码?别的一些框架呢?还有比如像JDK相关的源码和JUC相关的源码是不是也很重要呢?

同学你好,在我们讨论一件事有什么价值之前,有两个问题我们要必须清楚,1 这件事是否是有益的 2 这件事是否适合现在的自己,是否能解决自己当前的刚需。
第一个问题,学习一些框架源码肯定是有益的,这个毋庸置疑的。
第二个问题,对于当下的自己是否有必要,有没有必要当做提升自己或者一定要变成必读的部分。这个我们大多数人并不确定其实。

考察对源码的理解实际是考察你的技术深度,如果你能将框架中的一些设计原理越能详细的说出,理解对,说明你不但基础好,而且在技术深度上有一定的造诣。

框架的源码没有必要形式去看每行代码,就算知道框架每个地方是怎么实现的,就像我们抄写了一遍课文,然后每个地方加自己的注解一样,也不会印象深刻, 过一会就忘。

建议从以下几点去学习框架源码:
1、学习框架的设计思想
也许框架里写了很多api,实现了很多功能,但是其一些核心的设计上可能用到的设计思想都是一样的,我们不需要重复的学习理解每个api是具体怎么写代码的

2、代码技巧和代码风格
一个框架被开源被大多数人使用,一定有其高深的地方,我们可以学习风格

3、更多的去延伸场景,针对性的学习
比如spring的源码就可以去针对性的学习如IOP思想

4、对比性学习
如springcloud和dubbo,这两个框架可以对比的看源码。

至于JDK的和JUC的源码,在工作中需要时就去了解加深印象,没必要花大量时间直接去搜哈这部分,Spring源码确实很经典,可以好好学习下。

Guide哥分享

2022-10-11 大佬给软件工程师的4点学习建议

原贴地址:https://twitter.com/ykdojo/status/1579503962427772...(需要梯子)

新知识输入可以类似构建一个项目

image.png

确保底层建筑

image.png

像软件开发一样迭代获取新进展

可视化增长。

image.png

学会拆分问题

image.png

2022-09-27 推荐两篇关于 Redis 线程模型的文章

推荐两篇关于 Redis 线程模型的文章,学有余力的可以看看,比较复杂:

1、Redis线程模型的前世今生:Redis线程模型的前世今生

2、Redis 多线程网络模型全面揭秘:redis - Redis 多线程网络模型全面揭秘_个人文章 - SegmentFault 思否

2023-01-09 分享 RocketMQ 的资料

前几天分享 RocketMQ 的资料:https://t.zsxq.com/09aYWW5sy,看到有球友需要 RabbitMQ 资料,于是简单整理了一下。

以官方文档:
https://www.rabbitmq.com/documentation.html
为准,尽量尝试阅读官方文档。

书籍的话,理论部分的知识可以看看朱忠华老师的《RabbitMQ实战指南》。视频的话,还是推荐尚硅谷的:尚硅谷RabbitMQ教程丨快速掌握MQ消息中间件_哔哩哔哩_bilibili,质量相对较高。另外,这份视频对应的带书签的笔记我放在了附件中。

最后,再推荐几篇文章:

1、RabbitMQ基础知识总结:RabbitMQ基础知识总结 | JavaGuide(Java面试 学习指南)
2、RabbitMQ常见面试题总结:RabbitMQ常见面试题总结 | JavaGuide(Java面试 学习指南)

RabbitMQ 在国内使用相对较少,很多公司也从 RabbitMQ 迁移到其他消息队列比如 RockeMQ(从RabbitMQ平滑迁移到RocketMQ技术实战:从RabbitMQ平滑迁移到RocketMQ技术实战),建议优先学习RockeMQ、Kafka。

[[尚硅谷_消息中间件RabbitMQ_课件.pdf]]

[[RabbitMQ实战指南 (朱忠华) (z-lib.org).pdf]]

image.png

2023-04-28 人工智能领域的巨佬吴恩达和OpenAI联合做的《面向开发者ChatGPT提问工程》

#人工智能

人工智能领域的巨佬吴恩达和OpenAI联合做的《面向开发者ChatGPT提问工程》9课时免费课程出来了,比较权威,应该碾压目前市面上所有的相关课程了。

地址:Attention Required! | Cloudflare

对这方面感兴趣的可以看看, 全程英文,基于Python,需要梯子

【【中文完整版全9集】ChatGPT提示工程师|AI大神吴恩达教你写提示词|prompt engineering-哔哩哔哩】

挂了=-=

2023-07-03 Redis 学习资源分享

#redis

重新整理完善了一下 Redis 学习资源,分享一下,涵盖免费视频教程、书籍、付费专栏以及文章推荐。

免费的视频教程的话,推荐慕课网的Redis入门:Redis入门视频教程-慕课网(一些简单的使用) 和尚硅谷的 Redis 7 系列最新视频:尚硅谷Redis零基础到进阶最强redis7教程阳哥亲自带练附redis面试题_哔哩哔哩_bilib… (阳哥出品,内容更全面,Redis版本更新,强烈推荐)。

书籍的话,强烈推荐 《Redis 设计与实现》 和 《Redis核心原理与实践》 这两本书。《Redis核心原理与实践》这本书出版日期相对近一些,主要是结合源码来分析 Redis 的重要知识点比如各种数据结构和高级特性。

除了这两本书之外,《阿里开发者手册 - Redis 专题》(Redis 的开发应用、性能优化以及 Redis7.0 的前世今生)PDF 文档也可以作为参考学习资料:https://t.zsxq.com/0bEiLJIVW

付费专栏的话,推荐一个极客时间的《Redis 核心技术与实战》,虽然未涉及到太多新版Redis的内容,但胜在内容全面且清晰易懂。另外,这门课的老师还写一个《Redis 源码剖析与实战》 ,主要讲的是Redis源码。我之前推荐过一本 Redis 7 的掘金小册,课程地址:说透Redis7-杨四正-掘金小册 。但自己看了之后,感觉总体其实也一般,比较适合想要研究 Redis 底层的小伙伴学习。如果你只是为了使用 Redis 的话,不推荐这门课程。

文章的话,推荐两篇我的总结:

1、Redis常见面试题总结(上):Redis常见面试题总结上JavaGuideJava面试学习指南
2、Redis常见面试题总结(下):Redis常见面试题总结下JavaGuideJava面试学习指南

除了这两篇文章之外,还有几篇针对Redis重要知识点详解的文章,强烈建议都看看,自认为已经总结的非常全面且清晰易懂了。

Guide 哥答疑

2022-11-02 3-5年的程序员应该侧重哪些方面的锻炼

Hxd 提问:
guide哥好,我是19年普通一本cs专业毕业的,毕业后一直做java开发,目前在一家一万人左右的互联网中厂工作,日常的工作就是拉通需求然后代码实现,线上问题排查解决之类的,现在感觉一直这样好像很难有突破,似乎走到了一个瓶颈期,想问下guide哥3-5年的程序员应该侧重哪些方面的锻炼呢,应该继续学习哪些方面的技术呢,目前裁员潮一波接一波,3-5年的程序员应该如何提高自己的竞争力呢?

个人建议可以从下面几个维度来要求自己:

  1. 底层知识比如 jvm、网络、操作系统 :不只是懂理论更会实操;
  2. 底层原理 :搞懂框架以及中间件的底层原理,举一反三。
  3. 系统设计 :知道从零开始设计一个系统,如何从零启动一个项目。
  4. 分布式 :常见的分布式理论尽量要搞懂,缓存、消息队列等等都要掌握,关键是还要能使用这些技术解决实际问题而不是纸上谈兵。
  5. 微服务 :了解如何从单体架构演变为微服务。
  6. 云原生 :算是未来的一个趋势,可以作为一个新的职业方向考虑,目前正处于蓝海阶段,具体可以参考我前几天写的这篇文章:云原生时代,程序员应该掌握哪些能力?
  7. 其他 :喜欢和尝试新技术、追求编写优雅的代码等等。

2022-08-22弄明白5种IO模型

匿名用户 提问:你好,guide哥,最近有空在补充一些基础知识,把王道考研的操作系统的课程看完了,牛客的操作系统题目也刷完了,准备上班路上再复刷一遍有空再看看书,发现课程所讲的io,主要是针对CPU之间与外部设备的io,比如:通道技术,DMA;与我们常说的五大IO模型,个人感觉主要应该是针对网络IO(如果理解有偏差,请指出),不是一样的概念,但是其实信号驱动I/O又有点类似于通道技术的方式,我想深入学习了解五大IO模型,有什么资料可以参考一下吗?还有一个疑问就是,在这次学习操作系统知识过程中,发现其实一些中间件或者数据库的一些设计理路其实借鉴了操作系统的一些设计思路,不知道这样的理解是否正确?

推荐两篇文章,讲的很清楚:

100%弄明白5种IO模型:100%弄明白5种IO模型 - 知乎

Linux IO模式及 select、poll、epoll详解:Linux IO模式及 select、poll、epoll详解 - SegmentFault 思否

2023-06-15 有没有基于 Spring Cloud Alibaba 技术栈的 实战项目

#开源项目

悟空哥的 GitHub-Jackson0714PassJava-Platform一款面试刷题的SpringCl… 这个面试刷题小程序就是基于 Spring Cloud Alibaba 开发的,附带详细的文档(部分需付费),可以看看。

另外,慕课网的这个社交小程序也是基于 Spring Cloud Alibaba 的,地址:SpringCloudAlibabaVue开发仿社交小程序-慕课网 。

顺带一提是星球大佬悟空开源的,很强

image.png

2023-07-03 偏门八股:尾递归优化

匿名用户 提问:guide 哥您好,我最近面试遇到一个问题“在设计递归函数时,我们可以选择把向下递归入口放在代码的中间或者结尾,这两者有啥区别,哪个比较好?”
我当时回答的是“放在结尾需要在栈帧中保存更多的信息,所以放中间好”。这个问题确实不会,当时也就想到这一个角度,请问 guide 哥这两种有啥区别。

尾递归的好处是,它可以避免递归调用期间栈空间开销的累积,因为系统可以为每个递归调用重用栈中的固定空间。可以理解为,在程序执行到递归函数最后一条递归调用指令时回收了当前的栈空间(其实是复用了当前的栈空间)。

具体还要看编程语言和编译器是否支持尾递归优化,比如Java编译器没有实现尾递归优化。

具体可以参考下面这两份资料
1、全面理解递归:全面理解递归-知乎
2、为什么Java编译器没有实现尾递归优化?:为什么Java编译器没有实现尾递归优化-知乎

image.png

2023-07-04 刷算法

提问:guide哥您好,我目前是中流211研一,最近学校合作的一个中厂违约了,导致暑期没的实习。目前我想准备两三个月,试试下半年年底的日常实习,目前的学习方向:
1.把java八股给过一遍
2.算法刷个200题左右
3.把之前和导师做的项目吃透。
问题:
1.学习方向有什么建议吗?
2.导师那个项目无并发要求也是单体项目,需不需要再换个项目,很困惑。

算法200道,面试大厂的话可能还是不够哈。应对一般的笔试,应该还好,不过尽量高频的题型都要刷到。

如果你没有一个比较合适的项目经验的话,建议你尽量一边学习各种框架和中间件一边做一个完整且有一些亮点的项目作为自己的项目经验。

如果不想重新做项目的话,也可以优化你导师的那个项目。《Java面试指北》的面试准备篇有好几篇关于优化项目经历的文章,建议你仔细阅读一下,应该会对你有帮助,传送门:输入密码语雀 。(cnk4)

Java 后端面试重点我在星球分享过了,一定要多花时间看看这份重点,让复习事半功倍:https://t.zsxq.com/0ch1SQFMp (非常重要!!!)。这部分内容也已经同步到了《Java面试指北》中,地址:输入密码语雀 。(cnk4)

建议你多看看《Java 面试指北》:https://t.zsxq.com/Uv3ByZn 和 JavaGuide:Java面试指南JavaGuideJava面试学习指南 。《Java 面试指北》属于是 JavaGuide 开源版的完善,两者内容互补,无重复内容,完全可以结合一起看。如果说你比较赶时间,想着突击面试的话,那就针对性地只看面试题

2022-07-22 学历和个人发展的权衡

提问

Guide哥,你好,我说说我的个人经历,我是大专转行的,原专业学的机电一体化,实习去了富士康,受不了噪音跑了,出来后很迷茫,兜兜转转去了家合肥的培训机构,但这家培训机构非常的垃圾,后面时间我几乎都在机构里看黑马和尚硅谷的视频自学,这样才找到了一家小公司。 呆了快2年后,框架旧加上都是crud学不到什么,就辞了去了杭州,因为学历低加之当时疫情正盛,最后只能去了一家外包,干了小半年后,甲方因成本问题,辞退了所有外包人员,我也就离开了我的第一家外包公司,后来去了一家甲方公司,但这家公司的框架实在太拉,框架设计的非常难用,干了半年后,身边陆续有人走了,交接的东西很多,人员又青黄不接的,我这种刚来的萌新都接了一部分,后面我觉得再不走估计年后就走不掉了,就提前辞了。 出来后,面了很多,印象深刻的,有一家甲方技术面过了,到人事跟我谈时,人事说她觉得我技术不行,给我否了,还有一家技术2面都过了,和人事谈的很好,当天让我发资料,说流程走完第二天offer就能到,结果第二天人事说很抱歉,他们项目组从其他组调人了,现在不招了,说可以给我推荐其他的子公司,我以有其它offer为由拒了。 这两次后,有点灰心丧气,又进了一家外包,也是现在的公司,外派地点是国网。呆了段时间后,感觉这也没啥学的,外包也没啥前景,加上这的上级实在难以伺候,又想跳了。 想想,到目前为止也干快4年了,虽然脑子转的没别人快,但也有自己的一套开发方法了,自我感觉也不比别人差,学历方面也报了成考本了,2年后到手,现在主要是技术上因为接触的实在太基础了,什么多线程、redis,中间件,分布式等东西都没用上,简历上不太敢写,就怕问深了露馅,现在不知道是该找个好点的项目仿写还是继续背面试题亦或是其它,希望guide哥给点意见

绝大部分公司只看第一学历,也就是统招全日制的学历。现实地说,学历将成为你以后的职业发展道路上的最大阻碍。你需要付出更多的努力才能够有机会追上那些学历比你好的竞争者。

不要迷信什么学历不重要,也不要因为学历而妄自菲薄!努力沉淀,持续完善自己的履历才是自己应该要做的事情。

不过,有一点比较庆幸的是,程序员这个行业虽然也会看学历,但比其他职业还是要好多了。如果你是法学或者金融方向,你的第一学历不好的话,那大概率就找不到对口自己专业的工作。

对于学历比较差或者中途培训转行的同学来说,如果你在初入职场的时候找不到比较好的甲方公司,外包是完全可以考虑的。

外包的门槛比较低,这也得益于程序员群体天然对外包的偏见,具体可以看这篇文章:去过外包是不是就废了? 。

这个阶段外包的薪资相比于其他甲方公司来说并不不会低,你还可以接触到很多项目。只要有心的话,还是可以学到很多东西的。

对于有几年工作经验的同学来说,进外包的性价比就非常低了。外包后期对于技术的提升以及薪资的提升都非常非常有限,天花板太低了。这个时候,我们应该考虑跳槽到一家还不错的甲方公司。

因此,对于你目前的阶段来说,进入一家不错的甲方公司更好一些。

如何才能让自己有机会进入到一家不错的甲方公司呢?

我觉得你可以从下面几方面来努力:

1、思考总结一下自己这几年做过的项目,看看有没有在技术上有亮点的项目。这个亮点最好是性能优化方向的,面试之前比较好准备一些。如果你做过的都是一些偏业务类的项目的话,在求职面试的时候会比较不吃香,尤其是面试那些系统并发量比较大的公司。

2、如果没有亮点的项目,那就只能自己破局了,比如你可以自己做一个有亮点的项目或者对你之前做的项目进行优化。切记!!! 自己不光要模拟一些生产环境可能会遇到的问题,还要知道这些问题是怎么解决的。 就比如说你用到了 Redis 的话,你自己肯定要私下模拟一下缓存穿透、单机内存不够用、Redis突然宕机等等情况。

3、八股文尽量结合实际项目,多多实践,这点在社招中尤其重要,如果只是想着被八股文的话确实没有意思。你可以通过实战项目的方式进行学习。先去实战,再去看对应的八股文,两者相辅相成。举个例子:你在项目中需要用到 Redis 来做缓存,你对照着官网简单了解使用了 Redis 之后你再去看 Redis 对应的八股文。在 Redis 八股文中,你知道了 Redis 集群的概念,你直呼好家伙,这不能解决单点风险和内存不够用的问题嘛!然后,你可以紧接着为自己的项目搭建一个 Redis 集群。

想要沉淀技术的话,公司是一方面的影响因素,自己其实还是占据主导。即使公司给不了你有技术挑战的项目,自己私下也要记得自主学习提高,学会构建并投资自己的知识组合。人生如水,人只能去适应环境,如果不能改变环境,就改变自己 。

2022-08-01 有没有SpringCloud Alibaba技术栈文章?

可以看看《Spring Cloud 进阶》:https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzU3MDAzNDg1MA==&action=getalbum&album_id=2042874937312346114&scene=126#wechat_redirect

相对视频教程,介绍的技术原理更多一些。

开源项目

2022-10-13 推荐一个开源文档在线检索预览项目

推荐一个开源文档在线检索预览项目,支持几乎所有类型(Word, Excel, PPT, PDF, Pic等)的文档存储、在线预览、共享,比较适合拿来学习或者借鉴一下作为项目经验。 后端基于 Spring Boot + Hutool + Tika(内容分析工具包) + Elasticsearch + JWT,前端基于 Vue + axios。

项目地址:GitHub - Jarrettluo/document-sharing-site: “全文档”(A…

在线体验:全文档 | 东半球最好用的知识库

2022-10-11 手写 Mini 版本的入门级编译器

再推荐一个比较不错的轮子类项目,手写 Mini 版本的入门级编译器。 这个编译器基于 Java 语言编写,有助于初学者了解面向对象编程语言编译器的运行原理。

下图可以看到,代码注释还是非常清晰的,一共只有 7 个类。 不过,想要搞懂这个项目难度会远大于普通的业务类型项目,像核心类 Parser (语法解析器)的代码量接近有 2000 行(其它 6 个类代码量比较少)。

image.png

项目地址 :https://github.com/chenyuwangjs/A-tutorial-compile...

相关资料:

  1. 写给小白的开源编译器:写给小白的开源编译器 - 削微寒 - 博客园

  2. 700行手写编译器(视频): 「700行手写编译器」Part 1:项目背景与设计思路_哔哩哔哩_bilibili

  3. 《编译器设计》:编译器设计(第2版) (豆瓣)

2023-06-18 “仿牛客社区”的项目

花了两个月做完了“仿牛客社区”的项目,感觉收获颇丰,想问一下各位入职的前辈或者已经在实习的大佬们,还有什么项目适合跟着学习的,能够写在简历上,稍微能让技术官有点问题问的项目。(本人水平有限,遇到问题虽然会思考但是完全不能只看开源项目学习,所以需要一些有视频教程的教学项目)提前感谢大家的推荐~

评论区: lottery抽奖,starter项目

2022-09-27 分享好项目《一个革命性ORM框架-Jimmer》

分享好项目《一个革命性ORM框架-Jimmer》

项目地址: GitHub - babyfish-ct/jimmer: A revolutionary ORM f…

A revolutionary ORM framework for both java and kotlin, and a complete integrated solution based on it(Include powerful cache management).

适用于 Java 和 kotlin 的革命性 ORM 框架,以及基于该框架的完整集成解决方案(包括强大的缓存管理)。

官方文档: 前言 | Jimmer

文档中附带了性能基准测试的Benchmark 作者非常肝,可以到文档里的讨论项中扫码进微信群讨论

图像处理库

生产项目慎用,毕竟项目刚诞生不久,会有一些小bug比如合成的图像过大会内存溢出。

找图像处理库的时候,发展一个功能挺全面的,分享一下。

Imglib 是一个轻量级的 JAVA 图像处理库,致力于简化对图像的常见处理,主要提供三部分的能力:图像收集(比如从 PDF 中提取图像,用到了 PDFBox)、图像处理(比如缩放、旋转、水印,基于 Thumbnailator 实现,我在「优质 Java 开源项目推荐」第 5 期推荐过这个项目)、聚合与分裂(比如多个图像合并为一个图像、合并多个图像到 GIF 文件中)。

同 Thumbnailator 一样,imglib 为开发者屏蔽了复杂的 I/O 操作,以及无需再通过 Graphics2D 对象来手动操作图像,imglib 已经自动完成了所有这些工作。

项目地址:GitHub - nackily/imglib: A lightweight image proce…

image.png

image.png

image.png

image.png

2023-03-29 基于 Java Spring Boot+ChatGPT 的平台监控及自动回复工具

Github开源项目:

基于 Java Spring Boot+ChatGPT 的平台监控及自动回复工具,支持灵活地配置多个监控任务,支持一键部署!

GitHub - liyupi/yu-auto-reply: AI 自动回复工具,支持灵活配置多个平…

鱼皮大佬写的。感觉也是很近期用于适合面试的。

image.png

2023-07-04 我上线了一个整合大厂后端技术团队优质文章的网站

#开源项目

感谢周三不Coding的推荐

我上线了一个整合大厂后端技术团队优质文章的网站~

大家好,最近我发现了一个前端的开源项目,它能够根据 RSS 订阅源去获取前端优质文章,并将其展示到集中的一个网站中。我想了想似乎后端并没有这样类似的网站,于是我就根据该项目,用 Vue3 + Vite4 + TS 重写了前端页面,并对相关功能进行了优化。

目前网站支持搜索、根据日期/作者/标签进行筛选、每日定时更新最新文章,并且支持 PC端/移动端适配。

目前网站收录了美团技术团队、阿里技术团队、阿里中间件、Thoughtworks洞见、高可用架构、阮一峰的网络日志、有赞技术团队的文章,涵盖了后端分布式、微服务、云原生、消息队列、缓存、数据库等技术。我也经常看这些团队写的文章,一般都是比较优质的。字节技术团队的产品似乎比较小众,用的人不多,我就没有将其列举出来。

我觉得这个网站在一定程度提升了搜索效率,因为这些 RSS 订阅源,有的是在公众号,有的是个人网站。很多人没有耐心去挨个浏览阅读,但是这些技术文章是相当优质的,不读的话会比较可惜。所以有一个聚合它们的网站是十分必要的,我们也能够通过这个窗口去了解、学习目前后端的前沿技术,对我们技术的提升有很大帮助。

网站地址:https://back-end-rss.vercel.app/
Github地址:GitHub-ltyzzzxxxback-end-rss根据RSS订阅源定时抓取前沿后端相关文章并实…

如果没办法访问 vercel 的同学,我重新用 netlify 部署了一遍,访问地址:后端技术相关文章gpt-rssby周三不Coding

同时为了学习 AIGC/GPT,我还上线了一个网站,也与这个类似,聚合了一些 AI 相关的文章,只不过大多数来源于公众号,可能信息密度稍微小一些。

网站地址:https://gpt-rss.vercel.app/
Github地址:GitHub-ltyzzzxxxgpt-rss根据RSS订阅源定时抓取前沿AIGCGPTLLM相关文…

大家如果对项目源码有兴趣的话,可以去看一看,核心就是用定时任务去读取 RSS 订阅源,并将其写入到本地文件中,最后推送到 Github。后端定时任务部署于云服务器,前端通过 Vercel 托管。

覆盖SSM+Redis+RocketMQ/kafka的实战项目

https://www.yuque.com/snailclimb/mf2z3k/sq5pg4

https://wx.zsxq.com/dweb2/index/topic_detail/118811814512212

cnk4

十年码农内功

《十年码农内功》系列文章已经写了 5.8 万字,制作了 150 张图片,内容涵盖缓存、分布式、网络、生产问题排查经历。 这是今天看到的一个 PDF ,分享一下。在线阅读地址:科英-知乎 (作者的知乎)。

image.png

image.png

image.png

[[十年码农内功2023.7.2.pdf]]

2023-07-11 开源的英语学习工具

分享一个开源的英语学习工具,一个开源的英语学习资料吧!

1、GitHub - Kaiyiwing/qwerty-learner: 为键盘工作者设计的单词记忆与英… (Gitee也可以搜到) :为键盘工作者设计的单词记忆与英语肌肉记忆锻炼软件 。在线使用地址:qwerty.kaiyi.cool/ 。

2、GitHub - yujiangshui/A-Programmers-Guide-to-Englis… :这就是一份 专为程序员编写的英语学习指南 ,一份由作者个人学习英语的经历所浓缩而成的英语学习宝典。这个项目非常适合想要掌握英语的朋友,尤其是哪些在英语学习上摸不着方向的英语渣。对于英语渣来说,网上杂七杂八的英语学习技巧和经验不一定会有很多帮助,甚至会误导。

非开源的英语资料网上挺多了,这里就不做推荐了。

Novel:最新 Java 技术栈 Spring Boot 3 + Vue 3 开发的前后端分离学习型 小说项目

还没有项目或者没有比较满意的项目的球友,我个人非常建议你考虑一下我之前推荐的小说精品屋这个开源项目。

真的挺不错,项目的源码我仔细看过,代码质量还是很高的,比较规范,而且,还有比较详细的设计文档。

Github :GitHub - 201206030/novel: novel 是一套基于时下最新 Java 技术栈…
Gitee:novel: novel 是一套基于时下最新 Java 技术栈 Spring Boot 3 Vu…

如果你不喜欢这个项目的话,《Java 面试指北》的「面试准备篇」中“优质 Java 实战项目推荐”这篇文章里面有更多实战项目可供选择。

个人提升

管理一年,领悟一生:迷茫、洞见与成长 (zsxq.com)

地址:管理一年,领悟一生:迷茫、洞见与成长 (zsxq.com)

遇到问题,思考问题,解决问题。不同的位置看待的东西不同。

2022-06-21 分享一个我收藏的 0 基础经典冥想视频

提问:

Guide哥有没有关于「冥想」入门和实践的经验、课程或者书籍,能分享下给我这样的冥想小白吗?

分享一个我收藏的 0 基础经典冥想视频。 这个视频是B站一个叫做范李猿的 UP 主分享的:10分钟提升专注力放下焦虑 0基础经典冥想_哔哩哔哩_bilibili 。 冥想确实非常有用,对于我来说,冥想最大的改变就是让我的内心更平静,大脑也得到了休息。坚持就好,每天抽出 10 分钟时间冥想。

设计模式

2022-05-02 设计模式学习路线 by 程序员鱼皮

作为 Guide 哥的朋友,把刚刚肝出来设计模式学习路线也在这里给大家分享下~ 面试题部分用了 Guide 哥的资料,真的很棒!

介绍

大家有没有思考过如下几个问题?

同样都是写代码,为什么有些同学的思路清晰、代码整洁;而我的代码却充满了重复和混乱,每次要修改时都无从下手、Bug 一堆?
如何写代码,才能使得项目易于扩展和维护?
我每天都在写重复的代码,如何提升水平?
为什么我读不懂大佬写的源码?是不是缺少了什么知识?

如果存在上述问题,那么我们一定要学习软件开发中的重要技能 —— 设计模式。

设计模式是软件开发人员在软件开发过程中面临的一般问题的 通用 解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

通俗地说就是前辈们在写代码时摸索出了一些不错的方法,可以用于解决一类问题、更好地开发和维护项目。于是其他软件开发者纷纷效仿,久而久之,就得出了一套优秀的软件开发方法总结。

目前最为经典的设计模式有 23 种,学习之后,不仅能帮助我们开拓思路、写出更优质的代码、提高项目的开发和维护效率;还能够帮助我们更好地阅读和理解源码,甚至可以根据文件名称直接推断出源码的架构设计(有点行话的感觉)!因此,在准备阅读框架源码前,强烈建议先学习设计模式。

此外,设计模式也是软件开发相关岗位面试的重点(尤其是大厂、后端开发岗位),建议大家有时间的话都要学习。

问题

Q:前端要不要学设计模式?

A:先学习基础的界面开发、组件库和框架的使用,之后可以将设计模式作为进阶知识来学习,想进大厂建议学习。毕竟设计模式是软件开发的通用思想 / 技能,独立于编程语言。

学习条件

至少学过一门编程语言(学设计模式时需要多写代码实践)
使用过至少一门开发框架(这样在学习设计模式的时候能够和框架的设计结合起来,更好理解)

大纲

知识

软件开发原则
单一职责原则(SRP)
开闭原则(OCP)
里氏替换原则(LSP)
依赖倒置原则(DIP)
接口隔离原则(ISP)
迪米特法则(最少知道原则)
合成 / 聚合复用原则(CARP)
设计模式分类
根据作用范围:类 / 对象模式
根据目的分类:创建型 / 结构型 / 行为型模式
创建型模式:如何创建对象
单例模式(懒汉式、饿汉式、双检锁、线程唯一单例)
工厂方法模式(类)
抽象工厂模式
建造者模式
原型模式
结构型模式:如何将类或对象结合在一起形成一个更强大的结构
适配器模式(类 / 对象)
组合模式
装饰器模式
代理模式
享元模式
外观模式
桥接模式
行为型模式:类或对象间如何交互、如何划分职责,从而更好地完成任务
迭代器模式
模板方法模式(类)
策略模式
命令模式
状态模式
责任链模式
备忘录模式
观察者模式
访问者模式
中介者模式
解释器模式(类)

除了这 23 种主流设计模式外,还有一些其他设计模式,比如 Immutable 不可变模式等,了解即可。

学习建议

对设计模式的学习和其他知识一样,先了解每种设计模式是什么?作用是什么?能够解决什么问题?适用于什么场景?有什么特点?类和对象的关系是什么(建议结合 UML 类图来理解)?再去考虑编码实现和进一步在项目中应用。
一定要多写代码实践,最好每个设计模式都实现一遍,不要去背代码,用的多了自然就能写出代码了。
每个设计模式都可以 独立学习 ,互相之间联系不大,因此可以根据自己的时间来选择性学习(比如先学重点的单例模式)。
在学会基础的设计模式后,可以分析之前学过的框架源码(比如 Spring、MyBatis 等),参考别人是如何应用设计模式的。
不要过度依赖设计模式!!!!!! 它并不是银弹,过分使用设计模式可能只会增加系统的复杂度。

学习路线

主流的设计模式共有 23 种,建议大家按照以下四个阶段来学习:

基础学习
编码实现
项目实战
备战面试

其中第一个阶段和第二个阶段 可以同时进行 ,即对于每个设计模式的学习都是:先了解、再编码实现。

一、基础学习

本阶段的目标:依次了解每一种设计模式的应用场景、特点、UML 类图,能够对设计模式有个基础的印象。

学习顺序

根据使用频率、难易度、面试考察率等综合排序,仅供参考,并不绝对!

优先:

单例模式
工厂方法模式
迭代器模式
策略模式
建造者模式
模板方法模式
代理模式
责任链模式
抽象工厂模式
适配器模式
观察者模式
外观模式

一般:

桥接模式
组合模式
装饰器模式
状态模式
访问者模式
中介者模式
命令模式
备忘录模式

低优先:

原型模式
享元模式
解释器模式

推荐资源

以下资源看 1 - 2 个就足够入门了

书籍
《图解设计模式》:https://www.aliyundrive.com/s/jcQugLGNs1V 提取码: 5i9c(强烈推荐,用 Java 语言实现,图多、有示例代码、有习题和答案,很不错)
《大话设计模式》:https://www.aliyundrive.com/s/73jZWnfAtaA 提取码: 9gc7(比较有趣)
《Head First 设计模式》:https://www.aliyundrive.com/s/GnuQcruh7Us 提取码: 9gc7
《设计模式:可复用面向对象软件的基础》:https://www.aliyundrive.com/s/T9ECaPtxzg4 提取码: 9gc7(大黑书,难度较大,有能力和时间才去读)
《JavaScript 设计模式与开发实践》:https://www.aliyundrive.com/s/tzcZCU8bqnR 提取码: 9gc7(适合前端同学阅读)
《Python 设计模式》:https://www.aliyundrive.com/s/3RNoX31XqUy 提取码: 9gc7
视频
尚硅谷图解 Java 设计模式:https://www.bilibili.com/video/BV1G4411c7N4(讲的很棒也很全面,也和一些主流框架相结合,系统学习 Java 的同学可以看)
五分钟学设计模式:https://www.bilibili.com/video/BV1af4y1y7sS(小短快科普,比较轻松)
黑马程序员Java设计模式详解:https://www.bilibili.com/video/BV1Np4y1z7BU(很完整,最后讲解了 Spring 框架的部分设计)
用一个项目讲解 23 种设计模式:https://www.bilibili.com/video/BV19g411N7yx(和项目结合,思路不错,但其中有一些直播翻车,可部分跳过)
文档
菜鸟教程:https://www.runoob.com/design-pattern/design-pattern-tutorial.html(还是比较推荐的,学过设计模式后如果忘记了,可以查看这个文档快速补回来)
C++ 图说设计模式:https://design-patterns.readthedocs.io/zh_CN/latest/
Go 语言设计模式系列博客:https://lailin.xyz/post/singleton.html

二、编码实现

本阶段的目标:依次编码实现每个设计模式,用任何支持面向对象的编程语言都可以,最好能够独立(不借助任何资料)从 0 写出每个设计模式的代码。

资源

一些源码示例,仅供参考,更多的内容可以直接在 GitHub 搜索关键词 Design Pattern 或 设计模式 :

各语言设计模式示例代码:https://github.com/wx-chevalier/design-pattern-examples
Java 23 种设计模式全归纳:https://github.com/youlookwhat/DesignPattern(教程 + 源码)
C++ 设计模式源码:https://github.com/liu-jianhao/Cpp-Design-Patterns(设计模式介绍 + 源码)
JavaScript 示例代码:
https://github.com/wchaowu/javascript
https://github.com/zy445566/design-pattern-in-javascript
Python 示例代码:
https://github.com/wklken/py-patterns
Go 示例代码
https://github.com/mohuishou/go-design-pattern

三、项目实战

本阶段的目标:通过做项目或阅读项目源码来进一步强化每个设计模式的实际应用。做到能根据某个场景主动选出合适的设计模式来优化代码、灵活运用,并且能够通过文件命名、项目目录结构等途径来快速判断出某个框架是否使用了设计模式。

可以先通过一个视频了解设计模式的实际应用:

实际工作中,如何运用 Java 设计模式:https://www.bilibili.com/video/BV1tK4y1s7Uo

列举一些设计模式在框架源码中的应用:

部分内容源于网络

Spring
工厂模式:通过 BeanFactory 和 ApplicationContext 来创建对象
单例模式:Spring Bean 默认为单例模式
策略模式:例如 Resource 的实现类,针对不同的资源文件,实现了不同方式的资源获取策略
代理模式:Spring 的 AOP 功能用到了 JDK 的动态代理和 CGLIB 字节码生成技术
模板方法:可以将相同部分的代码放在父类中,而将不同的代码放入不同的子类中,用来解决代码重复的问题。比如RestTemplate、JmsTemplate、JpaTemplate
适配器模式:Spring AOP 的增强或通知(Advice)使用到了适配器模式
观察者模式:Spring 事件驱动模型
桥接模式:可以根据客户的需求能够动态切换不同的数据源。比如我们的项目需要连接多个数据库,客户在每次访问中根据需要会去访问不同的数据库
Spring MVC
组合模式:WebMvcConfigurerComposite,树枝和树叶都实现了相同的抽象类或接口 WebMvcConfigurer
责任链模式:DispatcherServlet 依次拦截和处理请求
适配器模式:HandlerAdapter 处理器适配
MyBatis(参考:https://blog.csdn.net/aha_jasper/article/details/108701785

没了=-=

Builder + Factory 模式:创建 SqlSession 工厂和 SqlSession
模板方法模式:BaseExecutor 定义执行器基本流程
解释器模式:SqlNode 动态解析 SQL
单例模式:ErrorContext 线程唯一
装饰器模式:Cache 的实现用组合而非继承实现更灵活地缓存方式结合
迭代器模式:PropertyTokenizer 利用迭代器模式实现属性解析器
适配器模式:Log 适配不同的日志框架
Google Guava(参考:https://blog.csdn.net/aha_jasper/article/details/108695561
Builder 模式:更方便地构建内存缓存
Wrapper 模式(代理模式、装饰器、适配器模式):轻松实现对类的扩展
Immutable 模式:不可变集合实现,如 ImmutableList、ImmutableSet、ImmutableMap 等
更多可以自行学习:
Netty
SpringBoot
Tomcat
Dubbo
Spring Cloud

资源

《设计模式之美》专栏:https://blog.csdn.net/aha_jasper/article/details/105695163

(原作者 Google 王争设计模式之美:https://time.geekbang.org/column/intro/250,是极客时间的付费课,里面的内容,尤其是开源实战和项目实战的部分讲的很好!有收获的朋友还是请支持正版哦)
Spring 相关框架源码分析视频:https://www.bilibili.com/video/BV1kF411e7WR(结合设计模式,包括 Spring、SpringMVC、SpringBoot、Tomcat 等)

四、备战面试

面试时对设计模式的考察主要有 4 种形式:

直接问你某个设计模式的作用和大致的原理,考察你对设计模式的了解程度
让你手写某个设计模式的代码,考察你对设计模式的熟悉程度和编码能力
给你一个实际的业务场景,让你去设计系统,考察你对设计模式的理解应用能力和逻辑思维
问你某个框架(轮子)的核心设计和源码细节,考察你对设计模式的理解应用能力

经典面试题

理论:简单介绍一下软件开发原则?
理论:设计模式如何分类?
你用过哪些设计模式?举例说明设计模式在你的项目或是某个框架源码中的应用。
说出某个设计模式的优缺点?什么时候使用它?
单例模式有哪些实现方式?分别有哪些优缺点?请手写其中一种
原型模式和单例模式的区别是什么?
简单工厂、工厂方法和抽象工厂三者有什么区别?
介绍一下代理模式,说一下静态代理和动态代理(比如 Spring AOP 就用到了)的区别?

资源

设计模式面试题汇总:https://pan.baidu.com/s/1tjIGc7pnHjgiFPo0fhcKXw 提取码: wuan(Guide 哥整理,很全面 👍🏻)
面试官最爱问的13道”设计模式”题(视频):https://www.bilibili.com/video/BV1fR4y1N74H

加油小伙伴们!

面试

2022年11月08日 NLP 转后端开发,顺利拿到B站、未来、字节实习 offer!!

简单介绍一下我的基本情况,上海双非本 + 985 硕,目前在读研二。本科 + 研究生大部分时间都在搞算法, NLP 相关,今年终于认识到了理想和现实的差距,遂在 5 月份下定决心转后端开发。之后处理一些事情,暑假 7 月底的时候正式开始学习 Java,历时三个月, 9 月底开始投日常实习,10 月 17 结束。面试过的公司包括: B 站,蔚来,百度以及字节,B 站挂在二面,其他均拿到日常实习的 Offer,最终选择了字节跳动。

从以上我的基本情况大家能看出,我的战线比较短。但是在这些时间里,我的作息基本上都是早 7 晚 11,很辛苦。

这篇文章首先分享我的面试经历,后面的部分与大家分享我的学习经验。

面经部分

下面的部分总结了面试过程中被问到的知识点(还记得的部分),以及我个人的一些心得体会,供大家参考。

百度

百度给我的面试体验还是蛮好的,是我面试的所有公司中唯一一家对八股考察非常详细的。一面是非常详细的八股面试,涉及到 Java 基础知识、数据库、spring、jvm、多线程、场景设计等等,基本上准备的都被问过了,但是整体来说难度不高,知识面比较广但是不会深挖。二面来说区别就非常大了,注重实践能力的考查,而且会深入到底层原理。

面试之前会有自我介绍的环节,包括项目介绍。百度两面对我的项目提问都不多,可能是我介绍项目的时候就比较详细的原因。

接下来的部分是知识点整理:

百度一面(1h+):

常用 GC 算法,常用的垃圾收集器, G1 了解吗
场景题: cpu 打满且频繁 full GC,怎么解决?
有 jvm 调优的经验吗?实际工作中遇到过内存相关的问题吗?用过哪些堆栈工具调试?
Mysql 索引,数据结构为什么使用 B+ 树
索引覆盖了解吗
索引失效的场景
简单描述一下数据库的四种隔离级别以及对应的三种相关问题
MVCC + 锁 保证隔离性
造成幻读的原因了解吗,快照读、当前读。
数据库自增 ID 和 UUID 对比
HashMap 源码,数据结构,如何避免哈希冲突,对比 HashTable
HashMap 源码中,计算 hash 值为什么有一个 高 16 位 和 低 16 位异或的过程?
为什么重写 equals 还要重写 hashCode,不重写会有什么问题
ConcurrentHashMap 底层实现,扩容问题。
如果让你自己实现哈希表,你会考虑什么问题?
场景题:亿级别黑名单、短链接,你考虑使用什么数据结构?布隆过滤器、前缀树。其中布隆过滤器问了基本的原理和实现方式
Java 引用类型,强软弱虚
Java 是引用传递还是值传递
Object 类你了解哪些方法
接口和抽象类的区别
线程池核心参数,以及工作原理
ReentrantLock 对比 sync 锁
lockInterruptibly()、acquire()、tryAcquire() 方法
CAS 机制了解吗,存在什么问题
对象锁和类锁的区别
如果让你自己实现阻塞队列,如何实现?阻塞唤醒这一部分,如何实现?
ThreadLocal ,Volatile
看你项目中用到了 Netty,简单介绍下吧。这里还有个 问题是问到 Netty 和 SpringBoot 整合的,但我一直都没理解她想问什么
粘包拆包问题,Netty 解决粘包拆包的 Decoder
Spring 事务了解吗,Spring 事务的注解不生效,是什么原因
算法题: 手写快速排序,时间复杂度,稳定性

整理感觉不错,基本都答上来了,按照 Guide 哥星球里的内容,认真准备就好。

百度二面(45 min):

看你项目中用了一致性哈希做负载均衡,简单介绍一下
项目中 CompletableFuture 如何使用的
算法题:给定一个字符串,找到其中最长回文串
计网和组成原理学过吧,你认为哪个掌握的好? 我选了计网。这一部分问的很深入,我没来得及记录,以下部分只是一些零散片段,但是整体问的时候是有逻辑的。
OSI 七层模型
TCP 三次握手,四次挥手整个过程包括状态的转换。为什么是三次握手、四次挥手。发送 Fin ,实际的意义代表什么?(发送方没有数据要发送了,可以断开连接)
四次挥手,为什么等待 2 MSL
流量控制、拥塞控制
后面关于网络就更深入了,TCP 底层是怎么实现的,如果让你用 Java 模拟 TCP 的过程,做一个仿真,你有什么想法。大学学习计网的时候,协议栈之类的了解过吗(这部分我都不懂,认栽了)
看你项目中用到了 Spring,自动装配的过程了解吗。
Spring 启动类的注解,介绍一下
因为我项目中用到了,所以被提问了 Spring 二次开发常用的扩展点,还涉及到了 Bean 的生命周期。 BeanPostProcessor,在你项目中如何使用的
Spring 中你常用哪些注解? Autowired 实现原理

计网仿真 TCP 以及后面深入的部分我不懂, Autowired 实现原理 没说清除,其余的都答上来了。

字节跳动

在我整个的面试过程中,字节给我的体验是最好的。一面二面的面试官都非常好,面试的问题、要求都说的很清楚,需要注意的点都提前告诉了我,甚至二面的面试官会提醒我,”在回答问题的时候这边会有敲键盘的声音,是我在记录,不要影响你回答问题。”对于初次求职面试,体验感拉满。

除此之外,字节的面试和百度思路不一样。百度是从八股出发,引出一些实际场景遇到的问题。字节几乎没有八股,是从项目出发,结合工程经验,主要考察思考的过程,关键点答出来之后,结果对错可能不是很重要(这里是我主观臆断的)。

字节一面(1h):

自我介绍,项目部分主要介绍了 rpc 项目,后续的问题都是基于这个项目
rpc 远程调用的整个流程
项目中的 SPI 机制,介绍一下原理以及你做了哪些改进
项目中用到了负载均衡算法,详细介绍一下
一致性哈希的原理,虚拟结点
项目中的序列化方案,为什么序列化,你都了解哪些常用的序列化方法。
你项目中使用了 Kyro 序列化,优点你提到了,缺点了解吗
通信协议是你自己设计的,假如后面需要变更,比如添加新的字段,你项目中如何处理的?
服务的灰度发布介绍一下,如何实现的?
Zookeeper 作为注册中心,假如崩溃了怎么办?这里开始连环问了
你提到了 Zookeeper 的一致性,它是如何保证的?
ZAB 协议,选举的过程,这里问的很详细
Zookeeper 是强一致性吗?
网络分区了解吗,CAP 理论
Zookeeper 如何应对网络分区的,脑裂问题了解吗,如何解决?
假如我同一时间有大量服务发布,你提到了 Zookeeper 只有主节点负责写, 怎么解决?假如主节点崩溃了,新选举出的主节点仍然没办法面对我的大流量,也崩溃了,如何解决?
MQ 的原理,你知道哪些 MQ,各自有什么特点,什么时候需要用 MQ
你刚才提到了服务端保护机制,如何实现的?这里我答了限制连接数以及接口限流,基于责任链模式。之后问了用到的令牌桶以外的常用限流算法。
算法题:链表反转,你知道的所有实现方式。这里我写了递归和非递归两种。

整个面试的过程中大脑都是高速思考的,甚至从面试官的问题中得到了好多启发,是背八股掌握不到的,体验非常好。面试的问题几乎都答上来了,有一些不太熟悉的在面试官的提醒下也都回忆起来了(这点非常 nice,其他面试不会就直接过了,而字节会认真引导你,看你究竟掌握到什么程度)。事后 hr 小姐姐还告诉我面评非常好,鼓励我认真准备二面。

字节二面(1h):

字节二面的经历比较魔幻了, 面试官在伦敦有时差,因此是晚上九点开始面试的,由于面试官比较忙,整个面试过程比较简单,自我介绍 + 项目介绍之后简单提问了几个问题(没有印象深刻的技术问题,这里就不重复整理了),沟通了一下实习时间,直接做算法题了。

算法题:有一个 n * n 的棋盘,每个格子有 RB@ 三个状态,R 表示红色,B 表示蓝色,@ 表示此路不通。机器人从左上角走到右下角,每次只有上下左右四个方向选择,相同颜色之间没有代价,跨越不同颜色代价为 1,求解机器人从左上角走到右下角,最少的代价。
这里我用回溯求解的,很快就写出来了,思路也没问题。但是复杂度计算卡住了,在面试官多次且反复的提示下,算出来了。 最后提问环节面试官跟我说后续优化可以加一些剪枝操作

二面没有遇到难度比较大的问题,大部分时间都被我卡在了算时间复杂度(很菜勿喷)….

B 站

综合来说,B 站面试给我的体验是非常差的,一面的时候我感觉还没进行比较深入的交流,问了一些八股,很快就结束了。二面上来之后,问了你觉得自己项目有什么亮点吗,然后就来了一道 Hard 算法,又结束了…….

B 站一面(30 min)

Rpc 远程调用的流程
一致性哈希算法详细介绍
为什么选用 Zookeeper 作为注册中心,注册中心作用是什么
动态代理
Redis 在你项目中如何使用的,穿透、雪崩、击穿了解吗
你项目中用的是 RabbitMQ,为什么,和其他 MQ 对比如何?
RabbitMQ 的原理
你项目中的 灰度发布、分组管理如何实现的
无算法题

之后在我以为他准备深入提问的时候,面试官告诉我面试结束了,整个过程不到 30 min,而且没有算法题。

B 站二面(30 min)

简单介绍下你的项目,是工程项目、学校项目还是自己学习的
你认为项目中有什么亮点?
算法题:K 个有序数组,输出最终排序后的数组 (K merge)。

B 站是我第一个走面试流程的公司,二面在字节一面的前一天。B 站二面是我第一次在面试过程中写算法题,结果就遇到个这,当时心态是崩掉的。因为第一次确实有些紧张,思路不清晰。虽然是力扣 Hard 难度吧,但是事后觉得也没有很难,做不出来还是大多归因于自己。但是复盘的过程中,我发现在面试的过程中,虽然太紧张了没实现出来,我把两种解题思路都思考到了,并且面试官提问时间复杂度,在提示下也求解出来了(很菜勿喷),整体表现自我感觉也算可圈可点吧。

给大家的经验就是,平时刷题的时候时间复杂度求解一定要重视!

备战部分

下面是我从七月底写出第一行 Java HelloWorld 直到现在的大致时间表:

七月底,正式开始投入时间学 Java,在师兄、师姐的推荐下选择了 JavaGuide 作为主线的学习资料,之后加入了知识星球,认真阅读了关于学习路线的内容。

七月份用了一周多的时间熟悉 Java 语法。前期主要跟随 小码哥恋上数据结构课程,一边复习算法数据结构,一遍熟悉 Java 语法。

八月份开始,选择了 Guide 哥推荐的千峰商城项目作为入门,大概用了两周时间,全程跟随视频敲完代码,收获非常大。这一过程中,恋上数据结构这门课程是同步学习的,基本就是早晚做项目,下午学算法。

多线程、Jvm 方面的知识,我选择了马士兵的课程。这两部分是同时学习的,理解为主。选择马士兵课程的原因之一,是因为马老师讲课是以面试为导向的,一边理解一边掌握八股文了,效率比较高,总共耗时两周左右。

网络 IO 部分的知识 以及 Zookeeper、MQ 等中间件,这三部分是一起学习的,参考的资料包括马士兵课程、稀土掘金的 Zookeeper 课程、慕课网的 MQ 课程以及尚硅谷的一些资料,耗时大概一周左右吧。
以上打基础大概花费了一个月的时间。

九月份返校之后,开始着手准备简历上的项目,花了一些时间在 Guide 哥的知识星球里翻看优秀开源项目介绍,选择了 Guide 哥的手写 Rpc 项目以及星球推荐的 IM 项目。

有了基础之后,项目做起来还是比较快的,加上有源码可以参考,各自用了一周就基本实现完成了。这里总共耗时两周。

后面的时间里,我针对这两个项目做了深入研究。在极客时间和稀土掘金里,我分别找到了 rpc 和 IM 的相关课程。由于都是文字的形式,加上自己实现过基本功能,读起来非常快,快速整理出了课程内作者对于项目深入思考的部分,之后融合到自己的项目中。

这里我认为是非常关键的一步,在面试的时候我能够顶住面试官的连环问,和这些课程中的相关内容以及思考题的深度是分不开的。在这一过程中,我还有幸加了几个作者大大的微信,不停地和作者交流自己的思考,甚至发现了课程中的一些小瑕疵。

非常幸运他们都很有耐心,给予了我很多指导,尤其是 crossoverJie 大佬,几乎是有问必答,甚至在我面试之前,还给予了我很大鼓励(相当感动)。

大概到九月中旬,我就开始整理简历并且投递了,之后一边复习八股,一边完善项目。

九月底,我的项目已经基本整理完成了。我花了一周的时间系统梳理八股文,制作了很长的脑图帮助我回忆知识点。

十月份,国庆节的假期里,我保持着每天 15+题的速度,快速找回了算法题的手感。由于时间真的太仓促了,时间复杂度这一块我没有重视,后面也付出了惨痛的代价。提醒各位读者,算法复杂度的计算一定要重视起来。

最终功夫不负有心人,我收获了百度、蔚来以及字节的日常实习 offer。JavaGuide 以及知识星球内部的 《Java 面试指北》在我整个备战的过程中起了很大作用,是我的指路明灯。

2022年11月01日 秋招总结——机械转码的秋招历程

从去年7月份开始敲下第一行Java代码开始,到10月开始做谷粒学院的项目,再到3月份完全由自己负责的小程序后端成功上线,3月底开始找实习,7月份开始找工作,一年下来也走过一些弯路,不过整体来说学习效果还不错。主要的学习路线其实也是按照尚硅谷给的,还有知乎上的一些分享。

  1. 基础知识
  2. Java: Java学习主要就是看尚硅谷的视频,看得比较快,好多也没有记住,但是之后在写项目、面试的时候,会去看一些博客(CSDN,掘金,简书),之后还看了一部分《深入了解Java虚拟机》这本书
  3. 数据库: 数据库主要就学习了MySQL和Redis,MySQL基础看得尚硅谷视频,当然深挖还是看了《高性能MySQL》这本书,Redis看的黑马视频。当然MySQL要和Java建立连接,因为现在都是采用框架了,快速看了jdbc。准备有时间再看下MySQL和Redis相关的视频。
  4. 数据结构与算法: 这方面基本上就是刷题和看书,看了《大话数据结构》这本书,讲的还是偏简单的,刷题就是力扣,先刷了题单《代码随想录》,然后刷力扣的题单hot100和剑指offer,再加上每日一题和偶尔打打周
  5. 计算机网络和操作系统: 由于我是非科班的,所以这方面基本上就没了解过,面试的时候也很吃亏,很多都答不上来,只看了一些总结的,基本上是JavaGuide和小林coding,工作之前希望可以吧这些东西补上来
  6. 框架知识(Spring+SpringBoot+MyBatis): SSM是目前Java的主流框架,学习基本上就是看尚硅谷的视频,学这个的时候走了很多弯路,看了太多关于源码的视频,但是其实那些源码问题写项目基本上也用不到,面试的时候背背八股文就好了,感觉框架会用就好了,一些特别细节的东西,可以用到再去深究,不要太多的关注源码级别的知识。
  7. 其他工具类
  8. Git、maven、docker、nginx: 这些知识基本上没有去看视频,而是做项目的时候遇到一些问题再去从查资料,看一些总结类的东西或者视频,基本上也没有学全,但是大致的操作也会,面试的时候其实最多问下指令或者设置过程,也没有去深究细节的东西
  9. SpringCloud: 这个其实也是跟着项目去学的,没有成体系的去看视频,希望之后可以补下
  10. 项目: 项目做了一个谷粒学院和一个小程序的后端。谷粒学院是一点一点跟着敲得,然后会记笔记总结,这个项目总体来说还是不难,没有谷粒商城复杂,也没有秒杀高并发这些东西,感觉挺适合入门的,本来想看完谷粒学院去做谷粒商城,被同学拉去做小程序了。我是复杂小程序的所有后端,所以还是比较锻炼人的,因为这个小程序本身要上线,所有有很多细节问题。本身小程序没有太复杂的问题,但是当写下来一个庞大的项目的时候,遇到业务问题或者技术问题去网上各种查资料,感觉自己也是提升了很多。
  11. 面试相关
  12. 八股文: 背八股文还是很重要的,但是要理解的去背,我基本上就是看得JavaGuide,然后数据库和计网看得小林coding。其实最好的方式是按照八股文的大纲,去找书看,感觉看书可以成系统的去了解这方面的知识,这样理解下来背起来也很容易,而且可以让面试官杆你的基础很扎实
  13. 项目方面: 其实我的两个项目都没有太复杂的东西,没有高并发和秒杀等,但是我感觉对于项目,首先需要先梳理出整个项目的架构、项目包含的内容、项目的一到两个难点,针对项目去看一些东西,比如我的项目用了大量的redis,所以我又仔细的去看了一些redis的东西。总体感觉来说,要对项目有全面并且细致的了解,并且在讲的时候去代入一些自己的思考,在项目的某一方面去做一些针对性优化
  14. 总结:多去总结,我一般会记下来我答的不太好的地方,去查资料巩固一下,其实很多公司问的问题都有相似的地方,所以没准下一次就能再次被问到。不要恐惧面试,多投递,面试大厂真的可以学到很多东西

2022年10月29日 滴滴Java面经-一二三面

写下面经,回馈球友

一面(48min)

1.说说面向对象的三大特性

2.抽象类和接口的使用场景(答了jdk动态代理和Cglib,没很好地回答出来)

3.Java线程调度

4.I/O模型,Spring使用的I/O模型

5.访问baidu.com的过程,越详细越好(说了近10min)

6.http报文类型

7.https与http

8.加密过程,为什么两种加密都要使用

开始做题:

输入:第一个参数,线程数量;第二个参数,打印次数

eg:输入:3,5

输出:ABCABCABCABCABCABC

跟面试官说了两种写法,分别分析时间、空间复杂度

10min后二面

二面(30min)

二面没录音

大概问了项目相关的内容,然后根据项目扩展

多线程相关知识,现在还记得的问题:

1.线程有哪些状态、如何转换的

2.Synchronized和AQS(说了10min,面试官问我是不是刚看过源码)

其他记不太清了,主要是项目问题+多线程相关的

做题:

String转换为Integer

10min后通知三面,因为当时太晚了,约到两天后。

三面(1h+)

主要是基础知识+项目+做题

基础知识

1.你觉得你那些方面学的比较好?(说了多线程等)

2.你说多线程方面学的好,那如果你遇到这样一个场景:有1000个接口,接口可能会有多个线程并发访问,统计每个接口访问次数(有点后悔说了多线程)

3.说说Java两种锁的区别?

4.说说你对索引的理解

5.索引的缺点?

6.联合索引?联合索引的结构?(这里没太懂面试官的意思,联合索引不就是B+树吗)

7.索引生成过程

项目相关

感觉面试官不相信我自己做的这个项目,一直在质疑我真的完成了这个项目吗,最后还找我要GitHub,可惜我网不好,没登上,他说后面让hr找我要

做题:

海量日志,找出出现次数最多的10条记录

泡池子挺久了,希望能有好消息吧~

2022-09-09 讲讲多线程可以如何优化你的项目

12个实战案例带你玩转Java并发编程(1元专享)

这个课程讲的是 12 个并发的设计模式,结合案例分析并发设计模式使用,不错的一个课程。当然有不少是从别的网课用自己的话讲了一遍,但是整个整合的还行。

可以从多线程设计模式上考虑下,比如:
1、不可变模式
2、挂起模式
3、两阶段中止模式
4、生产消费模式
5、主动对象模式
6、pipeline模式等
通过这几个模式来引出你对多线程的熟悉程度,及相关类的应用场景

2023-03-27武汉微众银行一面

  1. 接口抽象类区别
  2. 抽象类可以用final修饰吗,为什么
  3. java访问修饰符有哪些及区别
  4. java线程有那些状态
  5. 什么时候线程会进入阻塞状态
  6. java线程池创建有哪些参数,作用
  7. 他的饱和时间底层如何实现的,怎么才能实现保持一定的时间然后销毁
  8. java的锁知道那些
  9. 说说mysql的锁
  10. 事务的隔离级别以及分别解决了什么问题
  11. mysql MVCC,如果我就要使用当前读,有哪些方式,他们的区别
  12. mysql索引(感觉面了三家三家都在问这个),myisam和innodb叶子结点区别是什么?
  13. 我们说的mysql回表指的是什么,如果说userid是主键索引,username是二级索引,select * from xx where username = 会不会回表
  14. @transactional注解提供哪些事务传播级别
  15. @transactional注解失效的场景
  16. @transactional会针对哪些异常进行回滚
  17. runtimeexception和exception的区别是什么,java受检异常和非受检异常区别是什么
  18. 你们在用springboot是吗,你对starter的理解是什么
  19. 你工作中用到哪些多线程方面的知识,列举场景
  20. 我创建hashmap制定初始大小31,实际是多少
  21. 你有什么要问我的吗?(经典必考题)

2022-08-25 ZoomJava开发面经

1、除了项目上写的序列化框架还了解其他序列化框架吗?
2、解释一下什么是粘包,什么是拆包
3、有没有了解过netty里自己解决粘包拆包的?
4、HTTP如何解决粘包问题的?(header字段?)
5、HTTP中的content-length和chunk(听着好像是这么读的)解决粘包知不知道?
6、这个RPC框架是基于看过别的框架的东西吗?
7、zookeeper作为注册中心是怎么存储的,存储了什么数据在zookeeper中?
8、服务端将服务注册进去,客户端请求服务,这个过程在项目中大概是什么样子的,描述一下?
9、为什么要把每个服务端注册成临时节点?
10、客户端发起调用的时候每次都去获取节点信息吗?
11、如果每次都获取的话性能就会比较低,有没有什么优化方案?(用watcher)
12、使用watcher的时候需要注意什么?watcher回调完后还要做什么事情吗?
13、有自己搭了zookeeper集群吗?
14、zookeeper集群里会有哪些角色?
15、为什么要设计observer呢?它既不参与leader竞选,也不参与数据过半写成功?
16、rpc中应用线程池调用者发送调用后,请求跟响应是怎么异步关联的呢?(回调)
17、基于回调要怎么异步关联起来呢,有没有什么思路?
18、线程池的核心参数是什么?
19、如果线程池核心线程数设置为5,最大线程数设置为10,阻塞队列是一个无界队列,一直提交线程,线程数最大能达到多少?
20、如果线程池核心线程数设置为5,最大线程数设置为10,阻塞队列大小也设置的是10,线程池刚启动的时候有多少个线程?
21、看过Java线程池的源码吗?如果想监控线程池的资源,通过看它的源码,它有没有提供什么方式来实现这个功能?
22、redis部署的是单机还是集群?
23、redis哨兵模式和集群模式分别是用来解决什么问题的?
24、集群模式当获取数据时,可能会回复asyn、moved,了不了解这些回复分别代表什么?(不了解。。。)
25、使用集群模式的话会有什么限制吗?(不同节点上的数据无法使用事务)
26、如果想使用事务操作的话,希望key能分布在一个节点上,有没有什么办法可以让key分布在同一个节点上?(redis提供了这样的功能hashtag)
27、redis用到了哪些数据结构?
28、zset的底层数据结构有没有了解过?
29、为什么zset要在数据比较小的时候使用压缩列表呢,压缩列表是一个什么样的数据结构,能带来什么好处呢?
30、redis的rehash有了解过吗,是怎么进行rehash的?
31、Java线程有哪几种状态,以及状态之间如何转换的?
32、线程中断有没有了解过?
33、Java中的原子类是怎么实现的知道吗?
34、volatile关键字有什么特点,原理是什么?
35、Java中有什么无锁操作的方式?
36、ThreadLocal的基本原理是什么?
37、Java的泛型了解吗?
38、如果有两个类,一个animal,一个dog,dog继承于animal,现在有一个animallist,它的泛型是animal,然后有个doglist,泛型是dog,doglist能不能赋值给animallist?不能
39、说说数据库的索引
40、聚簇索引和非聚簇索引能介绍一下吗?
41、哪些类spring会帮我们管理呢?
42、配置了@Service就一定会放入bean中吗?有没有什么条件?
43、如果第三方jar包中有一个@Service,会被扫描进来吗?
44、第三方jar包要想被扫描进来的话是要将它的类路径加载进spring是吗?
45、第三方jar包如何保证spring会将它加载进spring中?
46、Spring中为什么要将bean交给Spring来管理?
47、如果我自己弄一套Controller、Service、Dao,不依赖spring容器,能不能work,这个过程应该怎么写知道吗?不知道。。。
48、PrepareStatement预编译的过程是在哪里?
49、为什么使用statement会有SQL注入的风险呢?
50、如果有一个SQL语句,我想进行SQL注入攻击,应该怎么样攻击,怎么样设计SQL语句?
51、Spring的bean通常会new多少个对象,比如userService是每一个请求来了就new一个userService还是全局共享一个userService?
52、就拿这个userService来说,假设里面有个一个getUserById的方法,那应该把这个userService的scope设置成单例的还是session的?singleton,因为一般来说service和dao都是无状态的,只是通过service和dao来操作数据库,使用session或者prototype的话也可以,只是会浪费资源。
53、如果在线程池中的task中出现了没有捕获的异常会对当前线程有什么影响?对线程池有什么影响?
54、如果出现上面这种异常应该对线程进行什么处理呢,线程池应该怎么处理呢?
55、做前后端分离的时候,你项目里前端登录状态是怎么保持的?
56、有没有其他更好的方式?(jwt)
57、为什么使用cookie会导致csrf攻击?
58、为什么使用jwt能避免csrf攻击呢?
59、在goole域名中查看baidu域名的cookie能查看到吗?

2022-08-25 整理了 10 个关于如何写好简历的建议

  1. 一定要使用 PDF 格式投递,不要使用 Word 或者其他格式投递。这是最基本的!
  2. 尽量避免主观表述,少一点语义模糊的形容词。表述要简洁明了,简历结构要清晰。
  3. 精简表述,突出亮点。校招简历建议不要超过 2 页,社招简历建议不要超过 3 页。如果内容过多的话,不需要非把内容压缩到一页,保持排版干净整洁就可以了。
  4. 不会的东西就不要写在简历上了。注意简历真实性,适当润色没有问题。
  5. 技术博客、Github 以及获奖经历等可以直接证明自己能力的东西,能写就尽量写在这里。不过,如果技术博客和 Github 上没有什么内容的话,就不要写了。
  6. 技术名词最好规范大小写比较好,比如 java->Java ,spring boot -> Spring Boot 。这个虽然有些面试官不会介意,但是很多面试官都会在意这个细节的。
  7. 工作经历建议采用时间倒序的方式来介绍,实习经历建议将最有价值的放在最前面。
  8. 将自己的项目经历完美的展示出来非常重要,重点是突出自己做了什么(挖掘亮点),而不是介绍项目是做什么的。
  9. 项目经历建议以时间倒序排序,另外项目经历不在于多(精选 2~3 即可),而在于有亮点。
  10. 个人评价就是对自己的解读,一定要用简洁的语言突出自己的特点和优势,避免废话! 像勤奋、吃苦这些比较虚的东西就不要扯了,面试官看着这种个人评价就烦。
  11. PDF 这种格式通用性更强,几乎所有电脑或者手机都可以直接打开,不依赖特定的软件,出现乱码的概率也更低,样式通常看着也更舒服一些。

2022-08-24 Redis 线程模型常见面试题总结

面试常问:Redis 线程模型常见面试题总结

面试被问到 Redis 的话,大概率会问到 Redis 线程模型。

简单总结了一个相对简洁易懂的版本,针对面试和工作完全够用了。

对于读写命令来说,Redis 一直是单线程模型。不过,在 Redis 4.0 版本之后引入了多线程来执行一些大键值对的异步删除操作, Redis 6.0 版本之后引入了多线程来处理网络请求(提高网络 IO 读写性能)。

Redis 单线程模型了解吗?…

https://articles.zsxq.com/id_9xn6774r73jc.html

2023-07-03 简历优化

例如,像图一这种介绍技能方式同样是不太可取,竟然把 Java 集合的 ArrayList和 HashMap 、数据库的 ACID 特性等等细节部分都写上去了。

图二是一个比较合适的技能介绍模板,你可以根据自身情况以及岗位招聘要求做动态调整,核心思想就是尽可能满足岗位招聘的所有技能要求。

image.png

image.png

2022-07-25 我面面面

具体看对应日期的PDF文件。

[[星球腾讯大佬]]

2022-04-15 步步高 Java 后端 4 面面经

— 一面(50分钟)3月3号 —

  1. 介绍一下项目
  2. 项目是视频还是通过什么途径学习的?
  3. 你认为项目中复杂的点是什么?
  4. Redis的使用场景?
  5. Redis的高并发是依靠什么去保证的?
  6. ThreadLocal 用在哪,为什么选择 ThreadLocal呢?
  7. 项目上线了嘛?部署在哪里?怎么部署的?
  8. 注解实现缓存和日志统一处理是怎么做的?
  9. SpringBoot分哪些模块?
  10. 项目中的分页是怎么实现的?
  11. 项目中都有哪些sql表说一下吧?
  12. 消息队列MQ用过吗?说一下?-
  13. 分布式锁这块有用到吗?-
  14. 说一下常用的一些集合?
  15. 说一下 HashSet的原理?
  16. 说一下 HashSet 与 HashMap的区别?
  17. 线程安全的集合类有哪些?
  18. 锁重入了解过嘛?那些锁支持锁重入?
  19. 说一下锁升级的过程?
  20. 数据库中的锁有哪些?
  21. Java8 的新特性 Stream 流、Lambda 表达式说一下?
  22. TCP和HTTP 协议之间的关系,有什么区别?
  23. TCP/IP 参考模型,每层都是封装的什么?
  24. TCP是可靠的嘛?那么UDP呢?
  25. TCP如何保证我们的可靠传输的?
  26. 说一下TCP中拥塞控制的一个过程?
  27. Linux查看ip地址的命令?
  28. 说一下聚簇索引和非聚簇的区别?
  29. 事务的隔离级别和每个级别所产生的问题?
  30. 实际开发中最常使用的隔离界别
  31. 创建线程的方式?说一下?
  32. 讲一下同步和异步的区别?
  33. 说一下项目中Nginx的作用?
  34. 说一下JMM吧
  35. 说一下常见的垃圾回收算法吧?
  36. JMM的三个特性是哪三个?
  37. 如何保证原子性,volatile的作用呢?
  38. ThreadLocal和synchronized的区别
  39. Redis的rdb和aof说一下吧,区别呢?
  40. 为什么fork一个子进程呢?
  41. Redis有持久化为什么还要用MySQL呢?
  42. MySQL数据也会有丢失的情况呀?是如何保证的呢?
  43. 单节点和集群的区别,集群解决了什么问题?
  44. 主从复制解决了什么问题?
  45. Redis集群的原理
  46. MySQL为什么要采用读写分离呢?
  47. 除了MySQL、Redis外还了解过其他数据库嘛?
  48. 用过Docker嘛?
  49. 使用Docker部署的好处是什么?相比原始部署?
  50. 最近看了哪些书呢?
  51. 反问

— 二面(25分钟) 3月5号 —

  1. Redis为什么快?
  2. 线程的创建方式?
  3. 怎么在Linux服务器上部署项目?
  4. 使用过Docker嘛?
  5. Docker与Linux相比为什么性能更好?
  6. 如何进行sql优化?你自己实践哪些手段?
  7. 我们MySQL读写压力很大,怎么解决?
  8. 说一下TCP三次握手、四次挥手?
  9. MQ是什么?
  10. 项目是怎么做的?实习项目还是自己做的?
  11. 如何设计秒杀系统
  12. 实际开发中如何解决高并发的问题?你知道哪些手段?实践过哪些手段?
  13. 校园的实践经历
  14. 为什么来参加春招,是没offer吗?
  15. 手里有几个offer ?
  16. 以后的发展方向是走技术管理,还是架构方向?
  17. 说一下在你眼里技术管理和技术架构的区别?
  18. 如果领导让你3天完成一个任务,但是你4天才能完成
  19. 谈一下你对加班的看法?
  20. 你将来计划打算学到什么,提升Java哪方面技能?
  21. 反问

—三面(HR面,20分钟) 3月8号 —

  1. 为什么会有写博客的习惯呢,出发点是什么?
  2. 这个博客是有粉丝的吗?你有多少粉丝呢?
  3. 大学校园经历中有意义的一些事情?
  4. 大学当中跟室友的关系怎么样?
  5. 为什么没有参加秋招呢?
  6. 找工作跟考研之间是怎么权衡的呢?
  7. 讲一下在自己的个人项目中学到了什么呢?
  8. 大学期间有没有低谷期间
  9. 手里有其他的公司的offer吗?
  10. offer是哪家公司的?
  11. 期望薪资是多少,年薪呢?
  12. 反问

— 四面(终面,7分钟) 3月11号 —

一个非常让人讨厌的领导,说话阴阳怪气的,开头第一句话就是你的成绩不咋地啊(无挂科平均成绩在80+)。

  1. 有没有实习的经验 ?
  2. 为什么秋招没有找到工作?
  3. 你是怎么学习一个技术的?说一个擅长的

MIT 课程

2022-05-11 MIT 6.824 分布式系统 资料分享

mit 6.824 分布式系统 资料分享

最近决定去外包后,就闲下来了.突然想到群里大佬们推荐的分布式资料,之前学过谷粒商城,但感触不深,准备看看这个,这是今天找到整理的资料.
希望抛砖引玉,一起学习
外网原地址:
6.824 Schedule: Spring 2022

B站翻译视频地址:有很多,一搜就是,仅推荐一个
http://www.bilibili.c...

mit 6.824 分布式系统 资料分享

2022-05-11 MIT 6.830/6.814: Database Systems 数据库原理

这门课程的内容非常适合想要深入学习数据库原理的小伙伴。

MIT 6.830/6.814: Database Systems 这门课程的内容非常适合想要深入学习数据库原理的小伙伴。这门课程的 lab 是使用 Java 语言一步一步实现一个关系型数据库。

网络上有一些相关的文章分享:

另外,UCB CS186: Introduction to Database System 的这门课程 lab 也是使用 Java 实现一个关系型数据库。

image.png

国内网课

分布式缓存网课

黑马的这个redis课作为扫盲来说还是很不错的,基础-》实战-原理

都有涉略

高级篇-分布式缓存-12-Redis哨兵-RedisTemplate连接哨兵_哔哩哔哩_bilibi…

慕课网课(2)

第一个是仿百度网盘的分布式存储系统(感觉不太喜欢这个老师的讲课风格 有的地方听不懂 但是后端技术方面的内容是我想选的)

image.png

第二个是 证券交易系统(这个项目看到guide哥推荐过但是感觉前端内容比较多 且后端用的技术不太熟)
摆脱大神们给点意见!

image.png

找不到资源,无能为力=-=

2022-07-13 拉勾网 Java 高薪训练营

阿里云盘分享

2022-07-15 RuoYi-Vue前后端分离版本

资源分享:

百度网盘 请输入提取码 密码:zh5a

速览目录:
——/若依框架(RuoYi)系列视频教程 RuoYi-Vue前后端分离版本 118集/
├──01 项目概述.mp4 82.26M
├──02 项目运行.mp4 54.43M
├──03 构建发布到Linux.mp4 41.68M
├──04 系统菜单介绍.mp4 64.41M
├──05 开发环境运行.mp4 34.77M
├──06 表结构介绍.mp4 76.26M
├──07 目录文件介绍.mp4 65.53M
├──08 主配置文件介绍.mp4 69.64M
├──09 Spring Boot 简介.mp4 32.75M
├──10 Spring Security 简介.mp4 18.37M
├──100 主子表代码生成详解.mp4 32.85M
├──101 3.4.0版本更新介绍.mp4 122.82M
├──102 使用undertow容器.mp4 23.32M
├──103 实现优雅关闭应用.mp4 13.40M
├──104 实现swagger文档增强.mp4 14.83M
├──105 实现excel表格增强.mp4 45.81M
├──106 实现mybatis增强.mp4 67.43M
├──107 实现离线IP地址定位.mp4 35.40M
├──108 实现数据库密码加密.mp4 29.25M
├──109 实现滑块验证码.mp4 87.48M
├──11 Spring Security 配置介绍.mp4 40.02M
├──110 实现分库分表.mp4 75.77M
├──111 3.5.0版本更新介绍.mp4 122.14M
├──112 使用docker实现一键部署.mp4 95.45M
├──113 3.6.0版本更新介绍.mp4 113.07M
├──114 限流控制详解.mp4 37.64M
├──115 3.7.0版本更新介绍.mp4 229.82M
├──116 3.8.0版本更新介绍.mp4 174.74M
├──117 3.8.1版本更新介绍.mp4 143.14M
├──12 Spring Security 密码加密.mp4 54.85M
├──13 Spring Security 退出配置.mp4 23.56M
├──14 Spring Security 登录配置.mp4 51.83M
├──15 Spring Security 权限讲解.mp4 28.95M
├──16 Spring Security 权限注解.mp4 61.98M
├──17 JWT 介绍.mp4 23.39M
├──18 JWT 实现.mp4 72.04M
├──19 JWT 过滤器.mp4 34.61M
├──20 Mybatis配置详解.mp4 61.87M
├──21 Mybatis使用方式.mp4 53.88M
├──22 分页配置详解.mp4 64.84M
├──23 分页插件使用.mp4 33.90M
├──24 分页代码详解.mp4 34.06M
├──25 数据源配置详解.mp4 59.25M
├──26 数据源代码详解.mp4 46.81M
├──27 多数据源使用.mp4 36.72M
├──28 新增多数据源(相同数据库).mp4 34.44M
├──29 新增多数据源(不同数据库).mp4 55.90M
├──30 多数据源代码详解.mp4 19.52M
├──31 事务简介.mp4 23.83M
├──32 事务使用.mp4 100.54M
├──33 登录日志.mp4 51.32M
├──34 操作日志详解.mp4 65.76M
├──35 操作日志实现.mp4 39.32M
├──36 数据权限使用详解.mp4 49.39M
├──37 数据权限代码详解.mp4 72.34M
├──38 数据权限业务实现.mp4 80.21M
├──39 代码生成使用(单表).mp4 83.38M
├──40 代码生成使用(树表).mp4 47.64M
├──41 代码生成实现详解.mp4 152.19M
├──42 定时任务使用详解.mp4 84.93M
├──43 定时任务代码详解.mp4 147.93M
├──44 服务监控讲解.mp4 39.56M
├──45 系统接口使用详解.mp4 31.16M
├──46 系统接口实现详解.mp4 98.77M
├──47 XSS脚本过滤详解.mp4 48.78M
├──48 防止重复提交过滤详解.mp4 73.90M
├──49 全局异常处理器.mp4 35.47M
├──50 框架验证详解.mp4 31.77M
├──51 日志配置详解.mp4 54.69M
├──52 上传详解.mp4 58.65M
├──53 下载详解.mp4 29.59M
├──54 前端框架介绍.mp4 41.33M
├──55 package.json详解.mp4 52.17M
├──56 vue.config.js详解.mp4 98.87M
├──57 main.js详解.mp4 52.16M
├──58 布局设置.mp4 51.79M
├──59 导航栏.mp4 54.37M
├──60 侧边栏.mp4 59.96M
├──61 侧边栏默认展开.mp4 11.29M
├──62 顶部栏.mp4 37.74M
├──63 scoped作用域.mp4 11.16M
├──64 scoped样式穿透.mp4 15.14M
├──65 路由跳转的两种方式.mp4 13.42M
├──66 动态路由的跳转方式.mp4 13.85M
├──67 开发规范&流程.mp4 32.32M
├──68 请求流程.mp4 54.51M
├──69 引入依赖.mp4 21.08M
├──70 注册组件.mp4 31.30M
├──71 组件通信.mp4 20.21M
├──72 页面权限.mp4 68.89M
├──73 多级目录.mp4 46.12M
├──74 页签缓存.mp4 30.90M
├──75 使用图标.mp4 39.72M
├──76 使用字典.mp4 30.23M
├──77 使用字典(dicts方式).mp4 55.22M
├──78 使用参数.mp4 17.24M
├──79 Postman测试接口.mp4 16.91M
├──80 代码单元测试.mp4 32.05M
├──81 开发文档介绍和部署.mp4 65.98M
├──82 集成Oauth2.0.mp4 98.16M
├──83 构建发布到Tomcat.mp4 40.01M
├──84 2.3版本更新介绍.mp4 121.38M
├──85 新建业务模块(多模块).mp4 63.91M
├──86 开发自己的业务(多模块).mp4 32.53M
├──87 3.0版本更新介绍.mp4 134.04M
├──88 文件上传(前端).mp4 67.99M
├──89 文件下载(前端).mp4 21.25M
├──90 配置后端接口地址或域名.mp4 19.31M
├──91 3.1版本更新介绍.mp4 162.85M
├──92 部署应用到子路径.mp4 35.03M
├──93 3.2版本更新介绍.mp4 129.69M
├──94 禁止多终端同时登录实现.mp4 85.60M
├──95 3.2.1版本更新介绍.mp4 100.10M
├──96 静态资源整合到后端访问.mp4 63.95M
├──97 3.3.0版本更新介绍.mp4 153.57M
├──98 使用加密方式传输密码.mp4 67.61M
├──99 多数据源事务的一致性.mp4 135.30M
└──若依文档源码.zip 342.78kb

海贼哥分享

2023-07-04 评论区分享

  1. 公司是否用飞书了,超推荐飞书云文档
  2. 或者notion或枫叶云笔记,或者本地版本的mybase
  3. 现在梳理的应该算是知识体系中的【点】,我推荐大家写的文档,更注重【线】或者【面】,即针对某个东西能有层次或者结构化的给阅读者讲清楚,期间结合5W1H,STAR法则进行描述
  4. wiki本身也是知识库,常见的用的多的就是Confluence,可以下载飞书,把里面云文档的模板,拷贝过去
  5. 语雀算是知识库形式的软件(类似的软件都是创建一个空间去存储),枫叶云笔记是笔记类型的(类似的有道,未知等),看自己喜欢的吧

2023-06-13 黑马多级缓存 Canal+Openresty+Nginx+Redis+Lua

看到很多小伙伴的简历没啥亮点内容,不看看这个去年曾经分享过的一份资料,黑马的多级缓存课,个人觉得非常适合写在简历中的,涉及到Canal+Openresty+Nginx+Redis+Lua,如果能在简历和面试中说明白也是有很大帮助的,网上很多转载多级缓存的知识图,也来源于此:

黑马多级缓存课:

链接:https://pan.baidu.com/s/1UP-ka3AaPU_seA1swHZU3w?pwd=qyk7
提取码:qyk7

image.png

2023-06-13 系统解析JDK源码

https://www.aliyundrive.com/s/Cw2L3mWnWFL 43zy

2022-09-06 准应届生,想系统的学习redis,球友们有什么好的课程或者资料推荐吗?

第一阶段:尚硅谷+慕课的某些Redis的实战+黑马的Redis课和项目练习
第二阶段:看书《Redis设计与实现》、看极客时间专栏《Redis实战》、黑马的Redis+Lua多级缓存课
第三阶段:极客时间的《Redis源码课》与儒猿的Redis源码课

短时间应付面试从头学redis的话有什么推荐吗?
1、短期内从0应付面试的话,从0的话,可以先看看黑马V12体系课中的Redis那块,先学到基本使用,在结合去ProcessOn上面搜集别人画的各种Redis思维导图,至少有些概念,再找个Redis的项目实战学一下常见问题的处理思想。
2、必看的极客时间的专栏《Redis实战》那个
3、从《Redis设计与实现》这本书中挑几个重点章节看,作为了解底层的亮点,面试时引导下,比如RDB和AOF
4、看下星球里面【食欲】的博客。

评论:
面试突击建议看大厂学院周阳老师的Redis,群里应该发过资源

2023-06-10 宝贵的实习意见和代码该怎么看的指导

匿名用户 提问:海贼哥,您好,刚到杭州大厂实习两天,前两天看了下所涉及的业务的接口文档,以及我这个方向在电商流程中的应用,mentor让本地跑下这部分代码,因为代码环境本身问题没有跑通,就先看着文档,因为第一次实习,纯靠八股算法面试过得,只是做了练手项目,看代码真的挺迷茫的,也不知道侧重点在哪,所以想请教下海贼哥,希望可以给一些宝贵的实习意见和代码该怎么看的指导,感谢!

1、这个第1步一定是要把项目跑起来,这期间会涉及到相关中间件的连接,如果公司有测试环境,直接连接公司就行,或者自己感兴趣本地自己搭建一套就行,这个过程中要主动产出第一份文档:XX系统架构或技术梳理文档,类似于开源项目的readme文件,梳理了项目的技术栈,框架、中间件。入职公司主动梳理和产生文档一直是我提倡的
2、第2步,那screw工具,将数据库生成MD文档,大概浏览一遍数据库信息,对系统的表和功能有个初步的概念,然后再看下系统的功能菜单,对功能大概有个初步的理解。这里建议输出和总结出第2份和第3份文档。
3、第3步,获取到项目源码后,先看看pom.xml中都用到了哪些组件,可以大概知道系统的基本技术栈等,这里可以总结出第4份文档。
4、第4部,自己挑一个感兴趣的模块,从前端找到一个json请求,找到后端java接口,然后调试或者看下源码,了解下某个功能的处理流程,也可以找一个最简单的功能进行熟悉,然后尝试练习开发crud功能,用简单的业务练习,比如公司管理、学校管理等,重在练习项目的技术栈的写法和掌握程度,此过程可以产出第5份文档。
5、关于实习的建议,个人觉得一定要深入理解和学习公司的业务,别因为leader未分配大工作而沮丧,大部分都是修改小bug入手,逐渐熟悉,经过第3步和第4步自己主动的练习和熟悉,改BUG应该会有些思路
6、实习过程中,把自己伪装的好一点,做事情之前,能画图的先画图,能先思考的先思考,再具体进行代码编写,做到万事有文档输出和记录,做到这一点,绝对可以秒杀大多数人。
也可以安装上向日葵软件,然后私信我,可以远程更具体详细的知道,解答一些实习过程中遇到的困难和常见的问题。

2022-11-18 慕课网上的这个神思者

慕课网上的这个神思者的大佬是真强啊,每年都在慕课上出新课,前几天又出了门《SpringBoot2.X+Vue+UniAPP,全栈开发医疗小程序》,看来有时间学一学了解一下了,最近的工作可能自己要搞搞小程序开发了,在熟悉一下。大佬录制的课程挺好的,之前录制过:
《Docker环境下的企业级前后端分离项目部署与运维》
《阿里新零售数据库设计与实战 (升级版)》
《搞定Java大厂项目面试 轻松打动面试官》
《Java支付全家桶 企业级各类支付手段一站式解决方案》
《SpringBoot 在线协同办公小程序开发 全栈式项目实战》
《SpringBoot+Vue3 项目实战,打造企业级在线办公系统》
《多端全栈项目实战:商业级代驾全流程落地》
记得刚学Docker的时候,就是看了大佬的Docker的前后端的课,各种命令敲一下,对自己的理解确实很不错。

2023-06-13 日常系统对接或微服务开发中可能会涉及到的几个词

分享一下日常系统对接或微服务开发中可能会涉及到的几个词:
业务侧系统:指的是发起执行业务操作的一方系统服务,可以简单理解为消费方。
平台侧系统:指的是为发起执行业务操作而提供基础能力的一方系统服务,可以简单理解为服务方。
执行业务操作:指的是对数据的读写操作需要依赖多个系统服务的协同完成,业务侧系统发起,平台侧系统执行最终的数据读写操作。这样场景中就普遍存在着服务之间的数据一致性问题(备注 :业务侧系统和平台侧系统是一个逻辑概念,并非一定要存在具体的应用服务与之对应)。
业务操作标识:指的是业务操作应该归属的业务类型或者业务场景的标识,它是平台侧系统创建并且统一管理的,然后发放给业务侧系统,在业务侧系统的服务调用平台侧系统提供服务能力的身份信息。业务标识可以设计为单层结构,也可以设计为多层结构,符合当前系统和业务的需求即可。
业务操作唯一ID:指的是某个具体业务操作在某一次或者多次重复执行的唯一性标识。生产实践中,它一般是由业务侧系统的服务自定义实现和管理的,也可以是基于平台侧系统提供有约束性质和方便管理的规则限制下,再由业务侧系统的服务自定义实现,后者是比较推荐的方式。
业务操作记录表:指的是记录业务操作的日志流水表。生产实践中,一般是由业务侧系统的服务创建并且管理。