欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > 【面经分享】滴滴

【面经分享】滴滴

2025/9/23 11:31:10 来源:https://blog.csdn.net/WispX888/article/details/148434330  浏览:    关键词:【面经分享】滴滴

ArrayList、LinkedList

ArrayList 基于数据实现

  • 查找效率高
  • 增删效率低

LinkedList 基于链表实现

  • 增删效率高
  • 查找效率低

HashMap

JDK 1.7:数组 + 链表

JDK 1.8:数组 + (链表 | 红黑树)

  • 树化条件:数组长度 >= 64 ,且链表长度 >= 8 (会先扩容)

MySQL 索引

B +树

Hash 索引

倒排索引

Redis 缓存一致性

先更新数据库,再删缓存。

分布式锁底层

Bitmap

0 1 数组

MQ 如何保证不重不漏 ?

不重:

  • 主要就是 Consumer 端做 防重设计。

Producer 端会阻塞等待 Broker 返回 ACK,否则重试。

Broker

Consumer

不漏:

Producer 端会重试。

Broker 端刷盘持久化。(同步/异步)

Consumer 端消费完之后,返回 ACK 消息给 Broker。

单例模式

public class Klass {private Klass(){}private static volatile Klass obj;public static Klass getObj(){if(obj == null){synchronized (Klass.class){if(obj == null){obj = new Klass();}}}return obj;}}

算法:字符串转数字/大数相乘

43. 字符串相乘 - 力扣(LeetCode)

大数相乘:(字符串模拟)

class Solution {public String multiply(String num1, String num2) {int n = num1.length(), m = num2.length();int[] str1 = new int[n], str2 = new int[m];// 反转数组for (int i = 0; i < n; i++)str1[i] = num1.charAt(n - i - 1) - '0';for (int i = 0; i < m; i++)str2[i] = num2.charAt(m - i - 1) - '0';// 模拟竖式计算int[] res = new int[n + m];for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {res[i + j] += str1[i] * str2[j];}}// 进位int carry = 0;for (int i = 0; i < m + n; i++) {res[i] += carry;carry = res[i] / 10;res[i] %= 10;}// 去除前导0int end = m + n - 1;while (end >= 0 && res[end] == 0)end--;// 拼接答案StringBuilder sb = new StringBuilder();while (end >= 0) {sb.append((char) (res[end] + '0'));end--;}return sb.toString().length() != 0 ? sb.toString() : "0";}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词