当前位置:首页 » 操作系统 » 数据结构算法面试题

数据结构算法面试题

发布时间: 2023-02-18 23:15:22

1. 算法面试通关40讲 覃超 Leetcode 题目总结(未完待续)

主要是自己收集的题目,正在学习王争老师的数据与算法结构之美和覃超老师的算法面试通关四十讲,两位老师推荐很经典的面试题。所以为了方便自己,在这里做一个汇总。如果对你有帮助那当然好,或者也可以看参考资料,里面有很多优秀的Github的资源。

参考资料
算法复杂度查看: https://www.bigocheatsheet.com/
C语言解法推荐: https://github.com/begeekmyfriend/leetcode
Java解法推荐: https://github.com/azl397985856/leetcode
数据结构与算法之美(王争)(有各种语言的版本): https://github.com/wangzheng0822/algo
Github 40K star leetcode: https://github.com/azl397985856/leetcode
Github 13K star Leetcode: https://github.com/haoel/leetcode
Github 63K star 用动画的形式呈现解LeetCode题目的思路: https://github.com/MisterBooo/LeetCodeAnimation
python 解法: https://github.com/qiyuangong/leetcode
其他解法: https://github.com/qiyuangong/leetcode

06|面试题:反转一个单链表&判断链表是否有环

数据与算法结构之美:
21 Merge Two Sorted Lists 【 C 】【 python 】
删除链表倒数第 n 个结点 【 Leetcode 的解题 】
求链表的中间结点 Middle of the Linked List

20 Valid Parentheses
232 Implement Queue using Stacks 【 C 】【 My C solution 】
225 Implement Stack using Queues 【 C 】

703 Kth Largest Element in a Stream
239 Sliding Window Maximum

242 Valid Anagram
1 Two Sum 【 C 】
15 3Sum
18 4Sum

98 Validate Binary Search Tree
235 Lowest Common Ancestor of a Binary Search Tree
236 Lowest Common Ancestor of a Binary Tree

50 Pow(x, n)
169 Majority Element

122 Best Time to Buy and Sell Stock II

冒泡排序,选择排序,插入排序,供参考:【 C 】

(未完待续,大概等我做完上面这些就可以继续补充剩下的了吧)

2. 数据库经典笔试题和面试题答案

如下这些有关数据库知识考查的经典笔试题,非常全面,对计算机专业毕业生参加笔试会很有帮助,建议大家收藏。
一、选择题

1. 下面叙述正确的是___c___。

A、算法的执行效率与数据的存储结构无关

B、算法的空间复杂度是指算法程序中指令(或语句)的条数

C、算法的有穷性是指算法必须能在执行有限个步骤之后终止

D、以上三种描述都不对

2. 以下数据结构中不属于线性数据结构的是___c___。

A、队列B、线性表C、二叉树D、栈

3. 在一棵二叉树上第5层的结点数最多是__b____。2的(5-1)次方

A、8 B、16 C、32 D、15

4. 下面描述中,符合结构化程序设计风格的是___a___。

A、使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑

B、模块只有一个入口,可以有多个出口

C、注重提高程序的执行效率 D、不使用goto语句

5. 下面概念中,不属于面向对象方法的是___d___。

A、对象 B、继承 C、类 D、过程调用

6. 在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是___b___。

A、可行性分析 B、需求分析 C、详细设计 D、程序编码

7. 在软件开发中,下面任务不属于设计阶段的是__d____。

A、数据结构设计 B、给出系统模块结构 C、定义模块算法 D、定义需求并建立系统模型

8. 数据库系统的核心是___b___。

A、数据模型 B、数据库管理系统 C、软件工具 D、数据库

9. 下列叙述中正确的是__c____。

A、数据库是一个独立的系统,不需要操作系统的支持

B、数据库设计是指设计数据库管理系统

C、数据库技术的根本目标是要解决数据共享的问题

D、数据库系统中,数据的物理结构必须与逻辑结构一致

10. 下列模式中,能够给出数据库物理存储结构与物理存取方法的是___a___。

A、内模式 B、外模式 C、概念模式 D、逻辑模式

11. Visual FoxPro数据库文件是___d___。

A、存放用户数据的文件 B、管理数据库对象的系统文件

C、存放用户数据和系统的文件 D、前三种说法都对

12. SQL语句中修改表结构的命令是___c___。

A、MODIFY TABLE B、MODIFY STRUCTURE

C、ALTER TABLE D、ALTER STRUCTURE

13. 如果要创建一个数据组分组报表,第一个分组表达式是"部门",第二个分组表达式是"性别",第三个分组表达式是"基本工资",当前索引的索引表达式应当是__b____。

A、部门+性别+基本工资 B、部门+性别+STR(基本工资)

C、STR(基本工资)+性别+部门 D、性别+部门+STR(基本工资)

14. 把一个项目编译成一个应用程序时,下面的叙述正确的是___a___。

A、所有的项目文件将组合为一个单一的应用程序文件

B、所有项目的包含文件将组合为一个单一的应用程序文件

C、所有项目排除的文件将组合为一个单一的应用程序文件

D、由用户选定的项目文件将组合为一个单一的应用程序文件

15. 数据库DB、数据库系统DBS、数据库管理系统DBMS三者之间的关系是_a___。

A、DBS包括DB和DBMS B、DBMS包括DB和DBS

C、DB包括DBS和DBMS D、DBS就是DB,也就是DBMS

16. 在"选项"对话框的"文件位置"选项卡中可以设置___b___。

A、表单的默认大小 B、默认目录

C、日期和时间的显示格式 D、程序代码的颜色

17. 要控制两个表中数据的完整性和一致性可以设置"参照完整性",要求这两个表_a_。

A、是同一个数据库中的两个表 B、不同数据库中的两个表

C、两个自由表 D、一个是数据库表另一个是自由表

18. 定位第一条记录上的命令是___a___。

A、GO TOP B、GO BOTTOM C、GO 6 D、SKIP

19. 在关系模型中,实现"关系中不允许出现相同的元组"的约束是通过__b____。

A、候选键 B、主键 C、外键 D、超键

20. 设当前数据库有10条记录(记录未进行任何索引),在下列三种情况下,当前记录号为1时;EOF()为真时;BOF()为真时,命令?RECN()的结果分别是___a___。

A、1,11,1 B、1,10,1 C、1,11,0 D、1,10,0

21. 下列表达式中结果不是日期型的是___c___。

A、CTOD("2000/10/01") B、{^99/10/01}+365

C、VAL("2000/10/01") D、DATE()

22. 只有满足联接条件的记录才包含在查询结果中,这种联接为___c___。

A、左联接 B、右联接 C、内部联接 D、完全联接

23. 索引字段值不唯一,应该选择的索引类型为___b___。

A、主索引 B、普通索引 C、候选索引 D、唯一索引

24. 执行SELECT 0选择工作区的结果是___b___。

A、选择了0号工作区 B、选择了空闲的最小号工作区

C、关闭选择的工作区 D、选择已打开的工作区

25. 从数据库中删除表的命令是___a___。

A、DROP TABLE B、ALTER TABLE C、DELETE TABLE D、USE

26. DELETE FROM S WHERE 年龄>60语句的功能是__b____。

A、从S表中彻底删除年龄大于60岁的记录

B、S表中年龄大于60岁的记录被加上删除标记

C、删除S表 D、删除S表的年龄列 1 2

3. 数据结构与算法处理面试题

1、时针走一圈,时针分针重合几次

2、N*N的方格纸,里面有多少个正方形

3、2000万个整数,找出第五十大的数字?

4、网络POI中如何试下查找最近的商家功能(提示:坐标镜像+R树)。

5、一个文件中有100万个整数,由空格分开,在程序中判断用户输入的整数是否在此文件中。说出最优的方法

6、两个不重复的数组集合中,这两个集合都是海量数据,内存中放不下,怎么求共同的元素?

7、烧一根不均匀的绳,从头烧到尾总共需要1个小时。现在有若干条材质相同的绳子,问如何用烧绳的方法来计时一个小时十五分钟呢?

8、万亿级别的两个URL文件A和B,如何求出A和B的差集C(提示:Bit映射->hash分组->多文件读写效率->磁盘寻址以及应用层面对寻址的优化)

9、怎么在海量数据中找出重复次数最多的一个?

10、海量日志数据,提取出某日访问网络次数最多的那个IP。

11、在2.5亿个整数中找出不重复的整数,注,内存不足以容纳这2.5亿个整数。

12、搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。

13、有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M。返回频数最高的100个词。

14、有10个文件,每个文件1G,每个文件的每一行存放的都是用户的query,每个文件的query都可能重复。要求你按照query的频度排序。

15、给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?

16、一个文本文件,大约有一万行,每行一个词,要求统计出其中最频繁出现的前10个词,请给出思想,给出时间复杂度分析。

17、腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?

18、100w个数中找出最大的100个数。

4. 面试经典数据结构和算法汇总

如果说数据结构是骨架,那么算法就是灵魂。没了骨架,灵魂没有实体寄托;没了灵魂,骨架也是个空壳。两者相辅相成,缺一不可,在开发中起到了砥柱中流的作用。

现在我对各种数据结构和算法做一总结,对比一下它们的效率

1.数据结构篇
1. 如果让你手写个栈和队列,你还会写吗?
2. 开发了那么多项目,你能自己手写个健壮的链表出来吗?
3. 下次面试若再被问到二叉树,希望你能对答如流!
4. 面试还在被红-黑树虐?看完这篇轻松搞定面试官 !

2.排序算法篇
1. 几个经典的基础排序算法,你还记得吗?
2. 手把手教你学会希尔排序,很简单!
3. 快速排序算法到底有多快?
4. 五分钟教你学会归并排序
5. 简单说下二叉树排序
6. 学会堆排序只需要几分钟
7. 图,这个玩意儿竟然还可以用来排序!

掌握了这些经典的数据结构和算法,面试啥的基本上没什么问题了,特别是对于那些应届生来说。接下来再总结一下不同数据结构和算法的效率问题,做一下对比,这也是面试官经常问的问题。

数据结构常用操作效率对比:

常用排序算法效率的对比:

关于经典的数据结构和算法,就总结到这,本文建议收藏,利用等公交、各种排队之时提升自己。这世上天才很少,懒蛋却很多,你若对得起时间,时间便对得起你。

5. 常见面试算法题2:二叉树的最近公共父亲节点

程序员面试中对数据结构的考察,除了单链表,考察最为频繁的就是二叉树了,而二叉树的最近公共父节点又是较为常见的一道算法题,博主年前面试vivo互联网部门的时候就被考察过,下边介绍下这道算法题的思路和源码
两个节点Node1和Node2的最近父节点可以用下边的思路得到:
首先,当Node1位于Node2的左子树或者右子树时,则Node1和Node2的最近父节点为Node2;
否则,反之当Node2位于Node1的左子树或者右子树时,则Node1和Node2的最近父节点为Node1;
再否则,Node1和Node2的最近父节点为以包含Node1和Node2l两个节点的最小子树的根节点。
经过上边的分析可以用递归的方法来解这道题,

6. iOS面试题12-数据结构算法篇

《 2018 iOS面试题系列 》

        这里没有图啊,大家可以抽象一下。

        数据结构的存储一般常用的有两种 顺序存储结构 和 链式存储结构

        发挥想象力啊。 举个列子。数组。1-2-3-4-5-6-7-8-9-10。这个就是一个顺序存储结构 ,存储是按顺序的 举例说明啊。 栈。做开发的都熟悉。栈是先进后出 ,后进先出的形式 对不对 ?!他的你可以这样理解

        hello world 在栈里面从栈底到栈顶的逻辑依次为 h-e-l-l-o-w-o-r-l-d 这就是顺序存储 再比如 队列 ,队列是先进先出的对吧,从头到尾 h-e-l-l-o-w-o-r-l-d 就是这样排对的

        再次发挥想象力 这个稍微复杂一点 这个图片我一直弄好 ,回头找美工问问,再贴上 例如 还是一个数组

        1-2-3-4-5-6-7-8-9-10 链式存储就不一样了 1(地址)-2(地址)-7(地址)-4(地址)-5(地址)-9(地址)-8(地址)-3(地址)-6(地址)-10(地址)。每个数字后面跟着一个地址 而且存储形式不再是顺序 ,也就说顺序乱了,1(地址) 1后面跟着的这个地址指向的是2,2后面的地址指向的是3,3后面的地址指向是谁你应该清楚了吧。他执行的时候是 1(地址)-2(地址)-3(地址)-4(地址)-5(地址)-6(地址)-7(地址)-8(地址)-9(地址)-10(地址),但是存储的时候就是完全随机的。明白了?!

        还是举例子。理解最重要。不要去死记硬背 哪些什么。定义啊。逻辑啊。理解才是最重要滴

二叉树有五种表现形式

       二叉树可以转换成森林 树也可以转换成二叉树。这里就不介绍了 你做项目绝对用不到

       数据结构大致介绍这么多吧。理解为主, 别死记,死记没什么用

从现在开始介绍算法啊

       二叉树这个比较麻烦 还有平衡二叉树 有点绕 如果不懂二叉树这一块 你是百分之二百看不懂的

原文链接

7. 数据结构面试常见问题

数据结构面试常见问题

数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。下面就是我整理的数据结构面试常见问题,一起来看一下吧。

数据结构面试常见问题 篇1

数据结构与算法,这个部分的内容其实是十分的庞大,要想都覆盖到不太容易。在校学习阶段我们可能需要对每种结构,每种算法都学习,但是找工作笔试或者面试的时候,要在很短的时间内考察一个人这方面的能力,把每种结构和算法都问一遍不太现实。所以,实际的情况是,企业一般考察一些看起来很基本的概念和算法,或者是一些变形,然后让你去实现。也许看起来简单,但是如果真让你在纸上或者是计算机上快速地完成一个算法,并且设计测试案例,最后跑起来,你就会发现会很难了。这就要求我们要熟悉,并牢固掌握常用的算法,特别是那些看起来貌似简单的算法,正是这些用起来很普遍的算法,才要求我们能很扎实的掌握,在实际工作中提高工作效率。遇到复杂的算法,通过分析和扎实的基本功,应该可以很快地进行开发。

闲话少说,下面进入正题。

一.数据结构部分

1.数组和链表的区别。(很简单,但是很常考,记得要回答全面)

C++语言中可以用数组处理一组数据类型相同的数据,但不允许动态定义数组的大小,即在使用数组之前必须确定数组的大小。而在实际应用中,用户使用数组之前有时无法准确确定数组的大小,只能将数组定义成足够大小,这样数组中有些空间可能不被使用,从而造成内存空间的浪费。链表是一种常见的数据组织形式,它采用动态分配内存的形式实现。需要时可以用new分配内存空间,不需要时用将已分配的空间释放,不会造成内存空间的浪费。

从逻辑结构来看:数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况,即数组的大小一旦定义就不能改变。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费;链表动态地进行存储分配,可以适应数据动态地增减的.情况,且可以方便地插入、删除数据项。(数组中插入、删除数据项时,需要移动其它数据项)。

从内存存储来看:(静态)数组从栈中分配空间(用NEW创建的在堆中), 对于程序员方便快速,但是自由度小;链表从堆中分配空间, 自由度大但是申请管理比较麻烦.

1.从访问方式来看:数组在内存中是连续存储的,因此,可以利用下标索引进行随机访问;链表是链式存储结构,在访问元素的时候只能通过线性的方式由前到后顺序访问,所以访问效率比数组要低。

2.链表的一些操作,如链表的反转,链表存在环路的判断(快慢指针),双向链表,循环链表相关操作。

3.队列(特殊的如优先级队列),栈的应用。(比如队列用在消息队列,栈用在递归调用中)

4.二叉树的基本操作

二叉树的三种遍历方式(前序,中序,后序)及其递归和非递归实现,三种遍历方式的主要应用(如后缀表达式等)。相关操作的时间复杂度。

5.字符串相关

整数,浮点数和字符串之间的转换(atoi,atof,itoa)

字符串拷贝注意异常检查,比如空指针,字符串重叠,自赋值,字符串结束符'/0'等。

二.算法部分

1.排序算法:

排序可以算是最基本的,最常用的算法,也是笔试面试中最常被考察到的算法。最基本的冒泡排序,选择排序,插入排序要可以很快的用代码实现,这些主要考察你的实际编码能力。堆排序,归并排序,快排序,这些算法需要熟悉主要的思想,和需要注意的细节地方。需要熟悉常用排序算法的时间和空间复杂度。

各种排序算法的使用范围总结:

(1)当数据规模较小的时候,可以用简单的排序算法如直接插入排序或直接选择排序。

(2)当文件的初态已经基本有序时,可以用直接插入排序或冒泡排序。

(3)当数据规模比较大时,应用速度快的排序算法。可以考虑用快速排序。当记录随机分布的时候,快排的平均时间最短,但可能出现最坏的情况,这时候的时间复杂度是O(n^2),且递归深度为n,所需的栈空间问O(n)。

(4)堆排序不会出现快排那样的最坏情况,且堆排序所需的辅助空间比快排要少。但这两种算法都不是稳定的,若要求排序时稳定的,可以考虑用归并排序。

(5)归并排序可以用于内排序,也可以用于外排序。在外排序时,通常采用多路归并,并且通过解决长顺串的合并,产生长的初始串,提高主机与外设并行能力等措施,以减少访问外存额次数,提高外排序的效率。

2,查找算法

能够熟练写出或者是上机编码出二分查找的程序。

3.hash算法

4.一些算法设计思想。

贪心算法,分治算法,动态规划算法,随机化算法,回溯算法等。这些可以根据具体的例子程序来复习。

5.STL

STL(Standard Template Library)是一个C++领域中,用模版技术实现的数据结构和算法库,已经包含在了C++标准库中。其中的vecor,list,stack,queue等结构不仅拥有更强大的功能,还有了更高的安全性。除了数据结构外,STL还包含泛化了的迭代器,和运行在迭代器上的各种实用算法。这些对于对性能要求不是太高,但又不希望自己从底层实现算法的应用还是很具有诱惑力的。

数据结构面试常见问题 篇2

1. 什么是数据结构?

数据结构是数据组织(存储)和操作进行检索和访问的方式。它还定义了不同数据集相互关联、建立关系和形成算法的方式。

2. 描述数据结构的类型?

列表:链接到先前或/和后续数据项的相关事物的集合。

数组:所有相同的值的集合。

Records:字段的集合,每个字段都包含来自单一数据类型的数据。

树:在分层框架中组织数据的数据结构。这种形式的数据结构遵循数据项插入、删除和修改的顺序。

表格:数据以行和列的形式保存。这些与记录相当,因为数据的结果或更改反映在整个表中。

3. 什么是线性数据结构?请举例

如果数据结构的所有元素或数据项都按顺序或线性顺序排列,则数据结构是线性的。元素以非分层方式存储,因此除了列表中的第一个和最后一个元素外,每个项目都有后继者和前驱者。数组、堆栈、字符串、队列和链表,都属于线性数据结构。

4. 数据结构有哪些应用?

数值分析、操作系统、人工智能、编译器设计、数据库管理、图形、统计分析和仿真。

5、文件结构和存储结构有什么区别?

区别在于访问的内存区域。存储结构是指计算机系统内存中的数据结构,而文件结构是指辅助存储器中的存储结构。

6、什么是多维数组?

多维数组的意思是指三维或者三维以上的数组。 三维数组具有高、宽、深的概念,或者说行、列、层的概念,即数组嵌套数组达到三维及其以上。是最常见的多维数组,由于其可以用来描述三维空间中的位置或状态而被广泛使用。

7. 什么是链表数据结构?

这是最常见的数据结构面试问题之一,面试官希望你能给出全面的答案。尝试尽可能多地解释,而不是用一句话来完成你的答案!

它是一个线性数据结构或一系列数据对象,其中元素不存储在相邻的内存位置。元素使用指针链接以形成链。每个元素都是一个单独的对象,称为节点。每个节点有两项:数据字段和对下一个节点的引用。链表中的入口点称为头。如果列表为空,则头部为空引用,最后一个节点具有对空的引用。

一个链表是一个动态的数据结构,其中节点的数量是不固定的,这样的例子有扩大和缩小需求的能力。

它适用于以下情况:

我们处理未知数量的对象或不知道列表中有多少项目;

我们需要从列表中进行恒定时间的插入/删除,就像在时间可预测性至关重要的实时计算中一样;

不需要随机访问任何元素;

该算法需要一个数据结构,无论对象在内存中的物理地址如何,都需要在其中存储对象;

我们需要在列表中间插入项目,就像在优先队列中一样;

一些实现是堆栈和队列、图形、名称目录、动态内存分配以及对长整数执行算术运算

8.什么是双向链表?请举例

它是链表的一种复杂类型(双端 LL),其中一个节点有两个链接,一个连接到序列中的下一个节点,另一个连接到前一个节点。这允许在两个方向上遍历数据元素。

举例:

带有下一个和上一个导航按钮的音乐播放列表

具有 BACK-FORWARD 访问页面的浏览器缓存

浏览器上的撤消功能

9. 为什么要做算法分析?

一个问题可以使用多种解决算法以多种方式解决。算法分析提供对算法所需资源的估计,以解决特定的计算问题。还确定了执行所需的时间和空间资源量。

算法的时间复杂度量化了算法运行所花费的时间,作为输入长度的函数。空间复杂度量化了算法占用的空间或内存量,以作为输入长度的函数运行。

;
热点内容
ftp端口映射路由 发布:2025-08-01 01:54:59 浏览:51
算法股市 发布:2025-08-01 01:53:37 浏览:84
银行密码器需要多少钱 发布:2025-08-01 01:53:33 浏览:832
mysql自动化脚本 发布:2025-08-01 01:53:01 浏览:351
老电脑怎么配置组装 发布:2025-08-01 01:45:09 浏览:453
如何用gcc语言编译代码 发布:2025-08-01 01:37:57 浏览:237
android的分区大小 发布:2025-08-01 01:37:54 浏览:12
linuxdeploy 发布:2025-08-01 01:17:01 浏览:353
linux服务器端口号怎么设置 发布:2025-08-01 01:15:22 浏览:14
干花胶怎么存储 发布:2025-08-01 01:11:14 浏览:524