跳到主要内容

如何预测趋势?

· 阅读需 5 分钟

获得易守难攻的战略高地的两种方法:

  1. 自主创新
  2. 借东风 exploit a wave of change

做事后诸葛亮很容易。要想做事前预测,则需要深入地理解过去和现在,透过现象看到本质,并因此能够推演到第二步第三步。可惜大多数人只能看到现在。

比如 1950 年代电视出来了之后,大家都能够意识到电影行业的日子不好过了,但是很少有人能够推演出,第二步则是独立电影的兴起。因为独立电影制作人能够摆脱传统 studio 的裙带关系,专心制作好电影,只有好电影才能把观众吸引到电影院来。

思科上了三个风口

  1. 软件和微处理器
  2. 公司网络
  3. IP网

常见的风口

  1. 固定成本暴涨。比如,资本密集型的大制作的电影催生出大电影公司。大型软件系统的研发成本催生出大软件公司。
  2. 放松管制。比如,中国改革开放。
  3. 预测偏误。
    1. 增长的幻觉。比如,很少有人能够预测到生意或者经济到了巅峰开始下降。增长是总会有个尽头,买过一个电视机的人不会立即买第二个电视机。==销售增长地越快,市场饱和地也就越快==
    2. 赢者通吃的幻觉。是,赢者通吃, 但是也不一定,企业内部会有大企业病,外部会有新的变革。
    3. 赢者恒赢的幻觉。比如雅虎。
  4. 现任者效应:不愿损害短期利益进行改革,类似Innovator’s delimma
  5. ==Attractor state "吸引子" 或者说是 “终局思维”,市场应该达到的状态。==

Attractor state "吸引子" / "终局思维" 是一个有趣的新概念。这里详细讲讲。它与公司的愿景的区别在于,愿景是公司独有的,但是吸引子是整个市场总体应该达到的均衡。 它有两个相关概念:加速因子 accelerants 和减速因子 impediments 。

  • 一个典型的加速因子是"证明效应",比如 Napster 让大家突然意识到 2.5MB 的音乐可以下载复制发送,比特币让大家突然意识到投资虚拟货币可以成为大富翁。
  • 一个典型的减速因子的例子是,人民对核电站的恐惧和阻碍,尽管人们都知道核能是未来的趋势。

分析一下报纸业。

拿纽约时报来讲,报纸印刷的费用大概是订阅收入的两到三倍,印刷费主要是由广告来摊付的。09年以来,出现了两个问题, 一个是其他唾手可得的新媒体的兴起,导致报纸业阅读量下降,另一方面,报纸上的广告被谷歌抢走了。

新闻媒体的差异化有三个维度:空间,频率,和深度。而本书作者认为,市场的吸引子是倾向于这些细分领域的专攻,而不是 大而全。在互联网+报纸的时候,从降低成本来讲,应该利用纽约时报的品牌,广泛地与各种各样的信息源合作,而不是依赖少量的职业记者。 读者群越是精准,越是能够多收广告费。

如何迅速积累声望?

· 阅读需 1 分钟

解决那些人人想解却无人能解的大问题,才是真正的高手之道。

古龙的小说《圆月弯刀》里,丁鹏初入江湖,以一招天外流星迅速崭露头角。他武艺高强,很快声名鹊起。故事里有个急于重振家族声望的配角郭云龙,向丁鹏请教,问如何成为一流人物。

丁鹏的回答既不同于传统的教诲,也颇具洞见。他直言:“你可以行侠仗义,逐渐积累声望,但那太慢。最快的方法,是当江湖上出现重大危机,人人束手无策之时,你能站出来,解决它。”

移动网页的渐进式网络应用(PWA)

· 阅读需 2 分钟

为什么选择渐进式网络应用?

  • 可以通过 Chrome 和 Safari 添加到主屏幕
  • 利用服务工作者离线工作
  • 通过推送通知增加用户参与度
  • 在所有浏览器中新用户的转化率提高 104%,在 iOS 上提高 82%

“渐进式”意味着改进不是二元和终结的,而是逐步演进的。

这是什么?

PWA = 为移动设备优化的网站 + manifest.json + 服务工作者加载和注册

如何将其添加到您的网站?

manifest.json 是简单的部分。将以下内容放入 example.com/manifest.json

{
"short_name": "短名称",
"name": "较长名称",
"icons": [
{
"src": "favicon.png",
"sizes": "192x192 150x150 144x144 64x64 32x32 24x24 16x16",
"type": "image/png"
}
],
"start_url": "/",
"display": "standalone",
"theme_color": "#de4c4f",
"background_color": "#f3f3f3"
}

并将以下内容添加到 HTML 的 <head>

<link rel="manifest" href="/manifest.json"/>
<link rel="apple-touch-icon" href="/favicon.png"/>

然后在 iOS 和 Android 上,用户可以将该网站添加到主屏幕。

然后 ... 服务工作者的加载和注册

我推荐使用 create-react-app 的服务工作者加载脚本, 它具有良好的安全实践,并采用 优先缓存策略。 并且它还包括注销功能。

注册部分更复杂 - 我们添加了以下 webpack 插件来准备 service-worker.js。

// ...
plugins: [
// ...
new SWPrecacheWebpackPlugin(
{
mergeStaticsConfig: true,
dontCacheBustUrlsMatching: /\.\w{8}\./,
filename: 'service-worker.js',
minify: false,
navigateFallback: '/',
navigateFallbackWhitelist: [/^(?!\/__).*/],
staticFileGlobs: [
`${OUTPUT_DIR}/**`,
],
stripPrefix: OUTPUT_DIR,
staticFileGlobsIgnorePatterns: [/\.map$/, /asset-manifest\.json$/],
dynamicUrlToDependencies: {
'/index.html': glob.sync(path.resolve(`${OUTPUT_DIR}/**/*.js`)),
},
}
),
],
// ...

这里的棘手部分是,如果您像我们一样有 SSR - 请小心指定 dynamicUrlToDependencies;否则,缓存可能无法更新。

MMRs、 中和剂和差异化因素

· 阅读需 1 分钟

产品特性有三种类型

  • MMRs:最低市场要求;每个客户期望和要求的基本特性
  • 中和剂:减轻竞争威胁
  • 差异化因素:竞争优势

客户通常会对MMRs和中和剂提供反馈。==产品管理团队必须负责加强初创公司的差异化因素。== 一旦市场认可了初创公司的优势,每个竞争对手都会争相复制。初创公司必须投资于这种差异化,以维持其市场领先地位。

ACID 与 BASE

· 阅读需 2 分钟

ACID(可用性优先于一致性)

  • 原子性确保事务要么完全成功,要么完全失败。
  • 一致性:在 ACID 中,C 表示事务遵循所有数据库规则,例如唯一键、触发器、级联。相比之下,CAP 中的 C 仅指单副本一致性,是 ACID 一致性的一个严格子集。
  • 隔离性确保并发执行的事务使数据库保持在一个状态,这个状态与按顺序执行事务时所获得的状态相同。
  • 持久性确保一旦事务被提交,即使在系统故障(例如停电或崩溃)的情况下,它也将保持提交状态。

BASE(可用性优先于一致性)

  • 基本可用表示系统保证可用。
  • 软状态表示系统的状态可能会随着时间的推移而变化,即使没有输入。这主要是由于最终一致性模型。
  • 最终一致性表示系统将在一段时间后变得一致,前提是系统在此期间没有接收到输入。

虽然大多数 NoSQL 采用 BASE 原则,但它们正在学习或朝着 ACID 发展。例如,Google Spanner 提供强一致性。MongoDB 4.0 增加了对多文档 ACID 事务的支持。

Will Larson 从 Digg v4 灾难性启动中获得的教训

· 阅读需 2 分钟

Digg 从 v3.5 到 v4 的灾难性启动实际上是相当雄心勃勃的。Digg 曾受到谷歌 Panda 算法更新的严重打击。而推出 v4 是他们重新回到互联网巨头之中的机会。

因此没有回滚计划,意外的规模问题发生了。

  1. 存在 Cassandra 瓶颈 -> 实现了写透缓存 memcache
  2. 然而,MyNews 页面每四小时仍然会崩溃
  3. 在 Redis 中重写 MyNews,并秘密删除多余的数据以保持网站运行
  4. 花了一个月的时间追踪 Python tornado 后端服务中的错误,并且有某种 API 使用可变默认值作为参数,例如
def get_user_by_names_or_ids(names=[], ids=[])

这会导致内存泄漏 - 如果你改变这些参数,变更会跨调用延续。累积的数据甚至会导致 memcache 集群崩溃。

副本、一致性与CAP定理

· 阅读需 2 分钟

为什么副本和一致性?

大数据集 ⟶ 扩展 ⟶ 数据分片/分区 ⟶ 1) 数据访问路由 2) 可用性副本 ⟶ 一致性挑战

CAP定理的一致性权衡

CAP定理

  • 一致性:所有节点在同一时间看到相同的数据
  • 可用性:保证每个请求都能收到关于其成功或失败的响应
  • 分区容忍性:系统在任意消息丢失或部分系统故障的情况下继续运行

任何网络共享数据系统只能拥有三种理想属性中的两种。

  • 关系数据库管理系统(rDBMS)倾向于CP ⟶ ACID
  • NoSQL倾向于AP ⟶ BASE

“2 of 3”是误导性的

12年后,作者埃里克·布鲁尔(Eric Brewer)表示“2 of 3”是误导性的,因为

  1. 分区是罕见的,当系统没有分区时,几乎没有理由放弃C或A。
  2. 选择实际上可以在同一系统内的多个地方以非常细的粒度应用。
  3. 选择不是二元的,而是有一定程度的。

因此,当没有分区(节点正确连接)时,这种情况经常发生,我们应该同时拥有AC。当出现分区时,处理它们的步骤如下:

  1. 检测分区的开始,
  2. 进入可能限制某些操作的显式分区模式,并
  3. 当通信恢复时启动分区恢复(补偿错误)。

负载均衡器类型

· 阅读需 1 分钟

一般来说,负载均衡器分为三类:

  • DNS 轮询(很少使用):客户端获得一个随机顺序的 IP 地址列表。
    • 优点:易于实现且免费
    • 缺点:难以控制且响应不佳,因为 DNS 缓存需要时间过期
  • 网络(L3/L4)负载均衡器:流量通过 IP 地址和端口进行路由。L3 是网络层(IP)。L4 是会话层(TCP)。
    • 优点:更好的粒度,简单,响应迅速
  • 应用(L7)负载均衡器:流量根据 HTTP 协议中的内容进行路由。L7 是应用层(HTTP)。

B 树与 B+ 树

· 阅读需 1 分钟

B 树与 B+ 树

B 树的优点

  • 与每个键相关联的数据 ⟶ 频繁访问的节点可以更靠近根节点,因此可以更快地访问。

B+ 树的优点

  • 内部节点没有关联数据 ⟶ 内存中更多的键 ⟶ 更少的缓存未命中
  • B+ 树的叶子节点是链接的 ⟶ 更容易遍历 ⟶ 更少的缓存未命中

深入体验

· 阅读需 5 分钟

目标受众

经验中等或更少,或在之前的职位中没有担任领导或设计职位(无论是正式还是非正式)的人

问题描述

描述您之前的一个项目,这个项目对您来说特别有趣或令人难忘。后续问题:

是什么让这个项目有趣? 项目中最具挑战性的部分是什么,您是如何应对这些挑战的? 您从项目中学到了什么,您希望在开始之前知道什么? 您考虑过其他设计/实施方法吗?您为什么选择了您所选择的那个?如果您要重新做同样的项目,您会有什么不同的做法?

面试官提示

由于这里的目标是评估一个可能从未担任过可以进行速成课程角色的人的技术沟通能力和兴趣水平,您应该准备好不断向他们提问(无论是为了获取更多细节,还是关于项目的其他方面)。如果他们是最近毕业的学生并做了论文,通常这是一个很好的谈论选择。虽然这个问题在许多方面与电话筛选中的简历问题相似,但这个问题的预期长度大约是四倍,并且应该更详细地探讨他们所做的事情。因此,评分标准相似,但应以更高的期望和更多的数据进行评估。

评分

优秀候选人将会

  • 能够在整个时间内谈论项目,面试官的互动将是对话而非指引

  • 对整个项目有深入了解,而不仅仅是他们关注的领域,并能够清晰表达项目的意图和设计

  • 对项目充满热情,能够清楚描述激发这种热情的项目元素

  • 能够清晰解释考虑过的替代方案,以及为什么选择了他们所采用的实施策略

  • 对自己的经历进行了反思并从中学习

良好候选人将会

  • 可能在全程谈话中遇到一些困难,但在面试官的帮助和提问下能够进行交流

  • 可能对项目的整体范围缺乏一些了解,但仍对他们的特定领域和直接与他们互动的部分有较强的知识

  • 可能表现出热情,但无法清楚解释是什么激发了这种热情

  • 可能能够讨论他们所做的替代方案,但没有深入考虑

  • 对自己的经历进行了反思并从中学习

差劲候选人将会

  • 在全程谈话中遇到困难。面试官可能会感到他们是在审问而不是与候选人交谈

  • 可能对项目缺乏详细了解,即使在他们工作的领域内。他们可能不理解他们的部分是如何设计的,或者可能不理解它如何与其他系统互动

  • 对项目似乎不太感兴趣——请记住,您是在询问他们做过的最有趣的项目,他们应该对无论是什么项目都非常感兴趣

  • 可能对他们的实施方法的潜在替代方案不熟悉

  • 似乎没有从项目的经历中学习或反思。一个关键的迹象是对“你学到了什么”和“你会有什么不同的做法”的回答很简短和/或几乎相同。