1、25匹马,5赛道,无计时器,找出最快3匹,最少几场答案:7次步骤:分5组A‑E,每组5匹,各跑1次。【5次】得到每组内部排序:A1>A2>A3>A4>A5B1>B2>B3>B4>B5C1>C2>C3>C4>C5D1>D2>D3>D4>D5E1>E2>E3>E4>E5各组第一名A1,B1,C1,D1,E1跑第6场。假设结果:A1>B1>C1>D1>E1👉A1确定全局第1名,不用再比。剪枝(不可能进前三的直接排除):D组、E组全部淘汰:D1、E1都排4、5,本组后面更慢B4、B5淘汰;C2、C3淘汰;A4、A5淘汰剩下有机会争夺2、3名候选:A2,A3, B1,B2, C1,一共5匹马。这5匹跑第7场,取前两名,就是全局第2、第3。总计:5+1+1 =7次。误区:很多人答6次,6次只能确定第一名,无法确定2、3名。2、砝码7g、2g,天平,3次把140g盐分成50g、90g目标:140 → 50 和90砝码:7g,2g。天平可以两边放盐+砝码。第1次:把140g平分,天平对半分,得到两份70g。(140 =70 +70)现在:70,70第2次:拿其中一份70g,利用7+2=9g砝码,分出9g盐。天平一边放7+2砝码,另一边从70里面舀出9g盐。得到:9g盐,剩余61g盐。第3次:用9g盐 + 2g砝码,一共11g,去从61g里面舀出11g。👉 9+2 =11,舀出11g。现在:9g +11g =20g;61‑11 =50g。把20g和第一次分出来的70g合并:20+70 =90g;另一堆50g。三次完成:50g、90g。关键点:砝码可以和盐放同一侧,盐本身也可以充当砝码。3、64匹马,8赛道,无计时器,找出最快4匹,最少多少次答案:11次分成8组,每组8匹,跑8次。【8次】每组内部排序:A1>A2…A8,B1>B2…B8 … H1>H2…H8每组第一名A1‑H1跑第9场。假设结果:A1>B1>C1>D1>E1>F1>G1>H1👉 A1确定全局第1。剪枝:E、F、G、H整组全部淘汰(E1已经第5,本组不可能进前4)。剩下A B C D四组。继续剪枝:A组:A2,A3,A4有机会;A5‑A8排除B组:B1,B2,B3有机会;B4及以后排除C组:C1,C2有机会;C3及以后排除D组:只有D1有机会;D2及以后排除候选集合:A2,A3,A4, B1,B2,B3, C1,C2, D1,一共9匹马争夺2、3、4名。取前8匹跑第10场。如果D1在第10场跑完排在第4名以内:那么第10场前3就是2、3、4,总次数10。如果D1在第10场是4名开外:说明D1出局,剩下的候选还有没上场的一匹,需要再跑一次第11场。最坏情况最少需要11次。面试表述:最好情况10次,最坏情况11次,最少保证找出4匹需要11次。4、井盖为什么是圆的?多角度回答不会掉下去:圆形直径处处相等,井盖无论怎么旋转,盖子宽度永远大于井口;方形对角线大于边长,盖子旋转后会掉入井内。搬运方便:圆形可以滚动,方便工人挪动;方形只能抬。受力均匀:圆形受力向四周分散,不容易开裂;方形边角应力集中容易破损。生产加工:模具、铸造简单。安全:没有尖锐棱角,磕碰不容易伤人。井洞本身需求:下水道井筒大多是圆形,抗压更好,匹配圆形井盖。不要只说“不会掉下去”,多答上面3‑4点。5、估算北京有多少加油站(费米估算)思路:自上而下,拆解。北京常住人口约2200万,按家庭算,一户2.5人,家庭约880万户。机动车保有量:北京大约600万辆私家车(包含营运货车出租车)。一辆车平均5‑7天加满一次油,每周加油1次。单辆车每周消耗1次加油服务。总每周加油需求 =600万次。看一个加油站服务能力:一个加油站,4个加油机,平均每台车加油5分钟。一天营业16小时:16*60 /5 *4 =768车次/天一周:768 *7 ≈5376车次/每周。加油站数量 = 总周加油需求 ÷ 单站周处理量600万 /5376 ≈1116再做修正:高速、环路车流更大;部分站点很忙,部分站点空闲;营运车辆(出租车货车)加油频次更高。修正后,北京加油站大概1000‑1300座区间。面试重点:不在乎数字精准,在乎拆解逻辑:人口→车辆总数→单车辆加油频率→单个加油站吞吐,相除得到结果。6、电梯,设计测试用例功能测试楼层按钮:内部选层、外部上下呼梯,按对应楼层是否正常响应;重复按、连续多楼层选择。开关门按钮:开门、关门;按住不松手;多次点击。门传感器:阻挡光幕,门自动重新打开。到达楼层:电梯准确停靠,楼层显示正确,提示音。优先级:内部指令优先/外部呼梯,同向优先,反向请求处理。满载:满载不再响应外部呼叫。超载:超过额定重量,报警,不关门不运行。边界&异常最大楼层、最低楼层;顶层、底层逻辑。断电:断电后电梯状态;应急灯;紧急呼叫按钮。故障:电梯卡滞;门卡住。消防模式:消防开关按下,直接返回首层。UI显示楼层数字、方向箭头、指示灯;到达提示音。性能多人多次呼叫,电梯调度效率;等待时间。安全紧急求救按钮,通话是否正常;防夹;急停按钮。兼容性多人同时操作;多楼层并发呼叫。弱场景断电恢复后,电梯楼层校准。7、两根不均匀绳子,每根烧完1小时,测45分钟绳子不均匀,不能对半剪。操作:绳子A:两头同时点燃;绳子B:只点一头。A两头烧完,用时30分钟。此时B还剩下可以再烧30分钟的长度。立刻点燃B的另外一头。B剩余部分两头烧,会再烧15分钟。30+15 =45分钟。关键点:一根绳子两头同时点燃,燃烧时间减半。8、一堆硬币,一枚更轻,天平最少几次找出;n枚呢天平有三种结果:左边重 /右边重 /平衡。每一次可以区分3种状态。所以最优策略是三分法,尽量分成数量接近的三堆。例子:9枚。第一次:3 vs3。哪边轻,坏币在轻的一堆;平衡则在剩下3枚。第二次:1 vs1。即可找出轻的。👉9枚最少2次。通用公式:最少次数 k,满足:3k−1<n≤3k3^{k-1} < n \le 3^k3k−1<n≤3k比如:n=10:3²=9<10 ≤27=3³ →k=3次。面试话术:天平每次3种结果,信息论角度,按三分法,向上取整⌈log3(n)⌉\lceil log_3(n) \rceil⌈log3(n)⌉。9、5L、3L水桶,量出4L水解法:5L装满,倒进3L桶。5L桶剩余2L。倒空3L桶;把5L里面剩下的2L倒入3L桶。此时3L桶有2L,还能装1L。再次装满5L桶,拿5L往3L桶倒,把3L倒满,只需要再倒入1L。此时5L桶里面剩下正好4L。10、微信朋友圈大面积点赞失败,作为测试开发如何定位确认现象范围是全部用户还是部分用户?安卓/iOS?某个版本?特定好友?现象:点击点赞无反应?报错?页面刷新点赞消失?网络环境?复现概率。分层排查链路客户端:抓包,看点赞请求http状态码、返回业务错误码;确认请求是否发出;是否客户端拦截。网关层:看网关日志,是否限流、熔断、鉴权失败。服务端:点赞接口服务日志,数据库写入是否失败;缓存是否异常;消息队列是否堆积。依赖:点赞计数、好友关系、权限模块是否异常。看监控大盘接口QPS、错误率、RT、机器CPU内存;数据库慢查询、连接数;Redis状态。看故障发生时间点指标突变。区分问题类型客户端bug:新版本才复现,旧版本正常。服务端:全端用户都受影响。中间件故障:缓存击穿、db死锁、mq阻塞。限流:流量突增触发限流。复现与验证构造测试账号,复现;查看埋点日志;如果线上无法复现,提取用户日志,看堆栈。止损优先如果是线上大面积故障,优先评估降级/回滚版本,再深挖根因。根因定位完输出:故障原因、影响范围、修复方案、补充回归用例、增加监控告警。
1、25匹马,5赛道,无计时器,找出最快3匹,最少几场答案:7次步骤:分5组A‑E,每组5匹,各跑1次。【5次】得到每组内部排序:A1>A2>A3>A4>A5B1>B2>B3>B4>B5C1>C2>C3>C4>C5D1>D2>D3>D4>D5E1>E2>E3>E4>E5各组第一名A1,B1,C1,D1,E1跑第6场。假设结果:A1>B1>C1>D1>E1👉A1确定全局第1名,不用再比。剪枝(不可能进前三的直接排除):D组、E组全部淘汰:D1、E1都排4、5,本组后面更慢B4、B5淘汰;C2、C3淘汰;A4、A5淘汰剩下有机会争夺2、3名候选:A2,A3, B1,B2, C1,一共5匹马。这5匹跑第7场,取前两名,就是全局第2、第3。总计:5+1+1 =7次。误区:很多人答6次,6次只能确定第一名,无法确定2、3名。2、砝码7g、2g,天平,3次把140g盐分成50g、90g目标:140 → 50 和90砝码:7g,2g。天平可以两边放盐+砝码。第1次:把140g平分,天平对半分,得到两份70g。(140 =70 +70)现在:70,70第2次:拿其中一份70g,利用7+2=9g砝码,分出9g盐。天平一边放7+2砝码,另一边从70里面舀出9g盐。得到:9g盐,剩余61g盐。第3次:用9g盐 + 2g砝码,一共11g,去从61g里面舀出11g。👉 9+2 =11,舀出11g。现在:9g +11g =20g;61‑11 =50g。把20g和第一次分出来的70g合并:20+70 =90g;另一堆50g。三次完成:50g、90g。关键点:砝码可以和盐放同一侧,盐本身也可以充当砝码。3、64匹马,8赛道,无计时器,找出最快4匹,最少多少次答案:11次分成8组,每组8匹,跑8次。【8次】每组内部排序:A1>A2…A8,B1>B2…B8 … H1>H2…H8每组第一名A1‑H1跑第9场。假设结果:A1>B1>C1>D1>E1>F1>G1>H1👉 A1确定全局第1。剪枝:E、F、G、H整组全部淘汰(E1已经第5,本组不可能进前4)。剩下A B C D四组。继续剪枝:A组:A2,A3,A4有机会;A5‑A8排除B组:B1,B2,B3有机会;B4及以后排除C组:C1,C2有机会;C3及以后排除D组:只有D1有机会;D2及以后排除候选集合:A2,A3,A4, B1,B2,B3, C1,C2, D1,一共9匹马争夺2、3、4名。取前8匹跑第10场。如果D1在第10场跑完排在第4名以内:那么第10场前3就是2、3、4,总次数10。如果D1在第10场是4名开外:说明D1出局,剩下的候选还有没上场的一匹,需要再跑一次第11场。最坏情况最少需要11次。面试表述:最好情况10次,最坏情况11次,最少保证找出4匹需要11次。4、井盖为什么是圆的?多角度回答不会掉下去:圆形直径处处相等,井盖无论怎么旋转,盖子宽度永远大于井口;方形对角线大于边长,盖子旋转后会掉入井内。搬运方便:圆形可以滚动,方便工人挪动;方形只能抬。受力均匀:圆形受力向四周分散,不容易开裂;方形边角应力集中容易破损。生产加工:模具、铸造简单。安全:没有尖锐棱角,磕碰不容易伤人。井洞本身需求:下水道井筒大多是圆形,抗压更好,匹配圆形井盖。不要只说“不会掉下去”,多答上面3‑4点。5、估算北京有多少加油站(费米估算)思路:自上而下,拆解。北京常住人口约2200万,按家庭算,一户2.5人,家庭约880万户。机动车保有量:北京大约600万辆私家车(包含营运货车出租车)。一辆车平均5‑7天加满一次油,每周加油1次。单辆车每周消耗1次加油服务。总每周加油需求 =600万次。看一个加油站服务能力:一个加油站,4个加油机,平均每台车加油5分钟。一天营业16小时:16*60 /5 *4 =768车次/天一周:768 *7 ≈5376车次/每周。加油站数量 = 总周加油需求 ÷ 单站周处理量600万 /5376 ≈1116再做修正:高速、环路车流更大;部分站点很忙,部分站点空闲;营运车辆(出租车货车)加油频次更高。修正后,北京加油站大概1000‑1300座区间。面试重点:不在乎数字精准,在乎拆解逻辑:人口→车辆总数→单车辆加油频率→单个加油站吞吐,相除得到结果。6、电梯,设计测试用例功能测试楼层按钮:内部选层、外部上下呼梯,按对应楼层是否正常响应;重复按、连续多楼层选择。开关门按钮:开门、关门;按住不松手;多次点击。门传感器:阻挡光幕,门自动重新打开。到达楼层:电梯准确停靠,楼层显示正确,提示音。优先级:内部指令优先/外部呼梯,同向优先,反向请求处理。满载:满载不再响应外部呼叫。超载:超过额定重量,报警,不关门不运行。边界&异常最大楼层、最低楼层;顶层、底层逻辑。断电:断电后电梯状态;应急灯;紧急呼叫按钮。故障:电梯卡滞;门卡住。消防模式:消防开关按下,直接返回首层。UI显示楼层数字、方向箭头、指示灯;到达提示音。性能多人多次呼叫,电梯调度效率;等待时间。安全紧急求救按钮,通话是否正常;防夹;急停按钮。兼容性多人同时操作;多楼层并发呼叫。弱场景断电恢复后,电梯楼层校准。7、两根不均匀绳子,每根烧完1小时,测45分钟绳子不均匀,不能对半剪。操作:绳子A:两头同时点燃;绳子B:只点一头。A两头烧完,用时30分钟。此时B还剩下可以再烧30分钟的长度。立刻点燃B的另外一头。B剩余部分两头烧,会再烧15分钟。30+15 =45分钟。关键点:一根绳子两头同时点燃,燃烧时间减半。8、一堆硬币,一枚更轻,天平最少几次找出;n枚呢天平有三种结果:左边重 /右边重 /平衡。每一次可以区分3种状态。所以最优策略是三分法,尽量分成数量接近的三堆。例子:9枚。第一次:3 vs3。哪边轻,坏币在轻的一堆;平衡则在剩下3枚。第二次:1 vs1。即可找出轻的。👉9枚最少2次。通用公式:最少次数 k,满足:3k−1<n≤3k3^{k-1} < n \le 3^k3k−1<n≤3k比如:n=10:3²=9<10 ≤27=3³ →k=3次。面试话术:天平每次3种结果,信息论角度,按三分法,向上取整⌈log3(n)⌉\lceil log_3(n) \rceil⌈log3(n)⌉。9、5L、3L水桶,量出4L水解法:5L装满,倒进3L桶。5L桶剩余2L。倒空3L桶;把5L里面剩下的2L倒入3L桶。此时3L桶有2L,还能装1L。再次装满5L桶,拿5L往3L桶倒,把3L倒满,只需要再倒入1L。此时5L桶里面剩下正好4L。10、微信朋友圈大面积点赞失败,作为测试开发如何定位确认现象范围是全部用户还是部分用户?安卓/iOS?某个版本?特定好友?现象:点击点赞无反应?报错?页面刷新点赞消失?网络环境?复现概率。分层排查链路客户端:抓包,看点赞请求http状态码、返回业务错误码;确认请求是否发出;是否客户端拦截。网关层:看网关日志,是否限流、熔断、鉴权失败。服务端:点赞接口服务日志,数据库写入是否失败;缓存是否异常;消息队列是否堆积。依赖:点赞计数、好友关系、权限模块是否异常。看监控大盘接口QPS、错误率、RT、机器CPU内存;数据库慢查询、连接数;Redis状态。看故障发生时间点指标突变。区分问题类型客户端bug:新版本才复现,旧版本正常。服务端:全端用户都受影响。中间件故障:缓存击穿、db死锁、mq阻塞。限流:流量突增触发限流。复现与验证构造测试账号,复现;查看埋点日志;如果线上无法复现,提取用户日志,看堆栈。止损优先如果是线上大面积故障,优先评估降级/回滚版本,再深挖根因。根因定位完输出:故障原因、影响范围、修复方案、补充回归用例、增加监控告警。