面试复盘 | 字节提前批抖音电商后端开发面经(已OC)
8.4下午4点一面 45分钟
1、项目,RPC相关
2、mysql索引八股,redo log说一说
3、redis zset八股,和红黑树比较,为什么用跳表?我答了个插入删除效率,,,还有吗?不知道了(查到了,麻蛋,还有就是范围搜索直接往后遍历,红黑树还要回溯寻找,最差可能要回溯到根节点!!)
4、redis缓存穿透,缓存击穿,缓存雪崩,继续八股
5、jdk动态代理,String要动态代理的话,用哪个?显然jdk
6、spring bean依赖怎么解决?我说我不会,我猜是加缓存解决。
7、算法:
有一个矩形桩阵,由m x n个梅花桩组成。小明打算从左上角跳到右下角。并且每次只能往右或往下跳一个位置。求一共有多少种跳法?
示例1:m = 3, n = 2 输出:3
解释:3种跳法为 1. 向右 -> 向右 -> 向下 2. 向右 -> 向下 -> 向右 3. 向下 -> 向右 -> 向右
示例2:m = 3, n = 7 输出:28
一开始用二维dp,然后说要优化,我想半天也没想出来,提示才想出来,排列组合。总步数是m+n-2,然后总步数中有m-1向下,所以就相当于排列组合里在y中选x步,最后就是(m+n-2)!/(m-1)!/(n-1)!
反问:
1、对这场面试有什么意见和建议:无可奉告,面试不能告诉面试者相关的信息
2、具体的业务是什么
3、大概多久能出结果:得看hr那边响应速度
1小时以后就打电话了,没接到,发了邮件约了2面
--------------------------------------------------------
8.10下午4点二面(90分钟)面试官很友好,但各种降维打击
1、来个自我介绍吧,来点简历上没有的
2、你在学习的时候,有没有学到什么让自己眼前一亮的东西(hashmap)
3、来讲讲hashmap,你说到了链表和数组,怎么定位到某个值呢
4、容量为什么是2^n呢?
5、你给我写一下具体怎么算的,什么与上2^n-1
6、扩容呢?一个位置的链表怎么转移到新的地方?
7、你之前谈到了分段机制,讲讲,介绍介绍
8、项目中,你觉得自己做的哪个地方可以讲一讲?(令牌桶算法限流)
9、来写一写具体的代码
10、如果是多线程来并发访问呢?怎么解决?CAS+Volatile
11、讲讲CAS?
12、如果不加Volatile,会不会出现并发问题?(有点慌了,应该会出现其他CPU直接取自己的缓存中的数据)
13、时间不多了,来聊聊基础吧,jvm为什么分为堆和栈?堆和栈是什么,具体讲一讲?
14、(自己总结:堆主要解决对象的数据问题,栈主要解决对象的行为问题),诶?你那里在方法里写的int值是属于堆吗?
15、(属于栈)那你不是说堆解决了对象的数据问题吗,(我自己总结的,多多少少有点小问题)没事没事,你讲讲为啥放在栈里,不放在堆里?
16、来聊聊网络吧,http是哪一层协议(顶层的应用层),那DNS是属于底层的哪一层协议呢(应用层。。)
17、将将dns访问过程吧,(开始吟唱),等等,主机怎么把www.baidu.com发给本地DNS服务器呢?(晕了,ARP协议扯了一些),ARP得知道IP地址吧,你现在就只有这个www.baidu.com,(晕了,不太会),没事没事,咱们面试主要找优点聊嘛。
18、时间不多了,来道算法吧(困难)
面试官出题,是LeetCode上的题,写过,但写的不好,dfs+mem深度搜索,最后用例过了,但面试官看起来不太满意的样子
反问:
1、主机怎么发送给DNS服务器的?(笑了笑,比如你windows里,配置静态ip的时候,有一栏就是DNS服务器地址),人傻了,晕了
2、用java还是go,go
3、具体做哪些业务?
4、大概多久能出结果?
5、意见和建议:好好做做算法,你这个写的不好,循环里面调用多个dfs(连忙解释用了记忆集,减少时间复杂度)
总结:项目很重要,还好令牌桶算法我自己敲的,虽然是用lua写的,存放在redis中,不过大致思路对的,手撕也能大致撕出来。基础也很重要,尽量不要硬背,要多加思考背,栽在了DNS这个八股中,菜鸡如我。
还是得复习项目,真没啥可讲的辣鸡小项目,也要自圆其说。。。RPC还得好好准备准备。。。
没有问数据库,redis一些八股。。
半小时后打电话,约了三面
----------------------------------------------------
8.17下午5点三面30分钟
1、自我介绍
2、来做题吧(感谢牛客,感谢大佬,果然是这个题)
2-1:
一个环上有10个点,编号为0-9,
从0点出发,每步可以顺时针到下一个点,也可以逆时针到上一个点,
求:经过n步又回到0点有多少种不同的走法?
举例:
如果n = 1,则从0出发只能到1或者9,不可能回到0,共0种走法
如果n = 2,则从0出发有4条路径:0->1->2, 0->1->0, 0->9->8, 0->9->0,其中有两条回到了0点,故一共有2种走法。
写了两种算法,动态规划和递归,动态规划一开始写的有问题(被指出来了。。)
2-2:LC378变种(链接有问题,不贴了,直接题库搜就行了),用优先队列就行,MXN矩阵,每一行的元素递减,(问了行与行之间有联系吗,没有),求第K大的数
3、utf8和Unicode区别,不太了解。。
4、https讲一下?为什么要非对称加密?都非对称加密行不行
5、进程,线程,协程讲一讲
6、redis八股,哪些数据结构?五种(好像没咋问。。)
7、CXRF是啥,怎么避免(这个没答好。。应该答上token的,脑袋晕了。。)
1、面评和建议:实习多搞一搞,项目经验少了点
2、业务
3、多久出结果:这几天吧,hr联系你啥的
总结:三面很***觉到面试官是个大佬,都不问项目的(好吧,项目太菜了。。也不屑问。。),上来搞算法,算是A了1道半?一开始动态规划写的不好。
哎,2面到3面一周的时间也没咋好好学习,先给自己几个大嘴巴子
许愿三面过
面试体验:整体很棒,面试官都很和蔼。二面面试官会深入底层一直问,一直引导。
流程:
8.4一面,8.10二面,8.17三面,8.24状态更改为面试已完成,8.30意向书
面试之间挺快的基本上几十分钟就给结果,三面完太慢了,等的让人煎熬。