一个有趣的产品经理面试逻辑题:app的文件下载功能

不懂技术怎么做产品?15天在线学习,补齐产品经理必备技术知识,再也不被开发忽悠。了解一下>

你可以不懂产品,但你不能不懂逻辑,看起来一个简单的文件下载,才发现原来也并没有那么简单。

大家都知道产品经理面试是需要考逻辑题的,这可以快速看出一个人的思维能力和逻辑能力。前段时间看到一个有趣的产品面试题,都是开放类型,没有标准答案,这里想分享给大家探讨下。

一、背景

现在很多APP都有下载功能,尤其是视频类app,经常会需要将视频缓存到本地,这就需要用到下载功能。但一般大家不会一个文件一个文件下载,而是经常批量下载一堆文件,这就需要考虑到各个文件之间的优先级及状态变化。

二、假设

  • 现在有ABCD四个文件需要下载;
  • 不考虑异常情况及下载完成,正常情况下这四个文件的状态有三种:下载中、等待中、已暂停;
  • 受到系统限制,只能有一个文件处于“下载中”的状态,其余文件需要处于“等待中”或“已暂停”;
  • 假设此时A处于“已暂停”,B处于“下载中”,C&D处于“等待中”,如下图:

三、 题目

1. 如果此时用户点击了B,四个文件的状态如何变化?(简单级)

  • 理论上来说,用户此时点击B的动机应该是想让它暂停,所以B的状态应该变成“已暂停”;
  • 而A是已暂停状态,用户无操作的时候,状态不会改变,所以A依然是“已暂停”;
  • 那么这里的重点在于C、D,这两个文件都是等待中,这个时候该先下载谁呢?这里的优先级应该按照用户添加下载的时间来定义,如果C比D早加入下载队列,那么这个时候应该先下载C,也就是C变成“下载中”,D依然是“等待中”;

2. 在原假设的基础上,若用户点击的是C,四个文件状态如何变化?(中等级)

(1)据说是80%人的思路

  • 用户此时点击C的目的应该是想先下载C,所以C的状态应该变为“下载中”;
  • 相应地,因为只能有一个文件处于“下载中”,B的下载进程被打断,B就被动变成了“已暂停”;
  • A和D状态不变;

这个逻辑其实也非常有道理,非常正确,目前这一步来看没有什么问题,但是下一步如果用户进一步有操作,就会发现这个逻辑有个陷阱,这个会在第三个问题中详细展开;

(2)其实逻辑更细致的思路:将每一步用户的操作都拆解开来

  • 用户对C执行了点击操作,但是C的状态是不是一定要发生改变?即“等待中”的文件被点击后是否有点击事件?
  • 如果点击C之后有点击事件,那个这个状态有两种可能:“下载中”或“已暂停”,这个时候哪一种更贴近用户的想法?
  • B的进程被打断,那B的状态同样有两种可能:“等待中”或“已暂停”,哪一种更贴近用户呢?

如果你经常使用百度网盘下载文件,你会发现当用户点击C时,百度网盘采用的是如下逻辑:

对照上面的三个步骤分别为:

  • “等待中”的文件C后面确实有点击事件;
  • 百度网盘认为用户点击C之后,已暂停更贴近用户的想法;
  • B的进程未被打断;

百度网盘将用户的点击理解为要暂停这个文件,虽然说这确实是一个用户场景,但是这个场景目前我遇到的还比较少;

我经常遇到的是:想优先下载某一个文件,然而这个文件添加到下载列表的时间较晚,百度网盘按照时间顺序的优先级要等很久才会下载到它,于是我把前面的文件一一暂停,才终于轮到这个文件开始下载了。

百度网盘这里的下载逻辑背后的原因我们不去深究,但至少这给我提供了一种与大部分人认知不太相符的解决逻辑;

相信如果在面试的时候,能够做到与大部分人的出发点不一致,或者能讲出属于自己的逻辑并能够有合理原因证明,那就是一个好的回答,也是一场好的面试。

3. 在上题中80%人的思路下,当C下载完成时,下一步该下谁?(困难级)

此时四个文件的状态如下:

按照正常的产品逻辑:下载中>等待中>已暂停,而此时只有一个文件D处于等待中,因此现在会开始下载D;但是这里会涉及到一个问题:

  • 用户原来的优先级中,是最想先下载B的,其次是C、D,也就是原定优先级:B>C>D;
  • 中途用户改变了想法想先下载C,也就是此时C变为最高优先级,但是我们并不能判断C和D在用户心理的优先级有改变,从尊重用户的角度来说,应该保持原优先级,即现在的优先级应该为C>B>D;
  • 那么当C下载完成时,此时B应该是最高优先级,应该优先下载B;那显然此时产品逻辑上开始下载D是不符合用户需求的,用户这个时候需要下载的是B;
  • 但B现在是已暂停状态,从产品逻辑上来说:下载中>等待中>已暂停,这个优先级也不能被打乱;

好像陷入了一个两两矛盾的状态,怎么办?

所以这一问才是全题的关键所在,这个逻辑被质疑和挑战的时候,往往才能看出产品经理的判断力和决策力;

这里提供以下几个备选方案:

  1. AB实验:看下哪个方案更受用户的喜欢,对数据有正向帮助;
  2. 向上汇报,让领导决策:遇到自己无法决策的问题,可以把问题升级到更有经验的领导那里,让领导决策;

四、相对最优的答案

1. 如果此时用户点击了B,四个文件的状态如何变化?(简单级)

此问答案同上,B变为“已暂停”,开始下载C,D仍为“等待中”;

2. 在原假设的基础上,若用户点击的是C,四个文件状态如何变化?(中等级)

从这一问开始,和上文有不同的解决方案:用户点击C之后,C的状态改变为“下载中”,但是B的状态不是变为“已暂停”,而是变为“等待中”,如下图:

3. 当C下载完成时,下一步该下谁?(困难级)

此时,B和D的状态都是“等待中”,按照上面说过的逻辑,这个时候按照原定优先级C>B>D,开始下载B,上面提到的矛盾就迎刃而解了,如下图:

五、总结

一位有多年面试经验的产品大佬说,面试中的这类逻辑题往往没有标准答案,主要是想考察产品求职者的逻辑能力,以及面对挑战的心理素质;

所以大家即便是遇到从来没有想过或者见过的产品场景被转化成面试题来拷问自己,也不用太慌,可以用你的逻辑征服面试官!

实在不行,就坚定自己的立场吧,毕竟相信自己的判断力也是很大的加分项~

(这篇文章其实有点绕,因为这个逻辑用文字表达实在有点绕,大家凑合看~感谢感谢)

#相关阅读#

《电商已经一片混战,阿里京东等巨头们正在努力“自救”?》

《拼多多金猪储蓄罐的细节和数字,远比你想象中严谨》

 

作者:一律先生, 一个有梦想的产品汪!

本文由 @一律先生 原创发布于人人都是产品经理,未经许可,禁止转载。

题图来自Unsplash, 基于CC0协议。

给作者打赏,鼓励TA抓紧创作!
评论
欢迎留言讨论~!
  1. 很有意思,也很有艺术,一个简单的案例分析逻辑清晰,解说得干脆易懂,很喜欢你的这篇文章!!

    回复
    1. 谢谢谢谢,过奖啦~记得订阅哦hhh :smile:

      回复
  2. 好顶赞!

    回复
    1. 谢谢谢谢,那记得订阅哦~hhh :smile:

      回复
  3. 学到了,大佬很有意思的的逻辑思维,也看了所有评论,我认为在不同的下载场景中,优先级确实有所不同,所以没有所谓的最优解,产品逻辑的核心依然是满足大多数使用用户习惯…

    回复
    1. 目前看到的最客观的一条评论哈哈哈 :smile:

      回复
  4. 大家可以多去体验下各大app的下载功能哦,百度云的做法文章中有提到,爱奇艺的做法和最优解一致~ :smile:

    回复
  5. 如果我想先下载c只需点击b暂停即可,根本不会去点c,因为此时c处于等待第一优先级,如果我去点那只能是想要取消下载或置于最末优先级下载。

    回复
    1. 如果按照文章中,在你明显已知优先级的情况下,你的说法成立;但放在现实场景中,很难成立;
      若作为一个普通用户,此时有两个文件在“等待中”,而且实际场景中文件名并不是按照C、D这种明显有顺序的方式命名的,且很可能等待中的文件有n个,甚至可能很多用户连“优先级”这个词都没有听过,请问用户如何是怎么知道这些等待中文件之间的优先级的?你确定用户还能记住n个文件中哪个被他先添加进下载队列的?

      回复
    2. 用户不需要知道优先级这个词也一样可以知道下一个下载的是哪个文件,在我作为用户使用下载功能的时候,我可以很清楚的知道下载列表是按照我的添加顺序排列,那么在我不做干扰的情况下,不管文件如何命名都一定是默认按照列表顺序下载的,不会存在分不清哪个是先添加哪个是后添加的问题。

      回复
    3. 我理解在你的原假设下,认为点击C是变为“已暂停”更贴近此时用户的想法,就是用户不需要再下载这个文件了,那这个时候用户是不是可以直接删除这个下载任务,而不是让它变为已暂停?
      用户的场景有千千万万,需要产品经理做一定取舍,没有任何一个产品可以满足所有场景,只能尽可能满足最高频的用户场景,而且你个人的行为习惯并不能代表用户群体的行为习惯,你可以在身边做下用户调研,看看和你习惯一致的人有多少;补充一句:最优解的做法是爱奇艺、腾讯视频的做法

      回复
    4. 既然不能满足所有场景,就不该单独拿视频类app的下载为基准,如果是工作需要而下载文件,必然存在有优先需要的情况,所以暂停并不是不要下载了而是我暂时不需要可以等其他的下载结束后再进行下载。

      回复
    5. 这个我同意,我觉得要是第二个在下载时我点了第三个先下载,我可能第二个就不需要再被下载了,我要下载的是第三个及以后的内容,可以等后续全部下载完再来下第二个,我觉得这个比较符合用户的使用习惯吧。
      具体场景比较下电视剧,我不下载第二集而去点第三集的目的大多是我第二集看完了,这时候如果你第三集下完返回把我第二集下了,我会觉得好脑残😂,个人想法,仅供参考

      回复
    6. 你们俩逻辑并不一致呀,你如果想下载第三个及之后的文件,这个时候对你来说最优操作不是点击C,而是点击此时唯一一个正在下载的B,让B暂停掉,自然就开始下载第三个及之后的文件了,你只需要这一步操作

      回复
    7. 哦哦~我的习惯可能是直接点C😂让他去下载

      回复
    8. 是的,我也会直接点C,因为有时候我会根据文件的大小优先下载小的😂,想让哪个下就点哪个,而不是点另一个来触发这个;作者说的意思只是另一种思路和解决方式

      回复
  6. 如:A暂停B下载中C等待中D等待中,用户现在不想下载C和D,只想把B下载完成,是不是我要点两次C和D才能暂停,同时B的下载还会被中断

    回复
    1. 确实有这种场景,而且这个用户场景在2.(2)中讨论过:如果点击C之后有点击事件,那个这个状态有两种可能:“下载中”或“已暂停”,这个时候哪一种更贴近用户的想法?我理解在你的假设下,认为变为“已暂停”更贴近此时用户的想法,就是用户不需要再下载这个文件了,那这个时候用户是不是可以直接删除这个下载任务,而不是让它变为已暂停?
      用户的场景有千千万万,需要产品经理做一定取舍,没有任何一个产品可以满足所有场景,只能尽可能满足最高频的用户场景 :smile:

      回复
    2. 貌似有一个是全部暂停,然后再点B就好了,之前用过百度网盘这样做过😂

      回复
  7. 1.按照你第二个问题的逻辑,我们来考虑一下题目,A是怎么变回已暂停的,如果是和第一个问题一样,用户点击的是A,A变成已暂停,没有问题;但是用户点击B,按照你的逻辑,A应该是等待中,而不是题目中的已暂停,所以就会和原系统的机制产生矛盾。
    2.从你回答第三个问题的分析,按照你的逻辑,A也处于刚开始下载后切换为已暂停的,那为什么不是优先级应该为C>A>B>D,之后应该先下载A而不是B,而且从日常的我的使用心理来说,当一个下载任务被我变为已暂停之后,他在我的心理优先级是没有等待中来的高的,也就是我已经确认暂停一个任务,我更期待的是后面等待中的任务。
    还有就是,本题目中A与B只有一个,但是如果实际中,有A1-An,B1-Bn呢,按照你的逻辑,等Cx下载完成之后,又转回Ax,从这样的使用场景来说,这么多的下载任务,用户有时候都记不过来是哪个了,更摸不着头脑了,会产生混乱。
    所以综上我的12分析,我还是认为百度网盘的下载逻辑是最贴切用户使用习惯的,逻辑简单清晰,开发也接受,

    回复
    1. 1. 最优解中第一问就给出了答案:当文件处于“下载中”时被用户主动点击后,文件状态才会变更为“已暂停”;
      2. 用户主动点击了A,用户主动进行的暂停操作,相当于默认将A的优先级变为最后了,C>A>B>D这个逻辑从哪推出来的??
      3. 无论A1-An有多少个,B1-Bn有多少个,产品的优先级顺序不会变,A系列文件处于已暂停状态,当用户不主动去改变此文件的已暂停状态,文件不会进入下载等待队列;若用户点击了已暂停,此时应该先变为下载等待队列,而不是直接开始下载;

      回复
    2. 我知道你写一篇文章,会花一些时间,会沉浸在自己的思维里,你先好好看我说的,我就是按照你的逻辑去推导的,是会有逻辑混乱。

      回复
    3. 非常认可你的质疑点,但确实没有看懂你的逻辑,你再仔细看看文章的推导过程,实在不行要不加个微信讨论下 :mrgreen:

      回复
  8. 我的答案和百度网盘一样,点击C把状态由 等待中变为已暂停。A的下载优先级更高,不能被打扰。
    点击的逻辑是在“开始下载”“暂停下载”状态之间切换(如有其它文件在下载,则“开始下载”变为“等待下载”),这样逻辑简单清晰,对于用户学习成本更低。

    回复
    1. 这个用户场景在2.(2)中讨论过:如果点击C之后有点击事件,那个这个状态有两种可能:“下载中”或“已暂停”,这个时候哪一种更贴近用户的想法?你认为是变为“已暂停”更贴近用户的想法,就是用户不需要再下载这个文件了,那这个时候用户是不是可以直接删除这个下载任务,而不是让它变为已暂停?
      综合判断,其实用户操作等待中任务的场景大部分都是想优先下载此文件,尤其在下载电视剧等有先后顺序的文件场景中更为显著,这是用户干预下载顺序最快的路径

      回复
  9. 全中

    回复
    1. 棒棒,给你加鸡腿 ;-)

      回复
  10. 从技术角度讲的话,不考虑技术干预,谁先下载是由线程的前后顺序决定的……

    回复
    1. 技术大佬说的在理,这里只讨论了产品逻辑,具体技术实现得再和研发爸爸们对下 ;-)

      回复
  11. 个人认为从下载C开始那一步,B就要变更成等待中…从定义这三个状态的文案来看,等待中这个状态一定是等待开始,而不是等待暂停!人脑获取静态信息的途径是图片>文案,文案的转化是和语文有关的。🌚

    回复
    1. 文中难道不是这个逻辑吗……没太懂您要表达的点 :roll:

      回复
  12. 我觉得有点想多了,因为之前的状态只有 下载中和未开始两个按钮,程序只需要写一个点击判断就OK,现在按您的最优解法,明显要复杂很多,不适用于后期维护。

    回复
    1. 之前也是三个状态呀:等待中、下载中、已暂停;按照最优解也没有增加点击事件的个数,只是变更了点击事件的内容~ :smile:

      回复
    2. 我是说按钮状态

      回复
  13. 我有个小小的疑问,如果下载中点击后的状态是到等待中,那已暂停的状态是如何出现的呢 ?

    回复
    1. 没有下载中的状态被点击后变成已暂停呀?是不是看错啦,是点击了等待中的文件,导致下载通道被占用,原下载中文件变为“等待中”

      回复
    2. 其实我没太理解的是已暂停的状态是怎么出现的,按照作者在第四.3中的的逻辑,在点击后的状态变化如下:
      下载中->等待中
      等待中->下载中

      那在初始状态中的已暂停是在什么场景下通过什么操作出现的?

      回复
    3. 你在仔细看下文章第四.1:用户点击“下载中”的文件后,该文件就会变为“已暂停”;

      回复
    4. 同样的疑问,如果点击后,文件变为“等待中”,那么什么操作可以出现“暂停”状态?
      其实我觉得这个只是操作习惯,比如,双击是“等待中”,那么右击等操作肯定会出现“暂停”操作。
      相反也是一样的道理。

      最后,鄙人认为:只是看用户在实际场景中更多的是“暂停”,还是“优先下载”。
      1、如果“暂停”用的多,双击暂停。
      2、如果“优先下载”用的多,可以双击变为“等待中”。
      2.2、或者等待中的文件拖动到第一位后,自动变为“下载”状态,而刚刚第一位的下载文件,自动变为第二位,状态自动转换为“等待中”。
      (未考虑技术实现问题)

      回复
    5. 你再仔细看下文章第四.1:用户点击“下载中”的文件后,该文件就会变为“已暂停”;
      另外双击这个交互也确实是一种比较新颖的解决方案,但是在其他大型app都没有在移动端采用这个交互的时候,冒然使用有一定风险,用户短期内很难养成习惯,不过也不失为一种创新

      回复
  14. 最后答案和我想的一样

    回复
    1. 那很厉害哦哈哈哈 :smile:

      回复
  15. 大家可以关注同名微信号:一律先生

    回复