跳到主要内容

过往工作经验面试

· 阅读需 5 分钟

目标受众

拥有一定或较少的经验,或者是在职业生涯中没有担任过任何领导或设计职位的人(无论是正式还是非正式)。

问题描述

描述你以前特别感兴趣或难忘的项目经历。后续的问题包括:

  • 为什么你会觉得它有趣?
  • 该项目最具挑战性的部分是什么,你又是如何应对这些挑战的呢?
  • 你从这个项目中学习到了什么?你又希望在项目开始前了解什么?
  • 你有考虑其他的设计或实现方法吗? 你为什么选择你做的那个方案? 如果再次选择做同样的项目,你有什么不同的做法吗?

面试官提示

由于这里的目标是评估一个人的技术沟通能力和兴趣水平,而他们有可能参与过速成班,所以你应该准备好问他们更多的问题(无论是为了更多的细节,还是有关项目的其他方面)。如果是他们是刚写完论文的毕业生,那么毕业论文通常是很好的切入点。虽然这个问题在很多方面都类似于电话面试中的简历问题,但其内容大约是电话面试的四倍,而且应该按比例更详细地询问他们都做了些什么。因此,虽然评分标准是相似的,但应该用更高的期望和更多的数据来评估面试者。

得分

优秀的候选人能够:

  • 充分地谈论项目经历,在面试中,与面试官的互动应当是对话而不是指导

  • 对整个项目具有一定的了解,而不仅仅是他们所关注的领域,并且能够清楚地表达出项目的设计和意图

  • 无论是什么项目,都要充满激情,并且能够清楚地描述出激发这种激情的项目要素

  • 能够清楚地解释考虑了哪些备选方案,以及他们为什么选择他们所采取的实施策略

  • 是否有从他们的经历中反思并吸取教训

而好的候选人能够:

  • 在面试中可能会遇到一些问题,但是能够在面试官的帮助下解决

  • 可能缺乏对项目更广范围的一些了解,但仍然对与他们直接交互的部分和特定领域具有很强的了解

  • 也许看起来充满激情,但无法准确解释这种激情来自何处

  • 也许能够讨论他们所做的替代方案,但是考虑的不够深刻

  • 从他们的过往经历中反思并汲取经验

而差的候选人则是这样的:

  • 在面试交流中表现得费劲,面试官觉得面试者是在询问他,而不是与他交谈

  • 即使是在他们工作的领域,也可能缺乏对项目的详细了解。他们可能不了解他们的产品为何这样设计,或者不明白产品是如何与其他系统交互的

  • 当你在询问所做过最有趣的项目时,他们对产品表现得应该很感兴趣,但事实上是,他们看起来可能并不太感兴趣

  • 可能不熟悉潜在替代方案的实现方法

  • 似乎并没有从他们的过往项目经历中反思和学习。而判断这种情况的重要迹象是:“你学到了什么”和“你会有什么不同”的答案很短,或者几乎千篇一律

在软技能面试中我们可以沟通什么?

· 阅读需 2 分钟

什么是面试?

面试是员工寻找未来同事的过程,在此过程中,他们 寻找信号来回答以下三个关键问题:

  1. 能力问题 - 你能胜任这份工作吗?
  2. 意愿问题 - 你愿意做这份工作吗?
  3. 文化契合问题 - 你能融入团队吗?

为什么软技能如此重要?

以上任何一个关键问题都无法在没有良好沟通的情况下回答。 你的工作将被那些沟通能力比你更强的人取代。

准备的通用回答(故事)

  1. 艰难取得的胜利。你是如何应对失败的?简要谈谈你经历的最艰难时刻,然后专注于你是如何反击的,并感谢那些帮助过你的人。这表明你具备毅力、团队建设能力以及与工作相关的素质。
  2. 影响力。你能引导他人接受你的观点吗?领导者 = 激励自我牺牲的愿景者。没有说服能力,领导者就不存在。
  3. 技术技能。你有故事证明你出色的技术技能吗?
  4. 文化契合。联邦调查局曾经询问潜在特工他们读过哪些书,直到一个地下线人的网络找到了理想答案:“汤姆·克兰西的间谍小说。”
  5. 吸引力。你有什么吸引人的地方?是什么让你与其他人不同?

什么是 Apache Kafka?

· 阅读需 5 分钟

Apache Kafka 是一个分布式流处理平台。

为什么使用 Apache Kafka?

它的抽象是一个 ==队列==,并且它具有

  • 一个分布式的发布-订阅消息系统,将 N^2 关系解决为 N。发布者和订阅者可以以自己的速度操作。
  • 采用零拷贝技术,速度极快
  • 支持容错的数据持久性

它可以应用于

  • 按主题进行日志记录
  • 消息系统
  • 地理复制
  • 流处理

为什么 Kafka 这么快?

Kafka 使用零拷贝,CPU 不需要将数据从一个内存区域复制到另一个内存区域。

没有零拷贝的情况下:

使用零拷贝的情况下:

架构

从外部看,生产者写入代理,消费者从代理读取。

数据存储在主题中,并分割成多个分区,这些分区是复制的。

Kafka 集群概述

  1. 生产者将消息发布到特定主题。
    • 首先写入内存缓冲区,然后刷新到磁盘。
    • 仅追加的顺序写入以实现快速写入。
    • 写入磁盘后可供读取。
  2. 消费者从特定主题中拉取消息。
    • 使用“偏移指针”(偏移量作为 seqId)来跟踪/控制其唯一的读取进度。
  3. 一个主题由分区组成,负载均衡,分区(= 有序 + 不可变的消息序列,持续追加)
    • 分区决定最大消费者(组)并行性。一个消费者在同一时间只能从一个分区读取。

如何序列化数据?Avro

它的网络协议是什么?TCP

分区的存储布局是什么?O(1) 磁盘读取

如何容错?

==同步副本 (ISR) 协议==。它容忍 (numReplicas - 1) 个死掉的代理。每个分区有一个领导者和一个或多个跟随者。

总副本 = ISRs + 不同步副本

  1. ISR 是活着的副本集合,并且已经完全追赶上领导者(注意领导者始终在 ISR 中)。
  2. 当发布新消息时,领导者会等待直到它到达 ISR 中的所有副本,然后才提交消息。
  3. ==如果一个跟随者副本失败,它将被移出 ISR,领导者随后继续以更少的副本在 ISR 中提交新消息。注意,现在系统正在以不足副本模式运行。== 如果领导者失败,将选择一个 ISR 成为新的领导者。
  4. 不同步副本继续从领导者拉取消息。一旦追赶上领导者,它将被重新添加到 ISR 中。

Kafka 是 CAP 定理 中的 AP 还是 CP 系统?

Jun Rao 说它是 CA,因为“我们的目标是在单个数据中心内支持 Kafka 集群的复制,在那里网络分区是罕见的,因此我们的设计专注于保持高度可用和强一致性的副本。”

然而,这实际上取决于配置。

  1. 默认配置(min.insync.replicas=1,default.replication.factor=1)开箱即用时,您将获得 AP 系统(至多一次)。

  2. 如果您想实现 CP,您可以将 min.insync.replicas 设置为 2,主题复制因子设置为 3 - 然后使用 acks=all 生产消息将保证 CP 设置(至少一次),但(如预期)在特定主题/分区对可用副本不足(<2)时将会阻塞。

什么是 Apache Kafka?

· 阅读需 5 分钟

Apache Kafka 是一个分布式流(streaming)平台。

为什么使用 Apache Kafka?

它的抽象是一个==队列==,它的特点包括

  • 分布式发布-订阅(pub-sub)消息传递系统,可将 N ^ 2 的关系简化成 N.发布者和订阅者可以按自己的速率运行。
  • 超快速的零复制(zero-copy)技术
  • 支持可容错的数据持久化

它可以被应用于

  • 按主题打日志
  • 消息系统
  • 异地备份
  • 流处理

为什么 Kafka 如此的快?

Kafka 使用零复制技术,其中,CPU 不会执行数据跨存储区复制副本(replica)的任务。

不使用零复制技术:

使用零复制技术:

构架

从外部看,生产者写给 kafka 集群,而用户从 kafka 集群读取内容。

数据按照主题存储,并分割为可复制副本的分区。

Kafka Cluster Overview

  1. 生产者将消息发布到特定主题中。
    • 首先写入内存缓冲区中并更新到磁盘中。
    • 为了实现快速写,使用 append-only 的序列写。
    • 写入后方可读取。
  2. 消费者从特定主题中提取消息。
    • 使用“偏移指针”(偏移量为 SEQ ID)来跟踪/控制其唯一的读取进度。
  3. 一个主题包括分区和负载均衡,其中,每个分区是一个有序,不变的序列的记录。
    • 分区决定用户(组)的并行性。同一时间内,一个用户只可以读取一个分区。

如何序列化数据? Avro

它的网络协议是什么? TCP

分区内的存储布局是怎样的 y? O(1)磁盘读取

如何容错?

==同步副本(ISR)协议==. 其容许 (numReplicas - 1) 的节点挂掉。每个分区有一个 leader, 一个或多个 follower.

总副本量 = 同步的副本 + 不同步的副本

  1. ISR 是一组活的并且与 leader 同步的副本(注意领导者总是在 ISR 中)。
  2. 当发布新消息时,leader 在提交消息之前等待,直到它到达 ISR 中的所有副本为止。
  3. ==如果 follower 同步失败,它将从 ISR 中退出,然后 leader 继续用 ISR 中较少的副本提交新消息。注意,此时系统运行在低副本数量的状态下== 如果一个 leader 失败了,另一个 ISR 将被选成为一个新的 leader 。
  4. 未同步的副本不断的从 leader 那里拉出消息。一旦追赶上 leader ,它将被添加回 ISR。

Kafka 是 CAP 定理中的 AP 或 CP 系统吗??

Jun Rao 认为它是 CA,因为“我们的目标是支持在单个数据中心内的 Kafka 集群中进行复制,其中网络分区很少见,因此我们的设计侧重于维护高可用性和强一致性的副本。”

然而,它实际上取决于配置。

  1. 如果使用初始配置(min.insync.replicas=1, default.replication.factor=1),你将获得 AP 系统(最多一次)。

  2. 如果想获得 CP,你可以设置 min.insync.replicas=2,topic replication factor 为 3,然后生成一个 acks=all 的消息将保证 CP 设置(至少一次),但是,如果没有足够的副本(副本数< 2)用于特定主题/分区时,则无法成功地写。

美国海军预飞学校:如何在 120 秒内入睡?

· 阅读需 2 分钟

为什么要快速入睡?

在战场上,如果你不睡觉,你会很快精疲力竭。你会做出错误的决定。你会让人失望,成为一个负担。

如何在 120 秒内入睡?

原则:逐个放松全身的每个部位,不要思考。

  1. 伸展身体
  2. ==放松面部肌肉,减缓一切==
  3. 放松上半身
    1. 让肩膀尽量下垂
    2. 深吸一口气。然后慢慢呼气,释放所有的紧张
    3. 放松手臂。如果没有放松,先紧绷,然后再放松
    4. 放松前臂
    5. 放松手
  4. 放松腿部
  5. 不要思考任何事情
    1. 保持心灵静止。你可以通过在脑海中保持一个静态图像来做到这一点
    2. 如果这不起作用,反复说“不要想……不要想……不要想”,至少持续 10 秒钟

美国海军飞行班: 如何在120秒内入睡?

· 阅读需 2 分钟

为什么要快速入睡?

在战场上,你如果不睡觉,很快就会感到精疲力竭,你会做出错误的决定,你会有负使命,成为累赘。

怎么做?

原则:一点一点的放松整个身体,不要去思考。

  1. 舒展身体
  2. 放松脸部肌肉,放慢一切速度
  3. 放松上身
    1. 尽可能地放低肩膀
    2. 深吸气,然后慢慢呼出,把所有的紧张都呼出来
    3. 放松双臂。如果它不够放松,就先绷紧它,然后让它放松
    4. 放松前臂
    5. 放松双手
  4. 放松双腿
  5. 什么都不要想
    1. 保持头脑冷静。你可以通过在头脑中保持一个静止的画面来做到这一点
    2. 如果这样没有效果,就一直说“不要思考……不要思考……不要思考”,至少10秒钟

素书:好的管理者有哪些品格?

· 阅读需 4 分钟

答案:道德仁义礼

  • 道:真理,就是世界和人发展的规律。就是毛泽东的“实事求是”。就是雷达里奥的“Embrace Reality And Deal With It”。如何才能掌握真理?多观察、多学习、多问问题、多解决问题。掌握在少数人手中并可以帮人获利的真理叫洞见(insight),用真理预测未来产生的观点叫远见(vision)。你发现的真理能够帮助别人,别人就会帮助你,这就是“得道多助,失道寡助”。

  • 德:就是 “give people what they want”,就是为人民服务,就是多快好省地创造人民群众喜闻乐见的产品和服务。在公司和组织里,德就是下属的目标和管理者的目标和公司的目标一致(alignment),形成合力。

  • 仁:同理心(empathy),换位思考,能够从别人视角出发看问题,理解别人在想什么。并且能够真心地期望别人活得更成功。

  • 义:公平和正义(justice),建功立业需要赏善罚恶。

  • 礼:讲规矩,就是 predictable professionalism,行为符合圈子的需求,一举一动是受到同行审议(peer review)的。比如,我从事软件工程师这一职业,不仅仅是追求用户用我的产品觉得好,还需要我的同行认可我的成就,这才是我从事这一职业真正的成就。比如东亚水稻文明讲究勤勉,早起晚睡,勤勤恳恳,就是符合东方的礼。比如西方世界重商主义,与人打交道做生意互利互惠,让人如沐春风,就是符合西方的礼。东方人不应该期待西方人赞叹东方人勤恳,西方人不应该期待东方人赞叹西方人说漂亮话

有了这些品格,就能够达到“人和”。再加上顺应天时,就能够成就大事。假如生不逢时,也只不过无闻于世而已。 ¯\_(ツ)_/¯

原文

原始章第一

夫道、德、仁、义、礼五者,一体也。

道者,人之所蹈,使万物不知其所由。德者,人之所得,使万物各得其所欲。仁者,人之所亲,有慈慧恻隐之心,以遂其生存。义者,人之所宜,赏善罚恶,以立功立事。礼者,人之所履,夙兴夜寐,以成人伦之序。

夫欲为人之本,不可无一焉。

贤人君子,明于盛衰之道,通乎成败之数,审乎治乱之势,达乎去就之理。若时至而行,则能极人臣之位;得机而动,则能成绝代之功。==如其不遇,没身而已==。是以其道足高,而名重于后代。

中国信息通信研究院区块链研究报告

· 阅读需 5 分钟

来源:中国信息通信研究院可信区块链推进计划

什么是区块链

区块链(Blockchain)是一种由多方共同维护,使用密码学保证 传输和访问安全,能够实现数据一致存储、难以篡改、防止抵赖的记 账技术,也称为分布式账本技术(Distributed Ledger Technology)。 典型的区块链以块-链结构存储数据。作为一种在不可信的竞争环境 中低成本建立信任的新型计算范式和协作模式,区块链凭借其独有的 信任建立机制,正在改变诸多行业的应用场景和运行规则,是未来发 展数字经济、构建新型信任体系不可或缺的技术之一。

按照系统是否具有节点准入机制,区块链可分类为

  • 许可链,只有被许可才能加入。根据拥有控制权限的主体是否集中可分为
    • 联盟链
    • 私有链
  • 非许可链/公有链

特征

  1. 从复式记账演进到分布式记账
  2. 从“增删改查”变为仅“增查”两个操作
  3. 从单方维护变成多方维护
  4. 从外挂合约发展为内置合约

适用场景

新型数据库、多业务主体、彼此不互信、业务强相关

区块链适用的场景条件判定

构架

区块链构架

  1. 基础设施=硬件资源
  2. 基础组件=网络发现+数据收发+密码库+数据存储+消息通知
  3. 账本=区块链 +==(基于资产的数据模型 OR 基于账户的数据模型)==
  4. 共识=先写入后共识(PoW, PoS, DPoS) OR 先共识后写入(PBFT)
  5. 智能合约=图灵完备 OR 非图灵完备
  6. 系统管理=CA认证 OR PKI 认证 OR 第三方身份验证
  7. 接口=RPC+SDK
  8. 应用=价值转移类 + 存证类 + 授权管理类(如数据共享 )
  9. 操作运维

发展趋势

  1. 架构方面,公有链和联盟链融合持续演进
  2. 部署方面,区块链即服务加速应用落地
  3. 性能方面,跨链及高性能的需求日益凸显。
    1. 跨链:==目前主流的跨链技术包括:公证人机制(Notary schemes)、侧链/中 继(Sidechains/relays)和哈希锁定(Hash-locking)==
    2. 高性能
      1. Blockchain to DAG
      2. 改变共识策略
      3. 通过提高系统横向扩展能力来提高系统整体吞吐量,代表有分片、子链、多通道等技术
  4. 共识方面,共识机制从单一向混合方式演变
  5. 合约方面,可插拔、易用性、安全性成为发展重点

行业现状

  1. 各国竞相布局区块链产业制高点
  2. 区块链与实体经济融合成为主旋律
  3. 区块链技术创新日趋活跃
  4. ==区块链标准体系加速构建==

机遇和挑战

机遇 区块链机遇

挑战

  1. 技术成熟层面存在隐患
  2. 应用场景模式尚不明确
  3. 行业专业人才相对稀缺
  4. 相关法律法规有待完善

发展措施和建议

  1. 引导社会客观理性认识
  2. 加强核心关键技术研究
  3. 推动与实体经济深度融合
  4. 完善区块链发展政策环境

12 种可以提升女性晋升的习惯

· 阅读需 2 分钟

免责声明:我对那些仅通过提供成功建议而获得成功的人持怀疑态度。==鸟的飞行不需要鸟类学家的指导。== 不管怎样,这些都是美国女性认为对她们的晋升有帮助的思考材料。

  1. 经常申报你的成就
  2. 意识到别人不会注意到并奖励你的贡献,除非你自己说出来
  3. 专业知识并不是唯一的标准
  4. 利用人际关系
  5. 从第一天起就招募盟友
  6. 把你的职业放在工作之前
  7. 不要追求完美
  8. 杀死取悦他人的病态
  9. 保持放松和舒展
  10. 少些情绪,少说话,少透露
  11. 有效地从失败中走出来
  12. 保持专注

Facebook 如何扩展其社交图谱存储?TAO

· 阅读需 2 分钟

面临的挑战是什么?

在 TAO 之前,使用缓存旁路模式

在 TAO 之前

社交图谱数据存储在 MySQL 中,并缓存于 Memcached 中

三个问题:

  1. Memcached 中的列表更新操作效率低。无法追加,只能更新整个列表。
  2. 客户端必须管理缓存
  3. 难以提供 ==读后写一致性==

为了解决这些问题,我们有三个目标:

  • 高效扩展的在线数据图服务
  • 优化读取(其读写比为 500:1)
    • 低读取延迟
    • 高读取可用性(最终一致性)
  • 写入的及时性(读后写)

数据模型

  • 具有唯一 ID 的对象(例如用户、地点、评论)
  • 两个 ID 之间的关联(例如标签、喜欢、作者)
  • 两者都有键值数据以及时间字段

解决方案:TAO

  1. 高效扩展并减少读取延迟

    • 图特定缓存
    • 在无状态服务层和数据库层之间的独立缓存层(即 功能分解
    • 数据中心的细分(即 水平数据分区
  2. 写入及时性

    • 写透缓存
    • 领导/跟随缓存以解决雷鸣般的拥挤问题
    • 异步复制
  3. 读取可用性

    • 读取故障转移到备用数据源

TAO 的架构

  • MySQL 数据库 → 持久性
  • 领导缓存 → 协调对每个对象的写入
  • 跟随缓存 → 提供读取但不提供写入。将所有写入转发给领导。

Facebook TAO 架构

读取故障转移

Facebook TAO 读取故障转移