当前位置: 首页 > 面试经验 >

华为 一面

优质
小牛编辑
136浏览
2024-05-11

华为 一面

  1. linux怎么统计cpu占用率,它底层是怎么实现的
  2. linux怎么统计mem占用率,它底层是怎么实现的
  3. c/c++定义不同类型变量的内存分配(内存分段结构)
  4. 代码段定义10M大小的数组(全局变量)二进制文件的大小有什么变化(elf文件分段结构)
  5. OS分配堆
  6. malloc是系统调用吗,为什么不直接用brk/mmap
  7. 创建一个线程os过程中会做什么事
  8. 分配线程标识符: 操作系统为新线程分配一个唯一的线程标识符(TID),用于区分不同的线程。
  9. 分配堆栈空间: 每个线程需要有自己的调用堆栈(call stack),操作系统会为新线程分配一个堆栈空间。堆栈空间将用于存储局部变量、函数参数、返回地址等。
  10. 初始化线程上下文: 创建线程的时候,操作系统需要初始化线程的上下文,包括程序计数器(PC)、寄存器组、堆栈指针(SP)等。这些上下文信息在线程切换时的保存和恢复很重要。
  11. 更新调度器和线程列表: 创建的新线程将被添加到操作系统的调度器中,调度器负责管理所有线程的运行时间、优先级、状态等。
  12. 设置线程属性: 根据创建线程时指定的属性,操作系统会设置线程的优先级、调度策略、绑定的处理器核心等属性。
  13. 初始化同步机制: 如果需要,操作系统将初始化与新线程相关的同步机制,如互斥锁(mutexes)、条件变量(condition variables)等,以便线程间能够协调操作。
  14. 设定线程入口点: 操作系统将线程的程序计数器设置为线程函数的地址,这样线程开始执行的时候会从这个函数开始。
  15. 分配或共享资源: 线程可能需要访问诸如文件描述符、全局变量等资源;有些资源会在线程之间共享,而有些则可能需要新的分配。
  16. 用c/cpp写一个memcopy,要求速度快
  17. 多线程?需要上锁吗?
 类似资料: