最近年轻的工具人比较天真,以为自己头铁,硬顶了一波OKR伤害,残血之后回到泉水,下定决心想换个副本刷经验了。
于是工具人去各个大场进行了一轮轮血腥的面试。
首先工具人需要归纳一下自己所拥有的各项技能,将他们按等级分成“知道的”,“熟练的”以及“精通的”,以便在面试中推销自己。
class ToolMan():def prepare_interview(self, knowing_skill: map, familiar_skill: map, proficient_skill: map):self._skills = ChainMap(proficient_skill, familiar_skill, knowing_skill)def self_introduction(self):print(self._skills.maps)if __name__ == "__main__":# 天真的工具人naive_tool_man = ToolMan()#会的技能还不少naive_tool_man.prepare_interview({'coding': 'C++'},{'coding': 'PYTHON', 'framework': 'Django', 'testing': 'Pytest'},{'coding': 'JAVA', 'framework': 'Spring'})
这里工具人选用了比较冷僻的ChainMap作为技能包的数据结构,为什么呢?因为ChainMap可以将多个字典或者映射,想把它们合并成为一个单独的映射。
非常优秀,工具人的技能包还是比较全面的。
self_introduction输出:
[{'coding': 'JAVA', 'framework': 'Spring'}, {'coding': 'PYTHON', 'framework': 'Django', 'testing': 'Pytest'}, {'coding': 'C++'}]
在面试过程中,针对BOSS的不断挑衅,工具人一般都会使用自己伤害最高、效果最好的技能进行输出,以便尽快解决战斗进入下一轮。
class ToolMan():def prepare_interview(self, knowing_skill: map, familiar_skill: map, proficient_skill: map):self._skills = ChainMap(proficient_skill, familiar_skill, knowing_skill)def self_introduction(self):print(self._skills.maps)def coding_examination(self):print('ToolMan coding on blackboard with {}'.format(self._skills['coding']))def framework_examination(self):print('ToolMan talking the principle of {}'.format(self._skills['framework']))def test_examination(self):print('ToolMan working with {}'.format(self._skills['testing']))if __name__ == "__main__":# 天真的工具人naive_tool_man = ToolMan()...naive_tool_man.self_introduction()#上白板写代码naive_tool_man.coding_examination()#谈谈了解的web框架naive_tool_man.framework_examination()#自动化测试怎么做naive_tool_man.test_examination()
三道面试题分别输出了:
ToolMan coding on blackboard with JAVAToolMan talking the principle of SpringToolMan working with Pytest
这里ChainMap作为存储结构的优势就体现出来了,当ChainMap中有相同的key值时,只会返回第一个出现的value,所以非常适合使用具有优先级查询特性的场景中。
可惜,非常不幸,工具人第一次面试失败了,发现只会搬砖写CRUD是没有钱途的。于是,花了24小时,学习了新技能,再造战士,重装上阵(学习能力杠杠滴)。
class ToolMan():...def learning(self, new_skills: map):self._skills = self._skills.new_child(new_skills)if __name__ == "__main__":# 天真的工具人naive_tool_man = ToolMan()naive_tool_man.prepare_interview({'coding': 'C++'},{'coding': 'PYTHON', 'framework': 'Django', 'testing': 'Pytest'},{'coding': 'JAVA', 'framework': 'Spring'})naive_tool_man.learning({'algorithm':'deep_learning','coding':'RUST'})naive_tool_man.self_introduction()naive_tool_man.coding_examination()
这里我们使用了ChainMap的new_child,给map链头添加了新技能。
面试结果如下:
[{'algorithm': 'deep_learning', 'coding': 'RUST'}, {'coding': 'JAVA', 'framework': 'Spring'}, {'coding': 'PYTHON', 'framework': 'Django', 'testing': 'Pytest'}, {'coding': 'C++'}]ToolMan coding on blackboard with RUST
当工具人有了深度学习理论,还能用RUST写分布式数据库,哪家公司让这样的人才去做CURD,不是用拆弹专家去刺杀小说家么~
文章转载自将咖啡转化为程序的工具人,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




