MiniMax 一面
- 自我介绍
- 简单介绍一下你们成立了这个finance的财务中台之后,整体的服务架构是怎么样的吗
- 就你提到的预算池项目,展开说说背景,以及解决了怎么样的问题
- 为什么采用针对T-1订单的异步计算方案,而不是在线链路实时计算每一单的金额,技术方案这么设计是出于什么考虑
- 不同渠道适配多履约模式项目中提到的付费模式抽象建模,能具体讲讲吗
- 改动涉及下单核心链路,前向兼容是怎么处理的
- OpenAPI网关的架构是怎样的,主要是起到什么样的作用
- 你们这个是怎么针对不同三方去做协议的转换,是代码里写死吗?(把不同的参数映射成标准的参数,是有定制化的代码吗)
- 代码题(思维,逻辑,边界条件)
双数组求第k小
题目描述
给定两个有序数组,均为从小到大排序,求在两个数组中第k小的元素的值
例如
a = 【1,3,5,7,9】
b =【2,4,6,8,10】
返回第5小的数字,为6
参考答案(golang实现)
func FindKthSmallest(a []int, b []int, k int) int {
lenA := len(a)
lenB := len(b)
// 边界处理
if k <= 0 || k > lenA+lenB {
return -1
}
// 使用双指针遍历
p1, p2 := 0, 0
// 找到第k个数,只需要循环k-1次,因为起始位置已经指向了第一个数,因为第k个数只需要向后再移动k-1次
for i := k; i > 1; i-- {
if p1 == lenA { // 如果数组a已经遍历完了,直接在数组b中找第k小的元素
return b[p2+i-1]
}
if p2 == lenB { // 如果数组b已经遍历完了,直接在数组a中找第k小的元素
return a[p1+i-1]
}
// 比较当前a[p1]和b[p2]位置上的元素大小,较小的元素指针向后移动一步
if a[p1] < b[p2] {
p1++
} else {
p2++
}
}
return minInt(a[p1], b[p2])
}
func minInt(a, b int) int {
if a < b {
return a
} else {
return b
}
}
2023.11.20 二面(交叉面,一面是上海的面试官,二面是北京的面试官)
- 自我介绍
- 看新的机会的原因,为什么不选择等到明年年初才跳槽
- 介绍项目,希望你能从以下方面展开阐述:当时的背景、你在该项目中的角色和定位、技术选型、碰到的技术难题、成果及项目产出、个人得到哪些成长
- 预算池目前管理的资金池规模多大
- 你觉得这里头的复杂点在哪里,或者说你做的过程遇到的困难的链路是哪部分?
- 你觉得哪一块对你的技术挑战是最大的
- 自己对你的一面有什么评价吗
- 代码题
题目描述
输入m, n 输出一个m行n列的蛇形矩阵,
m n 的取值范围均为[2,10], 2<=m,n<=10
示例:
输入
m=3, n=4
输出
1 2 6 7
3 5 8 11
4 9 10 12
- 反问
代码题思路

参考答案(golang实现)
func PrintMatrix(m, n int) [][]int {
fmt.Println("input m,n = ", m, n)
res := make([][]int, m)
for i := 0; i < m; i++ {
res[i] = make([]int, n)
}
cursor := 1
for i := 0; i < m+n-1; i++ {
if i%2 == 0 {
for k := 0; k < i+1; k++ {
if k > (n-1) || (i-k) > (m-1) {
continue
}
res[i-k][k] = cursor
cursor++
}
} else {
for k := 0; k < i+1; k++ {
if k > (m-1) || (i-k) > (n-1) {
continue
}
res[k][i-k] = cursor
cursor++
}
}
}
for i := 0; i < len(res); i++ {
fmt.Println(res[i])
}
return res
}