美团外卖服务端开发工程师线上面经
美团
java
- 数据库索引了解不,最左前缀原则,行锁,表锁,行锁,间隙锁,怎么实现的,语句
- Redis Cluster 是如何进行扩容的?
- 如何实现线程调度算法
- 让你自己来实现一个带权重的轮询负载均衡,能说说你的思路或者写个伪代码也行。(放弃治疗了,我太菜了)
- 数据库中存储密码是怎么存的(MD5加密),还知道其他加密方式吗
- 服务提供方不稳定,频繁变动如何提升自身稳定性
- redis如何处理分布式服务器并发造成的不一致
- 线程池了解吗 线程池大于核心线程的线程怎么销毁的?(然后又扯了半天怎么设计 什么死信队列什么的 开始瞎扯....)
- 线程池的五种状态,结合例子说明在什么情况下或使用什么方法进入什么状态
- MySQL的ACID讲一下,延伸到隔离级别
- 判断是否存在线程竞争,为什么没有,synchronize锁优化
- JDK1.7中HashMap的put方法全过程
- mysql,接口优化方法,mysql字段默认值不能设置为null,为什么?
- 同步IO和异步IO的区别?
- HashMap 如果一直 put 元素会怎么样?hashcode 全都相同如何?equals 方法都相同如何?
- 讲讲你对 CDN 的了解,与分布式缓存和本地缓存的区别
- 线程的状态
- dubbo如何一条链接并发多个调用。Dubbo的原理,序列化相关问题。
- 如何查看服务器负载?
编程题
给定长度为 2n 的整数数组 nums ,你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得从 1 到 n 的 min(ai, bi) 总和最大。
返回该 最大总和 。
- 示例 1: ``` 输入:nums = [1,4,3,2] 输出:4 解释:所有可能的分法(忽略元素顺序)为:
- (1, 4), (2, 3) -> min(1, 4) + min(2, 3) = 1 + 2 = 3
- (1, 3), (2, 4) -> min(1, 3) + min(2, 4) = 1 + 2 = 3
- (1, 2), (3, 4) -> min(1, 2) + min(3, 4) = 1 + 3 = 4 所以最大总和为 4 ```
- 示例 2:
输入:nums = [6,2,6,5,1,2] 输出:9 解释:最优的分法为 (2, 1), (2, 5), (6, 6). min(2, 1) + min(2, 5) + min(6, 6) = 1 + 2 + 6 = 9