【闲谈】第一份实习(下)

第一份实习(上)还是五月份的时候写的,这么快就过去半年了。这周三刚刚去办了实习离职手续,现在可以把实习的事情写出来总结一下了。

还是从面试开始讲,这次是在某招聘网站上自己翻着找到的,当时就是奔着游戏去的,所以找得也都是游戏公司。游戏公司找游戏程序员的比较少,也可能是我自己搜索不精,直到看到这家公司的时候眼前一亮,薪水也不错,重要的是做游戏的,使用的也是Unity3D引擎,我就投了简历。后来很快也收到了回音。

这家公司也是在一栋高高的写字楼上,公司门口放了一个展板上面是公司开发了各种游戏,当时心想终于有机会可以进到真实的公司里开发真正的游戏了。美女HR把我领到一个房间填了一个单子就开始等面试官。第一个面试官是一个三十多岁的男士,我一度以为他是PM之类的,因为年龄真的挺大的。。。后来他成为了我的同事,是开发的,而且还是个老顽童,哈哈哈,做游戏的都是很有童心啊。他主要问了我三个问题:一个是主要看我了不了解社区游戏是怎么回事,一个是考了二分搜索,一个是考了一道智力题。前两个问题我都回答得不错,二分搜索毕竟是最简单的算法题了,他也没考变种什么的。最后一道智力题被我忽悠了,题是这样的:有一个正方形,被切去了任一大小的一个角,你需要再切一刀,使得分成两个面积相等的部分。像下图这样:


这道题按说不难,我当时不知道自己怎么作的想了一个很奇怪的答案,还面试官忽悠住了。当然,这是我运气好,那个面试官一时没反应过来也就认为我回答对了。但是想想,如果我当时没有答出来,面试官又会有什么结论呢?换句话说,这些面试官总是喜欢考这些智力题的用意何在?和其他所有面试时面试官应该问得问题来说,这些智力题和算法题应该也是为了考察我们思考的过程,也就是说答案往往是不重要的,重要的是你是怎么思考的,可能答案是错的,但是这个过程可以让一个好的面试官看出来我们的思维习惯。刚才拜读了几篇关于面试中智力题的文章,有兴趣的童鞋可以看看这篇文章

比如这道题:

你是山西的一个煤老板,你在矿区开采了有3000吨煤需要运送到市场上去卖,从你的矿区到市场有1000公里,你手里有一列烧煤的火车,这个火车最多只能装1000吨煤,且其能耗比较大——每一公里需要耗一吨煤。请问,作为一个懂编程的煤老板的你,你会怎么运送才能运最多的煤到集市?

第一印象就是这题肯定不可能像表面看起来是无解的:1000顿若从头直接运到市场肯定一顿也不剩了。既然这样,自然而然就会想到这车肯定是中间回去了。也就是回去的地点和次数需要考虑,而且一般是有规律的。我第一个想法是,火车每次都运到距原点为x的地方,然后回头再运新的。为了避免浪费,火车在x点肯定尽可能多卸下煤,只留下足够回程的煤即可。这样,在x点就卸下了1000-2x数量的煤。第二次到达x点,同样卸下1000-2x的煤,然后再返回,第三次到达x点的时候,已经不需要再返程了,这时火车携带着所有煤(数量为1000 - x + 1000 - 2x + 1000 - 2x = 3000 - 5x)往终点运去。因为火车最大容量为1000,因此有3000 - 5x <= 1000,得出x >= 400,此时,运到终点时共剩余煤 3000 - 5x - (1000 - x) = 400。后来又想了一个方法运了433。。。

当然答案不是这个。问题主要是出在3000 - 5x <= 1000上,我们应该考虑3000 - 5x > 1000时会怎么办。这实际上有点递归的思想。

很多童鞋在笔试或者面试前都会去看一些题库,当然这也是一种临时抱佛脚的方法,而且经常也还很有效。这些智力题里的思想都是值得我们学习的,比如动态规划、递归等,很多都跟编程思想有关。但是,很多面试官往往不是这么想的。拿我被面的那道题来说,实际上我觉得这道题出得并不好,它能考什么呢?考我反应力?还是有没有见过这道题?它的思考过程基本为零,不需要优化答案,如果对了,说明我是个反应比较快的人,但错了面试官就觉得,看,你反应太慢了,这题都不会,看来脑子不好用啊。很多面试官都是这样,他们急于用一个标准答案来衡量你,一样,说明你合格,不一样,要么你需要多读读书,要么就是你智力有问题。会面试的面试官实际上并不多,记得去google女性开放日的时候,那个面试官直接告诉我们面试前去做题库。不知道从什么时候开始面试笔试也成了应试考试,我觉得之前那篇文章的作者说的很好,面试官本来应该本着这人是自己同事的想法来模拟平时的工作现场,而不是尽可能想要难倒被面试者为目的,并以此来显示自己的水平是如何高。所以说,面试也是个运气有关的事。

重回面试现场。这个面试官结束后,就来的二面,是个姑娘,后来也成了带我的姐姐,这姐姐性格很要强,是技术主力,这我一开始还真没想到。这姐姐问了我一个Unity3D的基础问题,是关于start函数和awake函数调用顺序的,还好我之前看过相关资料,答的不错,这姐姐也直接夸了我,说我应该是用过研究过的,我当时心里很开心,觉得自己的努力总算被人肯定了。后来问了些工作时间的问题,最后这姐姐人很好,告诉我以后面试千万不要说自己精通什么什么语言,这很容易引起面试官的好奇心和好胜心,他们会往死了问你直到把你难住,证明你不精通。还有一点就是,不要随意轻视HR面,HR面往往是最后一面,这一面很多人会觉得无所谓,之前技术都过了,难道HR能让我不过吗?还真会让你不过。这姐姐给我举了个例子,说是之前面试的一个男生,他们面试过后都觉得技术很好,到了最后HR面,他没有重视,很敷衍地回答了一些问题,最后无论他们怎么像HR求情,HR最后的结果还是不通过。HR面试不同于技术面试,他们主要想看你这个人态度是不是积极的,是不是原因好好学习东西,而不是混日子。所以,你要尽可能表现出你对学习的热情,和希望在公司好好做贡献,还有就是你的团队合作,能很好地和人沟通,总之技术以外的性格、态度等方面都是你需要让HR了解和肯定的。

有了之前那个姐姐的提示,最后的HR面也通过了。我最终如愿拿到了这次实习机会。

总结一下,面试之前,首先应该梳理一下自己做过的所有项目,它们的亮点、技术难点、遇到的困难和解决方法、后续优化的方案、你印象最深刻的项目等等,如果是外企,一定还要准备一份英文的表述。关于个人问题,还应该准备一下自己的性格特点,包括优点、缺点。还有就是特定职位的问题了,比如如果面PM,你肯定要知道PM是如何与各方面人合作的,沟通问题,协调问题,需求问题,测试问题,等等等等。你得知道,你技术再牛,面试的时候如果无法很好地表达清楚,面试官是不会认可你的,他只通过你面试时的所说所做来判定。因此,你得在心里告诉自己,不要有什么优越感,觉得自己很厉害别人就一定看得出,你得把面试官当成一张白纸,你说什么他才知道什么,你说的不好,他就觉得你不好。


最后讲一下实习工作的事情。这次实习还是让我学到了很多技术方面的东西,还有一些工程能力方面的东西,比如团队合作。刚到那里的时候,最痛苦的事情就是看源代码。这时我才知道为什么要有代码整洁之道这种书,真的,我当时经常想,这是谁写的代码,这么难看。。。由于项目越来越大,参与的人越来越多,有些人已经离开项目组,有的人又刚刚进来。我们肯定会遇到看别人代码的时候。为了自己,为了别人,再次呼吁大家请一定要养成良好的编程习惯,如果你不想写注释,变量和函数名就写得有意义点,不要全是一堆s p q i j k 之类的东西,简直忍无可忍。还有就是请大家珍惜可以看到源码的机会,毕竟公司很多东西都不是开源的,你有机会了解这些源码,学习里面的编程和设计思想的机会很有限,趁着空闲的时候要多看,多问,多交流,你的同事给你的经验往往比你几天编写的代码都有意义,千万不要只顾着埋头写代码,不好意思问问题。公司不喜欢沉默的程序员,沉默对自己也没好处。我们这种刚接触真正项目的学生,最重要的还是学习。实习的时候,做完了分配给我的工作,要么我会再问有没有其他工作了,要么就会去研究他们的源代码。主动的态度任何一个公司都不会反感,一般同事都会耐心地给你解释,这种好机会还不好好珍惜下!


当然实习中,也会遇到很多烦心事。比如同事相处(我没有很大的困惑,但是我有同学遇到过),加班问题等等。人都是在经历中不断成长的,马上就要读研究生了,实习的机会也不多了,哎。

最后,推荐大家一个网站,酷壳。原本是一个人的技术博客,现在发展的也很强大了,里面有关于技术的,也有关于这些杂七杂八的,多逛逛也没坏处。如果你英文挺好,也可以关注下http://www.quora.com/,里面也经常有些很有意思的东西。

知识是无尽的,最重要的是学知识的能力!祝好。

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值