C语言面试题(共5页).doc

上传人:飞****2 文档编号:14406679 上传时间:2022-05-04 格式:DOC 页数:5 大小:34KB
返回 下载 相关 举报
C语言面试题(共5页).doc_第1页
第1页 / 共5页
C语言面试题(共5页).doc_第2页
第2页 / 共5页
点击查看更多>>
资源描述

《C语言面试题(共5页).doc》由会员分享,可在线阅读,更多相关《C语言面试题(共5页).doc(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上一、 C语言面试题:1、 问:在嵌入式开发中,为什么能通过C语言直接操作硬件?答:因为C有指针,它是C语言的灵魂,它可以直接访问内存。2、 问:链表的作用?(这是上一个问题的延申,学员一般会举一堆例子来说明它的作用,但这都不是重点,没有抓住主要矛盾)答:链表用于内存管理,链表节点中的指针域可以将不连续的内存彼此关联起来,实现内存的动态管理。3、 问:什么变量不能用指针指向?答:寄存器变量(register 修饰),因为这个变量会优先选择存放到CPU寄存器中,而指针只能指向内存的任务区域,但不能指向寄存器。4、 问:有符号字符型和无符号字符型变量的最大值和最小值分别是多

2、少(十六进制多少),为什么? 答:有符号(-128127,-0X800X7F),无符号(0-255,0X000XFF)。5、 问:林锐面试题中四个有关内存操作的问题:第一题、运行会出现段错误(崩溃):答:因为参数是值传递,所以主调函数中的str指针已然指向空,不能向里面拷数据,除非加上取地址,采用二维指针接收才能传递动态内存; 第二题:乱码:答:实际上可能是乱码,也可能显示出一部分内容,显示乱码是因为刚才那段栈内存空间全部被覆盖,如果未完全覆盖则显示一部分内容;第三题:能够输出hello答:但由于没有在同一层释放内存,容易导致内存泄露;第四题:对已经释放的内存进行操作答:会破坏其它有用数据,后

3、果难以预料,通常提示出现段错误。6、 问:哪些地方可以用到const?const变量和函数输入参数用const修饰有哪些作用?答:1、定义常量(1) const修饰变量,const TYPE ValueName=value;value是不可变的。(2) 将const 改为外部链接,作用于扩大至全局,编译时分配内存,并且可以不进行初始化,仅仅作为声明,编译器认为在在程序其他地方进行了定义;Extend const int ValueName = value; 2、指针使用CONST (1)指针本身是常量不可变 (char *)const pContent; Const (char*)pConte

4、nt;(2)指针指向的内容是常量不可变 Const char *pContent; Char const *pContent;(3)两者都不可变 Const char *const pConten 3、函数中使用CONST(1)const修饰函数的参数a 传递过来的参数在函数内不可以改变; void function(const int var); b 参数指针所指内容为常量不可变; void function(const char *Var); c 参数本身为常量不可变; void function(char *const Var);二、 系统编程1、问:什么是程序?什么是进程?本质区别?答

5、:程序是存放在磁盘上一些指令的有序集合;进程是程序执行的实例,是个动态的过程;本质区别:程序是静态的,进程是动态的。2、问:无名管道为什么只能在具有公共祖先的进程间通信?管道的特点? 答:因为无名管道没有名字,没法通过open的方法打开,进程只能通过继承的方法获取管道文件描述符。 管道的特点:1、 半双工,数据在同一时刻只能在一个方向上流动。2、 只能在具有公共祖先的进程之间使用,通常用在父子管道之间。3、 管道对于管道两端的进程而言,就是一个文件,但他不是普通的文件,不属于某个文件系统,并且只存在于内存中。4、 数据从管道的一端写入,从另一端读出。5、 没有名字。6、 管道的缓冲区是有限的。

6、7、 管道所传送的数据是无格式的,这要求管道的读出方与写入方必须事先约定好数据的格式,如多少字节算一个消息等。8、 写入管道的数据读完以后就从管道中消失。 3、问:管道与消息队列的区别? 答:管道与无名管道收发数据都是先进先出的,消息队列可以实现按消息的类型随机读取。 4、问:select()函数的作用? 答:用于一个进程同时监听多个文件描述符,还可以设置监听超时时间。 5、问:有名管道相比无名管道最大的优点是什么? 答:可以实现毫无干系的进程间通信。6、问:什么是信号量,有什么特点,简述PV操作? 答:信号量就是个计数器,计数器的值只能是非负的。 操作计数器的方法是PV操作,PV操作具有原子

7、性(不可中断),要执行就一定要执行成功,要么就不执行。 P 操作使信号量的值减一 当进行带堵塞的P操作的时候,如果信号量的值已经是0了,P操作就会堵塞。 V 操作使得信号量的值加一 7、问:什么是进程、什么是线程,它们之间的关系?实现多任务的优缺点? 答:进程是系统资源分配的最小单位,线程是CPU调度和分配的最小单位;每个进程都拥有自己独立的系统资源,而线程基本上没有自己独立的系统资源。 关系:1、 一个进程中可以有多个线程,线程必须依赖于进程存在,如果进程结束了,线程也就不存在了。2、 每个进程都至少有一个线程,称为主线程。 多任务优缺点: 进程: 优点:父子进程资源独享,不用考虑两进程利用

8、公共资源出现冲突。 缺点:资源开销比较大,子进程完全复制父进程的地址空间,父子进程共享数据不方便。 线程: 优点:资源开销小,共享数据比较方便 缺点:因为资源共享,多个线程对公共资源进行访问的时候要进行同步和互斥比较麻烦。三、 网络编程1、 问: tcp、udp、ip、http、telnet 协议分别位于 TCP/IP协议哪一次?答:tcp、udp位于传书层;ip 位于网络层;http及telnet位于应用层。2、 问:路由器工作在TCP/UDP的哪一次?答:网络层3、 问:DNS是什么协议?答:域名解析协议。4、 问:什么是tcp协议与udp协议?它们的区别及优缺点?答:1、用户数据报协议(

9、UDP),UDP协议是面向无连接的不可靠服务,在传输数据之前不需要先建立连接。远地主机的运输层收到UDP报文后,不需要给出任何确认,传输数据快,能广播。 2、传输数据报协议(TCP),TCP则提供面向连接的可靠服务。在传输数据前必须先建立连接,传输数据慢,不能广播。 5、问:ip地址 192.168.220.22 属于什么ip? 答:属于私有ip7、 问:什么是大端什么是小端字节序?网络字节序是大端还是小端?答:小端:低地址存放低字节,高地址存放高字节;大端:相反; 网络字节序是:大端。四、 C+与QT1、 问:QT区别于其他应用开发工具有什么优点及缺点?答:有较强的移至性;开源的开发工具;用

10、C+语言实现,效率相对于其他面向对象语言执行效率较高;强大的通信机制(信号和槽,比MFC回调好);支持openGL可得到更加完美的2D/3D效果。2、 问:怎样理解QT,QT是一种语言吗?答:QT是一套应用程序开发框架,也叫是开发工具或一套图形库,用C+语言来实现的。3、 问:QT 中信号与槽的主要作用是什么?答:主要是在对象之间进行通信。4、 问:QT对信号间进行处理是通过什么方法实现的?答:通过虚函数的方法,重新实现相应的事件函数。5、 问:面向对象设计与面向过程设计最大区别是什么?答:面向对象的设计中,程序是由一个或多个对象组成的,每个对象负责不同的任务,一起让整个运行程序运行起来,每一

11、个对象又是由不同的类实现,使得程序模块化更强。而面向过程的设计,就是程序从头到尾执行的一个过程,需要自己去划分模块。五、 平台与驱动部分:1、 问:Bootloader 在嵌入式系统中处于什么地位?bootloader 的主要作用是什么?答:Bootloader 是系统加电后、内核运行之前执行的一段代码,处于嵌入式的最底层。作用:一、 为启动内核准备好正确的软硬件、软件主要指堆、栈等;硬件主要指内存、系统时钟等,最终将内核由固态存储器加载到内存中;二、是为了更新、备份、回复系统提供控制平台。 2、问:简述s3c2440 NAND/NOR 两种启动方式的异同? 答: Nor启动: 系统加电后会从

12、0X开始的三总线位置读取第一条指令进行工作,norFLASH 采用总线结构可以直接连在三总线0X位置上,所以将bootloader 烧到norflash 0X位置上,系统加电后即可运行 bootloader的第一条代码,单片机一般采用此种启动方式。 优点:硬件连接简单、可靠。 缺点:nor flash由于结构的原因一般做不了太大,而且其读写速度比较慢。 Nand启动: 因为nand不支持总线线性寻址,所以cup会从nand自动拷4K代码到内部RAM,并从这段RAM开发运行程序,所以这4K代码往往是Bootloader的第一段代码,起作用为将Bootloader的主要部分搬到内存中运行,然后进行

13、后续工作。 优点:此方案充分利用了nand大容量存储、sdram高速运行的特点,解决了嵌入式系统存储与运行的容量与速度问题; 缺点:中间包含了多次的搬运过程,效率稍微有点低。2、 问:为什么Bootloader大多由两个阶段启动构成?以你熟悉的bootloader为列讲解一下两阶段分别干什么事情?答:Bootloader会直接对硬件进行操作,为了分离硬件相关性,一般Bootloader有两部分代码组成,第一部分一般由汇编来完成,完成与体系相关的代码、功能的实现。第二部分由c语言完成,完成与系统机构无关的通用功能的实现。Vivi 的stage l实际完成的主要任务:1、 禁用看门狗、关闭所有中断、初始化系统时钟2、 设置s3c2410的内存相关的13个寄存器3、 初始化调试指示灯4、 初始化uart,作为调试口5、 从NAND或nor Flash复制代码到 SDRAM6、 跳转到main,进入stage 2Vivi 的 stage 2实际完成的主要任务1、 step1:打印版本信息2、 step2:初始化GPIO3、 step3:MMU 初始化4、 step4:堆初始化5、 step5:MTD设备初始化6、 step6:存放vivi的私有参数7、 step7:专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁