前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >想进大厂,这是你绕不过的门槛

想进大厂,这是你绕不过的门槛

原创
作者头像
没关系再继续努力
发布于 2021-12-08 05:52:00
发布于 2021-12-08 05:52:00
7040
举报
文章被收录于专栏:Android面试Android面试

你觉得这个门槛是什么?

不绕关子,就是数据结构与算法。

为什么是数据结构与算法?

第一,数据结构与算法是科班程序员的必修课程,包括培训机构也有相关课程。

第二,程序员面试必考察数据结构与算法,尤其是大厂,因为算法和数据结构最能体现一个人的基本功,基本功扎实的人,无论是做工程还是去做算法,都不会差到哪里去。

第三,算法框架千千万,数据结构是最底层的支撑,你可以只用现成的框架和算法,但你不能不懂其中的基本原理。

如果你只停留在“使用”层面,连基本的算法和数据结构都不会,基本上属于比较底层的程序员,这就意味着你只能拿比较低的薪资以及只拥有比较差的竞争力,在技术高速更迭的互联网行业,注定是要被社会淘汰的

不懂数据结构与算法依旧可以找到工作?

确实可以,根本没有那么多高级开发以及更高的岗位频繁用到数据结构和算法,小公司更不用说,只需要功能上线能用就完事。

但就如标题所说,想进大厂,数据结构与算法就是你绕不过的门槛,肯定会有人反驳我,说“我不进大厂也可以好好的”,但咱们反问一下,为什么大厂面试必问数据结构与算法?

大厂招聘以及培养的都是高尖人才,他们当然不允许自己的同事在交流技术的时候连“链表”、“堆”、“时间复杂度”是什么都不知道。

往大了说,互联网时不时就出现一波裁员潮,“35岁危机”也一直存在,就算进不成大厂或者不进大厂也应该为自己的职业发展做下考虑,数据结构与算法就是程序员成长与发展的基石

光说不练假把式

我这整理了一份《2021年最新版数据结构与算法面试手册》,包括:

  • Java
  • C++
  • Golang

相关的数据结构与算法题及解析,详细内容包括:

1.Java

1.1 哈希

  • Java中的HashMap的工作原理是什么?
  • 什么是Hashmap?
  • 如何构造一致性哈希算法
  • hashCode() 和equals() 方法的重要性体现在什么地方?
  • Object作为HashMap的key的话,对Object有什么要求吗?
  • hashset 存的数是有序的吗?

1.2 二叉树

  • 求二叉树的最大深度
  • 求二叉树的最小深度
  • 求二叉树中节点的个数
  • 求二叉树中叶子节点的个数
  • 求二叉树中第k层节点的个数
  • 判断二叉树是否是平衡二叉树
  • 判断二叉树是否是完全二叉树
  • 两个二叉树是否完全相同
  • 两个二叉树是否互为镜像
  • 翻转二叉树or镜像二叉树
  • 求两个二叉树的最低公共祖先节点
  • 二叉树的前序遍历
  • 二叉树的中序遍历
  • 二叉树的后序遍历
  • 前序遍历和后序遍历构造二叉树
  • 在二叉树中插入节点
  • 输入一个二叉树和一个整数,打印出二叉树中节点值的和等于输入整数所有的路径
  • 二叉树的搜索区间
  • 二叉树的层次遍历
  • 二叉树内两个节点的最长距离
  • 不同的二叉树
  • 判断二叉树是否是合法的二叉查找树(BST)

1.3 链表

  • 谈一谈,bucket如果⽤链表存储,它的缺点是什么?
  • 有一个链表,奇数位升序偶数位降序,如何将链表变成升序?
  • 如何反转单链表
  • 现在有一个单向链表,谈一谈,如何判断链表中是否出现了环
  • 随机链表的复制

1.4 数组

  • 写一个算法,可以将一个二维数组顺时针旋转90度
  • 一个数组,除一个元素外其它都是两两相等,求那个元素?
  • 找出数组中和为S的一对组合,找出一组就行
  • 求一个数组中连续子向量的最大和
  • 寻找一数组中前K个最大的数

1.5 排序

  • 用Java写一·个冒泡排序?
  • 排序都有哪几种方法?请列举出来
  • 归并排序的原理是什么?
  • 堆排序的原理是什么?
  • 如何得到一个数据流中的中位数?
  • 你知道哪些排序算法,这些算法的时间复杂度分别是多少,解释一下快排?

1.6 堆与栈

  • 内存中的栈(stack)、堆(heap) 和静态区(static area) 的用法
  • heap和stack有什么区别
  • 最小的k个数
  • 滑动窗口最大值
  • 丑数
  • 前K个高频元素
  • 有效的括号
  • 最小栈
  • 柱状图中最大的矩形

1.7 高级算法

  • LRU算法的实现原理
  • 为什么要设计后缀表达式,有什么好处?
  • 设计一个算法,用来压缩一段URL
  • id全局唯一且自增,如何实现?
  • 最后一个单词的长度

1.8 动态规划

  • 斐波那契数列
  • 不同路径
  • 爬楼梯
  • 零钱兑换
  • 打家劫舍
  • 编辑距离

##2.C++

2.1 数组

  • Array&List, 数组和链表的区别
  • 一组有序数(从小到大排列),有负有正,找出绝对值最小值
  • 数组中重复的数字
  • 一个长度为N的整形数组,数组中每个元素的取值范围是0,n-1,判断该数组否有重复的数,请说一下你的思路并手写代码

2.2 排序

  • 手写一下快排代码
  • 介绍一下各种排序算法及其复杂度
  • 稳定排序有哪几种?
  • 问求第k大的数的方法以及各自的复杂度是怎样的?当有相同元素时,还可以使用什么不同的方法求第k大的元素?
  • 海量数据如何去取最大的k个
  • 快排的时间复杂度最差是多少?什么时候时间最差
  • 什么是快排算法;以及什么是稳定性排序,快排是稳定性的吗;快排算法最差情况推导公式

2.3 动态规划

  • 手写代码:最长公共连续子序列
  • 手写代码:求一个字符串最长回文子串
  • 手写代码:求最大子序和

2.4 链表

  • 手写代码:如何合并两个有序链表
  • 手写代码:反转链表
  • 判断一个链表是否为回文链表,说出思路并手写代码
  • 什么是单链表,如何判断两个单向链表是否相交

2.5 高级算法

  • 什么是LRU缓存
  • 洗牌算法

2.6 字符串

  • 给你一个字符串,找出第一个不重复的字符,如“abbbabcd”,则第一个不重复就是c
  • 最长公共前缀
  • 有效的字母异位词

3.Golang

3.1 递归&回溯

  • 手写代码:两数相加
  • 手写代码:括号生成
  • 手写代码:验证二叉搜索树
  • 二叉树的最大深度
  • 二叉树的最近公共祖先
  • 全排列

3.2 并查集

  • 手写代码:省份数量
  • 手写代码:岛屿数量
  • 手写代码:最长连续数列

3.3 字符串

  • 手写代码:转换成小写字母
  • 手写代码:最长公共前缀
  • 手写代码:有效的字母异位词

由于篇幅原因以上问题的解析我就不放上来了,欢迎评论区一起讨论分享。

最后

程序员中有一个说法:不会数据结构与算法、网络、操作系统的都是伪程序员,你是吗?

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
大厂面试系列(七):数据结构与算法等
数据结构和算法 链表 链表,常见的面试题有写一个链表中删除一个节点的算法、单链表倒转、两个链表找相交的部分,这个一般必须得完全无误的情况下写出来; 给出两个链表的头结点,找出这两个链表的交点。 java 中数组和链表的区别,各自优势 如何设计拥有高效的随机读取能力的的链表(跳表) 设计跳表,跳表插入开销,跳表随机读取过程 给你一个单向链表,给这个链表做K反转,例如 k=3 1 -> 2 -> 3 -> 4 -> 5 -> 6 反转后为:3 -> 2 -> 1 -> 6 -> 5 -> 4 链表长度保证为K的
zhaozhen
2021/07/15
1.2K0
最全BAT算法面试100题:阿里、百度、腾讯、京东、美团、今日头条
在二叉树结点结构中加一个指针域,使其指向层次遍历的下一个结点,特别地,每一层的最后一个结点为空。(Code)
java架构师
2019/05/10
1.4K0
这是一份全面&详细的数据结构、算法学习指南
对于不同的查找需求场景,会采用不同的查找类型,最终采用的查找方式(查找算法)也有所不同,具体如下
Carson.Ho
2021/12/06
1.6K0
这是一份全面&详细的数据结构、算法学习指南
这些C++工程师面试题你都会了吗?
5、给定三角形ABC和一点P(x,y,z),判断点P是否在ABC内,给出思路并手写代码
编程珠玑
2019/09/19
3.9K0
经典数据结构和算法回顾
最近想回过头来看看以前写的一些代码,可叹为何刚进大学的时候不知道要养成写博客的好习惯。现在好多东西都没有做记录,后面也没再遇到相同的问题,忘的都差不多了。只能勉强整理了下面写的一些代码,这些代码有的有参考别人的代码,但都是自己曾经一点点敲的,挂出来,虽然很基础,但希望能对别人有帮助。
哲洛不闹
2018/09/18
6470
经典数据结构和算法回顾
秋招算法岗面经(主要是撸代码题)
如果你以后想起,无论何时回想起来,这件事都会让你嘴角带笑的话,你就去做吧。但如果你并不这么认为或者不太确定,那就忘掉它吧,因为你还有大把时间。——《完美陌生人》
牛客网
2018/12/27
8550
460道Java后端面试高频题
转自公众号:码农求职小助手
乔戈里
2019/09/24
8590
秋招时间规划,知识点汇总,以及面试总结一、知识储备二、面试问题三、心态变化四、总结
秋招已结束,作为一个平时潜水的牛友,很感激牛客网和广大牛友们。在我无知时,给与我知识;在我烦恼时,给与我慰藉;现在自己也拿到了心仪的offer,就简单写写这段时间的知识储备、面试问题和心态方面的变化吧。也算是对自己秋招的一次总结。LZ水平一般,大佬看看就好了~ 一、知识储备 (LZ有整理一些内容,有兴趣的同学,私信我,我发给你) LZ本科是计算机专业的,考研的时候看的王道四本专业书,于是我又温习了一遍:数据结构、计算机网络、操作系统和计算机组成原理,这几本书是最基础的知识了,总结的还是挺到位的,而且比较精简
牛客网
2018/04/28
1.1K0
10w字!前端知识体系+大厂面试总结(算法篇)
但是在两个月的算法练习中,第一次体会到编程不仅仅是技术,还是艺术,感受到了编程是一件很酷的事情
winty
2023/01/09
5340
10w字!前端知识体系+大厂面试总结(算法篇)
java详细学习路线及路线图
为了便于描述,文中涉及到的代码部分都是用Java语言编写的,其实Java本身对常见的几种数据结构,线性表、栈、队列等都提供了较好的实现,就是我们经常用到的Java集合框架,有需要的可以阅读这篇文章。Java – 集合框架完全解析
全栈程序员站长
2022/07/01
7920
java详细学习路线及路线图
拿下 BAT+华为校招的 200 题 LeetCode 高频题库
下面是程序锅自己对网上发布的 200 道高频面试题进行分类之后的结果。这 200 道,程序锅大概花了 7 个月刷完了,并且差不多每道题都过了好几遍。
syy
2021/10/14
2.6K0
前端应该如何准备数据结构和算法?
据我了解,前端程序员有相当一部分不是科班出身,以至于对“数据结构”和“算法”的基础概念都不是很清晰,这直接导致很多人在看到有关这部分的内容就会望而却步。
ConardLi
2019/08/21
1K0
前端应该如何准备数据结构和算法?
2021最新java详细学习路线及路线图(超详细)「建议收藏」
本文将告诉你学习Java的一些步骤,学习过程中可能遇到的问题,及学习路线。希望能够对你的学习有所帮助。
全栈程序员站长
2022/07/04
1.8K0
2021最新java详细学习路线及路线图(超详细)「建议收藏」
算法面试太难?反手就是一波面经
八月参加了一些提前批的面试,包括阿里、百度、头条、贝壳、一点资讯等。整理了一些面试题,分享给大家。
石晓文
2018/10/10
1.8K0
吴师兄导读:如何快速入门数据结构和算法
吴师兄导读:有哪些常见的数据结构?基本操作是什么?常见的排序算法是如何实现的?各有什么优缺点?本文简要分享算法基础、常见的数据结构以及排序算法,给同学们带来一堂数据结构和算法的基础课。
五分钟学算法
2020/08/21
1.7K0
吴师兄导读:如何快速入门数据结构和算法
讲透学烂二叉树(二):图中树的定义&各类型树的特征分析
日常中我们见到的二叉树应用有,Java集合中的TreeSet和TreeMap,C++ STL中的set、map,以及Linux虚拟内存的管理,以及B-Tree,B+-Tree在文件系统,都是通过红黑树去实现的。虽然之前写过《再谈堆排序:堆排序算法流程步骤透解—最大堆构建原理》但是二叉树的基本性质,对我来说,从入门到放弃是搞了好几回。
周陆军
2020/06/06
1.6K0
如何准备机器学习工程师的面试?
本文给到的是相关具体可能会被问及的问题 (编程、基础算法、机器学习算法)。从本次关于算法工程师常见的九十个问题大多是各类网站的问题汇总,希望你能从中分析出一些端倪,文末附了部分参考的答案。 问题区 1. struct 和 class 区别,你更倾向用哪个 2. kNN,朴素贝叶斯,SVM 的优缺点,朴素贝叶斯的核心思想,有没有考虑属性之间不是相互独立的情况 3. 10 亿个整数,1G 内存,O(n) 算法,统计只出现一次的数。 4. SVM 非线性分类,核函数的作用 5. 海量数据排序 6. 项目中
AI研习社
2018/03/19
8750
数据结构与算法必备的 50 个代码实现
数据结构和算法是程序员的内功心法和基本功。无论是人工智能还是其它计算机科学领域,掌握扎实的数据结构和算法知识,往往会助力不少!今天给大家推荐一份不错的数据结构与算法资源。特点是:全代码实现!
红色石头
2022/01/12
7080
数据结构与算法必备的 50 个代码实现
必须干掉这10道,面试100%遇到!
最近不少小伙伴跟我交流刷题肿么刷,我给的建议就是先剑指offer和力扣hot100,在这些题中还有些重要程度和出现频率是非常非常高的,今天给大家分享当今出现频率最高的10道算法题,最近铺天盖地的出现,学到就是赚到。
bigsai
2021/12/27
3700
必须干掉这10道,面试100%遇到!
力扣 (LeetCode) 字节校园 算法与数据结构
作者:我是哪吒 链接:https://juejin.cn/post/7142493275084029960
达达前端
2022/09/29
6580
推荐阅读
相关推荐
大厂面试系列(七):数据结构与算法等
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档