ARM/Linux嵌入式面经(三十):腾讯 C++开发工程师

文章目录

    • 自我介绍:首先让我做了一个简短的自我介绍。
    • volatile关键字:解释了volatile关键字的作用和使用场景。
      • 回答 volatile 关键字的作用和使用场景
      • 追问几个有深度的技术问题
    • malloc底层:详细描述了malloc函数的底层实现机制。
      • malloc函数的底层实现机制概述
      • 深度技术追问及答案
    • 虚函数:讲解了虚函数的概念和用途。
      • 回答虚函数的概念和用途
      • 追问有深度的技术问题及答案
    • 内联函数:解释了内联函数的定义和使用。
      • 回答
      • 追问有深度的技术问题及答案
    • 虚函数可以是内联的么?:讨论了虚函数是否可以被定义为内联函数。
      • 回答
      • 追问及答案
        • 追问1: **在哪些情况下编译器可能会内联虚函数?**
        • 追问2: **虚函数和纯虚函数的主要区别是什么?**
        • 追问3: **在嵌入式系统中,使用虚函数和多态性时需要注意哪些性能问题?**
    • C++11的智能指针:介绍了C++11中智能指针的种类和使用方法。
      • 回答
      • 追问有深度的技术问题及答案
    • B+树和红黑树的区别:比较了B+树和红黑树的结构和应用场景。
      • B+树和红黑树的区别
        • 结构差异
        • 应用场景
      • 深度技术问题及答案
        • 问题一:B+树相比红黑树,在磁盘I/O效率上有何优势?
        • 问题二:红黑树在保持平衡性方面采用了哪些策略?
    • 同步异步、阻塞非阻塞:解释了同步与异步、阻塞与非阻塞的区别。
      • 同步与异步、阻塞与非阻塞的区别
        • 同步与异步
        • 阻塞与非阻塞
      • 追问有深度的技术问题及答案
    • 手撕线程安全的单例模式:现场编写了一个线程安全的单例模式代码。
      • 追问与解答
    • 手撕智能指针:现场实现了一个简单的智能指针
      • 回答:现场实现一个简单的智能指针
      • 追问有深度的技术问题及答案


自我介绍:首先让我做了一个简短的自我介绍。

volatile关键字:解释了volatile关键字的作用和使用场景。

回答 volatile 关键字的作用和使用场景

volatile 关键字的作用

volatile 关键字是 Java 中的一个类型修饰符,用于确保变量对所有线程的可见性。当一个变量被声明为 volatile 时,它会告诉 JVM(Java 虚拟机)该变量的值可能会被其他线程改变,因此每次访问该变量时都需要从主内存中重新读取其值,而不是使用可能存储在各个线程工作内存中的缓存值。这样可以防止内存可见性问题,即一个线程修改了某个变量的值,而另一个线程却看不到这个修改。

使用场景

  1. 状态标记:在多线程环境中,volatile 变量常用于作为状态标记,指示某个条件是否满足。例如,一个线程可能等待另一个线程完成某个任务,这时可以使用 volatile 变量作为完成标志。

  2. 单例模式的双重检查锁定(Double-Checked Locking࿰

你可能感兴趣的:(ARM/Linux嵌入式面试,arm开发,linux,c++,芯片,嵌入式硬件,单片机)