部分常见面试题

1、标准IO与文件IO 的区别?

操作文件入口不同:

标准IO :FILE*(通过文件流操作)

文件IO:fd(通过文件描述符操作)  

(open函数是Linux内核提供的。文件描述符是内核用来标识和打开文件的符号)。

缓存区有无:

标准IO:有缓存区

文件IO:没有缓存区

来源不同:

标准IO:来自于IO库

文件IO:来自于内核

2、进程与程序的区别?

进程与程序的区别:

1、  程序是指令的有序集合,是一个静态概念,其本事没有任何运行的含义。而进程是程序在处理机上的一次执行过程,是一动态的概念。

2、  程序可以作为一种软件资料长期保存,而进程则是有一定生命周期的,它能够动态的产生和消亡。

3、  进程是一个能独立运行的单位,能与其他进程并行活动。

4、  进程是竞争计算机系统有限资源的基本单位,也是进行处理机调度的基本单位。程序无此该概念。

5、  进程与程序之间无一一对应关系。不同的进程可以包含同一程序,同一程序在执行中也可以产生多个进程。

6、  程序是记录在介质上指令的有序集合,而进程则由程序、数据和进程控制块3部分组成。

或者写成:

程序是一个由指令和数据构成的一个二进制可执行文件,存储在磁盘中,没有执行的概念,是静态的。

进程是操作系统资源分配的最小单位(资源包括cpu资源和虚拟内存资源),存在于虚拟地址空间中,有执行的概念,是动态的。

3、引用和指针的区别?

1、指针是一个实体,需要分配内存空间。引用只是变量的别名,不需要分配内存空间。

2、引用在定义的时候必须进行初始化,并且不能够改变。指针在定义的时候不一定要

初始化,并且指向的空间可变。(注:引用的值不能为NULL) int &b=NULL;//错

3、有多级指针,int **p=&b;有多级引用,只能有一级一级的引用。int &b=a;int &c=b;

4、指针和引用的自增运算结果不一样(指针是指向下一个空间,引用时引用的变量值加1)

           int &b=a;

           b++;//a+1

5、sizeof 引用得到的是所指向的变量(对象)的大小,而sizeof 指针得到的是指针本身的大小。

6、引用访问一个变量是直接访问,而指针访问一个变量是间接访问。

4、Tcp/Udp流程

Tcp

Server:socket(创建流式套接字)->bind->listen->accept->IO->close

Client:  socket->connect->IO->close

Udp

接收端(server):  socket(创建数据报套接字)->bind->recvfrom->close

[bind前准备一个bind的地址结构]。

发送端(client):   socket->准备接收端的地址结构->sendto->close

  1. 进程间的六种通信机制

有名管道,无名管道,信号量,共享内存,消息队列,socket套接字。

放在共享内存中的数据最后还有,而消息队列最后的数据就没了。

  1. new/delete运算符与malloc/free区别:

1、new/delete是运算符,不需要加头文件,而malloc/free是函数,需要加头文件-》<stdlib.h>

2、malloc的返回值是void *型指针,需要强转才能使用;new的返回值是特定的数据类型指针,不需要强转。

3、new申请内存时已经确定了内存中存放的数据类型,new会做类型检查。即指针数据类型要和new后面的数据类型保持一致。

4、malloc申请内存大小需要手动计算,new只需要确定元素的个数和数据类型。

New int[5];这样就new出了连续的20个内存单元。

5、free的入参是内存的首地址,delete内存时后面跟指针或[ ]指针。Delete p或者delete[ ]p;

6、new一个对象时会自动调用该对象的构造函数,delete一个对象时会自动调用该类的析构函数。而malloc/free没有这个功能。

7、结构体和类的区别?

  1. 结构体中一般只有成员变量,没有成员函数,并且成员默认是共有的。
  2. 类中一般既有成员变量,有有成员函数,在成员变量和成员函数前都有访问限      定符,若类中前面没有访问限定符,默认是私有的。

8、无名信号量实现两个线程的同步

一个进程有多个线程,线程之间会存在互斥等关系。

Sem_t  sema;----》sem_wait(&sema)----》p操作方法>0 的话sema-1,同时semwait返回,

等于0,semwait继续阻塞这个线程的返回

Sem_t  semb;----》sem_post(&semb)----->v操作方法只对sempost所监控的信号量+1.

9、守护进程的创建步骤

 

守护进程:服务程序,运行不依赖任何shell终端,摆脱终端控制,在后台执行,从开机到关机。

10、函数重载、函数重写、函数隐藏三者区别

函数重载:是指函数名相同,参数不同(个数和类型),与返回值无关。

A相同的作用域。

B函数名相同

C参数不同

D没有virtual关键字

E返回值可以相同也可以不同

函数重写:成员函数覆盖(指派生类重新定义继承自基类的虚函数)

A不同的作用域(分别位于基类和派生类中)

B函数名相同

C参数相同

D函数体不同

E基类的函数前必须要有virtual关键字,子类的该函数可有可无。

F返回值一定是相同的。

G重写函数的访问限定符可以和基类的访问限定符不同。

函数隐藏:也称为同名覆盖,指的是成员函数隐藏

A不同的作用域(分别位于基类和派生类中)

B函数名相同,函数名前没有virtual关键字

C返回值可以相同,也可以不同。

D参数可以相同,也可以不同

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值