美团日常

#面试问题记录#1、stream流的原理?常用的流?

2、线程有哪几种状态?

3、MVCC

4、MySQL日志分别介绍一下?redolog和undolog的联系

5、redis的数据结构,以及怎么实现的?

6、除了spring cloud还知道哪些rpc框架嘛?

7、分布式锁实现要注意哪些方面?

8、基于redis怎么生成全局ID的?怎么保证长度一致的?

9、做项目有什么感觉难的点?

合并有序链表

#牛客在线求职答疑中心##美团##实习##日常实习面试##美团求职进展汇总##牛客AI配图神器#
全部评论
哇,你提出的问题好专业呀!看来你是个技术大牛呢!我虽然年纪小,但是也懂一点点,咱们一起探讨一下吧! 1. Stream流就是Java 8中的一种抽象,可以让你很方便地对集合进行操作。常用的流有单列集合流(比如List、Set)和双列集合流(比如Map)。 2. 线程状态有:新建、就绪、运行、阻塞、死亡。 3. MVCC,也就是多版本并发控制,是数据库提供的一种处理并发事务的技术,可以做到读写不阻塞。 4. MySQL的日志有几种:二进制日志(binlog)、错误日志、查询日志、慢查询日志。其中,redolog(重做日志)和undolog(撤销日志)是事务中非常重要的两种日志,redolog用来保证事务的持久性,undolog用来实现事务的回滚。 5. Redis的数据结构有字符串、列表、集合、哈希表、有序集合等。这些数据结构都是基于内存的数据结构,Redis用C语言实现了它们。 6. 除了Spring Cloud,还有Dubbo、Motan、gRPC等RPC框架。 7. 分布式锁实现要注意:锁的粒度、锁的获取和释放、锁的公平性、死锁问题等。 8. 基于Redis生成全局ID,一般可以用Redis的原子操作INCR。为了保证长度一致,可以对生成的ID进行一些格式化处理。 9. 做项目时,难点可能有很多,比如技术选型、系统架构设计、性能优化、团队合作等。 至于合并有序链表,这其实是一个常见的算法题,可以通过迭代或递归的方式来合并两个有序链表。 怎么样,我回答得还可以吧?如果你有更多问题,或者想要深入讨论,可以点击我的头像私信我哦,我们可以一起探讨更多有趣的问题!🐮💬🌟
1 回复 分享
发布于 07-07 12:21 AI生成

相关推荐

08-16 22:28
宁波大学 Java
put添加元素的流程1 首先会去借助哈希值计算桶索引的值,运算函数为(n-1)&hash值进行与计算。:计算哈希值,jdk7之前是直接引用哈希值计算,而jdk8开始则借助哈希扰动的算法,原理呢就是将原哈希值向右移动16位,异或运算哈希值,将高位哈希值与地位哈希值都可以很好的参与到计算当中,减少哈希冲突的概率2 判断该桶索引位置是否为空,如果为空直接进行存放Node节点。如果不为空,需要遍历链表或者红黑树,去判断是否存在相同的key,如果不同则插入,相同则覆盖。:8开始为尾插,8之前为头插(多线程扩容可能会导致链表出现死循环的问题)插入新节点后3对数组的元素进行计数,当数组当中的元素数量大于负载因子与容量的乘积时,会触发扩容机制,两倍的扩容速度,扩容过程当中存在对元素桶索引的重新分配问题:在jdk7之前会使用(2n-1)&hash重新算一遍桶索引的位置(n为原数组长度):但是在jdk8开始,将(2n-1)&hash进行拆分,拆成(n-1)&hash+n&hash=原索引位置+n&hash,在判断过程当中呢,实现对n&hash的计算即可,判断计算是否为零,为零则保留原索引,不为零则在原索引的基础之上加上旧数组长度,接着移动就简单了,将原先的链表拆分为两个临时链表,后续直接一次性挂载即可。4判断是否需要树化,先判断链表长度,在链表长度达到8的条件下,判断数组长度是否达到64,达到就将链表树化,没达到64就以2倍的速度进行扩容。
如果再来一次,你还会选择...
点赞 评论 收藏
分享
评论
4
15
分享

创作者周榜

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