




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
虚函数用于动态联编,是在运行是通过类型来觉得函数的调用而构造函数是在类型完成内存分配之前调用的,不可能知道是哪个类型,所以不能为虚函数static有什么用途:限制变量的作用域;设置变量的存储域。4) 用户进程间通信主要哪几种方式?(1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。(2)命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建。(3)信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数)。(4)消息(Message)队列:消息队列是消息的链接表,包括Posix消息队列system V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺(5)共享内存:使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。(6)信号量(semaphore):主要作为进程间以及同一进程不同线程之间的同步手段。(7)套接字(Socket):更为一般的进程间通信机制,可用于不同机器之间的进程间通信。起初是由Unix系统的BSD分支开发出来的,但现在一般可以移植到其它类Unix系统上:Linux和System V的变种都支持套接字。使用自旋锁需要谨慎,特别要注意以下几个问题:自旋锁实际上是忙等锁,当锁不可用时,CPU一直循环执行测试并设置直到可以取得该锁,CPU在等待自旋锁时不做任何有用的工作,仅仅是等待。因此,只有在占用锁时间极短的情况下,使用自旋锁才是合理的。当临界区很大或有共享设备的时候,需要较长时间占用锁,使用自旋锁会降低系统的性能。自旋锁可能导致系统死锁。引发这个问题最常见的情况是递归使用一个自旋锁,即如果一个已经拥有某个自旋锁的CPU想第2次获得这个锁,则该CPU死锁。此外,如果进程获得自旋锁后再阻塞,也有可能导致死锁的发生copy_from_user()、copy_to_user()和kmalloc()等函数都有可能引起阻塞,因此在自旋锁的占用期间不能调用这些函数。1、 什么是中断?中断时CPU做什么工作?中断是指在计算机执行期间,系统内发生任何非寻常的或非预期的急需处理事件,使得CPU暂时中断当前正在执行的程序而转去执行相应的事件处理程序。待处理完毕后又返回原来被中断处继续执行或调度新的进程执行的过程请简述以下两个for循环的优缺点:(16分)( 1)for (i = 0; i N; i+)if (condition)DoSomething();elseDoOthers();(2)if (condition)for (i = 0; i N; i+)DoSomething();elsefor (i = 0; i N; i+)DoOthers(); (1)优点:程序简洁;(4分 缺点:多执行了N-1 次逻辑判断,并且打断了循环“流水线”作业,使得编译器不能对循环进行优化处理,降低了效率。(4分)(2)优点:循环的效率高;(4分)缺点:程序不简洁。(4分)TCP/IP(Transmission Control Protocol/Internet Protocol的简写,中文译名为传输控制协议/互联网络协议)协议是Internet最基本的协议,简单地说,就是由底层的IP协议和TCP协议组成的。TCP/IP协议是一组包括TCP(传输控制协议)协议和IP(网际协议)协议,UDP(User Datagram Protocol)协议、ICMP(Internet Control Message Protocol)协议和其他一些协议的协议组。传统7层是:物理层、数据链路层、网路层、传输层、话路层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求:a) 应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)和http等。b) 传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。c) 互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。d) 网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。http:超文本传输协议(HTTP)是应用层协议,由于其简捷、快速的方式,适用于分布式和合作式超媒体信息系统。HTTP 允许使用自由答复的方法表明请求目的,它建立在统一资源识别器(URI)提供的参考原则下,作为一个地址(URL)或名字(URN),用以标志采用哪种方法,它用类似于网络邮件和多用途网际邮件扩充协议(MIME)的格式传递消息。HTTP 是一种请求/响应式的协议DNS是指(域名系统Domain Name System)。请用简单语言描述其工作原理。 当 DNS客户机需要查询程序中使用的名称时,它会查询 DNS 服务器来解析该名称。 客户机发送的每条查询消息都包括3条信息,以指定服务器应回答的问题。1 指定的 DNS 域名,表示为完全合格的域名 (FQDN) 。2 指定的查询类型,它可根据类型指定资源记录,或作为查询操作的专门类型。3 DNS域名的指定类别。简述DNS进行域名解析的过程。参考答案:首先,客户端发出DNS请求翻译IP地址或主机名。DNS服务器在收到客户机的请求后:(1)检查DNS服务器的缓存,若查到请求的地址或名字,即向客户机发出应答信息;(2)若没有查到,则在数据库中查找,若查到请求的地址或名字,即向客户机发出应答信息;(3)若没有查到,则将请求发给根域DNS服务器,并依序从根域查找顶级域,由顶级查找二级域,二级域查找三级,直至找到要解析的地址或名字,即向客户机所在网络的DNS服务器发出应答信息,DNS服务器收到应答后现在缓存中存储,然后,将解析结果发给客户机。(4)若没有找到,则返回错误信息。问:3,Internet上保留了哪些内部IP有可以供使用?可以使用或 172.16直172.31或192.168.0 直192.168.26:TCP为何采用三次握手来建立连接,若采用二次握手可以吗,请说明原因?(16分)三次握手是为了防止已失效的连接请求再次传送到服务器端。二次握手不可行,因为:如果由于网络不稳定,虽然客户端以前发送的连接请求以到达服务方,但服务方的同意连接的应答未能到达客户端。则客户方要重新发送连接请求,若采用二次握手,服务方收到重传的请求连接后,会以为是新的请求,就会发送同意连接报文,并新开进程提供服务,这样会造成服务方资源的无谓浪费。.TCP/IP 建立连接的过程?(3-way shake)答案: 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次握手:客户端收到服务器的SYNACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。华为面试题static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?(20分)static全局变量与普通全局变量的区别:static全局变量只初使化一次,防止在其他文件单元中被引用;前者在主函数之前就要被初始化,(2分)后者无要求。(2分)static局部变量和普通局部变量的区别:static局部变量只被初始化一次,下一次依据上一次结果值;static全句变量是所有函数共享的变量,在一个函数使用完它后它的值会保持到下一个函数来改变它(2分)。后者,本函数所声明的局部变量在本函数运行完之后会被销毁。(2分)static函数与普通函数的区别:static的可以用类来访问(就是不用初始化一个类就直接使用这个类的这个static方法);(2分)非static的只能通过对象来访问(2分)。static的定义里不能用到类内部非static变量值。(3分)static在循环中定义并赋值时,定义过程只进行一次,而不是每个循环1次。(3分) static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝. Q1:请你分别划划OSI的七层网络结构图,和TCP/IP的五层结构图?、1、OSI每层功能及特点a 物理层 为数据链路层提供物理连接,在其上串行传送比特流,即所传送数据的单位是比特。此外,该层中还具有 确定连接设备的电气特性和物理特性等功能。b 数据链路层 负责在网络节点间的线路上通过检测、流量控制和重发等手段,无差错地传送以帧为单位的数据。为 做到这一点,在每一帧中必须同时带有同步、地址、差错控制及流量控制等控制信息。c 网络层 为了将数据分组从源(源端系统)送到目的地(目标端系统),网络层的任务就是选择合适的路由和交换 节点,使源的传输层传下来的分组信息能够正确无误地按照地址找到目的地,并交付给相应的传输层,即完成网络 的寻址功能。/d 传输层 传输层是高低层之间衔接的接口层。数据传输的单位是报文,当报文较长时将它分割成若干分组,然后交 给网络层进行传输。传输层是计算机网络协议分层中的最关键一层,该层以上各层将不再管理信息传输问题。e 会话层 该层对传输的报文提供同步管理服务。在两个不同系统的互相通信的应用进程之间建立、组织和协调交互 。例如,确定是双工还是半双工工作。f 表示层 该层的主要任务是把所传送的数据的抽象语法变换为传送语法,即把不同计算机内部的不同表示形式转换 成网络通信中的标准表示形式。此外,对传送的数据加密(或解密)、正文压缩(或还原)也是表示层的任务。g 应用层 该层直接面向用户,是OSI中的最高层。它的主要任务是为用户提供应用的接口,即提供不同计算机间的 文件传送、访问与管理,电子邮件的内容处理,不同计算机通过网络交互访问的虚拟终端功能等。2、TCP/IPa 网络接口层这是TCP/IP协议的最低一层,包括有多种逻辑链路控制和媒体访问协议。网络接口层的功能是接收 IP数据报并通过特定的网络进行传输,或从网络上接收物理帧,抽取出IP数据报并转交给网际层。b 网际网层(IP层)该层包括以下协议:IP(网际协议)、ICMP(Internet Control Message Protocol,因特 网控制报文协议)、ARP(Address Resolution Protocol,地址解析协议)、RARP(Reverse Address Resolution Protocol,反向地址解析协议)。该层负责相同或不同网络中计算机之间的通信,主要处理数据报和路由。在IP层中 ,ARP协议用于将IP地址转换成物理地址,RARP协议用于将物理地址转换成IP地址,ICMP协议用于报告差错和传送控 制信息。IP协议在TCP/IP协议组中处于核心地位。c 传输层该层提供TCP(传输控制协议)和UDP(User Datagram Protocol,用户数据报协议)两个协议,它们 都建立在IP协议的基础上,其中TCP提供可靠的面向连接服务,UDP提供简单的无连接服务。传输层提供端到端,即 应用程序之间的通信,主要功能是数据格式化、数据确认和丢失重传等。d 应用层TCP/IP协议的应用层相当于OSI模型的会话层、表示层和应用层,它向用户提供一组常用的应用层协议 ,其中包括:Telnet、SMTP、DNS等。此外,在应用层中还包含有用户应用程序,它们均是建立在TCP/IP协议组之上 的专用程序。3、OSI参考模型和TCP/IP参考模型的区别:a OSI模型有7层,TCP/IP只有4层;b OSI先于协议出现,因此不会偏向于任何一组特定的协议,通用性更强,但有些功能不知该放哪一层上,因此不得 不加入一些子层;TCP/IP后于协议出现,仅是将已有协议的一个描述,因此两者配合的非常好;但他不适合其他的 协议栈,不容易描述其他非TCP/IP的网络;c OSI中网络层同时支持无连接和面向连接的通信,但在传输层上只支持面向连接的通信;TCP/IP中网络层只支持无 连接通信,传输层同时支持两种通信;d 在技术发生变化时,OSI模型比TCP/IP模型中的协议更容易被替换 Q2:请你详细的解释一下IP协议的定 义,在哪个层上面,主要有什么作用? TCP与UDP呢?IP协议(Internet Protocol,因特网协议),属于OSI7层参考模型中的网络层协议。它提供两个基本功能:寻址和分段。寻址即常说的路由功能;分段是指对数据包的大小进行重新组装,以适应不同网络对包大小的要求。速度快Q3:请问交换机和路由器分别的实现原理是什么?分别在哪个层次上面实现的?Q4:请问C+的类和C里面的struct有什么区别?a4:c+中的类具有成员保护功能,并且具有继承,多态这类oo特点,而c里的struct没有Q5:请讲一讲析构函数和虚函数的用法和作用?a5:析构函数一般在对象撤消前做收尾工作,比如回收内存等工作,虚拟函数的功能是使子类可以用同名的函数对父类函数进行重载,并且在调用时自动调用子类重载函数,如果是纯虚函数,则纯粹是为了在子类重载时有个统一的命名而已。(说得不是很确切,自己随便找本c+的书都有说明)Q6:全局变量和局部变量有什么区别?实怎么实现的?操作系统和编译器是怎么知道的?a6:全局变量的生命周期是整个程序运行的时间,而局部变量的生命周期则是局部函数或过程调用的时间段。其实现是由编译器在编译时采用不同内存分配方法。全局变量在main函数调用后,就开始分配,如果是静态变量则是在main函数前就已经初始化了。而局部变量则是在用户栈中动态分配的(还是建议看编译原理中的活动记录这一块) Q8:8086是多少位的系统?在数据总线上是怎么实现的? a8:8086系统是16位系统,其数据总线是20位,实现过程,微机原理上有,我也差不多忘了,呵呵10.用socket通讯写出客户端和服务器端的通讯,要求客户发送数据后能够回显相同的数据。答案:服务器端:socker()建立套接字,绑定(bind)并监听(listen),用accept()等待客户端连接。客户端:socker()建立套接字,连接(connect)服务器,连接上后使用send()和recv(),在套接字上写读数据,直至数据交换完毕,closesocket()关闭套接字。服务器端:accept()发现有客户端连接,建立一个新的套接字,自身重新开始等待连接。该新产生的套接字使用send()和recv()写读数据,直至数据交换完毕,closesocket()关闭套接字。15.同步和异步有和异同,在什么情况下分别使用他们?举例说明。如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。数据库方面:1.存储过程和函数的区别储过程是用户定义的一系列sql语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程,而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表。 2.事务是什么?事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为 ACID(原子性、一致性、隔离性和持久性)属性,只有这样才能成为一个事务:原子性一致性隔离性持久性解析C语言中的sizeof一、sizeof的概念 sizeof是C语言的一种单目操作符,如C语言的其他操作符+、-等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。 二、sizeof的使用方法 1、用于数据类型 sizeof使用形式:sizeof(type)数据类型必须用括号括住。如sizeof(int)。 2、用于变量sizeof使用形式:sizeof(var_name)或sizeofvar_name 变量名可以不用括号括住。如sizeof(var_name),sizeofvar_name等都是正确形式。带括号的用法更普遍,大多数程序员采用这种形式。 注意:sizeof操作符不能用于函数类型,不完全类型或位字段。不完全类型指具有未知存储大小的数据类型,如未知存储大小的数组类型、未知内容的结构或联合类型、void类型等。 如sizeof(max)若此时变量max定义为intmax(),sizeof(char_v)若此时char_v定义为charchar_vMAX且MAX未知,sizeof(void)都不是正确形式。 三、sizeof的结果 sizeof操作符的结果类型是size_t,它在头文件中typedef为unsignedint类型。该类型保证能容纳实现所建立的最大对象的字节大小。 1、若操作数具有类型char、unsignedchar或signedchar,其结果等于1。 ANSIC正式规定字符类型为1字节。 2、int、unsignedint、shortint、unsignedshort、longint、unsignedlong、float、double、longdouble类型的sizeof在ANSIC中没有具体规定,大小依赖于实现,一般可能分别为2、2、2、2、4、4、4、8、10。 五、sizeof的主要用途 1、sizeof操作符的一个主要用途是与存储分配和I/O系统那样的例程进行通信。例如: void*malloc(size_tsize), size_tfread(void*ptr,size_tsize,size_tnmemb,FILE*stream)。 2、sizeof的另一个的主要用途是计算数组中元素的个数。例如: void*memset(void*s,intc,sizeof(s))。 六、建议 由于操作数的字节数在实现时可能出现变化,建议在涉及到操作数字节大小时用sizeof来代替常量计算。本文主要包括二个部分,第一部分重点介绍在VC中,怎么样采用sizeof来求结构的大小,以及容易出现的问题,并给出解决问题的方法,第二部分总结出VC中sizeof的主要用法。 1、 sizeof应用在结构上的情况 请看下面的结构: struct MyStruct double dda1; char dda; int type ; 对结构MyStruct采用sizeof会出现什么结果呢?sizeof(MyStruct)为多少呢?也许你会这样求: sizeof(MyStruct)=sizeof(double)+sizeof(char)+sizeof(int)=13 但是当在VC中测试上面结构的大小时,你会发现sizeof(MyStruct)为16。你知道为什么在VC中会得出这样一个结果吗? 其实,这是VC对变量存储的一个特殊处理。为了提高CPU的存储速度,VC对一些变量的起始地址做了“对齐”处理。在默认情况下,VC规定各成员变量存放的起始地址相对于结构的起始地址的偏移量必须为该变量的类型所占用的字节数的倍数。下面列出常用类型的对齐方式(vc6.0,32位系统)。 类型 对齐方式(变量存放的起始地址相对于结构的起始地址的偏移量) Char偏移量必须为sizeof(char)即1的倍数 int偏移量必须为sizeof(int)即4的倍数 float偏移量必须为sizeof(float)即4的倍数 double偏移量必须为sizeof(double)即8的倍数 Short 偏移量必须为sizeof(short)即2的倍数 各成员变量在存放的时候根据在结构中出现的顺序依次申请空间,同时按照上面的对齐方式调整位置,空缺的字节VC会自动填充。同时VC为了确保结构的大小为结构的字节边界数(即该结构中占用最大空间的类型所占用的字节数)的倍数,所以在为最后一个成员变量申请空间后,还会根据需要自动填充空缺的字节。 下面用前面的例子来说明VC到底怎么样来存放结构的。 struct MyStruct double dda1; char dda; int type ; 为上面的结构分配空间的时候,VC根据成员变量出现的顺序和对齐方式,先为第一个成员dda1分配空间,其起始地址跟结构的起始地址相同(刚好偏移量0刚好为sizeof(double)的倍数),该成员变量占用sizeof(double)=8个字节;接下来为第二个成员dda分配空间,这时下一个可以分配的地址对于结构的起始地址的偏移量为8,是sizeof(char)的倍数,所以把dda存放在偏移量为8的地方满足对齐方式,该成员变量占用sizeof(char)=1个字节;接下来为第三个成员type分配空间,这时下一个可以分配的地址对于结构的起始地址的偏移量为9,不是sizeof(int)=4的倍数,为了满足对齐方式对偏移量的约束问题,VC自动填充3个字节(这三个字节没有放什么东西),这时下一个可以分配的地址对于结构的起始地址的偏移量为12,刚好是sizeof(int)=4的倍数,所以把type存放在偏移量为12的地方,该成员变量占用sizeof(int)=4个字节;这时整个结构的成员变量已经都分配了空间,总的占用的空间大小为:8+1+3+4=16,刚好为结构的字节边界数(即结构中占用最大空间的类型所占用的字节数sizeof(double)=8)的倍数,所以没有空缺的字节需要填充。所以整个结构的大小为:sizeof(MyStruct)=8+1+3+4=16,其中有3个字节是VC自动填充的,没有放任何有意义的东西。 下面再举个例子,交换一下上面的MyStruct的成员变量的位置,使它变成下面的情况: struct MyStruct char dda; double dda1; int type ; 这个结构占用的空间为多大呢?在VC6.0环境下,可以得到sizeof(MyStruc)为24。结合上面提到的分配空间的一些原则,分析下VC怎么样为上面的结构分配空间的。(简单说明) struct MyStruct char dda;/偏移量为0,满足对齐方式,dda占用1个字节; double dda1;/下一个可用的地址的偏移量为1,不是sizeof(double)=8 /的倍数,需要补足7个字节才能使偏移量变为8(满足对齐方式),因此VC自动填充7个字节,dda1存放在偏移量为的地址上,它占用8个字节。 int type;/下一个可用的地址的偏移量为16,是sizeof(int)=4的倍 /数,满足int的对齐方式,所以不需要VC自动填充,type存放在偏移量为16的地址上,它占用4个字节。 ;/所有成员变量都分配了空间,空间总的大小为1+7+8+4=20,不是结构的节边界数(即结构中占用最大空间的类型所占用的字节数sizeof(double)=8)的倍数,所以需要填充4个字节,以满足结构的大小sizeof(double)=8的倍数。 所以该结构总的大小为:sizeof(MyStruc)为1+7+8+4+4=24。其中总的有7+4=11个字节是VC自动填充的,没有放任何有意义的东西。 2、 sizeof用法总结 在VC中,sizeof有着许多的用法,而且很容易引起一些错误。下面根据sizeof后面的参数对sizeof的用法做个总结。 A 参数为数据类型或者为一般变量。例如sizeof(int),sizeof(long)等等。这种情况要注意的是不同系统系统或者不同编译器得到的结果可能是不同的。例如int类型在16位系统中占2个字节,在32位系统中占4个字节。 B 参数为数组或指针。下面举例说明. int a50; /sizeof(a)=4*50=200; 求数组所占的空间大小 int *a=new int50;/ sizeof(a)=4; a为一个指针,sizeof(a)是求指针 的大小,在32位系统中,当然是占4个字节。 C 参数为结构或类。Sizeof应用在类和结构的处理情况是相同的。但有两点需要注意,第一、结构或者类中的静态成员不对结构或者类的大小产生影响,因为静态变量的存储位置与结构或者类的实例地址无关。 第二、没有成员变量的结构或类的大小为1,因为必须保证结构或类的每一 个实例在内存中都有唯一的地址。 下面举例说明, Class Testint a;static double c;/sizeof(Test)=4. Test *s;/sizeof(s)=4,s为一个指针。 Class test1 ;/sizeof(test1)=1; D 参数为其他。下面举例说明。 int func(char s5); coutsizeof(s);/这里将输出4,本来s为一个数组,但由于做为函数的参数在传递的时候系统处理为一个指针,所以sizeof(s)实际上为求指针的大小。 return 1; sizeof(func(“1234”)=4/因为func的返回类型为int,所以相当于 /求sizeof(int). 对齐方式是编译器设置的,VC下默认是8字节对齐的。-你的这句话欠妥,至少你可以在VC6下做实验,绝大多数情况下,都是4字节对齐的。确实是8字节对齐,大多数的32位编译器也都如此.8字节对齐是指最大8字节对齐,就是如果一个变量为16字节,也只在8字节边界对齐.具体的对齐边界是 min( pack , maxsizeof( data ) ).如果一个结构中最大的成员只有4字节就会以4字节对齐,最大只有2字节就会在偶地址对齐.原题大意是这样的:有N个大小不等的自然数(1-N),请将它们由小到大排序。要求程序算法:时间复杂度为O(n),空间复杂度为O(1)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电子支付与网络安全问题:高中信息技术课程教案
- 时装品牌干货知识培训课件
- 自由飞翔的小鸟450字7篇
- 纪检宣传课件
- 山东省济宁市(五四学制)2024-2025学年六年级下学期期末历史试题(含答案)
- 描写春天的中考作文(14篇)
- 品牌宣传与推广执行方案
- 农业种植资源共享和流通合作协议
- 品牌宣传与市场拓展方案
- 2025年嵌入式系统设计师考试嵌入式系统大数据试题
- 陶行知生活即教育教师读书分享
- 工业固废处置协议书
- 艺术基金授课协议书
- 【杭州】2025年浙江杭州市萧山区综合行政执法局第一次招聘编外人员14人笔试历年典型考题及考点剖析附带答案详解
- 股东决策协议书模板
- NB/T 11525-2024气动、电动调度单轨吊车技术条件
- 中华人民共和国民营经济促进法
- TBIE004-2023通孔回流焊接技术规范
- 2025年全国特种设备观光车N1证理论考试笔试试题(含答案)
- 1.1什么是新媒体 课件(共17张)-《新媒体营销》同步教学(北京出版社)
- 林地托管合同协议
评论
0/150
提交评论