【笔试2】复盘

1.strncpy用法

声明:char *strncpy (char *dest, const char *src, size_t n)
参数:dest–只想用于复制内容的目标数组;src–要复制的字符串;n–要复制的字符的个数;
返回值:返回最终复制的字符串
作用:把src所指向的字符串复制到dest,最多复制n个字符,当src的长度小于n时,dest的剩余部分用空字节填充。

2.软中断 & 硬中断

硬中断由硬件产生,是外部设备对CPU的中断,它可以直接打断CPU,处理中断的驱动需要运行在CPU上。硬中断是中断程序对内核的中断,为满足实时性要求,中断处理越快越好。
软中断,也叫同步中断,是由CPU执行中断产生指令时产生,由程序预先设定好,不是随机的;硬中断,也叫异步中断,是硬件设备按照CPU时钟信号产生的,中断具有随机性和突发性。当中断发生的时候,硬中断处理短时间就可以完成的工作,而那些处理时间比较长的工作由软中断来完成。
软中断的回调函数不能休眠, 同一个软中断的处理程序例程可以在几个CPU上同时运行
软中断的操作流程比硬中断少了一个硬件发送信号的步骤,产生软中断的进程一定是当前正在运行的进程,它们不会中断CPU,但是会中断调用代码的流程。

3.一台刚刚接入互联网的WEB服务器第一次被访问到时,不同协议发生的顺序为ARP->DNS->HTTP

当给WEB服务器接上网线的时候,它会自动发送一条ARP信息,使得接入网关能找的到它,网关上会形成MAC地址到IP地址的映射记录。当第一个用户使用域名来访问WEB服务器的时候,首先要进行一次DNS查询。
ARP解析MAC地址
DNS解析域名
HTTP请求网页

4.fork后子进程保存父进程的哪些内容

使用fork函数得到的子进程从父进程继承了整个进程的地址空间,包括:进程上下文、进程堆栈、内存信息、打开的文件描述符、信号控制设置、进程优先级、进程组号、当前工作目录、根目录、资源限制、控制终端、环境变量等。
子进程与父进程的区别:
1.父进程设置的锁,子进程不继承
2.各自进程的ID不同

3.子进程的未决告警被清除
4.子进程的未决信号集设置为空集

5.软件开发模式

1.边做边改模型
2.瀑布模型:将软件的生命周期划分未制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等,规定它们自上而下、相互衔接的固定次序
3.快速原型模型
4. 增量模型
5.迭代模型
6.螺旋模型
7.敏捷开发模型
8. 演化模型
9. 喷泉模型
10. 智能模型
11.混合模型
常见的几种模型对比:
在这里插入图片描述

6.mkdir

mkdir -p DirName(文件名)
mkdir -m/–mode=模式 设定权限<模式>
mkdir -v/–verbose 每次创新新目录都显示信息
mkdir -version 输出版本信息并推出
mkdir -help 显示帮助信息并退出

7.linux虚拟地址和物理地址

Linux系统在,进程访问的是虚拟地址空间,这些虚拟地址空间被映射到物理地址空间上,物理地址空间是硬件内存中的实际地址,虚拟地址是进程所见到的地址,在运行时操作系统为每个进程分配独立的物理地址空间。
虚拟地址和物理地址的映射关系由内核负责维持,当进程访问虚拟地址时,操作系统将其翻译成对应的物理地址,从而实现对内存的访问。这个过程成为**分页管理单元(MMU)**的地址转换。

8.就平均性能而言,目前最好的内排序方法(快速)排序法

9.linux系统/proc目录下数字目录中的数字是什么含义?

在proc目录下,以数字命名的目录表示当前一个运行的进程,目录名即为进程的ID

10.与C语言相比,汇编语言的可可移植性(更差)

11.volatile关键字:防止变量被编译器优化,优化器在用到这个变量的时候必须每次小心的重新读取这个变量的值,而不是读取寄存器的备份

12.编写一个函数,该函数在字符串中找到最长子字符串,该字符串由相同的字符组成

#include<stdio.h>
#include<string.h>

char* search(char* s)
{
	char temp1 ;
	char temp2 ;
	int count = 0;
	int max = 0;
	int len = strlen(s);
	int i = 0;
	while(i<len)
	{
		count = 0;
		temp1 = s[i];
		while (s[i] == temp1)
		{
			i++;
			count++;
		}
		if (count > max)
		{
			max = count;
			temp2 = temp1;
		}
	}
	char* des = (char*)malloc(sizeof(char) * (max+1));
	for (int j = 0; j < max; j++)
	{
		des[j] = temp2;
	}
	des[max] = '\0';
	return des;
}
int main()
{
	char a[] = "aaaaaaaaabbbbbbccc";
	char* s1 = search(a);
	printf("%s", s1);
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值