TPlink普联二面-20240624

#tplink提前批进度交流# 全程大概35分钟,有些不会
*面试官介绍面试流程:自我介绍+项目介绍+基础知识+编程题
*自我介绍
*项目介绍+项目难点
*操作系统:进程和线程
*线程上下文、所占内存部分
*协程库了解过吗
*并发多线程、多进程实现
*多源C++程序从编写到实现运行文件流程
*预编译是什么
*include是什么处理
*链接是什么
*static函数
*虚函数是什么及实现机制
*纯虚函数
*构造函数可以是虚函数吗
*析构函数可以是虚函数吗
*手撕代码:本地IDE寻找最长不连续子串
*反问
周末没咋复习八股,感觉有些陌生了
全部评论
线程上下文切换指CPU从一个进程或线程切换到另一个进程或线程的过程,系统必须保存当前进程的状态并加载另一个进程的状态的过程,状态就是上下文,具体指CPU寄存器状态(CPU寄存器中内容)、程序计数器(指向当前执行指令的地址)、栈指针(指向当前线程栈的顶端)、线程私有存储(线程专有的数据存储区域),存储在线程栈和线程堆上,栈是私有的,不能被其他线程访问,堆是全局内存池,所有线程共享同一个堆。 协程是更轻量级的线程,具有协作式调度(线程是抢占式调度,协程是协作式调度,即协程自行决定何时让出控制权)、低开销(只需保存和恢复商量的上下文信息,不涉及内核态的切换,低开销)、栈帧管理(协程可以保留函数调用栈的状态,使得暂停和恢复执行变得更加高效),C++中Boost.Coroutine提供了协程的功能。 编写和实现多源程序:1、编写源代码:将程序的不同部分写入多个源文件和头文件,每个源文件对应一个功能模块,头文件用于声明函数和类;2、编译每个源文件,将每个源文件编译为目标文件(object file),目标文件是机器代码的中间表示,不能直接运行;3、链接目标文件:将所有目标文件链接在一起,生成一个可执行文件,使用g++链接;4、运行可执行文件:生成的可执行文件在命令行运行;5、使用Makefile简化流程 预编译:编译过程的第一个阶段,主要任务是处理所有的预处理指令(include、define、if、pragma等),预编译器将这些指令展开,生成一个纯粹的C++源文件。 include指令将头文件或其他文件内容包含到当前文件中,<>包含标准库头文件或系统头文件,编译器会在标准库路径查找文件,“”用于包含用户自定义头文件,编译器会先在当前目录查找,未找到再去标准库路径查找。 链接:将编译生成的多个目标文件和库文件结合在一起,生成一个可执行文件或共享库的过程,负责解决符号引用,将各个目标文件的符号(函数、变量等)正确地关联起来。
1 回复 分享
发布于 06-26 09:58 湖北
佬,这是操作系统岗嘛
点赞 回复 分享
发布于 06-24 19:03 山东

相关推荐

不愿透露姓名的神秘牛友
11-08 13:47
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-26 11:49
阿里云 管培生 22k*16,35w 硕士985
点赞 评论 收藏
分享
评论
6
24
分享
牛客网
牛客企业服务