牛客八股文

C++的静态变量,变量,函数,虚函数对内存的影响,谁占用空间
静态变量:创建时分配内存,程序运行结束被销毁
变量:创建实例时分配内存,实例销毁时释放内存
函数:调用时分配内存,调用结束后自动释放
虚函数:占用额外的内存空间存储虚函数指针,实现多态性
多态性是啥

CAS
CAS是乐观锁机制,用于多线程编程中保证数据的原子性操作,在并发场景下,会导致ABA问题,就是值在操作过程从A改到B再改到A,导致CAS操作无法正确判断数值是不是被修改
可以引入版本号或者时间戳确保数据的一致性,再每次数据变化的时候,加入版本号或者时间戳信息,CAS操作时除了比较数值意外也比较版本号,可以避免ABA问题发生

常用的linux命令
rm -rf/*
cd
df -h
htop
ls
ps 查看进程情况
cat 查看文件内容
pwd 当前工作目录
kill

动态库和静态库的区别,以及怎么创建和使用
静态库:命名 libXXX.a lib是前缀,.a是后缀
制作:
1、使用编译器将程序编译为可执行文件
gcc -c xx.c -o xx.o
2、使用归档工具 ar rcs libxx.a xx.o xx.o… 编译静态库
使用:
编译程序时,将静态库链接到最终的可执行文件中
连接器从静态库中提取文件并包含到可执行文件中
特点:
1、静态库在被编译的时候会包含到最终可执行文件中
2、最终的可执行文件比较大,因为包含了静态库
3、运行时不依赖库文件

动态库:命名 libxxx.so
创建:
1、使用编译器将程序编译为可执行文件
gcc -c xx.c -o xx.o
2、链接为动态库
gcc -shared xx.o -o libxxx.so
使用:
1、在程序运行时加载动态库
特点:
1、运行时加载,不是编译加载
2、多个程序可以同时加载同一个动态库,节省空间
3、可执行文件小,因为不包含库文件
4、更新动态库可以影响所有依赖动态库的程序,静态库的更新需要重新编译程序

二者的优缺点:
静态库优点:发布程序时不需要提供静态库,移植方便,运行更快
缺点:可执行文件较大,消耗内存,并且静态库修改就要重新编译程序
动态库优点:节省内存减少页面交换,动态库改变不影响程序运行
缺点:发布程序时需要提供动态库

GDB常见的调试之林:
启动:gdb 程序
断电:break filename:行数
加个条件:break filename:行数 if conditions 如果为真就在行数打个断点
运行:run 参数
退出:q
continue:执行到下一个断点
next:执行下一行代码
step:单步执行
delete 断点号
info breakpoints
backtrace:查看调用栈

进程调度算法:
先来先服务:根据请求的顺序进行调度,但是短作业容易被长作业堵塞
短作业优先:先执行估计运行时间最短的进程
最高优先级调度:为每个进行分配一个优先级,根据优先级的排列顺序执行程序
时间片轮转:为每个进程分配时间片,这个进程的时间片执行万后切换到下一个进行
多级队列:时间片+优先级,动态调整进程的优先级和时间片的大小

说一说什么是大端、小端,如何判断大端和小端
指的是字节序
小端:高字节存高地址,低字节存低地址
大端相反

什么是孤儿进程,什么是僵尸进程,如何解决僵尸进程
孤儿进程:父进程释放,子进程还在
僵尸进程:子进程释放,父进程不知道,子进程害占用系统资源
解决办法:用wait 或者waitpid回收子进程的退出状态

进程间的通信方式
管道:半双工的通信方式,数据单向流动,只在父子进程之间使用
消息队列:允许进程发送和接收消息,消息队列是消息的链表,可以设置优先级
共享内存:由一个进程创建,其他进程可以访问这个共享内存,这是通信最快的
信号量:用于控制多个进程或者线程对共享资源访问的机制

信号量
P操作:检查信号量,若资源可用,减少计数,使用资源
V操作:归还资源,增加计算,唤醒等待的进程

进程有多少种状态
创建:创建进程,系统分配资源并初始化PCB
就绪:进程获取除处理机以外的一切资源
运行:获取处理机进行,获取时间片,根据时间片执行进程,时间片用完以后再次进入就绪状态
阻塞:因为某一事件,程序无法执行,进入阻塞状态;事件完成后,进入就绪状态,等待系统调度
终止:进程执行完后,进入终止状态,释放资源,等待系统回收PCB空间

线程的通信方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值