300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 9.27通则康威技术面

9.27通则康威技术面

时间:2024-07-10 06:21:37

相关推荐

9.27通则康威技术面

1.linux命令下,如何快速的删除代码中的某一行,

10G dd

sed '2d' jason.c

sed -i 's/原字符串/替换字符串/g' filename ####替换文件中的所有匹配项

示例,在代码中,把printf换成了printk

2.如何在代码中使用shell命令替换所有的字符串

sed -i 's/jason/smh/'g filename(不得不说,小厂的面试官就很喜欢面这些东西)

3.c语言中const的作用

修饰成员变量:定义成常量,将对于宏常量,可以进行类型检查,节省内存空间,提高了内存效率

修饰函数参数:

修饰成员函数:修饰成员函数使得任何类型的成员函数都无法修改成员变量。

4.结构体中为什么要内存对齐

某些硬件设备只能读取内存对齐的数据,读取非对齐的数据会抛出异常,读取非对齐的数据时,cpu会抛出异常,

内存对齐的优点:便于在不同的平台间移植,提升cpu的访问效率,因为cpu读内存是一块一块读取的。

5.哪些变量不受内存对齐的规则束缚

static静态变量

string 的字节大小是32个bit的。

结构体里面的数组或者结构体?

6.说一下僵尸进程的出现

用wait或waitpid进行回收

7.读写锁,自旋锁,互斥锁

自旋锁

当一个线程在获取锁的时候,如果该锁已经被其他线程获取的时候,那么这个线程就会一直在那里循环检测,,不断的判断那个锁是否被获取 ,直到获取那个锁为止。

保护的临界区必须非常小。

读写锁

读操作是共享的,写操作是排他的,可以允许多个线程进行读,但是只允许一个线程写

只允许进程间进行操作。

8,进程间通信方式(信号量)

信号量是一个原子操作,用户对其操作都是原子操作,只能进行p操作或者v操作,如果sv的值大于0,那么就把-1,如果sv==0就把他挂起来。

举个例子,两个进程间刚享信号量,如果一个进程执行了p操作,那么它就可以进入临界区,使sv-1;那个如果第二个进程试图进入临界区,就会被挂起,除非等到第一个线程释放v(sv),使其恢复操作。

9.共享内存为什么是最快的进程间通信方式

1.先举个管道的例子

如果是管道的话,那么服务器端必须先写入数据到缓冲区,再把缓冲区的内容复制到管道,管道再把内容复制到接收缓冲区,之后再把缓冲区的内容读到客户端

而共享内存

不需要任何的拷贝,调用系统调用mmap()把普通文件映射到内存空间,这样就可以向对普通文件操作那样,对内存操作。

注意mmap的映射大小,不能超过文件大小。有人实验过的。如果超过了,写是照写,但是文件中没有,另外的进程读不出来。

10.字符设备,块设备,网络设备的区别与联系

字符设备:只能一个字符一个字符的读,不能随机读取内存设备,读数据必须按照先后顺序去进行,字符设备是面向流的设备,键盘,串口,控制台,鼠标,led.

块设备:从设备的任意位置读取一定长度的文件,比如硬盘,磁盘,sd卡

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。