项目概览
- 目标:搭建一个支持秒杀(Spike)的后端购物系统,聚焦 Go 后端常见能力:API 设计、数据库交互、缓存、消息队列与高并发实战。
- 定位:教学与练习项目,仅后端 API(可用 Postman/HTTPie/k6 进行验证与压测)。
- 技术栈:Go、Gin、PostgreSQL、Redis、RabbitMQ、JWT、OpenTelemetry、Docker。
- 规模:小型;建议 2-4 周完成(每天 1-2 小时)。
Rust 最核心的特性之一是 所有权(Ownership)。
请你用自己的话解释一下什么是所有权,以及它和借用(Borrowing)、生命周期(Lifetime)之间的关系。
所有权规则: rust中的每一个值都被一个变量拥有,且只能有一个拥有者,当拥有者离开作用域时,这个值会被drop;
借用:分可变和不可变引用;可同时有多个不可变引用,或一个可变引用,但不能混用;
生命周期(Lifetime)
Rust 编译器用“生命周期”来静态检查引用的有效性,确保不会出现悬垂引用。比如函数返回引用时,编译器需要知道这个引用和输入值的生命周期关系。
移动与拷贝
当所有权转移(move)时,旧变量就不能再使用该值;如果类型实现了 Copy trait,才会发生按值拷贝而不是移动。
本文是个人在业务开发过程中,针对由C++实现的FTP协议,重构至Rust语言,重新做一个更加清晰,简洁的分层架构设计的设计思路记录和讲解。
Rust相对于C++是一门更加现代化的编程语言,首先它具备和C/C++几乎接近的性能,其次它更大的的有个优势在于它是一门将内存安全做到编译阶段的语言。这样既避免了运行时GC带来的额外性能开销,其次也消除了开发者对于手动管理内存的焦虑。
另外,Rust具备更加活跃的社区,有强大的包管理生态,更多的零成本语言抽象,使得你在做复杂的项目时有丰富的手段来完成功能的实现。
夸克一面问题还是非常多的,大部分都是比较底层一点的基础知识,由于我的项目里面提到了网络协议,Binder机制、没想到这个团队就是做这些的,听面试官讲,这个部门主要是做网络库封装,arkts到移动端的native binding能力,程序冷启动优化等业务。因为个人项目经历和投递岗位重合度比较高,面试官疯狂提问,有些东西都太久远了,我都快记不得了😒😒😒。
本轮面试大大小小共计30个问题,已完成所有问题答案的梳理和更新,有错误欢迎在评论区指出!
负麦夸克鸿蒙/安卓客户端核心功能模块的设计与开发,保障业务性能与稳定性。
优化鸿蒙移动端用户体验,通过技术手段提升交互流畅度与资源利用率。参与技术基础设施建设,推动研发流程标准化与工具链优化。
岗位要求