当前位置: 首页 > ds >正文

【面经分享】滴滴

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";}
}
http://www.xdnf.cn/news/12250.html

相关文章:

  • HCIE-Datacom笔试题库
  • 法律模型选型
  • 食品计算—Dpf-nutrition: Food nutrition estimation via depth prediction and fusion
  • U盘从Linux系统向Windows系统切换时出错
  • 【无标题】平面图四色问题P类归属的严格论证——基于拓扑收缩与动态调色算法框架
  • linux如何配置wifi连接
  • JAVASE:网络编程
  • 遥控器3nm模块技术解析!
  • 代码中的问题及解决方法
  • C++内联函数(inline)的作用
  • 核心线程池大小如何设置?
  • Linux系统安装DNS服务器
  • 雷卯针对易百纳 SS524多媒体处理演示评估板防雷防静电方案
  • 《10 秒建立邻居,5 秒同步全网:OSPF 如何让网络故障 “秒级自愈”?》
  • [AI Claude] 软件测试1
  • 《P4799 [CEOI 2015] 世界冰球锦标赛 (Day2)》
  • unix/linux,sudo,其基本属性、语法、操作、api
  • 区块链技术:原理、应用与发展趋势
  • CD43.vector模拟实现(2)
  • 守护生命律动:进行性核上性麻痹的专业健康护理指南
  • Docker快速部署AnythingLLM全攻略
  • CSS选择子元素
  • mysql数据库的导入导出专题
  • SpringBoot parent依赖高版本覆盖低版本问题
  • 《小明的一站式套餐服务平台》
  • Go内存模型基础:理解内存分配机制
  • 从OCR到Document Parsing,AI时代的非结构化数据处理发生了什么改变?
  • OpenProject:一款功能全面的开源项目管理软件
  • 2.0 阅读方法论与知识总结
  • grafana 批量视图备份及恢复(含数据源)