查看原文
其他

经典回顾|2016编程之美“封神榜”系列干货分享

2016-04-28 编程之美 微软研究院AI头条



随着编程之美大赛的启动,相信各位同学已经摩拳擦掌跃跃欲试了~

慢着慢着~你不觉得少了点什么嘛?

磨刀不误砍柴工,让我们先来听听前辈们过五关斩六将的经验!

#2016编程之美挑战赛#邀请了四位往期优秀选手担任主讲人共同制作了一套系列视频课程——2016编程之美挑战赛“封神榜”课程。

为了帮助大家更好地了解编程之美和Code Hunt平台,这四位往年编程之美优秀选手从过来人的角度给大家分享最贴心最到位的参赛小建议,同时也将分享他们的编程故事和提升算法能力的技巧。

也许你因为各种原因错过了这个课程,没关系,下面是小编帮你总结的四次“封神榜”课程的精华,一起来看看吧!


封神榜第一期:陈晓奇



本期嘉宾介绍:陈晓奇,上得了清华,写得了代码的大三欧巴。2014、2015连续两年在编程之美挑战赛中取得top5的成绩。(长得帅,还这么大神~各位看官你们慢慢看~小编我先去抱欧巴的大腿了~)


1
  邂逅编程

我从初二开始接触编程,跳进坑就再没能走出来(笑),从那时候起懵懵懂懂地开始写程序和接触计算机本身,后来竞赛被保送进清华又选择了计算机系。

进入大学以后,除了写算法参加竞赛,我也时不时地写一些好玩的小软件给自己和同学们用,比如微博客户端。

很多人都关心在清华学习压力大不大,其实是非常大的,我们大家都会给自己写一个ddl任务管理器,屏幕上永远显示的是时间倒叙排列的要交的任务,时间非常紧张。但同时也提高了我们的效率,所以在组队参赛时我们统筹兼顾的很好。

2
  结缘CodeHunt

初识CodeHunt

第一次看到CodeHunt这个平台,我就觉得它特别有趣,它像是一个游戏式的平台,注重于逆向算法和逆向工程的能力,在浏览器中让你自己写一些很简短的代码,它会给定输入和输出,让你去猜正确代码是什么,非常具有挑战性。同时呢,CodeHunt让我最喜欢它的一点是它的实时反馈,基本上它的解不会超过三五行,所以你一写完立刻就知道对或者不对,这是一个更实时的反馈。对于不了解它的同学,也非常容易上手,只需要去 Code Hunt官网做几套题熟悉一下平台就可以了。

学长手把手带你飞

运用这个平台最基本的要求就是熟悉语言的标准库,如果你能用标准库的函数会很方便,所以有时间的话就看一看它,以及在比赛之前把java库的帮助放在旁边,这样方便自己查找。

CodeHunt平台的一个好处是有一些简单的规律可循。比如说,如果输入是一个整数,那么你可以试试是不是跟这个整数相关的一次函数,或者一个二次函数,ax^2+bx+c的形式。又比如说输入是俩个整数,那比如说你可以试一试是不是它们两个之间的大小关系,又比如说是不是ax+by+c的形式,这样基本上就可以解决大部分的情况。

同时,在做题的时候要注意的是CodeHunt对代码的简洁程度是有评分的,所以我们需要注重题目的简洁和效率,能用复杂度为O(n)的算法就不要用O(n^2)的。另外一点就是,如果你提交这个代码发现怎么做都不对的话,这个时候你可以往后跳。当然也有很多同学好奇做题顺序的问题,真正比赛的时候就按照题目的顺序做就好,遇到不会的直接跳过,回头再来解决它。

小tip

在4月18号到22号之间,同学们都可以在我们BOP的官网上进行CodeHunt平台的测试哦


3
 大赛经历


分享一下过去两年我的决赛题目吧~2014年编程之美我选择的是利用扬州市的交通数据跟最新的微博数据来尝试预测哪里会出现交通拥堵,从而避开这些地方,方便大家出行。而2015年我主要就是用SVM支持向量机对大量的新闻进行两次排序分类,然后根据用户数据预测他的偏好,将整理后的新闻推送给他。编程过程中优秀的算法是一方面,但是更重要的是创意,一个好的idea才是编程的灵魂。

经验

连续两年参加比赛,我认为编程之美有别于其他比赛的地方在于,很多其他的编程比赛只是考查一个纯算法,而微软编程之美非常侧重于你最后的项目的评选,以及最后的项目的展示环节,所以它更需要同学们有一种拼一个完整的项目的能力。

4
  编程之美


创意赛


在去年的决赛中,我有幸见到了做CodeHunt整个大项目的Judith Bishop教授,她跟我们讲了CodeHunt平台很多背后的算法跟运维的含义,让我对微软的企业价值观企业文化有了更深刻的认识。

今年编程之美真的很令人惊喜的地方就是增设了创意赛,创意赛是需要大家把编程和其他的学科相结合,来谈一些怎么让编程来帮助其他学科或者怎么让世界变得更好。我认为这样的创意要分成三个层次。

1使用已有研究方法帮助别的学科进行研究




比如说,大数据可以在交通城市规划领域或者在经济学通过虚拟经济那些东西来帮助学科验证他们已有的理论跟猜想,或者做一些实验,又比如图像识别技术可以抓到人的非常细微的表情,它可以验证心理学已经有的一些假设或已有的理论。

2创造新的研究方法和新的理论



现在很多人可以直接用ipad来画画,数字敦煌、数字化故宫直接使美术领域跟编程产生一个新的混血儿,可以让人们有全新的方式去欣赏艺术。又比如说深度神经网络可以做出一个deep print的项目,可以直接模仿一个大师的画风,把你的脸画得跟梵高里面的油画一模一样,我想这种东西是编程跟其他学科的一种新的创造。

3编程与其他学科融合,出现人们意料之外的技术创新

比如说,IBM的华生,what's the AI,他们是之前拿来下国际象棋的,这并不是什么很创新的事情,后来他们把这个AI拿去很奇怪的领域去用了,自从华生理解了化学,跟分子之间的反应之后,他们就拿华生去做菜,因为懂得化学本质,所以他们可以创造一些匪夷所思的菜谱,而它们吃起来又确实非常好吃,这一点是远远超出人们之前对化学这一学科的期望的,我想这就是一个很好的跨学科交流和跨学科结合的一个例子。


创意做出来的同时,你还要有把它表述出来的能力。第一点要说我做了什么,你可以用一个非常直观的例子告诉其他人,我的项目做到了什么。另外一点就是我做了什么别人做不到的东西。这两点是我们对自己做了什么的完整的表述。


编程之美


对于我自己而言,经历了两年的编程之美,我对编程也有了新的理解,在我眼里它就像麦克斯韦方程组、快速傅里叶变换一样,充满着简洁之美,而就是这种简简单单的东西却给我们的生活带来巨大的提升,解决了许多难题,让我们的生活变得更美好,这,就是我眼中的编程之美。



封神榜第二期:朱睿


主讲人介绍朱睿北京大学信息科学技术学院12级学生, 曾在14年编程之美挑战赛中凭借着优秀的算法能力和demo展示能力在众多选手中脱颖而出,获得了最佳demo奖,并且通过编程之美挑战赛获得了到微软实习的机会。本次分享中,朱睿将与大家分享他提升算法能力、做demo的小技巧,并结合自己的实习经历给大家一些建议。
比赛经验小结


男神gg你是什么时候开始学习编程的?
严格来讲我从小学六年级就开始学习编程了,因为我的父亲是一个计算机硬件工程师,他在小学的时候就教过一些C语言方面的知识,到了中学时候,我就更加专业地接触一些竞赛方面的知识,系统了解一些算法。高中的时候参加了全国的奥林匹克竞赛然后保送到的北大。来到北大之后,我们有一些有趣的专业课还有课题,还有非常多的社团,让我有很多意想不到的收获。
男神gg你参加过那么多比赛,能不能分享一下你的参赛经验呢?
我们一般会把这些比赛分为两种:一种是比较偏重算法的,他们的特点就是对选手的算法要求能力很高。另一些比赛 ,是对团队合作能力要求比较高,需要团队的有效配合。而编程之美是很好的结合了这两种比赛,首先在初赛时候会有些算法上的考量,在复赛和决赛时候会有团队合作进行项目开发,这一点是非常好的。
今年编程之美从复赛开始就将采用团队赛的形式,大家可以自由组队,基于云计算平台来解决一些实际的问题。男神gg你能给今年的参赛选手提一些建议吗?
我觉得团队赛,首先个人算法能力是要有的,其次就是要想好怎么分工合作,当时我组队的时候是和我的好基友陈立杰一起组的,陈立杰的编程能力非常强,代码写的非常好,所以他就是主内啦。但是呢他可能表达方面不如我那么流畅,所以就需要我来主外,把我们的项目推出去,这样我们就很好的弥补了对方的缺点。
编程之美决赛经验分享
男神gg能不能分享一下你决赛的题目呢?
好的,实际上我们那年遇到的就是当时比较前沿的机器学习算法。我那一年的比赛题目一共有两个,第一个是给定你一些城市的天气预报呀,风向呀,风力呀这些数据信息,然后让你去预测未来24小时内的空气污染指数的变化。
那另一个呢?
第二个问题是一个比较开放的问题,设计一个有关智慧城市的一个APP。我们当时选的是第一个问题,结合了svm和deep learning的算法作为我们预测结果的一个先验知识,然后在网上找了好多这样的数据,从网上拿下后将我们的模型进行训练再加权将这两个模型的预判结合在一起。这样做的优势还是很明显的,我们把分的比较开的deep learning 和svm结合在一起,成为一个很大的卖点,做了一些前人没有做过的事情。
对于deep learning和svm的东西,我发现学习需要比较深的数学功底,我数学就很差(大一的时候数学分析学的就很痛苦),不过如果只是要读懂svm和神经网络的一些原理(不包括证明)需要的数学内容也不是特别多,而这两个东西本来就是属于“能用就行”。我觉得数学好当然是一个非常好的特质,有了它可以事半功倍;但是我觉得编程最主要的是对问题和解决方法有一定的敏感性,遇到了什么问题就立马知道大概的方向是什么。这个可能需要一定量的问题来训练~
决赛现场常常有许多大神出没,那你能偷偷告诉我们大神是怎样养成的吗?
恩,我印象比较深的是清华一个同学研发的一个项目。他选择的是第二个问题,他提出了一个idea,就是和我们现在看到的丁香医生很像,根据你输入的感受或者症状,给你一些疾病类型或者应该吃哪些药之类的建议。虽然当时来说想法可能还是很简陋的,但是这个同学的厉害之处就在于,在当时就能有一个这样好的一个全局观,想到这样一个idea,这是非常棒的。
男神gg你demo做那么棒,是不是有什么小诀窍呢?
我觉得做demo这个事情,其实要说也没有什么技巧,主要就是对自己做的项目有100%自信。 其次,就是能够表达清楚自己的算法优势在哪里。就像我说的,我们结合了两个传统的算法,比较能够吸引大家眼球,所以说我就是通过自信和对自己算法的一个了解才做出了不错的demo。我在做demo和项目开发过程中也接触到了一些微软的专家和工程师,他们人都非常nice,而且都很学术,来跟我们进行一些非常友善的交流。给我印象最深刻的是后来成为我在微软实习时mentor的何骏老师,他当时就很肯定我们的demo,还专门跑过来帮我们宣传,后来我来微软面试实习的时候,发现他就是面试官。
微软实习经验分享
男神gg你后来到了微软实习,那你是通过编程之美比赛进来的还是其他方式呢?
是这样的,编程之美为优秀的选手都提供了一个绿色通道,所有的优秀选手都有机会微软的预科生计划和预苗计划,可以少很多轮面试直接进入微软实习。我当时参加了两轮面试,面试官何骏老师问了我一些很简单的算法问题(这个可能是因为我是决赛选手,所以默认了我算法能力过关),我很快都解答出来了,之后我们就聊一些我们当时做的那个项目的进展情况,他也是聊了一下他的工作是怎样的,于是一个很轻松的面试就结束了。
当时和我一起过来实习的选手还是挺多的,大概有三分之一以上的参赛选手最后都选择来微软实习,可以说编程之美对我们来微软实习有非常直接的影响。不仅让我们知道微软有这样一个能够直接来实习的方式,还让我克服了自己的懒惰心理,感觉参加了这种比赛相当于给了你一个心理预计。
男神gg你在微软实习的主要工作内容是什么?工作氛围怎么样呢?
我觉得工作都还是很有趣的,大概就是和微软的工程师一起做一些有趣的事情,我印象比较深刻的是当时我们抽取了一些Twitter上面的人发的状态,然后经过ra和我们这边工程师的算法得出了他们的一个情感分析,再通过它写的一个plsa算法的话题聚类得出人们对于某一个话题的看法是怎么样的,比如人们觉得奥巴马是好还是坏,这样的话可以得到一个很有趣的结果。还有一个事情就是,当时我们拿到了一些Azure用户的行为数据,我想根据这些用户行为来预测用户会不会未来花钱来买,预测成功的时候也会非常开心。
工作氛围嘛也是非常好的,首先是非常轻松,把mentor布置的任务做完之后就过来跟大家吃点茶或者其他什么的。员工福利也是非常好的,每天都有小吃啊水果之类的,同事也都非常nice,有什么锅都可以放心甩给他们(好一个心机boy啊hiahia)比较遗憾的是因为当时时间比较紧迫,所以并没有参加一些实习生活动,如果有机会的话我还是非常想参加的。找暑期实习的同学这个问题吧,我觉得主要是看你个人的一个想法吧,比如说像微软这种大公司的话,它可以给你一些日后步入职场的一些经验。创业型公司的话,会对你个人能力的磨砺更大一点。
全能男神养成记
男神gg你除了编程外有没有其他的兴趣爱好呢?
我喜欢古典吉他、弗拉门戈吉他、击剑,在击剑比赛中也获得过一些奖项,然后我自己一直在学习一些欧洲的语言。听起来这些爱好是跟编程风马牛不相及,但是我觉得直接间接的帮助都还是有的,首先它能够改变一个人的性格,有时候非常着急的去调一个bug就是调不出来,但是如果你是一个非常冷静的人的话,也许就调出来了呢。而且我觉得不能太功利性的看待编程这件事,一个人有一些自己的一些爱好才能构成一个完整的人。另外,这些爱好和编程有一个最明显的共性就是,他们都是非常美好的事物,符合我心中的美学定义。
男神gg请收下我崇拜的心!!!那么你能结合一下你的参赛经验和自己的美学定义来谈谈你心中的编程之美是怎样的呢?
我们比赛的名字就叫编程之美,实际上我们大家心中都有一些关于美的衡量。比如我觉得吉他击剑编程各有自己的美,大家可能觉得Python是一种比较美的语言而java不美,编程之美的比赛可以说就是为大家提供了这样一个来表达你心中的美的平台。那像现在有一个词很火叫跨学科,我觉得日后编程可能就和英语一样,成为日常交流的前提,如果你不会编程可能你就听不懂别人在说什么。
比如说吧我现在在做的一个项目,就是计算语言学的,这个项目就是计算机和语言学相结合的一个产物。实际上呢,这个项目是更偏向于计算机呢还是语言学呢我也是说不清楚。就是这些美在以后肯定会成为大用,逐渐淘汰那些旧的方式。所以说,我觉得计算机会和所有的学科相结合,任何学科离开计算机都是不可能独立存在的。这个可能就是日后的一个潮流,也是编程之美的一点吧。



封神榜第三期:孙祥彦

本期嘉宾是来自复旦大学孙详彦同学(大神是左一哟),他在14年参加了编程之美比赛,凭借优秀的个人能力加团队合作力获得了14年的总冠军。本期将独家分享他的Code Hunt平台使用方法论,以及如何用基本的方法巧妙地应对一些难题,同时他还将全面地展示他的决赛项目,最后还有对今年参赛同学的宝贵建议
编程之路

我大概在小学的时候就开始参加一些计算机比赛,初中时参加地市的一些比赛,到了高中就开始参加全国性的比赛,后来保送到了复旦。在复旦大一大二时候参加一些比赛也拿了一些金牌,大三大四就主要是参加一些个人赛了。现在就是一个码农的生活,主要是在实验室做一些研究工作,每天码四五小时吧,其他时间看看paper资料什么的,朝九晚五的(excuse me?!),没事的时候可以去逛逛街、兜兜风、看电影、约约妹子什么的  keke:)

Code Hunt平台深度解析

1Code Hunt平台解题思路
首先,Code Hunt平台它的左边是一个编程环境,右边是一个数据输出的界面,当你运行你的一段程序后,它会在右边显示你这个程序跑的正确的一些数据以及几个错误的数据,但是刚开始数据是不全的。
所以我拿到题后一般会先用简单的方法把我拿到的一些不对的数据做对,这样做的话在很多情况下已经完全正确了。当然有时候还不对的话,我会根据它后续提示给的一些不对的地方去修改我的算法。这样的话会比较容易做,而不是一下子就把它想得非常复杂。
第二就是发散自己的思维,在做的过程中可能会遇到很多反直觉但是特别简单的函数,比如说一些未运算的函数,或者说一个模的函数。在你没有想到这些东西的时候,你会觉得这些数据是非常反直觉的。所以我觉得在平时的时候培养一下对这些东西的敏感性是必要的,在比赛的时候也要多往这方面想一下。很多时候算法其实没有那么复杂,只是你可能没有想到关键的这一步。
2试错效率
第一个是要提高对这些东西的敏感度,包括对一些基本的数据函数、数列的敏感程度。第二就是提高你的编码效率,可以尽量快的把自己脑海里的idea实现。对于数据不敏感的同学,我给大家推荐一个网站ogrs.org(真诚推荐,不收广告费 ^-^), 这个上面有各种各样的数据,如果你知道数列的前几项,你可以看到包含这几项的各种数列的通项公式或者论文啊等各种信息。这个在比赛的时候可能比较有帮助。
3Java和c#
因为Code Hunt语言它是限制在Java和c#上的,可能有些同学不是特别熟悉,我特别推荐微软的c#语言,用起来还是比较方便的。之前没学过Java和c#也没关系,相信大家都已经学了被誉为最艰深的程序设计语言C++吧,这个都能搞定还有什么语言搞不定的呢?
语言方面的话,Code Hunt平台其实不会用到特别复杂的实现,主要还是一些基本的算法还有数学上的一些操作比如函数之类的。大家可以提前一两天去比赛平台里找一些题目练练手,把一些基本的算法都练习一下,这样做过之后比赛中基本就够用了。

组队决赛进行时
最后的比赛大概是一天的时间,我们的题目是预测空气的质量,当时拿到的数据是北京市几个监测站一个月的监测数据,要做到的是给定一天的天气状况,然后要你预测第二天的每个小时的空气质量的情况。
我们的比赛过程可以用由繁至简来形容吧,我当时的队友是清华大学的王珊同学,我们的分工特别好,我主要负责算法这一块,搭档负责调试。由于时间限制的问题,在比赛中我们需要一个完整的解决方案流程,必须在实现和更好的想法之间折衷。
在决赛中,我遇到的最大的困难就是时间不够,最后只能简化思路。面对棘手的问题时,要先有信心自己肯定能搞定,然后具体问题具体分析,把问题拆细一步一步来。刚开始我们设计出了一个特别高大上的算法,但是一直到中午我们才发现这个东西真的太复杂了,我们根本没办法实现。后来我们决定换个思路:在我们对数据对问题有感觉之前,不用搞那么多复杂的东西,先一点点把基础给做好。就像刚刚说Code Hunt一样的思路,先从最简单的入手。按照这个步骤我们先是从一个最简单svm模型出发,不断优化我们使用的一些特征、数据的采样方式,时间序列的处理。

Tips
简单的东西也许没有很多高大上的算法在里面,但它够简单很稳定,一定可以被使用。在比赛这样特殊的环境下,你又没有特别多的时间,那你最高效的做法就是先用比较容易的算法,做出来一些图形,当然你最重要的是看一下数据本身有没有一些内在的规律。与其把时间用在研究那些说不清道不明的算法上,还不如把时间尽可能多的时间花在对数据本质的研究上去,当你了解了数据的本质后你可能用很简单的算法就可以解决问题。编程之美是比较偏应用的,我认为主要应该把自己掌握的算法合理地用起来,不一定要限制在什么范围。
创意赛
1背景介绍
今年的编程之美复赛就开始团队赛模式,然后决赛时我们的编程队还会遇到创意赛选手,他们会组成一个team,去解决一些更系统化的问题。
2当创意达人遇到技术流....
我觉得这样的话比赛对我们的考察更全面了,你不仅是要会一个算法还要把它和实际问题相结合,并且最后还得做出一个完整的系统。说到创意赛我还是很好奇的,以前很少在编程类的比赛里见到创意赛这种,据我了解,这个比赛可能更多的是为非计算机系的同学设计的,创意赛的同学们可以很好弥补我们这种整天对着代码做事的同学的局限性,形成一个良性互补。我们可能比较擅长一些技术性问题的判断,抽象与实现,而创意赛同学可能表达更流畅,善于发现一些生活中的问题,想出一些好的idea来解决这些困难。包括我们的产品做出来后,最重要的是更好的让人去使用它,并且让每个人都真的去想用它,那么如何去展示这样一个作品可能是创意赛同学的强项。
有些同学会担心,组队后提出的创意命中自己的技术盲区该怎么办?这不是什么大问题,换个自己熟悉且可以实现的创意就好啦。或者说我认为创意赛的同学应该能够根据自己团队的实际情况设计比较符合的idea吧。
3创意赛选手特质
创意赛其实是给了我们不同学科的同学一次交流机会,我们计算机系的同学可能更擅长做技术,其他同学可以做一些事物本身的idea或者是怎样把我们的产品present出去,得到大家的认同啊之类的事情。我期待的创意赛选手需要具备的素质主要有三个:首先他应该善于观察身边的事物,以及发觉这些事物中可以做的更好的地方。然后就是希望创意赛的同学有可以跟我们的技术性选手比较畅通的交流能力,因为我们做技术的人的思维可能和创意赛同学们的思维不大一样,而沟通是团体比赛中非常重要的方面。最后就是希望选手可以有比较好的发掘事物闪光点的能力。比如我们开发出了一个产品,那我们如何向别人推广我们的产品,如何让别人喜欢上我们的产品并且愿意去用我们的产品。这个是非常重要的一种能力,但恰恰可能是我们做技术的人所欠缺的,所以我特别希望创意赛的同学可以具备这方面的能力。
冠军的西雅图之旅
我觉得很荣幸能够拿到冠军并且可以赴美交流,在西雅图微软总部进行参观。首先西雅图真的是个美丽的城市,我在那里呆了大概两三天,然后也跟微软的工程师做了一些交流,试用了微软一些比较新的产品,我觉得这个经历很有意义。当然如果我没有过来参加比赛这些都是不可能的,所以我非常真诚的希望大家可以踊跃报名,参加编程之美的比赛。首先你肯定会获得一些技术上的收获,包括设计算法、实现系统的能力。其次在这个大环境下你可以见到很多不同背景的同学,提高自己的合作、沟通能力。我们今年增加了创意赛后你还可以认识更多的朋友。最后就是编程之美的比赛也不是一个纯粹算法比赛,大家也是会需要解决一些生活中的实际问题,不管怎么说你最后做出的系统都是非常有意义的,对你自己而言也是会有不一样的收获,所以大家快来参加比赛吧。



封神榜第四期:唐飞虎

嘉宾介绍
本期嘉宾是来自哈工大学生编程界的传奇人物的唐飞虎,他还有一个耳熟能详的可爱名字,岛娘~他是15年编程之美的总冠军,从小学开始一路保送到大学,是哈工大的叱咤风云的传说中的学长,是腼腆却心怀青春热血的创业达人,是特立独行编程能力超强的编程高手,是近乎偏执沉迷于编程世界的疯狂极客,他也是14年编程之美挑战赛的全国总冠军孙祥彦的高中室友。本期分享将带来他的个人创业经历,决赛项目经验,赛后生活,职业规划和求职技巧等内容。
编程之路
我因为一个中学生编程课堂走进编程,后来保送合肥一中的理科实验班,在高中强制选择竞赛中选择了编程竞赛,选择了算法,那大概是我的编程世界真正入门吧。不过我还记得小学的时候写游戏根本停不下来,那时候大概就爱上了编程吧。后来通过省赛保送哈工大,转到了c语言。又学了画画素描,后来周末给艺考生讲课,这也许是我后来各种创意的来源之一吧。那段时间 我还做了一个网站,当时对网站的前端后端各种运作非常感兴趣。我觉得大学有它的局限性,于是我帮了好多同学创业,也去其他大学蹭课,比较各处异同,真的能学到不少东西。后来我回到了学校,感觉很多东西都没学懂,就沉下心来搞算法竞赛。 
后来创业的时候找投资人,也曾窝在北京做蚁族。回到学校以后我跟几个同学进行了一个比特币的项目,当时正是比特币最火的时候, 价格已经涨到了7k一个。 正所谓临渊羡鱼,不如退而结网。我们研究了半个月的时间自己搭了一个矿池,当时半夜把机房八十台机器全部打开进行挖矿,一个月只要把服务器开着,就有近三万收入。那时候我们接触到很多交易所,赚了钱就投资同学(革命友谊既视感……)  
编程之美


我每一届的编程之美都参加了。之前的都没有过复赛,去年的其实也是很危险地通过了。复赛的时候我在最后的关口提交了一次突然发现一个bug很惊险,就是那个第三题的机器人。给大家推荐一个网站Polygon 这是一个提供原创编程问题的平台。出题者需要写标程和错误的程序来保证不通过测试的数据,所以出题也是一项很有挑战性的工作。


当时决赛有两个题目,一个是算法背景比较浓的,一个是设计意味很浓的。当时想算法方面相对弱(你太谦虚了)。要得到冠军就要另辟蹊径嘛。这就是所谓的差异化竞争。我想,既然大家都是通过算法竞赛选拔出来的,那么我要脱颖而出就必然要做一些其他的工作,以己之长攻其之短 所以我当时就选了第二个题目。


我做的这个就是云宝·旅行的网页,比如输入“明天从上海到北京的机票”“附近有什么火锅店”就会实现很智能化的搜索显示相关的信息,当时比赛的时候还是可以语音输入的。


三天时间不可能做出什么很大的东西,还是要利用现成的东西, 那次我们调用了一些NLP的库,关于去哪里、时间、乘坐工具,把信息都呈现出来。我们前期的评分并不是很好,排名大概在中间的位置,但是在presentation的时候我们准备做的非常的充分,所以展示和答辩其实也是非常重要的一个环节。关于你做的细节,为什么这么做。决赛的项目无非就是这几点:审题,你用什么手段,权衡时间资源技术不足的限制和牵制,如何做出取舍来达成最好的效果。而我在答辩的时候我把这个过程完全描述了出来,这才是这次比赛精髓所在,从而打动了评委吧,你需要找到问题,权衡利弊,实现利益最大化。这应该才是我们最终获得冠军的原因。

赛后经历



结束后就到了校招求职季。需要参加好多好多面试。当时有个朋友很关照我,听说我还没有工作以后就帮我改简历,打听情况各种帮助。后来刷了leetcode,这是专门面向面试的题库,很推荐。又看了一遍算法导论。后来就是狂投简历十几家,后来拿到了谷歌总部的offer。 在这里呢我强烈推荐:编程之美,剑指offer这样的书籍,对面试的帮助非常大。不同的IT公司侧重点不同,要好好做工作和准备,最好找老员工的建议。要对简历和面试准备做很多针对性的修改。各个公司面试氛围也很不一样。不过一般对本科生的要求是基础层面的算法能力,所以基础的算法始终是最重要的呢。我当时除了投工程师,也投过投网易游戏的游戏策划,尝尝鲜嘛,有句话不是叫逃离自己的舒适区嘛,这算是不断挑战自我吧。


编程之美的经历当然有很大的帮助啦。把冠军的经历放进去直接就压过了自己所有的经历和奖项,而且参加比赛的过程本身就能得到极大的提高。更关键的是,你能通过比赛接触到很多比你优秀的人,这点非常关键。


现在呢在日本面试了一个智能机械臂公司,他们报销了我的全部费用哈哈。而他们的面试非常严格,是我见过的最严格的。最大的区别就是之前的面试公司都是  面试官问问题,听你说。而这家公司你需要听面试官说,你的任务是在限定时间内学习,把成果展示给面试官看。所以这次我学到了很多东西,感觉真的是太幸运了。


总结一下,我在面试期间做了:一、 温习了一遍算法导论,你要能向面试官表达你的思想;二 、leetcode,大家都在做我也不能免俗啦 。

三 、第一次真正的认真做了一份很好的简历。





前辈帮帮忙

话说今年编程之美增加了创意赛。我的建议呢就是,要多观察,留心生活的细节,多交流那么怎么展示呢,就跟之前说的一样,要完整地做好自己想表达的内容。这点一定要做到。
最后说几句心里话:编程这件事情,坚持非常重要。正所谓念念不忘,必有回响 。大家都知道三万小时定律,所以一定要坚持哦,失败了有什么关系嘛我也失败了这么多次,明年还可以再来嘛~



怎么样,看了上面四期大神的分享是不是又加深了你对编程的认识呢?如果你不会编程也没关系,编程之美挑战赛创意赛报名截止延期至2016年4月30日,想要抽取限量版玩偶小美(50只)和编程高手一起直上云霄一览众山小吗?那就快来参加创意赛吧~!点击阅读原文即可报名哦!


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存