Rust 面试经典题,这把稳稳拿 offer!

2021-10-13 11:48:18 +08:00
 ITrecruit1
当下逐渐热门的新兴职位之一就是 Rust 开发工程师了吧,那么什么 Rust 语言,它有哪些神奇的魔力呢?面试 Rust 工程师有需要准备什么呢?让我们一起来看一下吧~


Rust 是由 Mozilla 主导开发的通用、编译型编程语言。设计准则为“安全、并发、实用”,支持函数式、并发式、过程式以及面向对象的编程风格。第一个有版本号的 Rust 编译器于 2012 年 1 月发布。Rust 1.0 是第一个稳定版本,于 2015 年 5 月 15 日发布。


Rust 是在完全开放的情况下进行开发,并且相当欢迎社区的反馈。在 1.0 稳定版之前,语言设计也因为透过撰写 Servo 网页浏览器排版引擎和 rustc 编译器本身,而有进一步的改善。


01 Rust 可以用来做什么?

Rust 语言是一种高效、可靠的通用高级语言。其高效不仅限于开发效率,它的执行效率也是令人称赞的,是一种少有的兼顾开发效率和执行效率的语言。其基本特性如下:


高性能
Rust 速度惊人且内存利用率极高。由于没有运行时和垃圾回收,它能够胜任对性能要求特别高的服务,可以在嵌入式设备上运行,还能轻松和其他语言集成。


可靠性
Rust 丰富的类型系统和所有权模型保证了内存安全和线程安全,让您在编译期就能够消除各种各样的错误。


生产力
Rust 拥有出色的文档、友好的编译器和清晰的错误提示信息, 还集成了一流的工具 —— 包管理器和构建工具, 智能地自动补全和类型检验的多编辑器支持, 以及自动格式化代码等等。


因此,Rust 语言可以用于开发:

传统命令行程序

Rust 编译器可以直接生成目标可执行程序,不需要任何解释程序。

Web 应用

Rust 可以被编译成 WebAssembly,WebAssembly 是一种 JavaScript 的高效替代品。

网络服务器

Rust 用极低的资源消耗做到安全高效,且具备很强的大规模并发处理能力,十分适合开发普通或极端的服务器程序。

嵌入式设备

Rust 同时具有 JavaScript 一般的高效开发语法和 C 语言的执行效率,支持底层平台的开发。


02 如何使用 Rust ?


Rust 的编译工具依赖 C 语言的编译工具,这意味着你的电脑上至少已经存在一个 C 语言的编译环境。如果你使用的是 Linux 系统,往往已经具备了 GCC 或 clang 。如果你使用的是 macOS,需要安装 Xcode 。

如果你是用的是 Windows 操作系统,你需要安装 Visual Studio 2013 或以上的环境(需要 C/C++ 支持)以使用 MSVC 或安装 MinGW + GCC 编译环境。

Rust 支持很多的集成开发环境( IDE )或开发专用的文本编辑器。

官方网站公布支持的工具如下( https://www.rust-lang.org/zh-CN/tools ):



03 面试 Rust 会问些什么?


先来看一下 Rust 面试经典六道题:

1. RwLock<T> 对想要在多线程下正确使用,T 的约束是?

2. 如下代码:

trait A{ fn foo(&self) -> Self; }
Box<Vec<dyn A>>


是否可以通过编译?为什么?

3. Clone 与 Copy 的区别是什么?

4. deref 的被调用过程?

5. Rust 里如何实现在函数入口和出口自动打印一行日志?

6. Box<dyn (fn()="" +="" send="" +'static)="">是什么意思?


除了对于语言本身的一些探讨,有的面试官也会对一些软技能进行交流。



1. 你为什么学 Rust ?
2. 你是如何学习 Rust 的?
3. 你认为 Rust 语言是否优雅?
4. 你认为 Rust 语言解决了什么问题?
5. 你能否对 Rust 所有权进行一个简单的总结?。
6. 你如何看待 Unsafe Rust ?
7. Rust 和你目前使用的语言有什么区别?各有什么优劣?


好了这就是本期关于 Rust 面试的文章了,欢迎大家多多评论、多多转发~
1459 次点击
所在节点    推广
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/807514

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX