互联网校招算法备战方法论和要求详解

算法: 算法其实是计算机技术最重要的东西,有好的算法才能更好的解决问题,更优的处理数据,得到更符合人类期望的结果。算法是必考,可以考察这个学生的基础,智商,反应等。很多同学对算法题非常胆怯。但是经典的算法和面试笔试题都差不多,算法的基础方法和原理一定是很多计算机大拿沉淀下来的,面试中不大可能自己现场快速设计一套不存在的算法。更多是基于基础算法的方法和原理横向扩展应用到特定问题上。建议从课本的基础知识复习,不需要都掌握,找重点,主要关注原理和应用。

   注意:可以在网上找一些别人总结的算法常考题目,或者leetcode上找一些常见的题目,各个大公司的常考算法,数据结构等题目都总结的非常好,但是题目非常多,可以有重点的看,其他的泛看,这类题目很多都是发散思维,只要知道基本的流程,能讲出来过程和思路,大致写出实现或伪代码过程即可。算法学习的过程中也是对计算机处理问题思想的整理,时刻牢记大而化小,分而治之,并行化,动态规划思想,贪心思想

举个例子思想:

有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M。返回频数最高的100个词。

先读懂题目每句话。翻译为类计算机语言。

常规方法怎么做?分几个模块处理,存在哪些问题,哪个模块有优化的空间等等。

分而治之/hash映射:顺序读文件中,对于每个词x,取hash(x)%5000,然后按照该值存到5000个小文件(记为x0,x1,...x4999)中。这样每个文件大概是200k左右。如果其中的有的文件超过了1M大小,还可以按照类似的方法继续往下分,直到分解得到的小文件的大小都不超过1M。

hash统计:对每个小文件,采用trie树/hash_map等统计每个文件中出现的词以及相应的频率。

堆/归并排序:取出出现频率最大的100个词(可以用含100个结点的最小堆)后,再把100个词及相应的频率存入文件,这样又得到了5000个文件。最后就是把这5000个文件进行归并(类似于归并排序)的过程了。

没见过不要慌,翻译问题,分解处理流程,每个子模块找方法解决,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值