面试:C/C++。面试感觉就是聊聊天这样,难度差不多,收到offer了。1、平时使用哪个版本的C++?讲一下这个版本C++做了什么改进,引入了什么新特性?答:C++11和C++14。引入了代表RAII思想的智能指针和锁管理包装类(lock_guard、scoped_lock等)。其基本思想就是,自动管理资源的获取和释放,即:在构造对象时,自动获取内存或锁;在析构对象时,自动释放其管理的内存或锁。2、了解C++多态和继承吗?简单讲一下C++多态如何实现。答:继承分为共有、私有和保护。子类对象继承父类之后,根据不同继承关系有可能可以调用父类变量或函数。例如:共有继承下,子类则可以使用父类共有函数。至于多态,一般来说,C++依靠函数重载和虚函数实现。其中,函数重载是静态的,虚函数重写则是动态的。因为依靠虚函数实现的多态,需要根据内存实际指向判断调用哪一个版本的函数。3、了解C++内存管理吗?简单说一下C++的内存管理。答:我刚刚也提到了,C++内存管理主要是依靠智能指针。比如:shared_ptr能够根据引用数量决定是否释放,当引用数量为0时,自动释放其管理的内存。而unique_ptr则是在其析构时,自动释放其管理的内存。追问:讲一下C++中new和malloc的区别答:new返回类型指针,而malloc返回void *指针,需要用户自己将其转换为所需类型。此外,malloc使用时需要计算申请内存大小,而new则是直接使用对象构造函数。4、熟悉C++多线程编程吗?讲一下C++多线程编程中的锁、条件变量和线程的基本使用。答:讲了mutex的包装器用法、condition_variable的wait和notify和thread的初始化。此外,还提到了条件变量的虚假唤醒和一个线程池的基本实现。5、之前使用过模板编程吗?讲一下C++模板编程。答:使用过。除了基本的模板类和模板函数,我还实现过迭代器,并使用了模板萃取技术。主要参考了STL模板库解剖。
1轮面试:视频面试
面试感受:一般;面试难度:普通难度;面试来源:BOSS直聘