最后一场面试

        上周去一家比较心仪的互联网公司面试,到现在还没有消息,应该是已经被拒了吧。^_^,说起这次面试还是有些故事的。这是我第一家面试的互联网公司,应该也是我最后面试的互联网公司吧,接下来应该会好好科研,不会再面试了。虽然到最后还是没能拿到这个OFFER,感觉十分遗憾。下面我来好好说说我在这家公司的面试情况吧,由于今年6月中旬到9月下旬我都在山东电信,除了平时看看几道算法题,一直没有时间准备找工作。然后9月中旬的时候有幸接受到了这家公司的电面,一方面由于紧张吧,一方面确实实力不济,电面直接OVER了,电面还是很紧张的,最好选一个清静的地方,然后有笔和纸张,省的到时候临时找笔和纸张,开端都是自我介绍,然后会问几道算法题。9月下旬回来又参加了这个公司的笔试,完全不行,很多题目都知道原理,但是就是写不出来,再次挂掉。感谢这家公司还有9月底让我参加笔试那几家公司,一次次悲剧让我明白了自己的弱势,差点击垮了我的心理防线。

       9月底的完全失败,终于让我明白了其实找工作并不那么容易,尤其是心仪的公司。接下来国庆的一周,我终于冷静下来好好看书了,推荐大家看几本书吧,我的读书顺序是《程序员面试宝典》(理论证明,这本书虽然很烂,应付考试真的很可靠)、《C++ primer》(没有全部读,只看了自己比较薄弱,平时不怎么看的几章,因为确实没时间了)、《Effective C++》、《数据结构与算法基础》(我本科的教程)、《算法导论》(以前看了一遍吧,这次主要看了图论和树,后来发现我在排序等简单算法上错的还是蛮多的,尤其是各种算法的比较,像稳定性,时空复杂度。各种排序的经典应用)、《编程之美》(以前看过一遍了,这次主要看看比较精彩的几章,中间的结构之法和数学之趣)、最后看了一下《google黑板报》和一些网上的面试博客(一个google的技术博客,主要学习一些面试题的思路吧,其实当你看了100道面试题以后,你会发现很多解题方式都是用最普通的数据结构和算法解决的,比如树的前序、中序、后序遍历,各种常用排序算法的灵活应用)。扯远了,面试这些事情,以后我会单独写一个博客吧,总之积累很重要。再回头讲讲我上周的这家公司吧。

        其实到11月15号以后,我就没有打算继续面了,但是几个OFFER比较下来,再各个方面都是有点缺憾,不得不说笔试不是一蹴而就的,没有好好复习真的成为了我永远的痛,google、微软、Yahoo等技术公司都没有给我面试机会,人搜也没有。所以我又想为自己的第一份工作,做最后的努力。于是我给那边的HR写了封信,希望重新给我一次面试的机会(事实告诉我们,不要因为一些没必要的担忧而影响你找一份工作,如果你真的想去,那么就勇敢点的去担当,虽然最后结果还是不如意),接下来电面,其实这次电面比第一次还紧张(不得不说我的得失心还是很重,虽然我一直刻意改正自己),但是比较顺利的通过了吧,电面结束,那个面试官就通知我等HR通知具体面试。然后就到了这家公司进行面试了,一共面了6面吧,前面三面的算法面感觉还行,由于6面连着一起面,所以第三面的时候脑袋有点卡壳,一直以为自己可能就此结束了。但是那个旁听的面试官又给了我一次加面的机会,谈了很多关于公司内部一个新部门的想法。接下来是第5面,那个面试官问了我三道智力题,只回答出来了一道,完全不行,回来好好看了这两道题,我觉得第二道的话,即使给我一天的时间,在没有任何提示的情况下,我也未必能做出来。第六面是经理面,由于前面一面确实太差了,然后中间又接了一下师姐的电话,完全迷迷糊糊的了,现在还记得最后一道题是关于树形结构永久化问题,问如何把一个二叉树永久化到磁盘文件中,然后文件越小越好?但是回答了几个想法吧。

        第一,把二叉树按前序和中序遍历一遍,存两次二叉树,然后就可以将二叉树返回回来了。

        第二,将二叉树按左枝为0,右枝为1进行路径编码,那么每个节点都可以表示成,节点信息和路径信息进行永久化。

        第三,将二叉树变成满二叉树,采用数组存储满二叉树,那么数据index和根据二叉树的节点信息进行永久化。

        上面的三种方法,第一种和第三种都是数据的两倍吧,第二种需要节点加一个路径字符串。那个面试官说都不是最优的答案,但是我的答案已经,我当时也想不出其他想法了。其实现在想想其实很简单的,只要把第三种想法转化为一个01位图的数组和一个所有节点的内容就行了,这样根据位图还原二叉树,其实算法都是比较简单的想法的组合,至于组合还是蛮重要的。

         基本算法也就那么几个,关键是如何灵活应用:递归与分治、动态规划、贪心、回溯、分支限界、随机化算法、网络流(其实我觉得网络流是前面几种算法在图上的应用)算法。然后这些算法与数据结构的组合:数组、链表、树(二叉查找树、AVL树、红黑树)、图(最短路径、拓扑排序、任务调度、最大最小流、最小生成树等)。然后再加上一些非常常用的查找和排序算法,位运算,还有就是NP难问题。然后根据特定的应用场景,选择合适的数据结构和合适的算法。比如最短路径算法和排序算法就有很多种,如何解决就得看自己的想法和经验积累了。

         仅以此文纪念自己的找工作最后一站吧。等有空闲的时间了,再好好整理一下自己的这段路程。关于未来,现在也没有明显的想法,不过努力是很重要的,如果现在放弃了,那么就等于未来也放弃了。接下来还是会开始好好做ACM题,当然不是为了竞赛了,只是保持着写代码的乐趣和想法。

        改变你能改变的,做你能做的,也许有一天你会发现你所做的,能帮你到达以前你不能到达的地方,也许这就是成长吧。

        

         

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值