📣 Back to School开学季 - VIP通行证5折优惠!蓝莓、Offer多多同步优惠
查看: 4125| 回复: 5
跳转到指定楼层
上一主题 下一主题
收起左侧

[找工就业] 分享下本人准备算法面试的经验

 
全局:

2022(10-12月)-CS硕士+5-10年 | Other|BayArea湾区 码农类General全职@
大家好,在这里我想谈谈近年来我是准备算法面试的一些经验。我曾面试过湾区20多家科技公司, 对如何准备面试积累了丰富的经验。尽管近年来系统设计问题越来越普遍,但算法问题仍在面试中占据绝对的主导地位。在电话面试中,几乎100%都是算法题。 onsite面试中最少最少也会有一轮算法题。FAANG公司通常对算法面试有更高的标准,尤其是谷歌将其推向了极致。所以你至少需要将面试准备时间的50%用于准备算法题。如果是面试FAANG,这个比例则应该更高。就我个人而言,我会把准备算法题分为两个步骤。

第一步是学习算法基础。以下是我准备时会看的算法书:
Introduction to Algorithms
Data Structures and Algorithms in Java (如果你用Java编程)
Data Structures and Algorithms in Python (如果你用Python编程)
Algorithms by Robert Sedgewick and Kevin Wayne (这本书里有讲解 Union Find and Trie,本身也是一本很好的算法基础书)
. check 1point3acres for more.需要学习的内容包括:Big O notation, array, linked list, queue, stack, tree (包括 tree structure and tree traversal), binary tree, binary search tree, heap, binary search, depth-first search, breadth-first search, dynamic programming, map, set, graph, union find, and trie (一般公司不会考trie, 但我在 Google 和 Lyft 的面试中遇到过).
在学习了上述所有内容之后,就可以开始第二步,即实践环节,也叫刷题。个人很反感刷题这个说法。我很反感那种机械的很急功近利的刷题。 刷题的目的不在于死记硬背解法,而是总结归纳, 领悟其中的道理。”刷题”的话当然首选LeetCode。我们大多数人都是在职准备面试,所以你的时间很有限,也就是晚上和周末。找到高效的练习方法非常重要。下面我会分享三个练习的经验。
首先,我们需要知道练习的目的是什么?你希望解决尽可能多的问题。与此同时,你要确保真正理解解法。不要在一个问题上花费太多时间, 但也不应该在没有自己先思考解法的情况下立即看答案。所以你需要找到一个平衡。以LeetCode为例,有三个难度级别:简单、中等和困难。我练习时,我为简单、中等和困难问题分别设置了10分钟、15分钟和20分钟的计时器。时间一到,如果我没有任何想法,我就会去马上看解法,并确保我完全理解它。切勿在一个问题上死磕,仅仅为了想靠自己做出来。
第二个经验是,即使你在规定时间内完成了代码并且测试通过了,你也需要查看最优解,并比较最优解和你的解法有何不同。你需要思考为什么最优解比你的解法更好。这会帮助你了解那些最聪明的脑袋是如何处理同样的问题,坚持这个方法将会逐渐改进你的思维过程。. Χ
第三个经验是,对题目进行分类并做笔记。当我完成一个题目时,我会花几分钟时间做笔记。我会记下比如我在哪里卡住了?为什么最优解比我的解法更好?这里分享下我个人使用的Google表格的屏幕截图。它包括四列:Question Link, Category, 1st Try, and Notes。Question Link可以快速打开问题页面。Category是我给这个问题归类的类别。对你做过的题目进行分类非常重要。快速识别问题的类别有助于你快速想出相应的解法,因为相同的类别通常需要类似的思维过程。1st Try记录了我第一次练习这个问题的日期,绿色表示我能够想出最优解并在时间限制内写完代码,红色则相反。最后,在Notes栏中写下任何笔记。此外,你还可以添加更多列来跟踪你第二次、第三次等的表现。

. 1point 3 acres
这三点是我觉得这几年刷题总结出的最宝贵的经验。还有一些其他小技巧。比如在做了大量问题后,你要重新做那些你不太自信的题目, 比如那些你没做出的题目。重新做这些题目能巩固你对解法的理解。另外,对于那些你已经非常熟悉的问题,可以尝试挑战使用其他方法来解决它们。例如,通常不会用动态规划来解决 maximum subarray question ,但此题确实有动态规划的解法。这样做会进一步培养你的思维过程,并在面对新问题时给你更多选择。
这些就是我准备算法面试积累的经验。如果你有其他的tips,或者有在准备过程中需要避免的事情, 请留言分享。

本帖子中包含更多资源

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

x

评分

参与人数 8大米 +11 收起 理由
Cypereae + 1 赞一个
微_光 + 2 给你点个赞!
08005 + 1 谢谢楼主分享!!
周耀海 + 2 欢迎分享你知道的情况,会给更多积分奖励!
Hkd666 + 1 给你点个赞!

查看全部评分


上一篇:23NG SDE简历求修改!!
下一篇:研究生在读,有3年工作经验,何时开始找工比较好?
推荐
 楼主| amoicity123 2023-9-12 14:39:20 | 只看该作者
全局:
还有一个经验就是平常练习做题的时候一定不能安安静静的, 而是要模拟面试的场景, 刚开时问问题, 然后说自己的想法,写代码最好还要一边解释。写完代码在过一遍一个简单的example, 然后说有什么edge case,最后加上time/space complexity.

评分

参与人数 2大米 +2 收起 理由
小亩_41460b5 + 1 赞一个
ywjoey + 1 赞一个

查看全部评分

回复

使用道具 举报

全局:
请问下,面前senior 也是差不多50%的算法吗

补充内容 (2023-09-02 22:23 +08:00):
面试
回复

使用道具 举报

全局:
老哥6666等我明天积分够了来给你加分
回复

使用道具 举报

无效楼层,该帖已经被删除
全局:
感谢楼主分享!好有用 最近在想要不要背一下trie
回复

使用道具 举报

全局:
感觉现在不怎么考dp之类的 dfs考的多
回复

使用道具 举报

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

本版积分规则

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