金山WPS--C++面经

武汉金山,一共两面,两面都是问C++基础知识。多线程

一面:手写单例模式;struct和class的区别;如何删除vector的指定元素;四种智能指针;C++的封装继承和多态三种特性;多态如何实现的;一个类会默认生成的6个函数;冒泡排序;一个大文件,里面有不少种颜色,找出出现最多的10种颜色;vector,list,map的底层原理;手写重载拷贝构造函数;拷贝构造函数何时须要重载;多线程的同步和互斥;二分查找的条件;堆和栈的区别;手写一个二叉树的结构;寻找两个单链表的交点;malloc和new的区别。函数

二面:线程

1.如何用静态局部变量进行单例模式,不许用静态成员指针;指针

2.如何对虚表的某个位置进行更改,好比定义一个类,类里只有一个虚函数和一个int型变量。排序

3.模板里能够定义虚函数吗继承

4.对模板的理解生命周期

5.智能指针是怎么实现引用计数的,内部如何定义,为何。作用域

6.如何找到两个子节点离的最近的公共父节点,讲思路,我直接手写的。同步

7.所有静态变量,局部静态变量,类内静态成员变量的生命周期,做用域,以及构造和析构函数的调用时间模板

8.在头文件中声明一个静态变量,在多个cpp文件进行调用,会生成多少个实例。

9.引用的理解。

10.堆和栈的区别。

11.sort()函数的实现,会用到什么排序,为何

大体就是这些,有些记不清了,二面问的很细节,一脸懵逼。