虾皮一面

1.Redis被大量访问导致压力过大如何解决?

答:分级缓存,利用guava或者ConcurrentHashMap作为内存缓存。限流。利用Redis集群,集群中每一个节点部署以一主多从。

2.Kafka为什么这么快?

答:消息压缩,消息批量发送,零拷贝,IO多路复用,一个主题多个Partition,利用broker集群,将一个topic下的多个partition部署在多个broker上,消费者组中一个消费者对应一个partition。

3.Redis中的Zset是用什么数据结构实现的,为什么这个实现?

答:用跳表。至于为什么这个实现,只打出插入删除时间复杂度为O(1),利用链表建立多级索引,查找某一节点的时间复杂度为O(logN),链表实现起来比红黑树简单,debug也更加直观,感觉没答到点上,答得不好。

4. Mysql为什么要用B+树做索引?

答:B+树非聚簇索引的非叶子节点只存储索引列,叶子节点存储主键,聚簇索引非叶子节点主存储主键,叶子节点存储完整行数据,而B树非叶子节点也存储行数据,这样一比较,B+树非叶子节点可以存储更多的索引,树的层高就可以更短,从而可以减少数据库磁盘IO的次数,而磁盘IO较内存IO慢很多,并且,B+树叶子节点用链表连接起来,便于范围查询。

5. 介绍一下并发编程?

答:简单说了一下JMM。也就是每一个线程都有自己的工作内存,工作内存使用的变量是从主内存加载的副本,如果没有加volatile关键字的话,工作内存不会将变量的变化同步到主内存,其他线程也无法得知变量被其他线程所更改。然后说了一下synchronized的重量级锁是利用操作系统的Mutex原语实现的,线程获取不到锁会进入阻塞状态,并等待操作系统唤醒,而java优化了synchronized关键字,它会在获取锁时,尝试cas自旋一段时间,如果超出时间还没有获取到锁,则锁升级为重量级锁(这些内容都忘的差不多了,不知道对不对)。

6. 为什么Java1.8后ConcurrentHashMap同步机制从ReentrantLock变为了synchronized?

答:不知道

7. 面试官介绍了一下部门业务,是搜索部门。

8.两道算法题,比较简单。

一个是删除一个有序链表中存在重复值的所有节点。另一个是返回一个数组中当前位置以及后N个位置中最小值,每一个位置都要返回。第一个太简单了直接秒了,后一个觉得应该用单调栈或者单调队列做,但是没时间了,我就直接用TreeSet暴力秒了。

总体感觉问的比较简单。面试完两个小时HR约了第二场面试。

全部评论
大家面经都写的很棒啊,有自己的思考在里头
1 回复 分享
发布于 08-28 21:35 北京
接好运
点赞 回复 分享
发布于 08-23 18:17 广东
接好运
点赞 回复 分享
发布于 08-21 22:08 上海
实习面吗?我过俩天秋招面来看看面筋
点赞 回复 分享
发布于 08-19 16:01 河北
真是深度八股了
点赞 回复 分享
发布于 08-08 00:03 江苏
秋招刚开,看看我们
点赞 回复 分享
发布于 08-06 10:04 上海
mark 学习
点赞 回复 分享
发布于 08-05 17:12 广东
力扣83和239?
点赞 回复 分享
发布于 08-04 21:44 北京
m
点赞 回复 分享
发布于 08-04 21:26 广东
今天刚二面完,绷不住了兄弟
点赞 回复 分享
发布于 08-04 21:10 河北

相关推荐

深挖项目+一些八股+手撕2道1.研究方向是人工智能,为何转到/学习前端?2.实习经历写的node微服务中间层主要是干什么?(我提到了协议转换,因为实习的bff项目对接后端那边的grpc服务,对前端暴露rest api端点)3.所以你认为中间层的职责边界是什么?仅作为一个协议转换吗?(我提到了接口编排,比如前端在某个功能上需要调用后端多个接口时,可以直接在bff中做一个整合,只返回给前端一个接口,这样前端的复杂度也能降低,这个想法是之前在研究实习的项目时问ai得到的,实际上实习的时候也没做接口编排,这部分答得不好,我对bff项目的价值和了解太浅了,仅限于我自己的那部分dirty work)4.对node微服务的复杂度有什么处理吗?需要考虑哪些异常场景?或者是怎么解决的?就是如果以聚合api的调用为例,这个过程中可能遇到哪些异常场景或者是哪些你认为需要关注的点?(真的不会回答,因为真没做过接口聚合,我猜测可能会跟异常和错误的处理有关)5.是不是意味着一个接口出错了,整个过程就中断了?(我提到可以做重试,可以设定一些重试规则,比如网络错误,满足规则就可以发起重试,避免某个接口出错就直接报错,尽可能使得接口能成功返回响应,感觉我的回答还是太浅了,但是的确就是只知道这一点orz)6.从前端服务的一个可用性来看,就是我们尽可能的满足它的一个可用性,那么在这种聚合的场景下,有没有什么办法尽可能满足它的可用性?数据影响范围应该尽可能的小,不能因为一个接口出错,整个服务都不可用,对吧,那么针对这个有什么考量?哪些可以聚合,哪些不可以,聚合的原则是什么?(理解到面试官意思了,但是我答得不好,描述很混乱,我的大概理解是聚合的原则必须是前端请求的数据之间关联性很强,但是不会回答,也不知道如何描述,并且只知道这一个点)7.你这里的重构请求层是什么意思?为什么要重构?(这里我脑子昏了头了,回答成了在简历中写到的另一条工作,我傻了orz)8.前端有哪些性能指标可以关注?(我答了FCP、LCP)9.这都是基于开发过程的性能表现,那如何知道在用户的真实使用情况?(不会答。乱答的)10.生产环境怎么感知用户性能或者错误问题?(我回答听说过sentry,但是没用过,不知道怎么用orz)11.ai辅助编程用的多吗?用的什么?会深度集成使用还是做提示?(这种问题怎么回答才能显得我既能使用ai提升效率,但是又不是完全依赖呢?搞不懂orz)12.你之前做过深度学习,那你知道为什么ai会容易忘记上下文?(上个回答提到这点,但是实际上我做的不是深度学习啊orz,所以也是乱答)13.有用过mcp之类的工具吗?(没有orz)14.前端的同源策略,跨越的处理?15.简单请求和复杂请求的区别?16.webpack和vite在开发、生产模式的区别?17.esm和common js的区别?18.import在esm中是个引用对吧,那编译时怎么实现的引用更新?最正构建出来的产品怎么实现的es特性?19.实现map(最开始用对象,发现不对,因为对象的键不能像map那样支持多种类型的变量,最后用的2个数组实现,但是写的过程中磕磕绊绊,暴露了短板)20.图有关的算法题(图,在此之前没刷题,因为总觉得不会考,没想到还是很重要的,最后还是暴力写了,不过写的还是有问题,其实后来发现也很简单的题,dfs就行)
我的求职进度条
点赞 评论 收藏
分享
评论
33
209
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务