查看: 1261| 回复: 0
跳转到指定楼层
上一主题 下一主题
收起左侧

[其他] 准备算法面试的一些感受【非面经】

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
这篇帖子不是具体的公司面经,但考虑到是针对算法面试,和面经直接相关,所以还是发在了面经版。 如有不妥, 请告知。

最近自己也在学习算法,有一些感受在这里交流, 于人于己希望能有帮助。 当然如果你喜欢, 有大米奖励, 不胜感谢


为了方便大家判断感兴趣与否,首先做一个简单的总结:
算法面试包含两个方面的考核: 算法设计和算法实现。
1 算法实现是基于算法设计的能力训练, 先有设计再到实现。
2 算法设计包含两个层次的学习, 算法技巧和算法思想。 从实用的角度, 算法技巧的掌握对面试更加有效,对于长久的
编程工作, 算法思想应该是核心。  

算法实现是运用不同的编程语言对特定算法的具体实现,这其中包括编程语言的使用,数据的表示存储,计算逻辑的描述等等。
算法实现的学习训练是建立在算法定义之上的,面试与否对这种训练的影响不大,对一个算法的理解并不能直接等价于实现的
成功, 唯一的方法就是多动手。 比如二叉树遍历的三种方式,逻辑上理解相对比较容易,落实在代码上,特别是要求代码简单
清楚具有高可读性则需要一定编程实践,特别是如果有额外的要求比如不能使用递归,要求就更高了。

相比较实现,面试与否对算法设计的学习影响就明显一些。 算法学习总是从具体的算法技巧开始, 比如排序的不同方法,
动态规划的掌握,图论里各种经典问题的解决方法等等, 这些也是面试中主要用到的知识。 算法技巧很多, 学习不可能面面
俱到,出于应对面试的实用考虑,书籍的学习还是必要的,个人体会两本经典的阅读还是很有益处的:
Algorithms, by Robert Sedgewick and Kevin Wayne
Introduction to Algorithms, by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein
这两本书籍的阅读提供了一个对算法的总体掌握,阅读目的可以是为了对不同算法的基本了解,也可以是为了比较深入理解包
括空间时间复杂度的分析,习题的练习等等。 这两本书籍里的算法基本上可以满足面试中80%问题的解决,考虑到面试难度的
不断变化,有些面试问题需要用到更复杂的算法技巧比如Fenwick Tree, 可以加强一些 competitive programming算法的学习,
网上有很多的资源, 差别不是太大,个人学习过的网站有:
https://cp-algorithms.com/
https://www.geeksforgeeks.org/co ... g-a-complete-guide/
https://docs.google.com/document ... iYh4pKILYG2eA4/edit

算法技巧的学习除了对算法了解,很重要的一部分就是学习什么样的问题应该采用什么样的算法,用哪种算法更高效。
网上算法的题目多入牛毛,从实用的角度来说, 面经是最有效的训练, 特别是地里的。 面试的题目往往是会重复的,
特别是同一个公司的题目,对于面经题目的学习类似于应试教育, 所要达到的目的就是看到题目就大概知道该用什么样的
算法,最后就是一个选择的问题。 只是为了面试目的,到这里为止可以告一段落了,如果对算法有兴趣,想让未来的编程工作
更有意思 (当然大多数的编程工作也就是简单的重复, 机械的按照流程操作, 但总得有点追求不是, 不然跟咸鱼有什么区别),
可以考虑对算法思想的思考学习。  

对算法思想的思考学习往往比较分散,没什么书籍直接告诉思想是什么,往往是靠自己在算法技巧的学习之上主动思考。 以之前的
两本经典书籍为例, 你可以只是为了掌握算法的基本知识,你也可以深入的思考不同算法的关联。 对于这个区别的说明,可以参考
南京大学陈道蓄教授的解释 https://cs.tyust.edu.cn/info/1083/2925.htm。 算法技巧的学习是算法的学习和使用, 而
算法思想的锻炼可以看作是为算法的再创造, 也有实际的意义。 以蠡口叁佰为例, 用动态规划是一个标准的解决方案,
算法技巧的学习可以达到这个阶段。 用贪心加二分来维护一个单调序列解决这个问题则是对动态规划的一个再思考,本质就是
记录中间计算结果, 避免重复计算, 记录什么中间结果是新算法产生的关键。 算法思想不可能给一个具体的方案, 往往是
一个方向,是一个探索的可能。 当然在面试的时候, 这种探索受限于时间情绪, 往往不现实, 但怎么说呢, 熟能生巧,
灵感就是无数次练习后的一次不期而遇。  






评分

参与人数 2大米 +13 收起 理由
ruoyi.rrr + 5 给你点个赞!
14417335 + 8 给你点个赞!

查看全部评分


上一篇:请教如何准备codesignal上的OA
下一篇:Leetcode premium什么时候能再有学生折扣
您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表