游戏中台三面2020/12/3/15: 05(45分钟)
-
问基本情况
-
自我介绍
-
实习经历
- 做了什么东西
- 遇到了什么困难
- 学到了什么东西
-
项目经历:
- 描述项目
- 有想过怎么改进吗
-
redis
- 数据结构
- 说一下跳表
- 跳表的效率
- 集群相关(不知道)
-
写个sql,在某段时间内0109-0111之间,每天的销售额最高的商品(group不熟,其他的写出来了,没写完)
-
从n大小的数据中等概率取出m个数
- 讲出了步骤,但是没记住证明过程(面试前看了这道题,但是偷懒没记证明)
- 面试官:你看过这道题,但是没说出来,这不是很尴尬。。。
-
重新换道题吧,难一点的
一个项链三种颜色红白蓝的珠子,从一个地方剪短,从剪断的左边一直取相同颜色的珠子,从右边也取,求最多能取多少个珠子。(白色可以变两种颜色)
- 我一开始的想法:由于是一个环,所以要预处理一下,再遍历数组,然后求出每一段连续的相同的颜色的珠子数,得到一个数组,然后求数组中,相邻两个数之和的最大值。
- 给了我15分钟来写:但是我写了一半8/9分钟后感觉这种方法太复杂了,就看了看题,说了一下另一种方法
- 直接数有多少个,连续的数第一段有多少个,每次数完之后记录前一段有多少个,然后判断前一段加上当前段有没有大于之前的结果,如果大于的话就赋值过去。中间也需要判断白色,中间相邻的一段如果是白色连接的,两段的总和是没有影响的,但是到了下一段是会有影响的。
- 你时间复杂度和空间复杂度不还是一样吗:空间变了呀,O(1)了呀。
- 不可能:我只需要记前一个就行了呀
- 你编好之后发我微信,你已经没时间了
-
反问
- 我最需要提升的是哪一块呢:多深入一点
最后附上写好的代码
#include <iostream>
#include <map>
#include <algorithm>
#include <queue>
#include <cstring>
#include <string>
#include <vector>
#include <unordered_map>
using namespace