首页 » 网站推广 » 新浪试用php空间技巧_互联网公司面试题之新浪公司PHP随机红包算法

新浪试用php空间技巧_互联网公司面试题之新浪公司PHP随机红包算法

duote123 2024-11-14 0

扫一扫用手机浏览

文章目录 [+]

去新浪口试随机红包算法险些是必问的问题,着重稽核口试者的实际动手能力。

题目一:

新浪试用php空间技巧_互联网公司面试题之新浪公司PHP随机红包算法

写出一个随机红包算法(红包总额$n分钱,分配份额$m人,$n>=$m),哀求:

新浪试用php空间技巧_互联网公司面试题之新浪公司PHP随机红包算法
(图片来自网络侵删)

1.不能有人分不到。
2、分配不能太过均匀。
3、拆红包时实时打算金额。
不能提前分配好。

担保每个人都能分配到,只要设置好最大值和最小值就可以了,不能有人分不到,以是最小值必须是大于1分钱。

分配不能太过均匀,只要担保随机数能够在一个尽可能大的范围随机生造诣可以了。

实时打算的话,只要实现函数时把剩余的金额,剩余的份数份数作为变量传入就可以了。

废话不多说,直接上代码,首先定义打算每次分配金额的函数(单位为元):

接下来就可以定义一个循环打算出每个红包的金额了:

末了打印出来类似以下这种,再各自乘以100后,单位便是分了:

3.1,6.73,9.51,2.08,9.03,1.85,4.06,2.15,1.84,7.59,3.74,3.22,10.48,1.38,6.98,9.87,7.78,3.09,4.41,1.11

题目二:

请写出一个微信红包算法,哀求最小值为2块钱,最大值为5块钱,其他条件同题型一。

实际上这道题和题目一十分类似,写代码时只须要将$min变量设置为2,将$max变量设置为5就可以了,其余把稳下边界条件的检讨。

以上便是来悛改浪微博的两道口试题。

祝大家抢红包快乐哦~

转一下关于红包架构的文章

微信红包的架构设计简介

@来源于QCon某高可用架构群整理,整理朱玉华。

背景:有某个朋友在朋友圈咨询微信红包的架构,于是乎有了下面的笔墨(有误请提出,感激)

概况:2014年微信红包利用数据库硬抗全体流量,2015年利用cache抗流量。

1. 微信的金额什么时候算?

答:微信金额是拆的时候实时算出来,不是预先分配的,采取的是纯内存打算,不须要预算空间存储。

采纳实时打算金额的考虑:预算须要占存储,实时效率很高,预算才效率低。

2. 实时性:为什么明明抢到红包,点开后创造没有?

答:2014年的红包一点开就知道金额,分两次操作,先抢到金额,然后再转账。

2015年的红包的拆和抢是分离的,须要点两次,因此会涌现抢到红包了,但点开后奉告红包已经被领完的状况。
进入到第一个页面不代表抢到,只表示当时红包还有。

3. 分配:红包里的金额怎么算?为什么涌现各个红包金额相差很大?

答:随机,额度在0.01和(剩余均匀值2)之间。

例如:发100块钱,统共10个红包,那么均匀值是10块钱一个,那么发出来的红包的额度在0.01元~20元之间颠簸。

当前面3个红包统共被领了40块钱时,剩下60块钱,统共7个红包,那么这7个红包的额度在:0.01~(60/72)=17.14之间。

把稳:这里的算法是每被抢一个后,剩下的会再次实行上面的这样的算法(Tim老师也以为上述算法太繁芜,不知基于什么样的考虑)。

这样算下去,会超过最开始的全部金额,因此到了末了面如果不足这么算,那么会采纳如下算法:担保剩余用户能拿到最低1分钱即可。

如果前面的人手气不好,那么后面的余额越多,红包额度也就越多,因此实际概率一样的。

4. 红包的设计

答:微信从财付通拉取金额数据过来,天生个数/红包类型/金额放到redis集群里,app端将红包ID的要求放入要求行列步队中,如果创造超过红包的个数,直接返回。
根据红包的逻辑处理成功得到令牌要求,则由财付通进行同等性调用,通过像比特币一样,两边保存交易记录,交易后交给第三方做事审计,如果交易过程中涌现不一致就逼迫回归。

5. 发性处理:红包如何打算被抢完?

答:cache会抵抗无效要求,将无效的要求过滤掉,实际进入到后台的量不大。
cache记录红包个数,原子操作进行个数递减,到0表示被抢光。
财付通按照20万笔每秒入账准备,但实际还不到8万每秒。

6. 通如何保持8w每秒的写入?

答:多主sharding,水平扩展机器。

7. 据容量多少?

答:一个红包只占一条记录,有效期只有几天,因此不须要太多空间。

8. 询红包分配,压力大不?

答:抢到红包的人数和红包都在一条cache记录上,没有太大的查询压力。

9. 一个红包一个行列步队?

答:没有行列步队,一个红包一条数据,数据上有一个计数器字段。

10.有没有从数据上证明每个红包的概率是不是均等?

答:不是绝对均等,便是一个大略的拍脑袋算法。

11.拍脑袋算法,会不会涌现两个最佳?

答:会涌现金额一样的,但是手气最佳只有一个,先抢到的那个最佳。

12. 每领一个红包就更新数据么?

答:每抢到一个红包,就cas更新剩余金额和红包个数。

13.红包如何入库入账?

数据库会累加已经领取的个数与金额,插入一条领取记录。
入账则是后台异步操作。

14. 入帐出错怎么办?比如红包个数没了,但余额还有?

答:末了会有一个take all操作。
其余还有一个对账来保障。

--END--

标签:

相关文章

介绍直播新纪元,轻松进入直播的五大步骤

随着互联网技术的飞速发展,直播行业在我国逐渐崛起,越来越多的人选择通过直播这一新兴媒介展示自己、分享生活、传递价值。对于许多新手来...

网站推广 2025-01-03 阅读1 评论0

介绍相机美颜原理,科技与美学的完美结合

随着科技的发展,智能手机的摄像头功能日益强大,美颜相机成为了许多人拍照的首选。美颜相机不仅满足了人们对于美的追求,更在视觉上给人带...

网站推广 2025-01-03 阅读1 评论0

介绍磁铁的制造,科学与艺术的完美结合

磁铁,一种神秘的物质,自古以来就吸引了无数人的目光。它不仅具有独特的磁性,还能在工业、医疗、科研等领域发挥重要作用。磁铁是如何制造...

网站推广 2025-01-03 阅读1 评论0

介绍电瓶激活方法,让电池焕发新生

随着科技的不断发展,电动汽车逐渐成为人们出行的首选。而电瓶作为电动汽车的核心部件,其性能直接影响着车辆的续航里程和行驶体验。新购买...

网站推广 2025-01-03 阅读1 评论0