9.21 富途 go开发 一面
体验极佳,虽然都比较基础,但面试官引导是真的舒服!
- 自我介绍
- 我看你还有MOSN的贡献经历是吧
- 介绍面试流程,做题 + 提问
- 做题
''' "给定两个数组, 判断: 交换他们的一个元素后, 两个数组的元素之和能否相等, 如果可以, 则输出交换的两个元素的值的所有情况 例如: a = [1,3,5,7,9,11], b = [2,4,6,8,10,12], a中的1与b中的4交换后, 两个数组的和均为39, 因此可以输出[1,4], 其他结果同理" 36 42 x y x + d = y - d x = y - (2d) y - x = 2d 取差值为d的两个数 ''' # a = list(map(int, input().split())) # b = list(map(int, input().split())) arr = [[1, 3, 5, 7, 9, 11], [1], [], [2]] brr = [[2, 4, 6, 8, 10, 12], [2], [], [1]] for i in range(4): a = arr[i] b = brr[i] n = len(a) m = len(b) ass = sum(a) bss = sum(b) cha = abs(ass - bss) res = [] if cha & 1: print(res) else: d = cha // 2 # print(ass, bss) 36 42 idx = 0 dd = {} for x in a: dd[x] = True for x in b: if ass > bss: if x + d in dd: res.append([x + d, x]) else: if x - d in dd: res.append([x - d, x]) print(res) # for i in range(n): # for j in range(m): # if ass - a[i] + b[j] == bss - b[j] + a[i]: # res.append([a[i], b[j]]) # print(res)
- 写过java写过go,对哪个更熟悉
- 聊实习经历
- 重构短信功能模块主要是做了什么
- 怎么做抽象
- 抽象的产物,抽象出什么具体字段
- 分别需要不同的东西
- 权限系统如何重构
- 一般来说权限信息是多读少写的,那么权限信息有缓存的吗,主要是什么
- 用Redis肯定是觉得Redis快吧,那么有没有考虑到Redis为什么那么快?
- Redis的IO模型有了解过吗
- 如何去理解Reactor
- 你有聊到Redis是单线程执行命令,避免锁的争用。那么说一下你对锁的理解,或者怎么去使用锁的,或者无意识的情况用到
- MySQL你之前应该是有比较丰富的实践经验了,那MySQL的锁方面你了解吗
- 那你觉得什么情况会用行锁,什么情况会用表锁
- 实操MySQL
''' # 电商购物场景下, 假设有一个订单表 order, 存储了所有用户的订单记录 字段: id, buyer_id, seller_id, status, create_time, update_time 1. 现在有以下场景, 尝试写出 SQL 并设计索引 后台需要查看所有订单信息, 按 update_time 降序排序 买家查看自己的订单(全部订单或者指定状态的订单), 按 update_time 降序排序 '''
- 怎么建索引
- 为什么第一个不用后面俩的索引,要单独整一个呢
- 刚才只是口述,但是实际上它是不是真的会走到这个索引上呢?你怎么去验证呢
- explain 会返回很多字段,你具体要去看哪些字段呢?
- row是什么意思
- 你提到了预估,它不是一个准确的数字吗?
- 如果说误删了线上的数据,有没有办法可以解决
- 你当时为什么想着给这个项目(Gitea)提交PR,如何衡量这是不是一个优秀的开源项目
- 反问
- 这次面试的整体流程
- 技术面2面 + 1hr面 + 泡池子排序
- 这次面试是已经决定好部门还是随机分配
- 随机,因为是大部门。到时看人捞,比如c++技术栈的同学,可能会有c++的部门的人捞