写点什么

面试官一问就懵的设计模式题,是时候怼回去了 | 极客时间

  • 2019-11-05
  • 本文字数:2557 字

    阅读完需:约 8 分钟

面试官一问就懵的设计模式题,是时候怼回去了 | 极客时间

我是王争,《数据结构与算法之美》专栏的作者。还记得写算法专栏之初,我就为自己立下 Flag,要做一个跟所有国内、国外经典书籍都不一样、可以长期影响一些人的专栏。从大家的反馈看,我也确实做到了。截止到目前,专栏已有近 70000 订阅了。


精心打磨 8 个月,我又为你带来了一个新专栏《设计模式之美》


如果说数据结构和算法是教你如何写出高效的代码,那设计模式讲的就是如何写出可扩展、可读、可维护的高质量代码。所以,设计模式与编码密切相关,可以直接提高你的开发能力,是实打实的硬核技能。


这也是我推荐你好好学“设计模式”的原因。再具体一点说,主要有以下几点:


  • 设计模式是求职面试中的高频问题,特别是像 BAT、TMD 这样的大公司,更加重视候选人的基本功。不想在面试时凉凉,对这种大概率被问到的考题,就要做好万全准备。

  • 代码是衡量程序员基础素养的直接标准——你的代码就是你名片。代码写得好,才能在团队中脱颖而出,获得更大的发展空间。

  • 工作中少不了会遇到稍复杂的代码设计和开发。该如何分层、分模块?怎么划分类?怎么设计类之间的交互?用继承还是组合,接口还是抽象类?怎样做到解耦、高内聚低耦合?该用单例模式还是静态方法?要解决这些问题,要求你对设计模式的相关知识有深入地了解和积累。

  • 优秀的开源项目、框架、中间件,代码量、类的个数都比较多,类结构、类之间的关系极其复杂,会频繁做调用。只有真正理解了设计模式、思想和原则,才能快速参透作者的设计思路,无论是读源码、还是学框架,都可以做到事半功倍。


其实,和很多工程师一样,我也读过一些讲设计模式的相关书籍,学到了很多编程技巧和提高代码质量的方法。但我发现,这些书大多偏重理论讲解,而且举例过于生活化,脱离了真实的软件开发,读过后仍然不清楚如何将理论落地到实际的项目编码中。


从我的经验来看,最有效、快速提高编码能力的方法是,找一个比你资深的工程师,手把手指导你写代码。但绝大多数人,很难有这样的机会。


所以,我力求将《设计模式之美》打造成市面上最实用的设计模式课——不同于市面上的任何一类学习资料,完全使用真实项目的代码讲解,不仅学起来有趣轻松,而且紧贴真实开发场景,可以真正提升你的代码能力,让编程内功转化为直接的开发生产力

我是谁?

我是王争,《数据结构与算法之美》作者,前 Google 工程师,从事 Google 翻译、知识图谱等相关系统的开发。曾任某金融公司核心系统资深系统架构师,负责公司核心业务的架构设计和开发工作。我干过架构、做过产品、带过团队、创过业,最后发现还是喜欢写代码。工作十多年,始终没有脱离编码第一线。

我是如何设计这个专栏的?

100 多篇文章、50 万字、2 万多行代码


整个专栏共 100 多篇文章,平均每篇 5000 字左右,总计 50 万字。之所以会有这么长的篇幅,是因为我想把设计模式的相关知识点,都系统、全面地一次性讲透。让你看完专栏,就能搞清楚所有跟写高质量代码相关的知识点。


除此之外,为了避免空洞讲理论,专栏里的每篇文章都有 200 多行代码,整个专栏累计有 2 万多行代码,都来自我这十几年积累的真实项目,而非凭空编造出来的没有太多实际意义的代码。


我个人写 Java 代码比较多,所以,专栏中的代码我是用 Java 语言实现的。但是,专栏内容的讲解并不与具体的编程语言挂勾。只要你有一点编程基础,不管你熟悉哪种编程语言,都可以看懂我写的代码,理解代码背后的设计思想。


200 +真实项目实战代码案例剖析


大部分设计原则、思想和模式理解起来并不难,难的是如何将这些理论应用到实际开发中。但在日常工作中,我们很难碰到足够复杂、有难度的开发场景去实践这些理论,大多是基于已有的框架,照着别人的流程,扩展新的功能模块。


基于这种考虑,我结合自己过去工作中积累的项目经验,精心设计了 200 多个真实的项目实战代码案例,每节课、每个知识点都会结合一个完整的开发案例来讲解。我敢说,跟着我把这 200 多个开发案例练下来,不愁代码能力提高不了。


8 个月、240 天手把手编程指导


对于理论解读,我会更多地融入自己的思考和理解。或许我的解读跟大师的不完全一样,但我可以自成一体,并告诉你如何落地指导具体的开发、编码。


另外,针对每一种设计原则、思想或模式,我还会讲一些更本质且有用的东西,比如,“为什么要有这种设计原则、思想或者模式?能解决什么编程问题?有哪些应用场景?该如何权衡、恰当地在项目中应用?”等等。


每个实战案例的讲解,我都会从最原始的问题代码出发,告诉你缺陷在哪里,如何通过设计原则、思想、模式来优化,让你了解其设计背后的来龙去脉。这样,你才会跟着我的节奏主动思考,对你的逻辑思维训练也很有帮助。


虽然没法坐在你面前,但我力争让你在看或听专栏时,就像我跟你面对面讨论分析一样。整个专栏更新完要 240 多天,相当于我手把手指导你写代码 8 个月,希望把我十几年的积累统统传授给你。


100 多个有深度的课堂讨论、头脑风暴


我们知道,设计问题本来就没有标准答案。 所以,不要轻信一家之言,也不要盲目追从任何一位专家、大师的说法。主动思考,积极讨论,比单纯地被动接受,学习效果要好十倍、百倍。


所以,在每节课的最后,我都设计了 1~2 道课堂讨论题,有些是代码设计相关的开放性问题,有些是具体的代码优化问题。看过我《数据结构与算法之美》专栏的小伙伴们都知道,回答专栏思考题的留言,有时比专栏文章还要精彩,非常具有启发性。


在学完专栏后花个 5 分钟、10 分钟回答思考题,不仅有助于吸收知识,还能锻炼你的思考能力。


《设计模式之美》上线仅 1 天,超过 8000 人已加入学习。


早鸟 + 优惠口令「521design」,到手价 ¥114,即将恢复原价 ¥199戳此订阅

学完专栏,你将获得:

  • 23 种设计模式与范式实战精讲;

  • 200+真实案例分析设计与实现;

  • 顶尖互联网公司的编程经验分享;

  • 应对设计模式面试的思路与技巧。

现在订阅有什么福利?

1.早鸟优惠 ¥129,原价 ¥199。


结算时,输入优惠口令「521design」再减 ¥15,到手仅 ¥114,口令仅限【前 500 人】内有效。


2.订阅后生成专属海报,每邀请一位好友订阅,可获 ¥36 返现。成功邀请 3 个人,相当于免费学



在《数据结构与算法之美》的结束语中,我表达过自己的不舍,因为我想分享更多「压箱底」的东西给你。那么,现在是时候了。


优惠口令【 仅限前 500 个名额 】有效。


👉戳此免费试读,或用【优惠口令】以最低价订阅。


2019-11-05 14:582930

评论

发布
暂无评论
发现更多内容

软件测试 | 测试开发 | 一文带你了解K8S 容器编排(下)

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 黑盒测试方法论—边界值

测吧(北京)科技有限公司

边界测试

软件测试 | 测试开发 | 测试左移之Sonarqube scanner使用

测吧(北京)科技有限公司

SonarQube

中国移动NZONE 50 Pro 5G手机正式开售

Geek_2d6073

基于阿里云Serverless函数计算开发的疫情数据统计推送机器人

Serverless Devs

技术分享| 基于RTM 实现的呼叫邀请如何添加推送功能?

anyRTC开发者

音视频 IM 实时消息 呼叫邀请 推送

参加了个算法比赛,真是一言难尽啊

捉虫大师

Go 算法 map 比赛 9月月更

iptables与firewalld防火墙是怎么样工作的呢?

阿柠xn

防火墙 Linux Kenel 运维‘ 9月月更

LeetCode-66. 加一(java)

bug菌

Leet Code 每日一题 9月月更

软件测试 | 测试开发 | 跨平台API对接(Java)

测吧(北京)科技有限公司

jenkins、

20个既简单又实用的JavaScript小技巧

千锋IT教育

「龙蜥开发者说」征稿啦!

OpenAnolis小助手

开源 征文 获奖 龙蜥开发者说 龙蜥技术

购买小间距LED显示屏前需要了解什么?

Dylan

LED显示屏 led显示屏厂家

软件测试 | 测试开发 | 测试开发基础 mvn test | 利用 Maven Surefire Plugin 做测试用例基础执行管理

测吧(北京)科技有限公司

maven

软件测试 | 测试开发 | 构建测试平台与对应的组织架构需要哪些能力?

测吧(北京)科技有限公司

测试

千锋锋友学盟分享会:程序员百万年薪进阶指

千锋IT教育

LeetCode-58. 最后一个单词的长度(java)

bug菌

Leet Code 每日一题 9月月更

软件测试 | 测试开发 | 这些常用测试平台,你们公司在用的是哪些呢?

测吧(北京)科技有限公司

测试

主流定时任务解决方案全横评

Serverless Devs

spring Linux

基于函数计算自定义运行时快速部署一个 springboot 项目

Serverless Devs

设计模式的艺术 第十七章命令设计模式练习(开发一个基于Windows平台的公告板系统。该系统提供了一个主菜单(Menu),主菜单包含一些菜单项,Menu类可以增加菜单项。菜单项主要方法是click(),每个菜单项包含一个抽象命令类)

代廉洁

设计模式的艺术

dbt-tidb 1.2.0 尝鲜

TiDB 社区干货传送门

新版本/特性解读

PCTP考试学习笔记之二:TiDB 数据库 schema 设计

TiDB 社区干货传送门

集群管理 管理与运维 数据库架构设计

「工作小记」不同内容相似结构?按个开关试试

叶一一

JavaScript 前端 React Hooks 9月月更

软件测试 | 测试开发 | 持续交付-Blue Ocean 应用

测吧(北京)科技有限公司

《TiDB跨版本升级》 --流程概述

TiDB 社区干货传送门

迁移 实践案例 版本升级 管理与运维 安装 & 部署

转:工业软件上云很难吗?可以微创呀!

小江

工业软件云化

从云计算到函数计算

Serverless Devs

云计算 阿里云 AWS

Apache DolphinScheduler PMC:开源不一定也要九死一生

白鲸开源

海豚调度 开源社区 Apache DolphinScheduler 开源文化 #开源

51单片机定时器原理及相关器件

孤衫

C语言 单片机 9月月更

计算机网络体概念

StackOverflow

编程 计算机网络 9月月更

面试官一问就懵的设计模式题,是时候怼回去了 | 极客时间_架构_王争_InfoQ精选文章