迪子员工硬刚领导,被隔壁组长移出群聊!
刚刷到个贴子,说有笛子的程序员员工不爽领导下班安排会议,直接硬刚,结果被隔壁组长踢出群聊。讲真,这种事儿程序员应该深有体会——下班了还被拉回工位,真的有点离谱🤦♂️。
我觉得这事吧,表面上是“刚领导”,其实背后反映的还是技术人普遍的边界感。毕竟写代码的,靠的是脑子和精力,长期超时工作效率真会打折。但网友有的觉得“刚”了很解气,也有人觉得这样不懂职场规则,吃亏的还是自己。我认同后一种说法,毕竟公司真没你想得那么“讲理”,尤其是大厂,更看重执行力。
从我自己的角度看,维护自己的时间没错,但硬刚领导效果一般,程序员的职场生存法则其实是“会做事也要会做人”。说白了,工作还是讲“性价比”,下班时间也有自己的价值。合理拒绝可以,但记得留好台阶。【备注:文末可领最新资料】
面试题:最大数量高于平均水平的订单
你们有没遇到那种突然想起今天还没写完的那个需求...就那种订单统计的,啊我今天就遇到了,搞得我凌晨一点多脑袋还在转,什么最大数量高于平均水平的订单——这题我最开始还以为是让你统计下单数最多的客户,后来一想,不对,逻辑没那么绕...
直接说正事啊,这玩意其实逻辑挺简单的,就是给你一堆订单数量,问你有多少个订单的数量,比所有订单的平均值还高。刚开始我还去纠结是不是要考虑负数订单啥的,后来发现就是一堆正整数,不用太复杂。
比如说,给你个订单列表:[10, 20, 30, 40, 50],你先算下平均值,这里就是(10+20+30+40+50)/5=30,对吧?那高于30的有哪些?40和50嘛,对吧。所以返回2。
说白了,就是遍历两次,一次求和算平均,一次看有几个大于平均值。等我刷完牙回来坐在工位上(其实都快困死了),直接撸了一段Python,真的,代码就十行:
defcount_orders_above_average(orders):
ifnot orders:
return0
avg = sum(orders) / len(orders)
count = 0
for num in orders:
if num > avg:
count += 1
return count
你别说,真就是这么直接。后来我想偷懒写成一行,强行装个X,用个列表推导式:
defcount_orders_above_average(orders):
avg = sum(orders) / len(orders) if orders else0
return sum(1for num in orders if num > avg)
不过老实讲,这种需求在公司里面其实挺常见的,就是数据报表那种,比如老板让你统计哪些分店业绩高于平均线,八成就是照这个逻辑来。
有一回,咱们后端有个哥们直接用pandas做,说真的,这玩意适合批量数据,但其实原理还是那个原理,只是代码更短:
import pandas as pd
defcount_orders_above_average(orders):
s = pd.Series(orders)
return (s > s.mean()).sum()
但一般面试或者刷题让你手撸,还是建议别偷懒用库,人家主要是想考你基础逻辑。
说到这个我还想到前几天小李跟我说他被问“怎么保证数据准确性”,其实你只要注意下浮点数误差问题就行,比如平均值能不能整除啥的。实在怕出错,你可以像这样保留两位小数:
avg = round(sum(orders) / len(orders), 2)
不过绝大多数情况下,这题真没啥坑,就是你得注意空列表那种情况。你要一开始啥都没,平均值怎么都得是0吧,反正这种细节面试官要是问出来,十有八九是想看你细心不细心。
总之,这种“统计高于平均值的数量”,逻辑别想复杂,就是先平均再统计。像我那天夜里加班脑袋糊了,还差点想去写个二分查找,结果根本没那个必要...你们遇到类似问题千万别绕弯,直接一步到位。
对了,扯远了,上周末在楼下便利店写bug的时候,隔壁桌有个人用C++也问我这题,他那边for循环还搞了个排序,其实完全没必要,直接两趟循环就行。你要追求极致,理论上一趟也能搞,就是先求和再遍历用sum/len直接比较,但没啥提升,除非数据巨大。
-END-
我为大家打造了一份RPA教程,完全免费:https://www.songshuhezi.com/rpa.html
虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》,总量高达650GB,点击下方公众号回复关键字 python 全部免费领