主题: 后端开发面经系列 -- 华为OD -- C++面经(2)
来自:阿Q技术站
6、进程和CPU的关系?
进程是程序在计算机中的一次执行过程,它是CPU分配资源和执行指令的基本单位。CPU通过不断地切换执行不同的进程,实现了多任务同时执行的效果。当一个进程被CPU执行时,它会占用CPU的运行时间,执行其中的指令。当CPU需要执行其他任务时,会将当前进程的状态保存起来,并切换到其他进程执行,这样不断地在不同进程之间切换,就实现了多任务的效果。
7、多进程通讯方法,什么是消息队列?
管道(Pipe):管道是一种半双工的通信方式,可以在父进程和子进程之间传递数据。
命名管道(Named Pipe):类似于管道,但可以允许无亲缘关系进程之间通信。
消息队列(Message Queue):消息队列是一种进程间通信的方式,可以实现不同进程之间的数据传递。
共享内存(Shared Memory):共享内存是一种进程间通信的方式,允许多个进程访问同一块内存区域。
信号量(Semaphore):信号量是一种计数器,用于控制对共享资源的访问。
套接字(Socket):套接字是一种通信机制,可以在不同主机或同一主机的不同进程之间进行通信。
信号(Signal):信号是一种异步通信方式,用于通知进程发生了某种事件。
顺便吆喝一下,技术大厂,前后端测试捞人,来看看~
8、设计模式,什么时候用单例模式?
资源共享:当多个对象需要共享同一个资源时,可以使用单例模式来管理该资源,确保只有一个实例存在,避免资源被多次创建或重复使用。
全局访问点:某些对象在系统中需要被广泛访问,但又不希望通过传递对象的方式来访问,可以使用单例模式提供一个全局的访问点。
惰性初始化:某些资源或对象只在需要时才被初始化,可以使用单例模式延迟初始化对象,节省资源消耗。
线程池、缓存、日志对象等:在需要管理共享资源或全局状态的情况下,单例模式可以提供一种简单且有效的解决方案。
9、Linux常见命令?
10、反转head打头的单链表
思路
如果链表为空或者只有一个节点,直接返回头结点head。
初始化 pre 为 nullptr,cur 为头结点 head,node 为 cur 的下一个节点。
在循环中,不断更新 pre、cur 和 node 的值,使得 cur 的 next 指向 pre,然后将 pre、cur 和 node 分别向后移动一位。
当 cur 移动到链表末尾时,pre 就是反转后的新头结点。