决胜编程面试的142个资源!2000人点赞,软件工程师提升必备
想要收到心仪公司的Offer,面试过程怎么能不出彩。不知道从何下手也没关系,有人已经替你整理了。
Benjamin Rogojan和Shayan两位过来人,在Medium博客中长文整理了软件工程师的面试必备。
在这份资源中,他们将面试必备功课分类整理,并附上了相关知识的图表、文章和视频讲解地址,共计142个资源,在Medium上收获了近2000赞。
先马克,然后继续往下看。
都有啥?面试问题一般都以“出其不意”的特点为人所知,要想在这个环节脱颖而出,极大的覆盖面是必须的。
所以,这套资源中,也置入了一位软件工程师各个方面的必备素养,共分为14大类,下面分别介绍。
热身阶段:回顾经典问题
面试的问题虽然千变万化,但总有几个为问题出现的概率奇高无比。
Leetcode中第560题,探讨Subarray Sum Equals K的问题,题目和解题思路如下:
https://leetcode.com/problems/subarray-sum-equals-k/
常见的数组中的左旋转问题也经常出现,最快的数组逆置和数组左旋算法不陌生吧:
https://www.hackerrank.com/challenges/ctci-array-left-rotation/problem?h_l=interview&playlist_slugs%5B%5D=interview-preparation-kit&playlist_slugs%5B%5D=arrays
公认的简单却又复杂的矛盾交织体FizzBuzz问题,据说面试者有90%都会栽在这道题上面……
https://www.hackerrank.com/challenges/fizzbuzz/problem
先学习这些经典问题,面试开场准备出最好的姿态。
算法和数据结构
尝试回答下面的问题进行自测,帮助你知道自己应该重点关注什么:
leetcode第985题,Sum of Even Numbers After Queries,查询后的偶数和。
https://leetcode.com/problems/sum-of-even-numbers-after-queries/
再比如657题,探索机器人能否返回原点问题:
https://leetcode.com/problems/robot-return-to-origin/
类似的问题还有6个,先自测下leetcode中的薄弱之处,然后下一步就是查漏补缺。
算法和数据结构视频
这一部分包含了数十个视频,针对数据结构和算法两部分,附上了各种讲解资源。
部分视频可能需要科学前往,也可以自己按图索骥搜索其他类似资源。
视频画风不尽相同,大多都是免费资源,视频长度也不会太长。
渐进符号(大O符号)
渐进符号用来描述函数渐进行为,在计算机科学中,它在分析算法复杂性方面非常有用。
如果不太了解这部分,资源中有介绍视频:
https://www.youtube.com/watch?v=D6xkbGLQesk
渐进符号详解:
https://www.youtube.com/watch?v=iOq5kSKqeR4
基础知识集合:
http://bigocheatsheet.com/
动态规划
动态规划部分也需要储备点相关知识:
比如斐波那契数列,路径最短问题:
https://www.youtube.com/watch?v=OQ5jsbhAv_M&t=7s
文字证明和21点:
https://www.youtube.com/watch?v=ENyox7kNKeY&t=4s
字符串操作
包括谷歌编程面试问题及答案、在二叉树中查找最小和最大元素、求二叉树的高度、尾部递归及问题检查等。
后续学习问题
还有一些其他小知识点,其实是leetcode中众多题目中几个有意思的问题,比如“Lily的作业问题”:
https://www.hackerrank.com/challenges/lilys-homework/problem
成对交换节点问题(Swap Nodes in Pairs ):
https://leetcode.com/problems/swap-nodes-in-pairs/
不用再通刷leetcode了,择其重点即可。
好了,理论问题告一段落。有的公司不那么关注对算法的理解程度,可能更重视实际操作问题。
这些问题通常很专业很小众,涉及到具体的操作过程,也就是一些小技巧。
在操作编程问题部分,就重点挑去了一些小技巧。
此外,在系统设计视频、操作系统、线程、面向对象的编程、设计模式和SQL部分,也是择取相关的小知识点,针对不同部分进行讲解。
这份资源内分过类的大小知识点,共有142个,比直接刷leetcode更有条理性,并且也不用手动搜资源了。
作者介绍整理出这份面试资料的人是什么来头?
Benjamin Rogojan是一名西雅图的数据科学家,华盛顿大学毕业后,Benjamin Rogojan在一家健康分析公司做数据工程师。
Shayan Oveis Gharan是华盛顿大学计算机科学与工程的助理教授,2013年还获得了ACM博士论文奖。
当时的获奖论文是,New Rounding Techniques for the Design and Analysis of Approximation Algorithms。
论文地址:
https://homes.cs.washington.edu/~shayan/thesis.pdf