您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
互联网公司最常见的面试算法题有哪些?
算法,数值,具体互联网公司最常见的面试算法题有哪些?
发布时间:2016-12-08加入收藏来源:互联网点击:
互联网公司最常见的面试算法题有哪些?
回答于 2019-09-11 08:43:50
回答于 2019-09-11 08:43:50
大家好,我们以java排序算法为例,来看看面试中常见的算法
第一、基数排序算法
该算法将数值按照个位数拆分进行位数比较,具体代码如下:
第二、桶排序算法
该算法将数值序列分成最大值+1个桶子,然后递归将数值塞进对应值的桶里,具体代码如下:
第三、计数排序算法
该算法计算数值序列中每个数值出现的次数,然后存放到单独的数组中计数累加,具体代码如下:
第四、堆排序算法
该算法将数值序列中最大值挑选出来,然后通过递归将剩下的最大值也选出来,这样排序就完成了,具体代码如下:
第五、快速排序算法
该算法将数值序列拆分成2块,一块的所有数值比另一块都大,然后分别对两块进行快速排序,具体代码如下:
第六、归并排序算法
该算法把待排序数值序列拆分成若干子序列进行排序后合并,具体代码如下:
第七、希尔排序算法
此算法跟插入排序类似,是一个泛化的插入排序,具体代码如下:
第八、插入排序算法
此算法主要在迭代时将数值插入到前面的位置,进行比对换位,具体代码如下:
第九、选择排序算法
此算法选择一个值然后从右边开始进行比对换位,具体代码如下:
第十、冒泡排序算法
该算法主要将第一个和最后一个数值进行对比,当满足预先设定的条件时交换一下位置,具体的代码如下:
希望我的回答能帮到你,谢谢
回答于 2019-09-11 08:43:50
简单一点的算法题:
手写一个单例
1、饿汉式
2、懒汉式
还有快速排序、二分查找,这些简单的算法,本人遇到过上面这个手写单例,当时记得就写了两种,好像单列有好多种写法,什么线程安全跟线程不安全的。
回答于 2019-09-11 08:43:50
所谓知己知彼,百战不殆,今天就和大家聊聊互联网公司那些最常见的面试算法题。
清点面试算法题之前我们先要明确面试官考察的目的,比如有一道经典考题是“怎么用3升和5升的桶量出4升的水?”其实这道题的答案并不难,但是对于面试官,可以通过这道题考察的内容就比较丰富了。
一、概括一下面试算法的目的
1、基础知识储备量
考察知识储量是面试算法最基本的目的,但是直接考察算法基础已经很少出现在实际面试中了,需要快速筛选面试者的时候才会用到。
2、思考方向
有的算法可能有两个甚至多个答案,这时面试官就不是单纯的考察面试者的知识储备量了,通过面试者的答案可以看出面试者的思考方向,符合公司的日常工作需求才是“有缘人”。
3、解决问题能力
能不能解出答案是次要的,分析和解决问题的思路才是面试官考察的根本所在。
4、辅助能力
算法是整个计算机领域里最基础的学科,其余大部分的学科和技能都是在算法的基础上展开的,所以这类考察实则是考察面试者能否快速融入工作当中。
总的来说,算法题是综合考察面试者思维逻辑和基础知识的好办法。
二、算法面试题的类型
虽然面试算法题层出不穷,但从算法的类型来看,互联网公司最常见的面试算法题分以下几种。
1、基础算法
基础算法主要有大数据查找、快排、哈希算法解决冲突等。以针对搜索来讲,可能设计一个数据库表内包含名字、课程、分数3列,求所有课程最低分不小于80分的名单,如果要求用SQL表达,就是对于基础知识点和基本功的考察。另外可能还会涉及一些计算机网络的TCP三次握手协议等基础的算法考察。
例如2017京东校招的排序题目:
对关键字{10,20,8,25,35,6,18,30,5,15,28}序列进行希尔排序,取增量d =5时,排序结果为( )
A. {6,18,8,5,15,10,20,30,25,35,28}
B. {10,18,8,5,15,6,20,30,25,35,28}
C. {10,20,8,5,15,6,18,30,25,35,28}
D. {10,20,30,5,8,6,15,18,25,28,35}
1) 用简单取巧的方式,标记原始关键字为abcdeabcdea,那么a对应的数字就是10,6,28,排序后就是6,10,28,所以答案就是A。
2) 当然也可以用代码去实现,更考验技术含量,就像下面的JAVA实现。
public class ShellSort { public static void main(String [] args) { int[]a={49,38,65,97,76,13,27,49,78,34,12,64,1}; System.out.println("排序之前:"); for(int i=0;i<a.length;i++) { System.out.print(a[i]+" "); } //希尔排序 int d=a.length; while(true){ for(int i=0;i<d;i++){ for(int j=i;j+d<a.length;j+=d){ int temp; if(a[j]>a[j+d]){ temp=a[j]; a[j]=a[j+d]; a[j+d]=temp; } } } if(d==1){break;} d--; } System.out.println(); System.out.println("排序之后:"); for(int i=0;i<a.length;i++) { System.out.print(a[i]+" "); } } }
2、数据结构
基础数据结构更多的出现在应届生校招和笔试环节中,这类面试题涉及到链表、堆、栈、队列、图、二叉树等。
比如2018年科大讯飞的笔试题:
下面关于二叉排序树的说法错误的是( )
A. 在二叉排序树中,完全二叉树的查找效率最低
B. 对二叉排序树进行中序遍历,必定得到节点关键字的有序序列
C. 二叉排序树的平均查找长度是O(log2n)
D. 二叉排序树的查找效率与二叉树的树形有关
通过二叉排序树,可以发现完全二叉树的查找效率最高,故答案选A。
3、灵活解决问题的算法
灵活解决问题的算法在面试中占据了相当重要的地位,这类题不告诉面试者具体需要用什么算法,而是虚构一个问题,让你找出具体的解决方案。
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |