快手业务一面(感觉要凉)

被拷打晕了,问的我头晕眼花,整体40min左右

先扯项目(xfg的大营销,时间不够只做了一阶段):

问项目做着玩的还是别人&*的?
没听清楚后面,我以为问我项目是不是扒的别人的,我就说设计有参考,但是是自己写过来的。结果后面问我有没有实际用户。我就说没有,上线了但是只做了一下压测,让朋友试了试,没有实际推广。(面试官回了一句哦做着玩的。)

介绍一下项目流程,整个抽奖的等等。
第一遍说完又让我重新说整体先,让我别先急着说这么细(但是我感觉说的已经够简略了。。),来来回回反正过了两遍才解释清楚最后极简版说了个接口调用-奖品装配-抽奖-库存扣减。

问用脚本并发抽奖怎么处理?
一开始还是没理解想让我说什么。。我还寻思抽他的呗,又不是顶不住(之前没了解过幂等,跪了),我就说可以正常扣减积分多次抽奖,如果压力过大就在redis加个3s过期的锁拦截一下,控制一下抽奖间隔。然后跟我理半天记不得说的啥了,但是最后统一问题就是同时多个请求打过来会不会造成多次抽奖只扣一次积分。一开始急了先说加个synchronized锁,虽然一开始就知道肯定不可行,但是当时也不知道说啥了,就先说了再说。然后说我性能问题解决不了。然后我想到用redis扣,就说走redis扣积分,再同步到数据库,用单线程模型来保证每次请求都能命中扣减积分,积分不够扣就直接返回。(没说话,感觉还是想让我只能成功处理一个请求,但当时不熟幂等,自然也没辙了,下一个问题)

可能是刚刚说了锁,转头问了八股,问了java有哪些乐观锁说了atomic,问底层实现,说了cas,再追问cas的实现,说了自旋,有aba加版本号或时间戳。

接着问volatile,问原理,没怎么看说不会,只记得作用。然后让我说了作用,转头又继续问了怎么保证的变量可见性(我刚刚不是说不会吗),然后还是说不会。继续问内存屏障了解吗,我说听说过但不是很清楚(只记得是保证不重排的东西?),结果还是被追问内存屏障原理,还是不会。。

转头继续拷打项目怎么保证扣取积分和扣取奖品库存的一致性。
前面被问懵了这里一开始也没听明白,沟通了一下意思是假如扣了积分然后抽奖途中程序挂了怎么办。不清楚,本来想糊弄过去,说发了扣库存信息之后会用redission延时队列的持久化特性来保证扣取信息不丢失。但被继续追问在发奖品之前,抽奖途中就挂了怎么办。不知道了,他说事务不了解吗(实在是忘了。。立马说在接口处加@Transactional,但感觉为时已晚。。)

算法,最长递增子数组,做过,忘了思路了。让我先说说思路,我说用dp,但具体实现忘了,让我先想想。想了两分钟想到方法,说了一半感觉捋不清楚,就说干脆直接写。然后几分钟写完,平台调试不了,他那边跑了有错。帮我检查代码发现又没啥问题。最后就不纠结,算a了也是。

反问:本来不想问了,人已经晕了。还是象征性问了下部门业务。没敢问表现,,自己挺清楚。。问完说再见赶紧下播跑路了。

目前最可怕的一次面试经历。。怎么练场景题呀,项目没用过的东西根本不清楚#牛客AI配图神器#
全部评论
你要是做着生产,就直接创业了,还踏马的面快手?
2 回复 分享
发布于 03-10 18:46 安徽
***面试官,他工作前就自己有项目了
1 回复 分享
发布于 03-15 01:38 陕西
哥们啥部门啊?
点赞 回复 分享
发布于 03-11 20:19 江苏
一样,快手贼压力,还叹气,不过第二天就奇怪的约二面了
点赞 回复 分享
发布于 03-15 10:39 重庆
是不是xfg
点赞 回复 分享
发布于 03-24 18:50 四川

相关推荐

一面(25/2/26)(过)    1、自我介绍    2、介绍一下HashMap。(扩容机制、寻址、为什么扩容是二倍)。    3、如果说当前有1000个k-v结构数据放入HashMap中,最终HashMap中是什么情况。(数组桶2048个)    4、HashMap线程安全吗?哪些是线程安全的hash结构?    5、介绍一下concurrentHashMap线程安全实现的原理?(1.8之前、之后)    6、list和set集合的区别?    7、对list遍历想到几种遍历方式?(按下标、语法糖:、迭代器)    8、如果对于list中的元素遍历过程中进行删除满足一些条件的元素,你会怎么做?    9、线程池的有几个参数?    10、线程池的拒绝策略?默认的是哪种?    11、线程池的线程工厂有哪几种?默认的是哪种?    12、三个线程顺序打印a,b,c,有哪几种方式实现?    13、MySQL的分库分表有哪些方式?如何分库?主键设置?路由id?    14、MySQL集群的搭建方式?(答了主从同步,binglog、relaylog、哨兵模式)    15、redis主库挂了之后无法承接写操作,这期间的写操作的有效性和一致性如何来保证?    16、对于索引来说,字段的选择,组合索引的使用。(答重复度小的,联合索引的部分失效)    17、组合索引支持范围查询吗?三个字段第二个字段是时间字段,时间字段进行范围查询会生效吗?    18、从持久缓存中把数据加载到redis中的加载策略,如果让你来设计你有什么思路。就是从mysql到redis的这一个过程的策略?(没听明白,答了redis读取mysql的binlog日志进行数据同步)    19、redis中分布式锁的实现?(黑马点评开始吟唱)    20、OLAP和OATP了解过吗?(???)    21、事务了解过吗?这是本地事务,分布式事务了解过吗?    22、事务如何开启?(答了隔离等级和解决的问题,mysql命令开启,transaction注解开启)    23、在A方法上调用B方法,B方法上使用了transaction注解,B中的事务会生效吗?(this调用无法生效,需要使用代理调用)    24、介绍一下单例模式?(答spring的bean默认单例,比较prototype状态是非单例的)    25、spring中用到的设计模式?    26、消息队列有用过吗?知道是干什么的吗?(了解过,知道有kafka、mq,举例点评里面的秒杀优化)    手撕:5. 最长回文子串    面试官:在我这里算是一个通过,说一下你的问题:消息队列在日常使用非常频繁,要加紧补出来;缓存加载;分布式事务。对于面试实习来说整体表现算是比较优秀的。    反问:公司或者面试官您需要什么样的实习生        上手快,培养成本比较低,可以快速的帮正式成员分担一些任务。对于项目来说不一定技术复杂度越高,而是适合的比较好。二面(25/3/5)(挂)    1、自我介绍    2、把秒杀展开说一说?    3、乐观锁怎么解决超卖问题的?    4、具体是在哪一步?    5、说到分布式,被打断,就单体情况对MySQL操作,能不能解决一人一单超卖问题?    6、详细说一下,怎么判断?判断哪些字段?判断完之后成功和失败情况分别是什么样的?    7、怎么解决库存超卖?那你怎么解决主从延迟问题?查完了再去写,肯定是有延迟的?(答先判断扣减库存是否成功,成功再下单)    8、那你怎么保证这两个操作不被打断呢?(死脑子快转啊,应该是想问事务,用transaction注解,当时脑子里面在想什么啊)    9、后面扯来扯去有扯到消息队列里面了。    10、分布式锁怎么实现的?(说到误删的问题,面试官说这个问题一般不会有)    11、接着拷打巴拉巴拉,又扯回库存超卖问题了。(应该是一直想问事务)    12、后面又拷打一些场景    手撕:写一个单例模式,get方法没加static,被提醒了一下。    总结:其实问的很常规,只不过问的很细节,项目还是不熟吧,反思。
点赞 评论 收藏
分享
评论
7
38
分享

创作者周榜

更多
牛客网
牛客企业服务