一面
- 自我介绍
- 项目挖掘
- 算法题:
给定一个正整数n,表示有几个不重复的数,输出这些数字的全排列
- go切片的扩容机制
4.2 二面
- 自我介绍
- 过往的经历中做过最有挑战、最有成就感、印象最深的项目是哪个,遇到了什么问题,当时怎么解决的
- 很多业务方在这套系统上去查询实体信息,你在调用上可能会出现部分失败,比如要A,依赖了B,C,D,E,但是C和D都调用失败了,没有成功拿到返回值,这时候你会怎么处理,系统会如何对外响应?
- 部分失败导致部分字段没有取到的情况,你预期的使用者应该怎样处理,是整个接口响应都不可信,还是由上游业务使用者自己去评估不可靠的数据要不要使用下去?
- 从调用方的角度,他能够知道获取的数据是一致性很高的/实时的,还是命中了你系统缓存的兜底数据?
- 缓存的时长是由外部API的提供方来设置的,还是由调用者来要求的?
- 生成pipeline会出现一个实体在编排结果第5/6层比较深的地方,又出现在一个靠近根的地方也用到了,就是有多个节点都依赖了同样的数据,但是层级不同,这种时候你会去做一些优化处理吗?还是说调用了多次,因为实际上查的是同一个数据
- 比如说,有一条调用链A-C-D-F-G-H-E,另一个是A-B-E,有两条路径最终都走到E,但是在不同的深度上,假设现在是并发调用,从A并发调用B和C,但C这条链路可能是要过了好几层才最终走到E,而B这条很快就走到E,那么现在是每个节点只要执行到了就去调用一次,还是说会做一些等待,等待其它链路也走到了E,然后只会查一次外部API,会不会做对象请求的聚合?
- 比如说用户查订单信息,再查子订单信息,再查物流信息;也可能用户直接查物流信息,会出现依赖的数据是在不同层级的吗?
- 如果从需求开始,编码,最终到系统上线,在稳定性建设方面你会有什么考量,会怎么设计,不局限于上线后怎么保证系统运行稳定性?
- 平时开发过程中,单元测试你们是怎么做的
- 你会关注单测的哪些指标,怎么样的单测可以达到提测的标准
- 接口响应值准确性是比较黑盒的测试,但单测往往会更细粒度,针对一些API编排逻辑,数据转换逻辑,这些方面你会去设计一下用例吗?
- 在0到1的过程,项目规模小,参与的人数比较少的情况,靠人为对项目核心逻辑的理解和控制台调试是可确保正确性的,但一个项目往往并不是1,2个同学维护,未来可能有新人加入,可能多人参与改动历史代码,那有没有设计基于行为的用例,代码分支覆盖率的用例,或者基于表的用例?
- 不然其他同学在接手这个项目去改动的过程是处于一个很危险的境地,因为他很难确保改动完所有行为都和之前是保持一致的,他没有参与0到1的过程,对历史包袱不够熟悉,他只能依赖这些标准化的单测跑完正确性
- 文档是你每次改完功能逻辑后就会去更新吗,怎么确保二者的一致性
- premethueus的指标采集过程是怎么样的
- 在拉模式下会有什么缺点吗?
- 系统改良方案有什么具体的例子吗?
- 批量功能性能优化,导出模块公用组件开发
- 报告压缩&预导出设计
- Log trace handler
- 在这个过程中,你会去参考一下开源实现吗,会去找一下别人是否也做过类似的事情,是纯粹的业务需求去做一些归纳总结呢,还是会去跟进一些前沿的技术?
- 那你平时会去把一些不涉及公司敏感内容的组件设计去分享吗?不管是内部分享还是开源社区?有可能某些组件是你首创的,会有这种开源让大家一起探讨,让这个组件更加完善的想法吗
- 反射我理解只是影响性能,换句话说就是占CPU,为什么会触发OOM?
- 你觉得设计模式对于我们写代码来说的意义是什么,为什么需要设计模式?
- 开闭原则在你之前的项目经历中,花这么大代码去分离实现层和抽象层,有没有带来什么好处?(单测mock,不需要改主逻辑)
- 进程,线程,协程的区别(协程这个设计在几乎所有现代语言都有,不止goroutine)
- goroutine有抢占式调度吗?
- A协程跑到一定程度,会让渡给B协程,这个是发生在什么样的时机,A让渡以后谁又负责来把B拉起来?
- 父函数往子函数传了一个context,并且在子函数里设置了context value,这个时候能否在父函数拿到这些value,原因又是什么
- channel本质上是什么东西,是怎么构造这个管道的,它是什么样的数据结构
- 代码题:两个协程交替打印0-100,到达100两个协程都结束退出
- 反问
4.9 终面
- 自我介绍
- 现在换工作的考量是什么
- 有没有让你印象特别深刻的项目
- 重点想听听你成就感的来源,以及你做了什么事
- 刚才说的这个问题,影响的用户是谁,最痛的用户是谁
- 这个问题是他们提出的,还是你们发现的
- 除了慢,还有别的问题吗
- 在过往的工作中,你觉得和上下游的团队沟通顺畅吗
- 经过前2轮的沟通,你现在是怎么理解我们这块业务的
- 目前的薪资
- 反问