跳至主要內容
头脑风暴题目

头脑风暴题目

通常大公司招人的时候除了考察专业知识,算法之外,还会通过智力题来考察面试者的智力和潜力; 本章节主要收集常见的头脑风暴题。

智力题

智力题1(海盗分金币)——海盗分金币

5个海盗抢得100枚金币后,讨论如何进行公正分配。他们商定的分配原则是:

  • (1)抽签确定各人的分配顺序号码(1,2,3,4,5);
  • (2)由抽到1号签的海盗提出分配方案,然后5人进行表决,如果方案得到超过半数的人同意,就按照他的方案进行分配,否则就将1号扔进大海喂鲨鱼;
  • (3)如果1号被扔进大海,则由2号提出分配方案,然后由剩余的4人进行表决,当且仅当超过半数的人同意时,才会按照他的提案进行分配,否则也将被扔入大海;
  • (4)依此类推。

gavin-james大约 10 分钟算法和数据结构其他
推荐算法 - 汇总

推荐算法 - 汇总

本文主要对推荐算法整体知识点做汇总,做到总体的理解;深入理解需要再看专业的材料。

推荐算法的意义

推荐根据用户兴趣和行为特点,向用户推荐所需的信息或商品,帮助用户在海量信息中快速发现真正所需的商品,提高用户黏性,促进信息点击和商品销售。

  • 帮助用户找到想要的商品(新闻/音乐/……),发掘长尾

帮用户找到想要的东西,谈何容易。商品茫茫多,甚至是我们自己,也经常点开淘宝,面对眼花缭乱的打折活动不知道要买啥。在经济学中,有一个著名理论叫长尾理论(The Long Tail)。套用在互联网领域中,指的就是最热的那一小部分资源将得到绝大部分的关注,而剩下的很大一部分资源却鲜少有人问津。这不仅造成了资源利用上的浪费,也让很多口味偏小众的用户无法找到自己感兴趣的内容。


gavin-james大约 20 分钟算法和数据结构领域算法
负载均衡算法 - 汇总

负载均衡算法 - 汇总

本文主要介绍常用的负载均衡算法和Nginx中支持的负载均衡算法。

常见的负载均衡算法

常见的负载均衡算法包含:

  • 轮询法(Round Robin)
  • 加权轮询法(Weight Round Robin)
  • 平滑加权轮询法(Smooth Weight Round Robin)
  • 随机法(Random)
  • 加权随机法(Weight Random)
  • 源地址哈希法(Hash)
  • 最小连接数法(Least Connections)

gavin-james大约 4 分钟算法和数据结构领域算法
分布式算法 - Snowflake算法

分布式算法 - Snowflake算法

Snowflake,雪花算法是由Twitter开源的分布式ID生成算法,以划分命名空间的方式将 64-bit位分割成多个部分,每个部分代表不同的含义。这种就是将64位划分为不同的段,每段代表不同的涵义,基本就是时间戳、机器ID和序列数。为什么如此重要?因为它提供了一种ID生成及生成的思路,当然这种方案就是需要考虑时钟回拨的问题以及做一些 buffer的缓冲设计提高性能。

雪花算法-Snowflake

Snowflake,雪花算法是由Twitter开源的分布式ID生成算法,以划分命名空间的方式将 64-bit位分割成多个部分,每个部分代表不同的含义。而 Java中64bit的整数是Long类型,所以在 Java 中 SnowFlake 算法生成的 ID 就是 long 来存储的。


gavin-james大约 7 分钟算法和数据结构领域算法
分布式算法 - Raft算法

分布式算法 - Raft算法

Paxos是出了名的难懂,而Raft正是为了探索一种更易于理解的一致性算法而产生的。它的首要设计目的就是易于理解,所以在选主的冲突处理等方式上它都选择了非常简单明了的解决方案。

推荐阅读

提示

强烈推荐通过如下资料学习raft。


gavin-james大约 14 分钟算法和数据结构领域算法
分布式算法 - Paxos算法

分布式算法 - Paxos算法

Paxos算法是Lamport宗师提出的一种基于消息传递的分布式一致性算法,使其获得2013年图灵奖。自Paxos问世以来就持续垄断了分布式一致性算法,Paxos这个名词几乎等同于分布式一致性, 很多分布式一致性算法都由Paxos演变而来。

Paxos算法简介

Paxos算法是Lamport宗师提出的一种基于消息传递的分布式一致性算法,使其获得2013年图灵奖。

Paxos由Lamport于1998年在《The Part-Time Parliament》论文中首次公开,最初的描述使用希腊的一个小岛Paxos作为比喻,描述了Paxos小岛中通过决议的流程,并以此命名这个算法,但是这个描述理解起来比较有挑战性。后来在2001年,Lamport觉得同行不能理解他的幽默感,于是重新发表了朴实的算法描述版本《Paxos Made Simple》。


gavin-james大约 8 分钟算法和数据结构领域算法
分布式算法 - 一致性Hash算法

分布式算法 - 一致性Hash算法

一致性Hash算法是个经典算法,Hash环的引入是为解决单调性(Monotonicity)的问题;虚拟节点的引入是为了解决平衡性(Balance)问题。

一致性Hash算法引入

在分布式集群中,对机器的添加删除,或者机器故障后自动脱离集群这些操作是分布式集群管理最基本的功能。如果采用常用的hash(object)%N算法,那么在有机器添加或者删除后,很多原有的数据就无法找到了,这样严重的违反了单调性原则。


gavin-james大约 7 分钟算法和数据结构领域算法
分布式算法 - Overview

分布式算法 - Overview

本文总结下常见的分布式算法,主要是分布式中的一致性算法。

常见的分布式算法

  • 分布式算法 - 一致性Hash算法
    • 一致性Hash算法是个经典算法,Hash环的引入是为解决单调性(Monotonicity)的问题;虚拟节点的引入是为了解决平衡性(Balance)问题
  • 分布式算法 - Paxos算法
    • Paxos算法是Lamport宗师提出的一种基于消息传递的分布式一致性算法,使其获得2013年图灵奖。自Paxos问世以来就持续垄断了分布式一致性算法,Paxos这个名词几乎等同于分布式一致性, 很多分布式一致性算法都由Paxos演变而来
  • 分布式算法 - Raft算法
    • Paxos是出了名的难懂,而Raft正是为了探索一种更易于理解的一致性算法而产生的。它的首要设计目的就是易于理解,所以在选主的冲突处理等方式上它都选择了非常简单明了的解决方案
  • 分布式算法 - ZAB算法
    • ZAB 协议全称:Zookeeper Atomic Broadcast(Zookeeper 原子广播协议), 它应该是所有一致性协议中生产环境中应用最多的了。为什么呢?因为他是为 Zookeeper 设计的分布式一致性协议!
  • 分布式算法 - Snowflake算法
    • Snowflake,雪花算法是由Twitter开源的分布式ID生成算法,以划分命名空间的方式将 64-bit位分割成多个部分,每个部分代表不同的含义。这种就是将64位划分为不同的段,每段代表不同的涵义,基本就是时间戳、机器ID和序列数。为什么如此重要?因为它提供了一种ID生成及生成的思路,当然这种方案就是需要考虑时钟回拨的问题以及做一些 buffer的缓冲设计提高性能。

gavin-james大约 2 分钟算法和数据结构领域算法