导航:首页 > 源码编译 > 数据机构和算法面试题

数据机构和算法面试题

发布时间:2022-06-14 10:16:29

Ⅰ 关于数据结构的面试题

有a~z,0~9共36个字符组成的字符串,尤其从中任取两个字符组成一个新的字符串,不得重复,这样的字符串一共有:36*35=1260,照你那么说,即使他让你写1000个也应该能够写出来。算法复杂度最小的不好找,这种题能够写出来就OK了。别人给我10个数让我排序,我也不一定就用快速排序啊?

Ⅱ 什么是数据结构什么是算法算法与程序有什么关系

在计算机编程领域,数据结构与算法的应用是无处不在。比如图像视频处理、数据压缩、数据库、游戏开发、操作系统、编译器、搜索引擎、AR、VR、人工智能、区块链等领域,都是以数据结构与算法为基石。

数据结构与算法属于开发人员的基本内功,也能训练大脑的思考能力,掌握一次,终生受益。扎实的数据结构与算法功底,能让我们站在更高的角度去思考代码、写出性能更优的程序,能让我们更快速地学习上手各种新技术(比如人工智能、区块链等),也能让我们敲开更高级编程领域的大门。

数据结构与算法更是各大名企面试题中的常客,如果不想被行业抛弃、想进入更大的名企、在IT道路上走得更远,掌握数据结构与算法是非常有必要。

Ⅲ 一道数据结构的算法面试题

推荐楼主看《编程之美——微软技术面试心得》。如果能把这本书里一些题目的来龙去脉搞清楚,面试数据结构和算法方面的题目时会有更强的底气。

Ⅳ 面试题:数据结构中常见的线性结构有哪些,他们之间有什么区别

常用的线性结构有:线性表,栈,队列,数组,串。线性表是多个相同元素组成的有限线性序列。栈是一种特殊线性表,它将插入和删除限制在表的一端进行,是一种后进先出表。队列也是一种操作受限的特殊线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。顺序存储结构在计算机内用一组连续的内存单元来存储数组。一堆数组本身就是顺序表结构,多维数组是一种特殊的线性结构。串是一种数据元素固定为字符的线性表。串上的操作是针对串的整体或串的某一部分子串进行的,而线性表是针对线性表上的某个数据元素进行的。

Ⅳ 大公司笔试面试有哪些经典算法题目

1、二维数组中的查找

具体例题:如果一个数字序列逆置之后跟原序列是一样的就称这样的数字序列为回文序列。例如:{1, 2, 1}, {15, 78, 78, 15} , {112} 是回文序列, {1, 2, 2}, {15, 78, 87, 51} ,{112, 2, 11} 不是回文序列。现在给出一个数字序列,允许使用一种转换操作:选择任意两个相邻的数,然后从序列移除这两个数,并用这两个数字的和插入到这两个数之前的位置(只插入一个和)。现在对于所给序列要求出最少需要多少次操作可以将其变成回文序列?



Ⅵ ~~~~~常见的数据结构面试题,帮忙解答!!

1.q->next=s;
s->next=p;
2.A/C(这题是考察对概念的理解,可参考第7题,“顺序表才能随即存取,而链表不可以”)
3.D
4.C
5.B
6.A
7.A(此题绝对选A,因为链表只能根据他的前一个结点才能找到下一个结点,不具备随即访问元素的功能)
8.C
9.n-i; n-i+1
声明:本人正在学习数据结构,以上问题都经过反复查询资料(还是比较有信心滴),假如有以为可以问我……

Ⅶ 数据结构有关字符串的面试题 求解答

建一张hash表,记录a-z
26个字母的出现次数
char
table[
26
]
;
第一题,假设第一个字符串为s1,第2个字符串为s2
for(
i
=
0
;
i
<
26
)
;
i
++)
table[
i
]
=
0
;
for(
i
=
0
;
i
<
strlen(
s1
)
;
i
++)
table[
s1[i]
-
'a'
]
++
;
for(
i
=
0
;
i
<
strlen(
s2
)
;
i
++
)
if(
table[
s2[i]
-
'a'
]
==
0
)
{
print(
"字母
%c
没有出现"
,
s2[i]
);
break;
}
if(
i
>=
strlen(
s2
)
)
print(
"字母全部出现"
);
复杂度应是
O(M+N)

M和N分别是s1和s2的长度
第二题更简单了:
for(
i
=
0
;
i
<
26
)
;
i
++)
table[
i
]
=
0
;
for(
i
=
0
;
i
<
strlen(
s1
)
;
i
++)
table[
s1[i]
-
'a'
]
++
;
for(
i
=
0
;
i
<
26
)
;
i
++)
if(
table[i]
==
1
)
print(
"只出现一次的字母:
%c"
,
table[i]
);

Ⅷ CSharp 笔试题, 哪位能提供一些 C#(数据结构和算法)方面的面试题 笔试题资源,谢谢

1.列出所有可用于两个页面之间传递参数的方法。
2.打开一个HTML页面,要自动提交页面的一个form,如何实现?请简单写出相关的页面代码(包括form的主要代码)
3.C#的类中,函数Public,Private,Protect,internal限定符各有什么区别?
4.你对.net的GC的理解,不能超过300字。
5.请写一个查询语句:从user表中取出name列中的起始字符是“北京”的全部记录
6.请你简单的说明数据库建立索引的优缺点
7.如果禁用了cookie,是否会影响到session的使用?原因?
8.C#中Finalize,Dispose有什么不同?
9.最大公约数
既能被两个整数整除的最大整数,例如,24与15两个数的最大公约数为3.求最大公约数可以用求余法来实现。即用两个整数中最大的整数除以最小的数求余数,然后使用除数除以余数求余,直到余数为0时,之前的除数也就是两个数的最大公约数。
10.求素数的程序
A.The algorithm is quite simple.Given an array of integers starting at 2.Cross out all multiples of 2.Find the next uncrossed integer,and cross out all of its multiples.Repeat until you have passed the square root of the maximum value.
A.请翻译上述文字。
B.编程 要求输入一个正整数(可以写死在程序中),返回小于这个数的所有素数。

.net工程师面试题:
1)网站发布的时候后台.cs文件会变成.dll文件
问:如何让html文件变成空白?
2)一个表中的name有很多重复
问1):如何只显示重复项?
问2):如何不显示重复项?
3)一个网站注册会员的时候信息将会很多,会需要“下一步”这样的页面跳转,请问当点击下一步的时候如何对上一页的信息进行保存(不用数据库)?

Ⅸ 一般面试要求会C/C++数据结构的会出什么题考你

数据结构只是基础,面试中最可能的形式是考查算法。算法中又会用到哈希、链表等各种数据结构。给你一个例子:
问: 设计算法,求两个集合的交集。
就这么个简单的问题,要实现一个高效的算法可能用到排序算法、哈希等数据结构的知识

Ⅹ 算法面试

我在《再谈“我是怎么招程序员”》中比较保守地说过,“问难的算法题并没有错,错的很多面试官只是在肤浅甚至错误地理解着面试算法题的目的。”,今天,我想加强一下这个观点——我反对纯算法题面试!(注意,我说的是纯算法题)图片源Wikipedia(点击图片查看词条)我再次引用我以前的一个观点——能解算法题并不意味着这个人就有能力就能在工作中解决问题,你可以想想,小学奥数题可能比这些题更难,但并不意味着那些奥数能手就能解决实际问题。好了,让我们来看一个示例(这个示例是昨天在微博上的一个讨论),这个题是——“找出无序数组中第2大的数”,几乎所有的人都用了O(n)的算法,我相信对于我们这些应试教育出来的人来说,不用排序用O(n)算法是很正常的事,连我都不由自主地认为O(n)算法是这个题的标准答案。我们太习惯于标准答案了,这是我国教育最悲哀的地方。(广义的洗脑就是让你的意识依赖于某个标准答案,然后通过给你标准答案让你不会思考而控制你)功能性需求分析试想,如果我们在实际工作中得到这样一个题 我们会怎么做?我一定会分析这个需求,因为我害怕需求未来会改变,今天你叫我找一个第2大的数,明天你找我找一个第4大的数,后天叫我找一个第100大的数,我不搞死了。需求变化是很正常的事。分析完这个需求后,我会很自然地去写找第K大数的算法——难度一下子就增大了。很多人会以为找第K大的需求是一种“过早扩展”的思路,不是这样的,我相信我们在实际编码中写过太多这样的程序了,你一定不会设计出这样的函数接口 —— Find2ndMaxNum(int* array, int len),就好像你不会设计出 DestroyBaghdad(); 这样的接口,而是设计一个DestoryCity( City& ); 的接口,而把Baghdad当成参数传进去!所以,你应该是声明一个叫FindKthMaxNum(int* array, int len, int kth),把2当成参数传进去。这是最基本的编程方法,用数学的话来说,叫代数!最简单的需求分析方法就是把需求翻译成函数名,然后看看是这个接口不是很二?!(注:不要纠结于FindMaxNum()或FindMinNum(),因为这两个函数名的业务意义很清楚了,不像Find2ndMaxNum()那么二)非功能性需求分析性能之类的东西从来都是非功能性需求,对于算法题,我们太喜欢研究算法题的空间和时间复杂度了。我们希望做到空间和时间双丰收,这是算法学术界的风格。所以,习惯于标准答案的我们已经失去思考的能力,只会机械地思考算法之内的性能,而忽略了算法之外的性能。如果题目是——“从无序数组中找到第K个最大的数”,那么,我们一定会去思考用O(n)的线性算法找出第K个数。事实上,也有线性算法——STL中可以用nth_element求得类似的第n大的数,其利用快速排序的思想,从数组S中随机找出一个元素X,把数组分为两部分Sa和Sb。Sa中的元素大于等于X,Sb中元素小于X。这时有两种情况:1)Sa中元素的个数小于k,则Sb中的第 k-|Sa|个元素即为第k大数;2) Sa中元素的个数大于等于k,则返回Sa中的第k大数。时间复杂度近似为O(n)。搞学术的nuts们到了这一步一定会欢呼胜利!但是他们哪里能想得到性能的需求分析也是来源自业务的!我们一说性能,基本上是个人都会问,请求量有多大?如果我们的FindKthMaxNum()的请求量是m次,那么你的这个每次都要O(n)复杂度的算法得到的效果就是O(n*m),这一点,是书呆子式的学院派人永远想不到的。因为应试教育让我们不会从实际思考了。工程式的解法根据上面的需求分析,有软件工程经验的人的解法通常会这样:1)把数组排序,从大到小。2)于是你要第k大的数,就直接访问 array[k]。排序只需要一次,O(n*log(n)),然后,接下来的m次对FindKthMaxNum()的调用全是O(1)的,整体复杂度反而成了线性的。其实,上述的还不是工程式的最好的解法,因为,在业务中,那数组中的数据可能会是会变化的,所以,如果是用数组排序的话,有数据的改动会让我重新排序,这个太耗性能了,如果实际情况中会有很多的插入或删除操作,那么可以考虑使用B+树。工程式的解法有以下特点:1)很方便扩展,因为数据排好序了,你还可以方便地支持各种需求,如从第k1大到k2大的数据(那些学院派写出来的代码在拿到这个需求时又开始挠头苦想了)2)规整的数据会简化整体的算法复杂度,从而整体性能会更好。(公欲善其事,必先利其器)3)代码变得清晰,易懂,易维护!(学院派的和STL一样的近似O(n)复杂度的算法没人敢动)争论你可能会和我有以下争论,如果程序员做这个算法题用排序的方式,他一定不会像你想那么多。是的,你说得对。但是我想说,很多时候,我们直觉地思考,恰恰是正确的路。因为“排序”这个思路符合人类大脑处理问题的方式,而使用学院派的方式是反大脑直觉的。反大脑直觉的,通常意味着晦涩难懂,维护成本上升。就是一道面试题,我就是想测试一下你的算法技能,这也扯太多了。没问题,不过,我们要清楚我们是在招什么人?是一个只会写算法的人,还是一个会做软件的人?这个只有你自己最清楚。这个算法题太容易诱导到学院派的思路了。是的这道“找出第K大的数”,其实可以变换为更为业务一点的题目——“我要和别的商户竞价,我想排在所有竞争对手报价的第K名,请写一个程序,我输入K,和一个商品名,系统告诉我应该订多少价?(商家的所有商品的报价在一数组中)”——业务分析,整体性能,算法,数据结构,增加需求让应聘者重构,这一个问题就全考了。你是不是在说算法不重要,不用学?千万别这样理解我,搞得好像如果面试不面,我就可以不学。算法很重要,算法题能锻炼我们的思维,而且也有很多实际用处。我这篇文章不是让大家不要去学算法,这是完全错误的,我是让大家带着业务问题去使用算法。问你业务问题,一样会问到算法题上来。小结看过这上面的分析,我相信你明白我为什么反对纯算法面试题了。原因就是纯算法的面试题根本不能反应一个程序的综合素质!那么,在面试中,我们应该要考量程序员的那些综合素质呢?我以为有下面这些东西:会不会做需求分析?怎么理解问题的?解决问题的思路是什么?想法如何?会不会对基础的算法和数据结构灵活运用?另外,我们知道,对于软件开发来说,在工程上,难是的下面是这些挑战:软件的维护成本远远大于软件的开发成本。软件的质量变得越来越重要,所以,测试工作也变得越来越重要。软件的需求总是在变的,软件的需求总是一点一点往上加的。程序中大量的代码都是在处理一些错误的或是不正常的流程。所以,对于编程能力上,我们应该主要考量程序员的如下能力:设计是否满足对需求的理解,并可以应对可能出现的需求变化。

阅读全文

与数据机构和算法面试题相关的资料

热点内容
阿里用的什么数据库服务器 浏览:337
玩剑网用哪个攻略app 浏览:76
javamysql数据库操作 浏览:225
眉山参加少儿编程培训 浏览:986
androidaes加密java 浏览:816
蜜字的app叫什么 浏览:544
程序员配乐 浏览:453
做一个解压屋 浏览:619
品牌衣服用什么app 浏览:151
python3链接数据库 浏览:55
教课书英语是什么app 浏览:884
环液式压缩机 浏览:479
android控件事件 浏览:967
云服务器的镜像选择什么 浏览:755
python如何设置cplex 浏览:10
linux的mv命令详解 浏览:359
怎么把安装好的python放在桌面上 浏览:121
mysql退出当前命令 浏览:743
现在还有什么手机好用的app 浏览:326
java字符处理函数 浏览:278