数据结构面试常见问题
数据结构面试常见问题
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。下面就是我整理的数据结构面试常见问题,一起来看一下吧。
数据结构面试常见问题 篇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. 为什么要做算法分析?
一个问题可以使用多种解决算法以多种方式解决。算法分析提供对算法所需资源的估计,以解决特定的计算问题。还确定了执行所需的时间和空间资源量。
算法的时间复杂度量化了算法运行所花费的时间,作为输入长度的函数。空间复杂度量化了算法占用的空间或内存量,以作为输入长度的函数运行。
;结构化面试应注意的问题有哪些?
1.考官的组成有结构,比如从考官的工作性质、性别构成、年龄层次、专业特点等方面有一定结构。2.测评的要素有结构,即面试指标体系有一定结构,一般包括考生的仪表、仪态、分析判断能力、语言表达能力、组织领导能力、交往协调能力等几方面。每一个测评要素都有明确的测试要点或观察要点,测评要点所对应的测试题目都有出题思...
结构化行为面试特点
问题的内容及其顺字都是事先确定的,结构化面试中常见的两类有效问题为:以经历为基础的问题,与工作要求有关,目求职者所经历过的工作或生活中的行为,以情量为基础的问题,在假设的情况下,与工作有关的求职者的行为表现。提问的秩序结构通常有2种:由简易到复杂的提问,逐渐加深问题的难度,使候选...
国考结构化小组面试有什么技巧?
以下说明适用于结构化面试和结构化小组面试! 一、明确概念 结构化小组模拟,是一场横向的对比选拔。结合了结构化面试和无领导小组讨论的特点,要求一组测评者(一般是3-5 人),在规定的时间内依次作答结构化面试题目(一般是3-5 道),并互相点评的一种面试测评方法,从而测查考生从事工作所需的基本能力和基本素质。结...
什么是结构化面试?
先说面试到底看什么。其实简单归纳,两点内容。一是举止仪表重要,首因效应。第一印象好不好,气质行不行,阳光亲和都是我们在进场和答题环节应该给考官的;二是语言表达重要,有效地传递答题内容。所以仪容仪表和语音表达是两个独立的测评要素,单独计分,但是举止仪表和语言表达有问题,会影响其他要素分值...
一般面试领导都会问哪方面的问题?
详情请查看视频回答
今天面试意见建筑设计公司,让我根据他们提供的结构和效果图,画平面和立...
至于你目前的问题:根据结构平面,你可以看到建筑的轴线尺寸,建筑的外轮廓,可以看出内部大致的墙的布置,(一般梁是根据建筑的墙体布置的,大跨的板中间的次梁可能不一定有墙体),另外还有楼层的高度(看结构平面的标高),根据这些可以把每层平面的房间画出来,注意检查一下是不是每个房间都能走到,...
什么是结构化面试,有什么特点
2、向所有的应聘者采取相同的测试流程。在结构化面试中,不仅面试题目对报考同一职位的所有应考者相同,而且面试的指导语、面试时间、面试问题的呈现顺序、面试的实施条件都应是相同的。这就使得所有的应考者在几乎完全相同的条件下接受面试,保证面试过程的公正、公平。3、面试评价有规范的、可操作的评价...
结构化面试技巧有哪些?
除了外貌长相,体态、气质、申请、衣着细节都属于外表范围,而声音同样包括音调、语气、语速、节奏,这些因素都将影响第一印象的形成。除了精彩的答题表现外,良好的仪容仪表和言语举止,在结构性面试中也占有一定的比例。良好的第一印象可能会为你的最终成绩增加几分,如果答题表现良好,而外表邋遢,可能也...
据细胞结构图回答问题:(1)图中属于植物细胞的是___图,属于动物细胞的是...
为植物细胞.甲图中的细胞结构是:B细胞膜,C细胞核,D细胞质,为动物细胞.(2)在生物体的细胞结构中,细胞质内存有能量转换器,植物细胞有线粒体和叶绿体,动物细胞有线粒体.(3)细胞核内有遗传物质,是细胞生命活动的控制中心,所以“种瓜得瓜,种豆得豆”取决于细胞核.(4)在植物细胞的...
出纳从业人员应该具备哪些条件?
问题一:你为什么申请这个职位? 这几乎可以算作银行半结构化面试中最常见的开放性问题,回答时可以结合自身性格、优点、组织文化、职位要求等来回答。尽量突出自己适合该职位的特质和做好这份工作的信心。 问题二:请说出你经历过的最成功\/失败的事例。 此类问题考查考生分析解决问题的能力,回答此类问题可用STAR模型。 S...
门翠女金: 常用的线性结构有:线性表,栈,队列,数组,串.线性表是多个相同元素组成的有限线性序列.栈是一种特殊线性表,它将插入和删除限制在表的一端进行,是一种后进先出表.队列也是一种操作受限的特殊线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作.顺序存储结构在计算机内用一组连续的内存单元来存储数组.一堆数组本身就是顺序表结构,多维数组是一种特殊的线性结构.串是一种数据元素固定为字符的线性表.串上的操作是针对串的整体或串的某一部分子串进行的,而线性表是针对线性表上的某个数据元素进行的.
都安瑶族自治县15321961548: 一般面试要求会C/C++数据结构的会出什么题考你? - ?
门翠女金: 链表、二叉树等,比如: 编一棵二叉树按如下格式输出 根 一层 二层 三层89769784987875 9667998989636587
都安瑶族自治县15321961548: 面试java一般问到数据结构的知识有哪些. - ?
门翠女金: 看你面的是什么公司了 单纯web的话 一般不会问 因为基本用不到这些东西 顶多就是各种排序 做应用的话 那就多了吧 各种排序 各种实现 总之 排序还是很重要的 最起码把名记住 让你写个冒泡 这个必须得会...我感觉这样的问题也有可能遇上:怎么在java中实现队列出队进队的操作(或者的栈的进栈和出栈)
都安瑶族自治县15321961548: java面试(有面试经验的请进) - ?
门翠女金: 1、一般面试流程是先投简历、然后1-3三天后,如果简历通过对方会通知你去面试,这次面试是笔试,笔试后有两种情况,一种是回去等通知,一般的话也是在1-3天,如果笔试通过会接到面试通知,接到面试通知后,这次是人事面试,谈的好...
都安瑶族自治县15321961548: 面试java一般问到数据结构的知识有哪些.?
门翠女金: 哈哈,选我吧!看你面的是什么公司了单纯web的话一般不会问因为基本用不到这些东西顶多就是各种排序做应用的话那就多了吧各种排序各种实现总之排序还是很重要的最起码把名记住让你写个冒泡这个必须得会...我感觉这样的问题也有可能遇上:怎么在java中实现队列出队进队的操作(或者的栈的进栈和出栈)
都安瑶族自治县15321961548: 数据结构有关字符串的面试题 求解答 - ?
门翠女金: 建一张hash表,记录a-z 26个字母的出现次数 char table[ 26 ] ; 第一题,假设第一个字符串为s1,第2个字符串为s2 for( i = 0 ; itable[ i ] = 0 ; for( i = 0 ; itable[ s1[i] - 'a' ] ++ ; for( i = 0 ; iif( table[ s2[i] - 'a' ] == 0 ) { print( "字母 %c 没有出现" , ...
都安瑶族自治县15321961548: 数据结构笔试面试复习 - ?
门翠女金: 慎进华为,尤其是做技术人员的,每年都有跳楼的员工,就是因为工作压力太大 LOOK 这个连接: 进去用搜索搜一下就有 ● 华为公司2008年应届毕业生校园招聘宣讲会 [2007/11/05] ○华为公司宣讲会地点—教学主楼一楼多功能报 [2007/11/01] ...
都安瑶族自治县15321961548: 面试java开发,问到数据结构怎么答 - ?
门翠女金: 面试的事就是会就会不会就不会,别上去装会被问住了.然后关于这点的知识那么多只能靠你的积累.比如我问你java的集合类有哪些,都有什么特点,在多线程情况下怎么用.这想问的问题能问出几百个,只能看你知识储备
都安瑶族自治县15321961548: PHP面试一般会问些什么问题 - ?
门翠女金: 那要看面试人的水平、拟聘任岗位的工作内容来定,如果有水平的面试老实,一般是问下面三个方面的内容之一:数据库、数据结构、算法.数据库可以让你设计一个应用,口头描述一下如何设计这个数据库.数据结构一般是问链表、队列、堆栈相关的,算法很丰富,一般是问简单的二分查找等.补充: 你可以直接问他的呀.如果你执着的需要知道自己的缺点,或许会感动对方.
都安瑶族自治县15321961548: 有关数据结构的几个问题? - ?
门翠女金: 数据结构是计算机存储、组织数据的方式.数据结构是指相互之间存在一种或多种特定关系的数据元素的集合.通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率的算法.数据结构往往同高效的检索算法和索引技术有关.