金山WPS C++一面 12-03-20
#金山# #金山办公面试#
# 自我介绍:略
# 经常使用的容器
`map` k,v可以存储操作id和函数,根据操作类型调用相应的方法,作为回调。
# C++有哪些多线程库
知道两种,一种是std:thread,一种是基于RAII思想封装std::thread得到的std:jthread
# sort()使用了哪种排序算法
`sort()` 底部使用了多种排序算法: 快排,堆排
1. 当数据量大,分布随机时,使用快速排序
2. 数据量小,使用插入排序
2. 递归深度过深时使用堆排序
# 排序算法的使用场景
1. 快排:无序数组效率会很高,但是有序数组效率会很低,
2. 归并排序:内存有限的情况下,可以使用多路归并
3. 插入排序: 基本有序的数据,适合于插入排序。
# 智能指针
`weak_ptr`可以提升为`shared_ptr`吗?
可以。
1. `shared_ptr`: 会使用计数器来记录引用次数,当引用次数为0时,释放对象。
2. `weak_ptr`:`weak_ptr`实现弱引用,用来解决`shared_ptr`的循环引用问题,可以通过`.lock()` 提升为 `shared_ptr`
# 使用一段代码体现C++面向对象的思想
C++面向对象的特性有三个
1. 封装
2. 继承
3. 多态
写了两个类,一个基类,一个子类,没有成员变量,子类重写了基类的虚函数
###两个类的大小,
回答没有考虑继承时的虚函数指针,所以回答的两个都是1。
实际上因为对象会有一个虚函数指针,对于个一个64位的机器,指针的大小是8字节,所以两个类的大小都是8字节。
# 实现字符串数字相加,相减
需要对特殊情况做特殊处理
1. 前导0
2. 正数+负数
3. 负数+负数
4. 小数-大数等等
# 最后
倒霉倒霉倒霉。面试期间,快手电话没接到,应该是约面的。结束之后去官网看已经挂了。此前快手三面,面试官问插入时不考虑发生冲突,只考虑扩容的hashmap,插入的平均时间复杂度是多少,面试官说是O(logN),只知道C++的最差是O(N),后来搜了一下java里有这个。。。讲解项目面试官说他没听懂😅。。。
有错误的地方还请大佬指点。
# 自我介绍:略
# 经常使用的容器
`map` k,v可以存储操作id和函数,根据操作类型调用相应的方法,作为回调。
# C++有哪些多线程库
知道两种,一种是std:thread,一种是基于RAII思想封装std::thread得到的std:jthread
# sort()使用了哪种排序算法
`sort()` 底部使用了多种排序算法: 快排,堆排
1. 当数据量大,分布随机时,使用快速排序
2. 数据量小,使用插入排序
2. 递归深度过深时使用堆排序
# 排序算法的使用场景
1. 快排:无序数组效率会很高,但是有序数组效率会很低,
2. 归并排序:内存有限的情况下,可以使用多路归并
3. 插入排序: 基本有序的数据,适合于插入排序。
# 智能指针
`weak_ptr`可以提升为`shared_ptr`吗?
可以。
1. `shared_ptr`: 会使用计数器来记录引用次数,当引用次数为0时,释放对象。
2. `weak_ptr`:`weak_ptr`实现弱引用,用来解决`shared_ptr`的循环引用问题,可以通过`.lock()` 提升为 `shared_ptr`
# 使用一段代码体现C++面向对象的思想
C++面向对象的特性有三个
1. 封装
2. 继承
3. 多态
写了两个类,一个基类,一个子类,没有成员变量,子类重写了基类的虚函数
###两个类的大小,
回答没有考虑继承时的虚函数指针,所以回答的两个都是1。
实际上因为对象会有一个虚函数指针,对于个一个64位的机器,指针的大小是8字节,所以两个类的大小都是8字节。
# 实现字符串数字相加,相减
需要对特殊情况做特殊处理
1. 前导0
2. 正数+负数
3. 负数+负数
4. 小数-大数等等
# 最后
倒霉倒霉倒霉。面试期间,快手电话没接到,应该是约面的。结束之后去官网看已经挂了。此前快手三面,面试官问插入时不考虑发生冲突,只考虑扩容的hashmap,插入的平均时间复杂度是多少,面试官说是O(logN),只知道C++的最差是O(N),后来搜了一下java里有这个。。。讲解项目面试官说他没听懂😅。。。
有错误的地方还请大佬指点。
全部评论
佬base哪里呀?
金山wps已释放一个offer 佬加油
相关推荐
查看35道真题和解析
点赞 评论 收藏
分享
点赞 评论 收藏
分享
张伟要好好学习:腾讯算失败,其他人叫啥
点赞 评论 收藏
分享
点赞 评论 收藏
分享