C语言面试题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言面试题:

1、问:在嵌入式开发中,为什么能通过C语言直接操作硬件?

答:因为C有指针,它是C语言的灵魂,它可以直接访问内存。

2、问:链表的作用?(这是上一个问题的延申,学员一般会举一堆例子来说明它的作

用,但这都不是重点,没有抓住主要矛盾)答:链表用于内存管理,链表节点中的指针域可以将不连续的内存彼此关联起来,实现内存的动态管理。

3、问:什么变量不能用指针指向?

答:寄存器变量(register 修饰),因为这个变量会优先选择存放到CPU寄存器中,而指针只能指向内存的任务区域,但不能指向寄存器。

4、问:有符号字符型和无符号字符型变量的最大值和最小值分别是多少(十六进制多

少),为什么?

答:有符号(-128 —127,-0X80—0X7F,无符号(0-255,0X00 —0XFF。

5、问:林锐面试题中四个有关内存操作的问题:第一题、运行会出现段错误(崩

溃):

答:因为参数是值传递,所以主调函数中的str指针已然指向空,不能向

里面拷数据,除非加上取地址,采用二维指针接收才能传递动态内存;第二题:乱码:答:实际上可能是乱码,也可能显示出一部分内容,显示乱码是因为刚才那段栈内存空间全部被覆盖,如果未完全覆盖则显示一部分内容;第三题:能够输出hello 答:但由于没有在同一层释放内存,容易导致内存泄露;第四题:对已经释放的内存进行操作答:会破坏其它有用数据,后果难以预料,通常提示出现段错误。

6问:哪些地方可以用到con st? const变量和函数输入参数用const修饰有哪些作用?答:1、定义常量

(1)const修饰变量,constTYPE ValueName=value value 是不可变的。

(2,将const 改为外部链接,作用于扩大至全局,编译时分配内存,并且可以不进行初始化,仅仅作为声明,编译器认为在在程序其他地方进行了定义;

Extend constint ValueName= value;

2、指针使用CONST

(1 ,指针本身是常量不可变

(char*,constpContent;

Const (char*,pContent;(2,指针指向的内容是常量不可变

Constchar*pContent;

Char const*pContent;

(3,两者都不可变

Constchar*constpConten

3、函数中使用CONST

(1)const 修饰函数的参数

a 传递过来的参数在函数内不可以改变;void function(const

int var);b 参数指针所指内容为常量不可变;void

function(const char *Var);

c 参数本身为常量不可变;

void function(char *const Var);

系统编程

1、问:什么是程序?什么是进程?本质区别?答:程序是存放在磁盘上一些指令的有序集合;进程是程序执行的实例,是个动态的过程;本质区别:程序是静态的,进程是动态的。

2、问:无名管道为什么只能在具有公共祖先的进程间通信?管道的特点?答:因为无名管道没有名字,没法通过open的方法打开,进程只能通过继承的方法获取管道文件描述符。

管道的特点:

1、半双工,数据在同一时刻只能在一个方向上流动。

2、只能在具有公共祖先的进程之间使用,通常用在父子管道之间。

3、管道对于管道两端的进程而言,就是一个文件,但他不是普通的文件,

不属于某个文件系统,并且只存在于内存中。

4、数据从管道的一端写入,从另一端读出。

5、没有名字。

6、管道的缓冲区是有限的。

7、管道所传送的数据是无格式的,这要求管道的读出方与写入方必须事先

约定好数据的格式,如多少字节算一个消息等。

8、写入管道的数据读完以后就从管道中消失。

3、问:管道与消息队列的区别?答:管道与无名管道收发数据都是先进先出

的,消息队列可以实现

按消息的类型随机读取。

4、问:select ()函数的作用?答:用于一个进程同时监听多个文件描述符,

还可以设置监听超时

时间。

5、问:有名管道相比无名管道最大的优点是什么?答:可以实现毫无干系的进

程间通信。

6、问:什么是信号量,有什么特点,简述PV 操作?答:信号量就是个计数

器,计数器的值只能是非负的。操作计数器的方法是PV 操作,PV 操作

具有原子性(不可中断),要执行就一定要执行成功,要么就不执行。

P 操作使信号量的值减一

当进行带堵塞的P操作的时候,如果信号量的值已经是0了,P 操作就

会堵塞。

V 操作使得信号量的值加一

7、问:什么是进程、什么是线程,它们之间的关系?实现多任务的优缺点?

答:进程是系统资源分配的最小单位,线程是CPU 调度和分配的最小单

位;每个进程都拥有自己独立的系统资源,而线程基本上没有自己独立的系

统资源。

关系:

1、一个进程中可以有多个线程,线程必须依赖于进程存在,

如果进程结束了,线程也就不存在了。

2、每个进程都至少有一个线程,称为主线程。

多任务优缺点:

进程:

优点:父子进程资源独享,不用考虑两进程利用公共资

源出现冲突。

缺点:资源开销比较大,子进程完全复制父进程的地址

空间,父子进程共享数据不方便。

线程:

优点:资源开销小,共享数据比较方便缺点:因为资源共

享,多个线程对公共资源进行访问的时候要进行同步和互斥

比较麻烦。

三、网络编程

1、问:tcp 、udp、ip 、http 、telnet 协议分别位于TCP/IP 协议哪一次?

答:tcp、udp位于传书层;

ip 位于网络层;

http 及telnet 位于应用层。

2、问:路由器工作在TCP/UDP勺哪一次?

答:网络层

3、问:DNS是什么协议?

答:域名解析协议。

4、问:什么是tcp协议与udp协议?它们的区别及优缺点?

答:1、用户数据报协议(UDP,UDP*议是面向无连接的不可靠服务,在传输数

据之前不需要先建立连接。远地主机的运输层收到UDP报文后, 不需要给出任何确认,传输数据快,能广播。

2、传输数据报协议(TCP, TCP则提供面向连接的可靠服务。在传输数据

前必须先建立连接,传输数据慢,不能广播。

5、问:ip 地址192.168.220.22 属于什么ip?答:属于私有ip

7、问:什么是大端什么是小端字节序?网络字节序是大端还是小端?

答:小端:低地址存放低字节,高地址存放高字节;

大端:相反;

网络字节序是:大端。

四、C+-与QT

1、问:QT区别于其他应用开发工具有什么优点及缺点?

答:有较强的移至性;

开源的开发工具;

用C++语言实现,效率相对于其他面向对象语言执行效率较高;

强大的通信机制(信号和槽,比MFC回调好);

支持openGL可得到更加完美的2D/3D效果。

2、问:怎样理解QT, QT是一种语言吗?

答:QT是一套应用程序开发框架,也叫是开发工具或一套图形库,用

C++语言来实现的。

3、问:QT中信号与槽的主要作用是什么?答:主要是在对象之间进行通信。

4、问:QT对信号间进行处理是通过什么方法实现的?

答:通过虚函数的方法,重新实现相应的事件函数。

5、问:面向对象设计与面向过程设计最大区别是什么?

答:面向对象的设计中,程序是由一个或多个对象组成的,每个对象负

责不同的任务,一起让整个运行程序运行起来,每一个对象又是由不同

的类实现,使得程序模块化更强。而面向过程的设计,就是程序从头到

尾执行的一个过程,需要自己去划分模块。

相关文档
最新文档