暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

「Python」工具人之初学collection(一)

将咖啡转化为程序的工具人 2021-09-09
544

        最近年轻的工具人比较天真,以为自己头铁,硬顶了一波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 JAVA
          ToolMan talking the principle of Spring
          ToolMan 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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

              评论