前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CRUDBoy成长计划(1)—当面试官问设计模式的时候说些什么?

CRUDBoy成长计划(1)—当面试官问设计模式的时候说些什么?

作者头像
鹿老师的Java笔记
发布2022-01-20 13:20:50
3360
发布2022-01-20 13:20:50
举报

CRUDBoy成长计划(1)—当面试官问设计模式的时候说些什么?

注意:

  1. 本次计划针对有一定工作经验,想要提升技术和工作能力的程序员。
  2. 关于本计划的详情见:CRUD Boy 成长计划
  3. 宗旨 首先不做理论知识普及,这样的东西太多了,其次,不做自我感动的事情,看上去学了很久,实际上工作用不到,面试问不到。 最后功利的一点说就是为了提高薪资。为了能够在工作中有更好的表现,将代码写的更好,更易用,更好维护,更优雅。也为了,在下一次面试的时候,能够从一群八股文科举选手中脱颖而出。 归根结底,技术岗位最重要的还是解决问题的能力,而不是背书的能力。 由于每个人的经验都是不可复制的,因此,我们需要互相学习互相探索出一条程序员自我成长的路线。整体方向围绕两个核心 职业素养 和 技术能力开展。既为了现在能够把代码写好,把需求做好,也为了日后能够把牛逼吹好,把薪资谈好。
  4. 目前入。

开展方式

关于本计划的详情见:CRUD Boy 成长计划

开始本周内容之前再次强调计划开展方式:

  1. 周一公布专题内容和学习方向,例如:服务器和JVM调优。并对上一周的主题,各位同学的项目案例以及解决方案进行讨论。
  2. 参于计划的同学,利用周一周二周三做两件事。
    1. 围绕主题自行查阅相关资料,最好整理成文档,粘贴复制成文档也是ok的。
    2. 查看自己现在项目中是否有类似的问题。例如:现在架构是什么样的,服务器参数,JVM参数等,未必要全,但是一定要看。 理论是为了实际应用服务的,如果只是花时间看了大量理论,那么就很不划算,一方面没有用过未必能够记得住,另一方面流于表面,真正要用的时候还是不能用到实战中。 例如:工厂设计模式都知道吧?会用吗?在项目中用过吗? 所以第二件事儿就是在项目中找应用场景,未必要写代码发生产,但是拉个分支进行一定的技术改造也是很有必要的。实战中学习。
  3. 周四周五我会发布相关理论文章和实战案例分析(包含需求背景,分析过程,实现步骤,代码成品,基本上都是我在项目中写过的代码)。 没有需求背景,就没有实战意义,天天用小明和小张养猫养狗举例子,打基础是非常好的,理解难度小,但是想要进阶有难度。
  4. 周六周日,自行回顾自己项目中类似的问题,能不能合理的进行解决。简单写出解决方案

第一周主题:设计模式

在面试中,经常会问到设计模式,大部分情况下,面试者的回答都不太理想,原因大致如下:

  1. 知道的设计模式太过于基础,无外乎单例,工厂,代理等。
  2. 只是知道概念,好一点的会知道这些设计模式在源码中的应用,但是如何用设计模式来改造自己的业务代码,大部分的面试者是很难回答上来的。

而设计模式就是一些总结好的编程模板,为了让我们在解决特殊问题的时候,代码能够写的更加优雅,更易用,更易扩展。所以本质上来说,学设计模式就是为了写好代码。

但是现在的设计模式教程,大部分都集中在基础理论和编程思想的讲解上,往往是看过很多设计模式的文章,也写了很多demo,却不能对业务代码做出一点改造。知道了很多道理,却依然写不好代码。

那么怎么学习设计模式,才能学有所用呢?

  • 首先,不能用理论的想法按部就班的了解设计模式的前世今生,方方面面,因为设计模式相关的内容太过于繁杂,往往需要看好久才能看完,更别说应用了,即便是能够坚持看完,黄花菜都凉了。
  • 其次,大部分的设计模式并不常用,所以也就没有必要全部学会了。
  • 最后也是最重要的,要明白设计模式是写代码的方式模板,每一种设计模式都解决特殊的问题,也就意味着,我们只需要知道某个设计模式解决什么问题,就可以在项目中找到类似的场景进行改造,从实际出发解决问题。换句话就是从需求出发,针对业务场景应用某个设计模式。

综上,本次设计模式学习,并不追求23种设计模式的走马观。不会采用教科书式的顺序逐个讲解。而是围绕几个常用且适用范围广的设计模式,基于实际项目代码和业务场景进行讲解,面向实战,保证学习之后可以在项目中进行小的改造。

先用起来,再逐步迭代,用的越来越广;先解决小问题,再逐步扩大,解决更多问题。

第一周引导内容

在进行学习的时候一定要收集整理文档。粘贴复制也可以。

由于设计模式内容繁多,所以本周只对两个设计模式进行学习:

  • 建造者模式
  • 职责链模式

以下是我罗列的问题引导大家进行学习:

  1. 什么是建造者模式?
  2. 建造者模式有什么用?能够解决什么问题?
  3. 写出一个小demo。
  4. 现在项目中使用的框架或者工具类,有哪些代码使用了建造者模式?复制或者截图部分代码到文档中,如果有简单的分析更好了。(提示:建造者模式的类可以搜索Builder)
  5. 业务代码中,有没有什么地方可以使用建造者模式?现在有没有使用上?你认为是否可以改造为建造者模式?(提示:线程池,Session创建)
  6. 什么是职责链模式?
  7. 职责链模式有什么用?能够解决什么问题?
  8. 写出一个小demo。
  9. 现在项目中使用的框架或者工具类,有哪些代码使用了职责链模式?复制或者截图部分代码到文档中,如果有简单的分析更好了。(提示:建造者模式的类可以搜索Handler)
  10. 业务代码中,有没有什么地方可以使用职责链模式?现在有没有使用上?你认为是否可以改造为职责链模式?(提示:同一批数据根据type进行不同的处理)

最后

周一周二周三,自行学习,大家也发现了如果只是一味的看资料,博客,用处不大,就是因为没有引入项目中思考,所以这个时候摒弃惰性很重要,思考一下场景,会让自己对设计模式的理解更加清晰。

有什么问题,大家可以发在群里进行讨论。有好的思考也要即时分享。讨论尽量在大群进行。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-12-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 鹿小洋的Java笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • CRUDBoy成长计划(1)—当面试官问设计模式的时候说些什么?
    • 开展方式
      • 第一周主题:设计模式
        • 第一周引导内容
          • 最后
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档