程序员必备的50道数据结构和算法面试题

数组问题

数组是最常用的基础数据结构,它将元素保存在连续的内存中。它也是面试最喜欢的问题之一,在代码面试中你会经常听到很多关于数组的问题,例如,数组的反转、数组的排序或者查找数组中的一个元素。

数组结构的一个关键优点是在知道索引的情况能够以 O(1) 的复杂度找到一个元素。但是增加或者删除一个元素是很慢的,因为一旦创建了一个数组,你就不能改变它的大小了。

为了创建一个更长或者更短的数组,你需要创建一个新的数组,然后将所有元素从旧数组中复制到新数组中。

解决数组问题的关键是,你要对数组这种数据结构有一个深刻的认识,同时还要了解基本的程序流程如循环、递归以及基本的操作符。

下面是一些经常问到和数组相关的面试题,你可以拿来练习:

1、在一个给定的从1到100的整型数组中,如何快速找到缺失的数字?

2、如何找到一个给定的整型数组中的重复数字?

3、在一个未排序的整型数组中,如何找到最大和最小的数字?

4、在一个整型数组中,如何找到一个所有成对的数字,满足它们的和等于一个给定的数字?

5、如果一个数组包含多个重复元素,如何找到这些重复的数字?

6、用 Java 实现从一个给定数组中删除重复元素?

7、如何利用快速排序对一个整型数组进行排序?

8、如何从一个数组中删除重复元素?

9、用 Java 实现数组反转?

10、如何不借助库实现从数组中删除重复元素?

链表问题

链表是另外一个常见的数据结构,对数组结构是一个补充。和数组类似,它也是一个线性的数据结构,以线性方式存储元素。

不过和数组不同的是,链表的元素不是存储在连续位置中,而是分散在各个内存中的各个位置,通过节点链接起来。一个链表就是一个包含了下个节点内存地址的节点列表。

基于这种结构,可以很容易实现链表中元素的添加和删除,因为只需要改变节点的指向而无需创建一个新的数组。不过链表中的查找是相对困难的,在一个单向链表中需要花费 O(n) 的时间代价来查找一个元素。

链表有几种不同的形式。首先是单向链表,在这个结构你只能向一个方向遍历(向前或者反转);其次是双向链表,你可以双向遍历(向前或者向后);最后是环形链表,组成一个环的形式。

要解决链表问题,你就必须了解递归的相关知识,因为链表是一种递归的数据结构。如果你从链表中去掉一个节点, 剩下的数据结构仍然是链表,因此, 许多链表问题有比遍历更简单的递归解决方案.

下面是一些最常见和流行的链表面试问题

1、在一次遍历中,怎样发现单个链表的中间元素?

2、怎样验证给定的链表是环形的? 怎样发现这个环的起始节点?

3、怎样翻转链表?

4、不使用递归,怎样反转单个链表?

5、在未排序链表中,怎样移除重复的节点?

6、怎样找出单个链表的长度?

7、从单个链表的结尾处,怎样找出链表的第三个节点?

8、怎样使用栈计算两个链表的和?

字符串相关问题

与数组和链表数据结构一起,字符串是编程工作面试中的另一个热门话题。我从未参加过没有问过基于字符串相关问题的编码面试。

字符串的一个优势在于,如果你了解数组,你可以很容易地解决基于字符串的问题,因为字符串仅仅是一个字符数组。

因此,在解决基于数组的编程问题中所学到的所有技术也可用于解决字符串编程问题。

以下是编程求职面试中常见的字符串编程问题:

1、如何输出字符串中的重复字符?

2、如何判断两个字符串是否互为回文?

3、如何从字符串中输出第一个不重复字符?

4、如何使用递归实现字符串反转?

5、如何检查字符仅包含数字字符?

6、如何在字符串中找到重复字符?

7、如何对给定字符串中的元音及辅音进行计数?

8、如何计算给定字符传中特定字符出现的次数?

9、如何找到一个字符串的全排列?

10、在不使用任何库方法的情况下如何反转给定语句中的单词?

11、如何判断两个字符串是否互为旋转?

12、如何判断给定字符串是否是回文?

二叉树问题

到目前为止,我们只研究了线性数据结构,但现实世界中的所有信息无法全部使用线性方式表示,而这正是树数据结构所擅长的地方。

树是一种支持以分层方式存储数据的数据结构。根据你存储数据的方式,有不同类型的树,例如二叉树,其中每个节点最多有两个子节点。

与它的近亲二叉搜索树一起,它们也是最流行的树数据结构之一。因此,你会发现很多基于它们的问题,例如如何遍历它们、计算节点数、查找深度,以及检查它们是否平衡。

解决二叉树问题的一个关键点是对其理论的深刻理解,例如:什么是二叉树的大小或深度,什么是叶节点,什么是节点,以及对流行的遍历算法的理解,例如前序、后序和中序遍历。

下面是一些经常问到的基于二叉树的面试题,你可以拿来练习:

1、二叉搜索树是如何实现的?

2、如何在给定二叉树上实现前序遍历?

3、不使用递归如何按照前序遍历给定二叉树?

4、如何在给定二叉树上实现中序遍历?

5、不使用递归情况下如何使用中序遍历输出给定二叉树所有节点?

6、如何实现后序遍历算法?

7、如何不使用递归实现二叉树的后续遍历?

8、如何输出二叉搜索树的所有叶节点?

9、如何在给定二叉树中计算叶节点数目?

10、如何在给定数组中执行二分搜索?

编程面试问题之杂项

除了基于数据结构的问题之外,大多数编程工作面试还会询问算法、设计、位操作和基于逻辑的常规问题,我将在本节中对其进行介绍。

练习这些概念很重要,因为有时在实际面试中解决这些概念很棘手。提前练习它们不仅能让你熟悉它们,而且还让你更自信地向面试官解释其解决方案。

1、冒泡排序是如何实现的?

2、迭代式快排算法是如何实现的?

3、你如何实现插入排序算法?

4、合并排序算法是如何实现的?

5、桶排序算法是如何实现的?

6、计数排序算法是如何实现的?

7、基数排序算法是如何实现的?

8、在不使用第三个变量的前提下如何交换两个数?

9、如何检查两个矩形是否重叠?

10、如何设计一个自动售货机?

以上这些是数据结构和算法之外的一些最常见的面试问题,可以帮助你在面试中做得很好。

如果有小伙伴愿意共享自己的解题方法或者思路可以联系我哦~届时可以整理出有答案的更有意义的一篇~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容