笔试2

一、使用mkdir命令创建新的目录时,在其父目录不存在时先创建父目录的选项是: -p partent

补充:-m  (mode)   设定权限  mkdir -m 777 test

二、UNIX系统中进程由三部分组成:进程控制块,正文段和数据段。这意味着一个程序的正文和数据是可以分开的,这种分开的目的是为了:

可共享正文,可共享数据,可重入

三、编程中设计并发服务器,使用多进程和多线程,请问有什么区别

一、定义:进程是分配CPU资源的最小单位
					线程是程序运行的最小单位
二、进程具有独立的堆栈地址空间,线程是共享的堆栈空间
三、多进程需要更多资源
四、因为进程占用资源大,所以处理速度比线程要低
五、多线程编写简单
六、线程共享数据,所以又可能导致数据冲突不安全。

四、使用栈实现一个队列的功能,

//仅仅为简单验证

	stack<int>S1,S2;
//S1为输入,S2输出
int main()
{
   
	int i=1;
	int num;
	//给S1赋值
	while(i<10){
   
		S1.push(i++);
	}
	//如果S2不为空,就清空
	while(!S2.empty()){
   
        S2.pop();
	}
	//将S1的值出栈赋给S2
	while(!S1.empty()){
   
        num=S1.top();
        S2.push(num);
        S1.pop();
	}
	//输出
	while(!S2.empty()){
   
        cout<<S2.top()<<" ";
        S2.pop();
	}
    cout<<endl;
    return 0;
}

//运行结果为1 2 3 4 5 6 7 8 9
输入是1 2 3 4 5 6 7 8 9满足队列的功能

五、TCP和UDP的区别

1、TCP面向连接,UDP面向不连接(即发送数据前不需要建立连接
2、TCP可靠UDP不可靠
3、TCP需要更多的系统资源
4、TCP是以字节流形式传输数据,UDP是以数据报传输
5、TCP保证数据的顺序,体现可靠性
6、TCP保证数据的完整性,体现可靠性,UDP可能出现丢包
7、TCP连接只能是点到点,UDP支持一对一,一对多,多对一,多对多的交互通信
8、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠的信道

六、对绝对地址0x100000赋值 让程序跳转到绝对地址是0x100000去执行

	1、对绝对地址赋值:
			首先想怎么样是赋值:*ptr=123;
			*那么怎么给绝对地址赋值:将绝对地址转化为指针:
			(unsigned int*) 0x100000 = 123;
	2、让程序跳转到绝对地址运行
			首先程序运行的起点是哪:函数
			那么就是将地址转换为函数指针:
			void((void (void*)() )0x100000) ( ) 

七、完全二叉树和满二叉树的区别

	形象理解就是:完全二叉树是一个缺失的三角形,但是缺少的部分一定是右下角某个连续的部分。
	满二叉树就是,一个完整的三角形

八、内核进程管理的方法

	进程的状态有:创建,运行,就绪,等待,销毁
	创建就是fork(),等待就是waitpid();

九、linux内核提供的能够访问用户指针的api有哪些?哪些是安全的

		能够访问用户指针的API有:fork(创建一个新进程)   clone(按指定条件创建子进程) execve (运行可执行文件)  exit (中止进程) _exit  (立即中止当前进程) _usr安全

十、在c++程序中调用被C编译器编译后的函数,为什么要使用extern “C”

	首先说明C++中为什么能函数重载,在于C++编译后会把函数声明为
	int func(int a,int b)------>_int_int_func;
	但是C语言中不会,加入extern"C"可以告诉C++编译器这是C语言的函数,在编译是就会对函数名重命名,从而避免函数重名,导致二义性。

十一、找错题

int main()
{
   
	char string[10];//大小为10
	char* str1='01234567890';//大小为11(\0)
	strcpy(string,str1); //数组越界
    return 0;
}

十二、改错

int main()
{
   
	char string[10],str1[10];
	int i;
	for(int i=0;i<10;i++){
   
		str1='a';//将一个字符赋给一个地址,改为str1[i]='a'或者*(str1+i)='a';
	}
	strcpy(string,str1);
    return 0;
}

十三、reinterpret——cast

C++中强制转化的关键字

十四、写一个函数,它的原形是int continumax(char *outputstr,char *intputstr),功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr所指内存。例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9,outputstr所指的值为123456789

#include <iostream>
#include<string>
#include <cstring>
#include
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值