社招 纵维立方科技-嵌入式-面试 总结
总体感觉-个别问题考的特别的深(回答的不太顺畅-略有担忧)。
rtos/linux操作系统,c++;
0.自我介绍+简历拷打
1.智能指针说一下?
(说了下 三种指针和不同的应用场景
独占-适用于只对该资源保持唯一的所有权。共享-适用于-多个指针对该资源都享有所有权的情况。弱weak_ptr主要是用在共享指针出现循环引用的场景)
又问了下shered_ptr的引用计数是保存在堆上还是栈上?
(我说是堆上,他反问确定吗)
问:那说一下shered_ptr的这个指针的实现原理?
(本质就是每个共享指针都会关联一个控制块(这个控制块是在堆上分配的),控制快上带有引用计数和弱引用计数.
通过引用计数来管理所指向对象的生命周期,说了一下他的逻辑:
引用计数就是记录当前有多少个对象指向了这同一个对象。
每次创建新的,这个引用计数就递增,当销毁时引用计数就会递减!
)
2.volatile的作用。
(大概:防止变量被编译器优化
实现对寄存器的实时读写
多线程或者中断情况下,都读取变量是会读取变量值,这保持了数据一致性)
3.实时操作系统是如何保证它的实时性的?
(抢占式的任务调度,优先级的设置,中断的快速相应。
查了ai:可能还得加上--一些避免死锁的机制,一下同步的机制-比如互斥量信号索、、)
4.实时操作系统在做任务切换的时候会做哪些事情?
(保存当前任务的上下文-比如寄存器和堆栈指针;
调度器--根据调度算法选出一个要执行的就绪任务。同时更新调度信息。
选出后-就加载新任务的上下文信息--涉及寄存器的恢复和堆栈指针的设置
做上下文的切换并启动新任务。。。
)
5.ucos有哪些调度方式?
(基于优先级的抢占式调度,时间片轮转调度)
6.linux上的init进程会做哪些事情?
(系统初始化工作:主要是挂载文件系统,初始化设备的驱动;
启动系统的服务:运行启动脚本和相关的管理服务
进程的管理:比如自动收养孤儿进程。。。)
7.僵尸进程是怎么产生的?
(子进程先于父进程结束运行,但是父进程没有进行正确处理子进程的终止-即没有及时收尸,就会产生僵尸进程)
8.linux的进程间通信有哪些方式?
(提起有速记:队内管s信,毫无压力
消息队列,共享内存,管道,socket,信号量)
问了下进程间的共享内存是否可以使用互斥锁?
(互斥锁一般是用在线程间的,但进程间资源竞争理论上是可以的,比如你在某个共享内存放置一个互斥锁标志位,大家访问前都去获取锁)
那么这种方式可能会引发什么问题?
(死锁,频繁竞争增加开销-导致性能下降,可能导致优先级反转或者饥饿--这些都是会导致cpu效率下降)
9.说一说tcp和udp的差别
(速记-可怜应用船-可连应拥传
可靠性,面向连接行,拥塞处理,传输效率,应用场景)
10.socket的read函数返回值的解释?
(大于0,是表示是实际读到的字节数
=0,读到文件的末尾或者流的末尾,tcp的话-通常意味对方已经关闭连接
<0,表示读取出错了,通过errno可以查看是具体哪些错误。)
11.反问:团队的规模如何-该岗位的定位-加班情况如何?
rtos/linux操作系统,c++;
0.自我介绍+简历拷打
1.智能指针说一下?
(说了下 三种指针和不同的应用场景
独占-适用于只对该资源保持唯一的所有权。共享-适用于-多个指针对该资源都享有所有权的情况。弱weak_ptr主要是用在共享指针出现循环引用的场景)
又问了下shered_ptr的引用计数是保存在堆上还是栈上?
(我说是堆上,他反问确定吗)
问:那说一下shered_ptr的这个指针的实现原理?
(本质就是每个共享指针都会关联一个控制块(这个控制块是在堆上分配的),控制快上带有引用计数和弱引用计数.
通过引用计数来管理所指向对象的生命周期,说了一下他的逻辑:
引用计数就是记录当前有多少个对象指向了这同一个对象。
每次创建新的,这个引用计数就递增,当销毁时引用计数就会递减!
)
2.volatile的作用。
(大概:防止变量被编译器优化
实现对寄存器的实时读写
多线程或者中断情况下,都读取变量是会读取变量值,这保持了数据一致性)
3.实时操作系统是如何保证它的实时性的?
(抢占式的任务调度,优先级的设置,中断的快速相应。
查了ai:可能还得加上--一些避免死锁的机制,一下同步的机制-比如互斥量信号索、、)
4.实时操作系统在做任务切换的时候会做哪些事情?
(保存当前任务的上下文-比如寄存器和堆栈指针;
调度器--根据调度算法选出一个要执行的就绪任务。同时更新调度信息。
选出后-就加载新任务的上下文信息--涉及寄存器的恢复和堆栈指针的设置
做上下文的切换并启动新任务。。。
)
5.ucos有哪些调度方式?
(基于优先级的抢占式调度,时间片轮转调度)
6.linux上的init进程会做哪些事情?
(系统初始化工作:主要是挂载文件系统,初始化设备的驱动;
启动系统的服务:运行启动脚本和相关的管理服务
进程的管理:比如自动收养孤儿进程。。。)
7.僵尸进程是怎么产生的?
(子进程先于父进程结束运行,但是父进程没有进行正确处理子进程的终止-即没有及时收尸,就会产生僵尸进程)
8.linux的进程间通信有哪些方式?
(提起有速记:队内管s信,毫无压力
消息队列,共享内存,管道,socket,信号量)
问了下进程间的共享内存是否可以使用互斥锁?
(互斥锁一般是用在线程间的,但进程间资源竞争理论上是可以的,比如你在某个共享内存放置一个互斥锁标志位,大家访问前都去获取锁)
那么这种方式可能会引发什么问题?
(死锁,频繁竞争增加开销-导致性能下降,可能导致优先级反转或者饥饿--这些都是会导致cpu效率下降)
9.说一说tcp和udp的差别
(速记-可怜应用船-可连应拥传
可靠性,面向连接行,拥塞处理,传输效率,应用场景)
10.socket的read函数返回值的解释?
(大于0,是表示是实际读到的字节数
=0,读到文件的末尾或者流的末尾,tcp的话-通常意味对方已经关闭连接
<0,表示读取出错了,通过errno可以查看是具体哪些错误。)
11.反问:团队的规模如何-该岗位的定位-加班情况如何?
全部评论
没问项目吗
相关推荐

点赞 评论 收藏
分享