C++说爱你不容易面试题-3

常考面试题

  1. 说说volatile和mutable⭐⭐⭐⭐⭐

    mutable是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中,甚至结构体变量或者类对象为const,其mutable成员也可以被修改。mutable在类中只能够修饰非静态数据成员。

    一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器每次会从内存里重新读取这个变量的值,而不是从寄存器里读取。特别是多线程编程中,变量的值在内存中可能已经被修改,而编译器优化优先从寄存器里读值,读取的并不是最新值。这就是volatile的作用了。

  2. 说说volatile的应用⭐⭐⭐⭐⭐

    Volatile主要有三个应用场景:

    (1)外围设备的特殊功能寄存器。

    (2)在中断服务函数中修改全局变量。

    (3)在多线程中修改全局变量。

  3. 在多线程中修改全局变量存在什么问题?怎么解决?⭐⭐⭐⭐⭐

    在多线程中修改全局变量,编译器会优化代码,导致优先从寄存器里读值,读取的并不是最新值,而内存里的值可能已经改变。

    可以使用volatile关键字修饰变量。

  4. 说说原子操作⭐⭐⭐⭐

    原子操作(atomic operation)指的是由多步操作组成的一个操作。如果该操作不能原子地执行,则要么执行完所有步骤,要么一步也不执行,不可能只执行所有步骤的一个子集。

    原子操作类似互斥锁,但是原子操作比锁效率更高,这是因为原子操作更加接近底层,它的实现原理是基于总线加锁缓存加锁的方式。

  5. 互斥锁有什么缺点?可以用什么替代?⭐⭐⭐⭐

    互斥锁主要缺点是效率会低一些。可以使用原子锁替代。

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

<p> - 本专刊适合于C/C++已经入门的学生或人士,有一定的编程基础。 - 本专刊适合于互联网C++软件开发、嵌入式软件求职的学生或人士。 - 本专刊囊括了C语言、C++、操作系统、计算机网络、嵌入式、算法与数据结构等一系列知识点的讲解,并且最后总结出了高频面试考点(附有答案)共近400道,知识点讲解全面。不仅如此,教程还讲解了简历制作、笔试面试准备、面试技巧等内容。 </p> <p> <br /> </p>

全部评论

相关推荐

一天代码十万三:实习东西太少了,而且体现不出你业务,3个月不可能就这点产出吧,建议实习多写点,玩具项目面试官都不感兴趣的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务