四月份的时候,去北京猿题库那边实习了一段时间,到现在也有三个月了。趁着很久没有写博客,写下一些文字作为纪念。
三月多刚开始找实习的时候经FPs推荐,面试了一下猿题库。之前听闻猿题库要求比较高,面试以算法为主,所以之前做了一些准备,没有掉以轻心。
两轮面试,一面基本上就是在线写代码,字符串和数组处理的题目,没有太大难度,不过题目稍显复杂, 细节没有处理太好。二面是唐巧面的,问了一些“比较奇怪”的题目,或者说,没有按照套路出牌,但是深得我心。例如,c++里的int有几个字节,这个问题的答案很容易被人误解成4个字节,但C++标准里其实没有规定int几个字节,每个平台都不一样;不过标准规定了int最少是16位,而后来者java算是填了这个坑,直接规定了基本类型的字节数量。这个问题对于老司机来说应该不难,但是对于应届生应该是比较容易被忽视的。之后写了一点代码,也是字符串处理,比较顺畅地搞定。让我比较意外的是,唐巧还问了一些函数式编程的问题,这在之前以及之后的一些面试中都没有面试官提及,也实属难得。可能是因为他当时也在研究FP,问了我Monad是什么,不过我当时其实没有研究monad,就把我之前写过的C++的函数式容器库讲了一下,也算是对函数式编程的一个比较好的应用。
总的来说面试比较愉快,有代码能力的考察,也有实践经验的考察,以及技能树,没有像某些公司一样硬搬一些程序员面试宝典里的题目过来,也没有欺负实习生问一些工程相关的问题。而正是因为之前的面试都不太愉快,所以我也很快决定去猿题库那边实习了。
去北京之前还是比较忐忑的,毕竟人生地不熟,自己租房,自己生活。好在公司的氛围很不错,人情味也比较浓。入职的第一天,mentor就带我去部门转了一圈,认识了一下各位同事。之后又去领了设备,MacbookPro,Filco键盘之类的,而且竟然都是新的,让我颇感惊讶。
在猿题库的职位是猿辅导服务器端开发,这边的技术栈以java为主,以及Spring、Thrift、ZooKeeper、MySQL、RabbitMQ、Redis、MicroService之类的技术,因为之前都没有接触过,吭哧吭哧在mentor的指导下花了一两个月才算入门,也学到了工程开发中的蛮多东西,单元测试,持续集成,Scrum之类的。总的来说在这边接触的东西比较多,从产品稿到服务实现,再到服务上线,实习生都能接触到。我觉得对于实习生来说,有这样的实习机会是相当不错的。
在这边学到的另一个比较有意思的东西是Scrum。Scrum看起来只是一个开发流程,或者是软件工程的一个开发方法。但我后来发现,其实把它视作一种时间管理的方法也是非常好的。对于平时的一些想法,可以存到backlog中,以备有空的时候去实现。而每周可以给自己总backlog中分配一些任务,具体到每天的工作,可以在每天早上上班的时候考虑一下,今天要搞哪些工作,要读哪些文章,要解决哪些问题。例如计划一周要读一本书,可以按照书的目录分解,周一读第一章,周二读第二章。这样一来任务也比较明确,每天都有固定的目标,不容易懈怠。同时,也可以使用一些工具,我目前使用的是TickTick,感觉还不错。
公司是早上十点上班,一般我会九点多到公司,看看书,或者学习一下前一天遇到的一些问题。利用一些零碎的时间,也看了一些书,关于微服务,Spring之类。虽然公司周末一般不用加班,但我周六基本都会到公司看书,或者写写代码,主要是因为住的地方环境实在是比较糟糕,而公司反而清静一点。三个月过来,感觉这样的生活节奏应该是比较理想的。自己在业余时间也算是学了不少东西,相比于学校里的生活,节奏紧张了一点,但在压力之下学习效率也提高了不少。
实习了一段时间,对未来的发展也有了一些眉目。目前在学习一些关于数据库,存储系统,分布式系统方面的内容,感觉也非常有意思,也许未来会往这方面发展。
想来,自己也算是比较能折腾的,一开始搞Nodejs,搞Web开发,后来又去搞C++,搞操作系统,编译器,之后又玩了一段时间Spark,再是java,到现在又在学数据库。虽然好像都没有搞出什么名堂,但未来的事情谁又知道会怎样呢?