




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、笔试:数据结构,数据库,软件工程,C比较少C语言(读程序,写程序,字节对齐) 指针,宏,switch,strcpy函数指针(详见文档)char * const cp; ( * 读成 pointer to ) cp is a const pointer to char const char * p; p is a pointer to const char; 变量的存储类别1. 局部变量自动变量(auto,离开函数,值就消失,每次重新赋值)静态局部变量(函数内static定义的变量,离开函数,值仍存在)寄存器变量(register,离开函数,值就消失,只有局部自动变量和形式参数可以作为寄存器变量
2、)2. 全局变量静态外部变量(只限本文件引用)外部变量(非静态的外部变量,允许其他文件引用)一冒泡法冒泡法的适合与局部有序的序列,越是有序,时间复杂度越低,所以时间复杂度介于O(1)O(n2),而楼主的那种选择排序时间复杂度是不变的,总是O(n2). 这两种方法都是可以改进的,前面几楼提到的快速排序就是冒泡的改进。冒泡(须要进行几次比较,即比较次数为i*j。)void sort(int arr,int n) int i,j,temp;
3、60; for(i=0; i <n-1; i+) / i表示总共要进行几轮比较, for(j=0; j <n-i-1; j+) / j表示在第几轮排序中
4、160; if(arrj> arrj+1)
5、160; temp=arrj; arrj=arrj+1;
6、; arrj+1=temp; 选择 void sort(int arr,int n)
7、; int i,j,temp; for(i=0; i <n-1; i+) for(j=i+1; j <n; j+)
8、; if (arri> arrj)
9、 temp=arri; &
10、#160; arri=arrj; arrj=temp;
11、 二0和1不是素数三字节对齐什么是对齐,以及为什么要对齐:1. 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。2. 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。其他平台可能没有这种情况, 但是最常见的是如果不按照适合其平台的要求对数据存放进行对齐,会在存取效率上带来损失。比如有些平台
12、每次读都是从偶地址开始,如果一个int型(假设为 32位)如果存放在偶地址开始的地方,那么一个读周期就可以读出,而如果存放在奇地址开始的地方,就可能会需要2个读周期,并对两次读出的结果的高低 字节进行拼凑才能得到该int数据。显然在读取效率上下降很多。这也是空间和时间的博弈。二、对齐的实现通常,我们写程序的时候,不需要考虑对齐问题。编译器会替我们选择适合目标平台的对齐策略。当然,我们也可以通知给编译器传递预编译指令而改变对指定数据的对齐方法。但是,正因为我们一般不需要关心这个问题,所以因为编辑器对数据存放做了对齐,而我们不了解的话,常常会对一些问题感到迷惑。最常见的就是struct数据结构的s
13、izeof结果,出乎意料。为此,我们需要对对齐算法所了解。这里面有四个概念值:1)数据类型自身的对齐值:就是上面交代的基本数据类型的自身对齐值。2)指定对齐值:#pragma pack (value)时的指定对齐值value。3)结构体或者类的自身对齐值:其成员中自身对齐值最大的那个值。4)数据成员、结构体和类的有效对齐值:自身对齐值和指定对齐值中较小的那个值。有了这些值,我们就可以很方便的来讨论具体数据结构的成员和其自身的对齐方式。有效对齐值N是最终用来决定数据存放地址方式的值,最重要。有效对齐N,就 是表示“对齐在N上”,也就是说该数据的"存放起始地址%N=0".而数据
14、结构中的数据变量都是按定义的先后顺序来排放的。第一个数据变量的起始地址就是 数据结构的起始地址。结构体的成员变量要对齐排放,结构体本身也要根据自身的有效对齐值圆整四Swtichswitch(c)中的c的数据类型有哪些?Char, int, bool,long;不能是float,long double,double这类型的你是否在所有的switch中都加了default语句?是否在所有的case中都加了break语句(一般情况的做法)?如果你不加break,将会发生什么?不加break,则顺序执行下面的所有case,因为case常量表达式只是起到语句标号作用,并不在该处进行条件判断。五字符串相关
15、问题,Strcpy函数char a="hello"sizeof(a)=6strlen(a)=5char *strcpy1(char *strDest , const char *strSrc) assert(strDest!=NULL) && (strSrc!=NULL); /断言判断指针不能为空 char *temp = strDest; while(*strDest+ = *strSrc+)!='0');/取每一个字逐一符赋值改变指针指,变量本身值也改变 /(先取值再赋值,循环,判断) return temp; ² 【建议 6-
16、2-1】有时候函数原本不需要返回值,但为了增加灵活性如支持链式表达,可以附加返回值。 例如字符串拷贝函数 strcpy 的原型: char *strcpy(char *strDest,const char *strSrc); strcpy 函数将 strSrc 拷贝至输出参数 strDest 中,同时函数的返回值又是 strDest。这样做并非多此一举,可以获得如下灵活性: char str20; int length = strlen( strcpy(str, “Hello World”) ); 计算机网络 OSI模型,TCP/IP协议(详见文档),移动联通电信的3G制式一OSI模型 OSI
17、模型的各个层次为:n 应用层 这是OSI模型中的最高层次,它负责管理网络应用程序之间的交流。这一层并不是应用程序本身,尽管有一些应用程序可能会执行应用层的功能。应用层协议的例子包括文件传输协议(FTP)、超文本传输协议(HTTP)、简单邮件传送协议(SMTP)和Telnet。n 表示层 这层负责数据演示、加密与压缩。n 会话层 会话层负责建立并管理终端系统之间的对话。会话层协议在很多协议中都不使用。会话层协议的例子包括NetBIOS与远程过程调用(RPC)。n 传输层 这层负责程序或者过程之间的交流。端口或者插口的数目可以用来识别这些特殊的过程。传输层协议的例子包括传输控制协议(TCP)、用户
18、数据报协议(UDP)和顺序分组交换协议(SPX)。n 网络层 这层负责从来源主机访问,并向目的主机传送的数据包。网络层从传输层得到数据,把它装在一个数据包或者数据报中。逻辑网址通常被分配给这层的主机。网络层协议的例子包括IP与IPX。n 数据链接层 这层负责在相同的物理区段中的网卡之间传输数据。数据链接层进行的对话通常都是基于硬件的地址进行的。数据链接层把来自网络层的数据包装到一个帧中。数据链接层协议的例子包括以太网、令牌环与点对点协议(PPP)。在这层运行的设备包括连接桥与交换机。n 物理层 这层定义了连接器和接线方式,还有关于电压和字节如何通过有线(或无线)介质传播的说明。这层的设备包括中
19、继器、集中器和Hub。在物理层运行的设备不需要了解传输路径。二移动联通电信的3G制式GSM 指的是第二代移动通信技术。CDMA 也是第二代移动通信技术。最初由联通运营,后来卖给电信。联通3G 就是WCDMA网络。是联通从欧洲引技术的第三代移动通信技术,是目前全球应用最广,技术最成熟的3G网络。移动3G 就是TD-SCDMA网络,是中国自主研发的3G网络。电信3G 就是CDMA2000网络。也是引进技术,是从CDMA的基础上升级的3G网络。3G主流的网络一共有4种:WCDMA。TD-SCD
20、MA、CDMA2000。WIMAXWCDMA(联通)CDMA2000(电信)TD_SCDMA(移动)定义Wideband Code Division Multiple Access(宽带码分多址)的英文简称,这是基于GSM网发展出来的3G技术规范,是欧洲提出的宽带CDMA技术。该标准提出了GSM(2G)GPRSEDGEWCDMA(3G)的演进策略。目前中国联通正在采用这一方案向3G过渡,并已将原有的GSM网络升级为GPRS网络。CDMA2000是由窄带CDMA(CDMA IS95)技术发展而来的宽带CDMA技术,由美国主推,该标准提出了从CDMA IS95(2G)CDMA20001xCDMA2
21、0003x(3G)的演进策略。CDMA20001x被称为2.5代移动通信技术。CDMA20003x与CDMA20001x的主要区别在于应用了多路载波技术,通过采用三载波使带宽提高。目前中国电信正在采用这一方案向3G过渡,并已建成了CDMA IS95网络。全称为Time Division-Synchronous CDMA(时分同步CDMA),是由我国大唐电信公司提出的3G标准,该标准提出不经过2.5代的中间环节,直接向3G过渡,非常适用于GSM系统向3G升级。目前中国移动正在采用这一方案向3G过渡相同点WCDMA、CDMA2000与TDSCDMA都属于宽带CDMA技术。WC
22、DMA、CDMA2000与TD-SCDMA都能在静止状态下提供2Mbit/s的数据传输速率双工模式采用FDD(频分数字双工)模式,采用TDD(时分数字双工)模式。WCDMA与CDMA2000能够支持移动终端在时速500公里左右时的正常通信,而TD-SCDMA只能支持移动终端在时速120公里左右时的正常通信。TD-SCDMA在高速公路及铁路等高速移动的环境中处于劣势。码片速率与载波带宽WCDMA(FDD-DS)采用直接序列扩频方式,其码片速率为3.84Mchip/s。,WCDMA在这方面最具优势。载波带宽方面,WCDMA采用了直接序列扩谱技术,具有5MHz的载波带宽。
23、 WCDMA与CDMA2000要传送2Mbit/s的数据业务,均需要两个对称的带宽,分别作为上、下行频段,因而TD-SCDMA对频率资源的利用率是最高的。CDMA20001x与CDMA20003x的区别在于载波数量不同,CDMA20001x为单载波,码片速率为1.2288Mchip/s,CDMA20003x为三载波,其码片速率为1.2288×33.6864Mchip/s。CDMA20001x采用了1.25MHz的载波带宽,CDMA20003x利用三个1.25MHz载波的合并形成3.75MHz的载波带宽。TDSCDMA系统仅采用1.28M
24、chip/s的码片速率,采用TDD双工模式,因此只需占用单一的1.6M带宽,就可传送2Mbit/s的数据业务。而TD-SCDMA的码片速率为1.28Mchip/s。码片速率高能有效地利用频率选择性分集以及空间的接收和发射分集,可以有效地解决多径问题和衰落问题越区切换技术WCDMA与CDMA2000都采用了越区“软切换”技术。由于软切换在瞬间同时连接两个基站,对信道资源占用较大。而WCDMA无需基站间的同步,通过两个基站间的定时差别报告来完成软切换。TD-SCDMA则是采用了越区“接力切换”技术,WCDMA的网络在许多环境下更易于部署,即使在地铁等GPS信号无法到达的地方也能安装基站,实现真正的
25、无缝覆盖。CDMA2000与TD-SCDMA都需要基站间的严格同步,因而必须借助GPS(Global Positioning System,全球定位系统)等设备来确定手机的位置并计算出到达两个基站的距离。由于GPS依赖于卫星,CDMA2000与TD-SCDMA的网络布署将会受到一些限制。与第二代系统的兼容性由GSM网络过渡而来,虽然可以保留GSM核心网络,但必须重新建立WCDMA的接入网,并且不可能重用GSM基站。WCDMA在升级的过程中耗资最大。CDMA20003x从CDMA IS95、CDMA20001x过渡而来,可以保留原有的CDMA IS95
26、设备。TD-SCDMA系统的的建设只需在已有的GSM网络上增加TD-SCDMA设备即可。Linux部分一个初始化变量和未初始化变量编译后在LINIUX系统中分配在什么段 首先要看你的变量是否为全局变量,如果是全局变量,程序只要跑起来,其就会占用内存空间。如果只是局部变量,这个变量只有在其作用域被执行到的时候,才会在栈里面分配空间。针对楼主所说为局部变量时:编译的时候是不会分配内存的,只有到运行用的时候才会分配未初始化全局会在主函数开始前进行清零初始工作。也是发生在运行时!数据结构 链表,堆,栈,(堆和栈详细区别看文档记录)一个由C/C+编译的程序占用的内存分为以下几个部分
27、0; 1、栈区(stack) 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static),全局变量和静态变量的存储是放在一块的,初始化的 全局变量和静态
28、变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后由系统释放。 4、文字常量区 常量字符串就是放在这里的。 程序结束后由系统释放 5、程序代码区存放函数体的二进制代码。 数组和链表的区别,及各自优缺点 解答一:A 从逻辑结构来看A-1. 数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费
29、。A-2. 链表动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项。(数组中插入、删除数据项时,需要移动其它数据项)B 从内存存储来看B-1. (静态)数组从栈中分配空间, 对于程序员方便快速,但是自由度小B-2. 链表从堆中分配空间, 自由度大但是申请管理比较麻烦解答二:链表和数组一样是一种数据结构。数组是将元素在内存中连续存放,由于每个元素占用内存相同,所以可以通过下标迅速访问数组中任何元素。但是如果要在数组中增加一个元素,需要移动大量元素,在内存中空出一个元素的空间,然后将要增加的元素放在其中。同样的道理,如果想删除一个元素,同样需要移动大量元素去填掉被移动的
30、元素。 链表恰好相反,链表中的元素在内存中不是顺序存储的,而是通过存在元素中的指针联系到一起。如:上一个元素有个指针指到下一个元素,以此类推,直到最后一个元素。如果要访问链表中一个元素,需要从第一个元素开始,一直找到需要的元素位置。但是增加和删除一个元素对于链表数据结构就非常简单了, 只要修改元素中的指针就可以了。从上面的比较可以看出,如果需要快速访问数据,很少或不插入和删除元素,就应该用数组;相反, 如果需要经常插入和删除元素就需要用链表数据结构了。算法的时间复杂度算法复杂度分为时间复杂度和空间复杂度。其作用: 时间复杂度是度量算法执行的时间长短;而
31、空间复杂度是度量算法所需存储空间的大小。常用的算法的时间复杂度和空间复杂度排序法 最差时间分析平均时间复杂度 稳定度 空间复杂度 冒泡排序O(n2)O(n2) 稳定 O(1) 快速排序O(n2)O(n*log2n) 不稳定 O(log2n)O(n) 选择排序O(n2)O(n2) 稳定 O(1) 二叉树排序O(n2)O(n*log2n) 不稳定 O(n) 插入排序 O(n2)O(n2) 稳定 O(1) 堆排序O(n*log2n) O(n*log2n) 不稳定 O(1) 希尔排序OO 不稳定 O(1)平均算法复杂度计算比较复杂,可按如下三个步骤进行:1. 将所有的输入按其执行时间分类2. 确定每类
32、输入发生的概率3. 确定每类输入的执行时间4.按概率公式,求平均时间复杂度1、时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。 (2)时间复杂度 在刚才提到的时间频度中,n称为问题的规模,当n不断变化时,时间频度T(n)也会不断变化。但有时我们想知道它变化时呈现什么规律。为此,我们
33、引入时间复杂度概念。 一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=(f(n),称(f(n) 为算法的渐进时间复杂度,简称时间复杂度。 在各种不同算法中,若算法中语句执行次数为一个常数,则时间复杂度为O(1),另外,在时间频度不相同时,时间复杂度有可能相同,如T(n)=n2+3n+4与T(n)=4n2+2n+1它们的频度不同,但时间复杂度相同,都为O(n2)。 按数量级递增排列,常见的时间复杂度有:常数阶O(1),对
34、数阶O(log2n),线性阶O(n), 线性对数阶O(nlog2n),平方阶O(n2),立方阶O(n3),., k次方阶O(nk),指数阶O(2n)。随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率越低。 2、空间复杂度 与时间复杂度类似,空间复杂度是指算法在计算机内执行时所需存储空间的度量。记作: S(n)=O(f(n) 我们一般所讨论的是除正常占用内存开销外的辅助存储单元规模。讨论方法与时间复杂度类似,不再赘述。 (3)渐进时间复杂度评价算法时间性能 主要用算法时间复杂度的数量级(即算法的渐近时间复杂度)评价一个算法的时间性能。 2、类似于时间复杂度的讨论,一个算法的空间复
35、杂度(Space Complexity)S(n)定义为该算法所耗费的存储空间,它也是问题规模n的函数。渐近空间复杂度也常常简称为空间复杂度。 空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大小的量度。一个算法在计算机存储器上所占用的存储空间,包括存储算法本身所占用的存储空间,算法的输入输出数据所占用的存储空间和算法在运行过程中临时占用的存储空间这三个方面。算法的输入输出数据所占用的存储空间是由要解决的问题决定的,是通过参数表由调用函数传递而来的,它不随本算法的不同而改变。存储算法本身所占用的存储空间与算法书写的长短成正比,要压缩这方面的存储空间,就必须编写出
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《GBT42933-2023多式联运运载单元标识》(2025版)深度解析
- 2025年入团考试试题及答案解析法
- 《教学新视野》课件
- 《心血管病预防策略》课件
- 《血液透析护理》课件
- 《西安科技大学》课件
- 《金融理财入门教程》课件
- 《仓储物流管理详解》课件
- 《药品GSP管理与合规培训》课件
- 美术课件制作核心要点
- 2025网络安全协议合同
- 混凝土考试试题及答案
- 初中历史明清时期的科技与文化 课件 2024-2025学年统编版七年级历史下册
- 广东2025年广东省生物制品与药物研究所招聘12人笔试历年参考题库附带答案详解
- 2024北京西城区五年级(下)期末英语试题及答案
- 《古埃及文明》课件
- 历届全国初中应用物理知识竞赛汇编
- 国企笔试招聘题目
- 医院培训课件:《西门子Syngo.via工作站的临床应用》
- 企业刑事合规培训课件
- 订做门合同协议范本
评论
0/150
提交评论