上午刚发offer,下午就被撤销了,难受
刚看到个程序员吐槽:上午刚拿到offer,下午就被公司撤回了,心态直接爆炸。
我觉得这事吧,真的是现如今互联网行业的缩影,别说程序员,哪个行业现在不是说变就变。网友们的回复我看了看,有的劝“看开点”,有的骂公司没底线,其实都在理。
从程序员的角度说,咱写代码讲究严谨,但现实职场就是bug满天飞,有时候你都不知道下一个需求是不是删掉你。企业方也很现实,经济不好,预算一砍,人就成了变量。对了,程序员还容易被看成“工具人”,用完就扔,这感觉比线上掉线还无语。
不过话说回来,这种事遇到了确实很难受,但也是提醒咱们,要不断提升自己的“可替换性”,别让自己被随时revoke。【备注:文末可领最新资料】
面试题:大满贯数量
哎,前天晚上打球回来,楼下烧烤摊喝了点啤酒,旁边有哥们聊到网球,说什么纳达尔、费德勒、德约,谁才是真正的大满贯王。其实这问题啊,不少人一激动就开始吵,但其实你真让他算大满贯数量,十有八九嘴一瓢糊涂账。你要说让代码直接算,这才靠谱,对吧?我一边撸串一边想,干脆写个 Python 脚本,省得以后再听他们吵。
先说下啥叫大满贯,别每次都有人问,大满贯其实就那四个赛事:澳网、法网、温网、美网,每年各一场。球员赢一次算一个。比如德约去年又拿了俩,那就得加上。最简单直接的想法,就是有个二维表,每一行是球员名,每一列四项赛事,记录谁哪年拿了哪一站。
有的人会问怎么存数据,其实你别太复杂,最简单 dict 搞定。比如:
grand_slam_data = [
{"year": 2022, "australian_open": "Nadal", "french_open": "Nadal", "wimbledon": "Djokovic", "us_open": "Alcaraz"},
{"year": 2023, "australian_open": "Djokovic", "french_open": "Djokovic", "wimbledon": "Alcaraz", "us_open": "Djokovic"},
# ...再加数据
]
然后你统计数量就跟数钱似的。新建个 dict,遇到一个名字就+1,循环完直接输出。
from collections import defaultdict
counts = defaultdict(int)
for row in grand_slam_data:
for key in ['australian_open', 'french_open', 'wimbledon', 'us_open']:
player = row[key]
counts[player] += 1
print("各球员大满贯数量:")
for player, num in counts.items():
print(f"{player}: {num}")
这个思路是真简单暴力,你别嫌土,用起来可香了。我们公司有次团建,搞什么体育知识问答,我直接用这段代码查了下最新数据,把组织的小李震住了,他说以前都是网上抄来的,结果人家球员刚拿冠军榜单都不更新。其实靠人眼记,不如用代码直接怼。
再补一句,有些题目不是问总数,是问最多的人是谁。那更简单:
top_player = max(counts, key=counts.get)
print(f"最多大满贯的是:{top_player},一共{counts[top_player]}个")
其实生活里用这种统计的地方老多了,不止体育,比如公司里做 KPI 统计,谁今年拿了几次优秀员工,原理差不多。只不过这类问题千万别让人来手工统计,绝对会出错,尤其一多起来,大家都糊涂。你让 Python 跑一下,五秒钟全出来。
不过有时候还得考虑下同名的问题,比如你数据源里“纳达尔”有时候写“Nadal”,有时候又写成全名“Rafael Nadal”,这个得统一下,不然一统计两份,尴尬了。最暴力的做法,写个 mapping 表,处理前先 normalize 一下名字。
有空你们也可以试试加点花活,比如按每项赛事统计,或者画个图,我有次用 matplotlib 画了个柱状图,配着冰啤酒看着真舒服。不过别跟我学,光顾着撸代码,一不小心烤串糊了,嫂子还说我不务正业,哎...
-END-
我为大家打造了一份RPA教程,完全免费:https://www.songshuhezi.com/rpa.html
虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》,总量高达650GB,点击下方公众号回复关键字 python 全部免费领