金山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()函数的实现,会用到什么排序,为什么
大致就是这些,有些记不清了,二面问的很细节,一脸懵逼。