这种面试方式会让企业错过真正牛逼的程序员吗?比如那种经验丰富、实战性强的牛人?
一般情况下是不会的,因为目前的互联网行业从业人员太多太多了,基数大,优秀的人也特别多。比如有100个人面试,企业只招聘10个,那么你排在11名也是不行的,因为企业一定是能找出来那种:算法题搞得很厉害,工作经验也丰富,各方面都很优秀的人!
在这种情况下,即使你的开发能力很好,工作经验特别丰富,架构设计能力也很强,企业也能找到一个其他各方面条件和你差不多,但是刷题也棒的人。
还记得好多年前,会开车也是一项很厉害的技能,那时候汽车还不是特别普及,能在早期拿到驾驶证的人,去给别人开货车、当司机,都能拿到一份不错的薪资,而现在呢?几乎人人都会开车了。
在一个行业刚开始发展的时候,总会有红利期的。比如淘宝的红利期、自媒体的红利期,互联网行业也会有红利期。
2000年左右的时候,软件工程师特别少,想要进入企业写代码,难度也不算大,并且工资也非常高,在北京一个月能拿到4000-5000元,而当时北京的房价是几千元一平,那时的软件工程师大多都在北京买房了,享受了互联网的红利。
到了2021年的今天,互联网发展到现在,也相对成熟了,从业人员也越来越多,从大学计算机专业的分数线也能看出来这个趋势。我高考填报的志愿是建筑、机械工程、车辆工程这些当时的热门专业,然而被调剂到了当时冷门的计算机专业。而等到我毕业的时候,计算机专业的分数已经领先我入校那会儿的一些热门专业高几十分了。
由于互联网行业的薪资高、能挣钱,吸引了大批人涌入,高中毕业生填报相关专业,大学期间还有很多其他专业的人转专业过来,很多考研的同学也纷纷跨考,导致近几年从业人员暴增,竞争十分激烈。
软件工程师越来越多,优秀的软件工程师也越来越多,大家不愁找不到优秀的人。所以把算法题作为一个门槛了。
先看看以下这些大厂必考经典题👇
-
请问,Object作为HashMap的key的话,对Object有什么要求吗?
-
请问 hashset 存的数是有序的吗?
-
输入一个二叉树和一个整数,打印出二叉树中节点值的和等于输入整数所有的路径
-
二叉树的搜索区间
-
现在有一个单向链表,谈一谈,如何判断链表中是否出现了环
-
随机链表的复制
-
找出数组中和为S的一对组合,找出一组就行
-
求一个数组中连续子向量的最大和
-
谈一谈,如何得到一个数据流中的中位数?
-
你知道哪些排序算法,这些算法的时间复杂度分别是多少,解释一下快排?
-
请你解释一下,内存中的栈(stack)、堆(heap) 和静态区(static area) 的用法。
-
说一说,heap和stack有什么区别。
-
请你设计一个算法,用来压缩一段URL?
-
谈一谈,id全局唯一且自增,如何实现?
-
一个长度为N的整形数组,数组中每个元素的取值范围是[0,n-1],判断该数组否有重复的数,请说一下你的思路并手写代码
-
请问求第k大的数的方法以及各自的复杂度是怎样的,另外追问一下,当有相同元素时,还可以使用什么不同的方法求第k大的元素
-
判断一个链表是否为回文链表,说出你的思路并手写代码
…
懵逼了吗?你能答出几道?别着急,刷题也有刷题的方法, Leetcode 内容复杂、网上资料良莠不齐,想要靠自己梳理清楚确实不容易,为了帮助大家顺利挺进大厂,我们研究了各个大厂的面试题型,总结出这「 100 道大厂算法必考面试题+详细解答」
1.哈希
-
请说⼀说,Java中的HashMap的⼯作原理是什么?
-
介绍⼀下,什么是Hashmap?
-
讲⼀讲,如何构造⼀致性哈希算法。
-
请谈⼀谈,hashCode() 和equals() ⽅法的重要性体现在什么地⽅?
2.⼆叉树
-
求⼆叉树的最⼤深度
-
求⼆叉树的最⼩深度
-
求⼆叉树中节点的个数
-
求⼆叉树中叶⼦节点的个数
-
求⼆叉树中第k层节点的个数
-
判断⼆叉树是否是平衡⼆叉树
-
判断⼆叉树是否是完全⼆叉树
-
两个⼆叉树是否完全相同
-
翻转⼆叉树or镜像⼆叉树
-
两个⼆叉树是否互为镜像
-
求两个⼆叉树的最低公共祖先节点
3.链表
-
谈⼀谈,bucket如果⽤链表存储,它的缺点是什么?
-
有⼀个链表,奇数位升序偶数位降序,如何将链表变成升序?
-
如何反转单链表
-
现在有⼀个单向链表,谈⼀谈,如何判断链表中是否出现了环
-
随机链表的复制
4.数组
-
写⼀个算法,可以将⼀个⼆维数组顺时针旋转90度。
-
⼀个数组,除⼀个元素外其它都是两两相等,求那个元素?
-
找出数组中和为S的⼀对组合,找出⼀组就⾏
-
求⼀个数组中连续⼦向量的最⼤和
-
寻找⼀数组中前K个最⼤的数
5.排序
-
⽤Java写⼀个冒泡排序?
-
介绍⼀下,排序都有哪⼏种⽅法?请列举出来
-
介绍⼀下,归并排序的原理是什么?
-
介绍⼀下,堆排序的原理是什么?
-
谈⼀谈,如何得到⼀个数据流中的中位数
-
你知道哪些排序算法,这些算法的时间复杂度分别是多少,解释⼀下快排?
6.堆与栈
-
请你解释⼀下,内存中的栈(stack)、堆(heap) 和静态区(static area) 的⽤法。
-
说⼀说,heap和stack有什么区别。
-
最⼩的k个数
-
滑动窗⼝最⼤值
-
丑数前
-
前K个⾼频元素
-
有效的括号
-
最⼩栈
-
柱状图中最⼤的矩形
7.⾼级算法
-
请你讲讲LRU算法的实现原理?
-
为什么要设计 后缀表达式,有什么好处?
-
请你设计⼀个算法,⽤来压缩⼀段URL?
-
谈⼀谈,id全局唯⼀且⾃增,如何实现?
-
最后⼀个单词的⻓度
8.动态规划
-
斐波那契数
-
不同路径