一面
1.最早可入职时间
2.实习时长
3.是否了解拼多多工作时间,为什么选拼多多
4.有没有投其他实习
自我介绍
1.介绍一下Oauth2
2.介绍一下jwt
3.讲一下为什么用两个jwt(一个验证身份,一个续期),第二个jwt起到什么作用?
4.介绍一下同步和异步
5.redis缓存穿透、缓存雪崩了解吗?
6.redis持久化(详细讲一下rdb和aof)
7.redis如何保证一致性
8.延迟双删中延迟的实现方案
9.redis如何实现分布式锁
10.为什么使用lua脚本实现分布式锁,是为了解决什么问题
手撕
1.写一个死锁
2.leetcode(力扣) 373. 查找和最小的 K 对数字
3.发糖果
(太久没刷题了,死锁没写出来(就单纯太久没写Java,synchronized都不会用了),跟面试官讲了思路,然后面试官换了第二题,直接心又凉了,知道要priority_queue构造个最小堆,但是不会构造,面试官又给了第三次机会,写发糖果,思路就是遍历两次,但是时间来不及了,没写完代码,可能每题开始前都给面试官讲了思路,虽然没写出来,但还是感谢面试官给机会)
二面
1.LeetCode第137题_除了一个元素其他元素都出现三次
为了避免尴尬,老实的鼠鼠立马就回答,先排序,然后在遍历一遍找到单独的元素(显然不是面试官想要的答案)
(面试官只好提示说按位思考,后面看我没思路,又提示了一遍)
思路是用32位数组计算每一位数的和,最后每一位取余3后还原
(然后时间复杂度太高,面试官再次提示,)
把32位循环放到外层,就将时间复杂度降到了O(32n),也就是O(n)
自我介绍
1.介绍一下Oauth2具体流程
2.介绍一下Spring中的AOP
3.讲一下代理模式具体怎么实现的(只提了代理对象调用invoke方法,看面试官反应显然不够详细,转而介绍自己了解的装饰器模式,适配器模式,工厂模式)
4.1我看你用过redis,能不能讲一下redis集群中找到正确的redis实例(面试官提了一个没听说过的名词,后来自己百度觉得可能是哈希一致性算法、哈希环之类的,我只提了通过hash计算找到对应的hash槽)
4.2紧接上一个问题,具体如何计算hash值的?(不会)
5.讲一下什么是子网掩码和网关
6.redis持久化方案
7.介绍一下spring中用到的进程同步的设计思想?(讲了一个AQS,锁,其实是同一个东东,其他的不会了)
8.讲一下ThreadLocal原理(用于保存线程的变量副本,不会了,面试官想我详细介绍一下原理)
讲讲项目亮点
只有一个数据库优化,其他的感觉和面试官问的八股就不在同一个难度,就没好意思讲了
反问
1.部门分配,技术匹配问题
2.问如何平衡工作和生活
笔试(鼠鼠运气好,遇到的全是模拟题,最后 372/400)
1.多多君最喜欢到多多村的多多炸鸡店吃汉堡。每个汉堡原价10块。炸鸡店为了回馈老客户,开展了拼团活动:每找到一个朋友一起拼团购买可以减少1块,但价格最低只能降到5块(不然要亏本啦)。
现在多多君手上有N块钱,同时有M个朋友也想吃汉堡。多多君想知道最多能买多少个汉堡,以及能买最多的汉堡的情况下最少要花多少钱。
输入描述:
第一行一个整数T,表示测试用例的数量。(1<=T<= 100 )对于每组测试用例:共一行,每行2个整数N和M,表示多多的钱以及一起购买汉堡的朋友数量。
(1<= N<= 1,000,0 <= M <= 1,000 )
输出描述:
对于每组测试用例,分别输出一行,每行2个整数,分别表示多多君能购买的最多的汉堡数量,以及购买最多的汉堡的情况下最少要花多少钱
示例 1
输入:
2
100 0
20 18
53
输出:
10 100
2.小多多特别喜欢字符串,有一天博学的多多村长在逛街时遇到了小多多,他准备考考小多多。村长每次会给小多多一个二进制字符串s长度为 n,村长定义了一种新的子串di,作为十进制表示形式为sisi+1的数字(可能带有前导零)。
村长定义字符串的十进制值f(s)为所有有效di的总和。对于字符串s=1101:
d1=S0S1= 11
d2=S1S2=10
d3=S2S3=1
f(s)=11+10+1=22
村长允许小多多每次可以交换字符串的任意两个相邻元素最多可以进行k次操作,问字符串的十进制值最小为多少,小多多喜欢分享,于是他邀请你一起解决这个问题。
输入描述:
第一行一个整数t,表示测试用例的数量。(1<t<100)
对于每组测试用例
第一行包含两个整数n和k,表示字符串的长度和允许的最大操作数。(2 ≤n≤ 10^5,0 ≤k< 10^9)
第二行包含长度为几、仅由'0'和'1'组成的二进制字符串s输出描述:
对于每组测试用例,分别输出一行,每行一个整数,表示在最多可以进行k次操作后的字符串十进制最
3.多多在玩一个字符游戏,起初多多有一个长度为N的仅由大小写字母构成的字符串S.游戏中多多可以执行这一操作:删除S中最长且最靠左的连续相同字符构成的子串,且该操作可以重复进行。
多多想知道,经过多少次操作后才能将整个字符串S删除
输入描述:
第一行,一个整数N,表示字符串的长度(1<=N<=100000)第二行,一个字符串S,表示游戏初始时的字符串S输出描述:
共一行,一个整数,表示删除整个字符串的操作次数。
示例 1
输入:
D
аBBa
输出:
C
说明(解释):
第一次操作,消除BB,剩下的字符串为 aa第二次操作,消除aa
4.LeetCode 644. 最大平均子段和 II
用了前缀和,然后只有72%通过
总体来讲拼多多的面试体验比较好,也是唯一进二面的一家(其他都是一轮游),只要把想法和面试官交流一下,面试官还是会提供引导的。许愿有三面吧,虽然二面答得稀烂。顺便问问大家面试的时候手撕算法脑子一片空白该怎么办?感觉自己刷题和面试手撕的时候题目脑子可用程度不一样,还有除了javaguide,大家有什么进阶的八股给鼠鼠推荐一下,目前暑期实习还是0offer