估计是一次终身难忘的Rust面试
面试官很强, 也很有耐心, 整场下来学习到很多东西。
- 闲聊环节
- 笔试题: 线程池(基本的逻辑 + 能理解Trait Object, Dynamic Dispatch)
- LSM-Tree项目中有用到线程池吗?
- LSM-Tree项目中哪些环节可以用后台线程池提高并发度?
- LSM-Tree项目中的Batch优化怎么做的?
- 如果我对在同一个Batch里面对同一个key进行put和del(),会抵消吗?
- LSM-Tree项目中写文件(磁盘)有优化吗?
- Compaction过程如何提高并发度?
- 多个线程同时做Compaction会不会压缩到同样的文件造成冲突?
反问环节
Q1:一个优秀的Rust工程师该有的技术栈/资质
(面试官说, 最基本的还是一个开发所需要具备的技能, 不拘泥于语言)
①语言基础: 官方书籍涵盖了很多主题了, 完整看下来就基础了。
②工程方面: 对技术有兴趣,某个点肯深入钻研,然后得动手自己多去试。
Q2:面试下来, 我可以提高的点
①并发编程可以提高,多开阔视野些。
比如要拓展LSM-Tree项目, 可以增加对Redis协议的支持和Async异步调用方法。
做成一个K-v Server, 另外可以把数据底座迁移到OSS对象存储上, 做成一个对外服务。
②自己要有技术沉淀,比如线程池有些的crate实现,有些就几百行,可以多学多看。
然后自己一定要多动手写。(ps: 我感觉自己还是写的太少了, 哎!)
Q3:问面试官每天学习新技术的情况
基于业务/场景挑战会学新知识, 然后每天用到的库会去看源码。其余时间: 写文档(很重要), 写代码.
意料之外的环节:
面试官插问: 你之前是不是有给我们项目提过一个PR?
我: 您怎么知道的? (ps:我当时在大三上的期末,懒得复习课内知识, 想找点开源项目玩
就看到这个项目很有意思, 然后几天之内试着提了一个PR, 里面的mentor给了我反馈意见,
但我考完试之后回家就想着玩去了, 这个PR最后没合进去, 我当时已经蚌埠住了...)
面试官: 我看了你的Github账号, 我们这边有历史记录的哈, 后面怎么没继续推进下去呢?
我: (⊙﹏⊙), 我感觉我重构的那部分对我来说还是有点复杂, 想多沉淀下再来挑战。
面试官: 你如果遇到问题可以直接跟我们交流的, 会有人及时应答的。
我: 好的.. [ 惨痛教训:以后玩开源提PR, 要有慎重如始的意识, 不要半途跑路了]
#我的实习求职记录##如何判断面试是否凉了##牛客解忧铺##牛客在线求职答疑中心##24届软开秋招面试经验大赏#