互联网大厂春招和实习都面试了哪些高频算法题?
近段时间我们整理了2024年大数据春招和投递实习岗位的同学们的面试反馈,针对数据结构与算法这部分内容,总结了关于中大厂、中小厂的算法题面试特点。
中大厂的考查重点主要在排序、DP、二叉树以及指针的使用技巧上;
当然,这仅仅是我们整理的一部分算法题目,加油一些正在补充完善中。但是不可不提的是,这些大家实际面试中遇到的题目,我们早在24届秋招同学结束后的不久就整理了一份高频题目出来,占比涵盖了上述的80%,可以说极大的节省了大家的刷题时间,提高刷题效率。
在这些题目后面标记的数字是表示近期这道题出现的频率,有些题目比如用栈实现队列、反转链表、二叉树基本遍历都出现了不止三次以上,而且周会的模拟中也让大家做了不止一次。
通过总结近期同学们遇到的题目,我们发现有些面试官会对leetcode原题进行一些描述改造,让大家感觉好像做过但是又想不起来,比如让你找出找出数组中大于一半的元素,其实就是多数元素(169)、让你对链表的后半段进行逆序排列,其实就是重排链表。
最后就是还有一种面试官的考查并非是需要你将题目手撕出来,而是需要讲解题的思路,并对这个问题有一些衍生的问题进行追问。如下:
只需讲思路即可,最长回文串
- 你是怎么理解dp的?
- 你觉得DP能用来解决什么问题?
- dp能保存状态,有哪些优势?
这类衍生的问题也会在周会的时候对大家进行提问,类似上述你是如何理解DP的?能用DP解决哪些问题?有什么优势呢?
这类问题一般是较为开放性的问题,主要就是考察你对DP概念性质的掌握,平时刷题过程中有没有总结这个方法求解问题的分类以及DP的优缺点等内容。而且这类问题在排序、DFS、BFS、分治的算法中问的也会非常高频。
在看中小厂的算法题面试,可以发现其实中大厂出的题目相较于中小厂其实偏简单了一些。而且考查重点相差不大,唯一不同的是考查的公司会少很多,也就是大部分的中小厂在面试数据开发这个岗位的时候其实很少会面试算法题,这就需要大家如果对某些公司比较感兴趣的,可以提前了解下这些公司的一些考查难度。
针对海量数据处理问题的回答,我们针对高频的问法总结了专题,大体的思路基本是分治的思想,结合排序+数据结构的方法去和面试官聊。比如图中的文件A问题:
初始分割阶段:
将文件A分割成多个小文件,每个小文件的大小适合能够加载到内存中进行排序。可以根据实际情况将文件A分割成多个大小合适的部分。
内部排序阶段:
读取一个小文件到内存中,使用内存排序算法(比如快速排序、归并排序)对这部分数据进行排序。将排序后的数据写回到磁盘上,形成临时文件。
归并阶段:
使用归并排序算法,从每个临时文件中读取一部分数据到内存中,进行归并排序。
将归并排序后的数据写回到磁盘上,形成新的临时文件。
重复以上步骤,直到所有数据都被归并排序成一个文件。
最终输出:
经过多轮的归并排序后,得到的最终临时文件就是文件A的全排序结果。
其他类似的问题也可以借鉴这个这个思路。
最后,关于数据结构相关概念和理解的考查类型基本如下:
1.什么是完全二叉树?
2.给定一个完全二叉树,假设从1到n编号(他的意思是层次遍历),想选中第k个元素,怎么计算最快?
3. 堆排序的思想是什么呢?
4. 平常的时候你用堆排序解决什么问题呢?
5.你了解哪些查找算法?能不能举例讲讲
6.四则运算表达式怎么求值?讲讲你的思路
7.栈、队列、二叉树的实现过程,它们的使用场景
........
这部分内容可以在学习的时候多去总结,刷题的时候回忆一下你用到的数据结构的特点,理一理题目的解题思路,不需要单独花时间去当作八股文背诵。
涤生大数据校招往期精彩推荐