昨天去SJTU参加Google暑期实习海选。卷子发下来一看全是数据结构、算法,虽然这两个我都考过80几还可以。。但都忘得差不多了。
前面选择题大都是读读程序,只有算复杂度的问题我比较郁闷,因为当年就没有认真算过复杂度。。考试时候填的那些O(LogN)、O(N^3)基本都是背书的。所以我要加强的第一点:熟练计算算法的代价。
后面三道大题也不难。一道算一维数组表示的N*N矩阵的乘法,一道用非递归遍历二叉树,一道设计一个找出数组中一个元素是其他两个元素的和的最大值的算法。
第一道我竟然套了3个for。。当时就真的想不出来两重循环的是怎么做的;非递归遍历二叉树,以前期中考试考过,但也忘了,最后对第i层建立2^i个node来做。。空间复杂度超大;最后一题,想不出来好的,只好祭出俺的无敌大法-HASH。。。我要加强的第二点:熟悉各种常用算法!
笔试做了下来,我和WYH、HB都决定表给学校丢脸,还是把Google拒了吧。。继续YY IBM中。。今天eBay的就不去了,内存出问题了,徐汇电脑城好远啊。。
想想,我们学的是计算机科学与技术啊。科学是放在前面的,但我以前做了太多“技术”的。现在的高级语言们封装的那么好,什么都不要自己操心,很多时候高手和菜鸟的区别就是谁更熟悉SDK,谁能熟练运用各种类库而已。。TNND我还是学生,还是得关注一些更本质的东西,现在决定开始重拾算法了,每周复习或者学习一种,过了明年也有几十种了吧,Henhen~加油!