大家好,希望你一切都好。今天我将分享我对初级Python工程师角色的 fynd 面试经验。希望它可以帮助您准备下一次编码面试。因此,事不宜迟,让我们开始吧。
我通过 Linkedin 工作门户申请了该职位。第二天,我接到了人力资源团队的介绍电话。我得到了有关 Fynd 的简要介绍,然后她安排了对一位拥有 5 年以上经验的高级工程师团队成员的采访。
第 1 轮:我们从介绍开始。它持续了超过90分钟。
问题概述:
从Python 的基础开始。
数据类型:
- 无类型
- 数字 -> int、float、complex、bool
- 序列类型 -> 列表、touple、str
- 映射类型 -> dict
- 设置类型 -> 设置和冻结设置(问区别)
数据库管理系统基础:
- RDBMS 和 DBMS 之间有什么区别。
- 你有没有用过 sql 数据库。它与关系数据库有何不同。使用它们有什么优点和缺点。
- 询问索引。如果我们在所有列上放置索引会发生什么。它会变得更快还是更慢?
- 要求分析数据。这是多对多关系(过程 – 配方)的一个例子。问架构。我定义了 3 个表。流程、配方和流程配方映射器。然后要求写下查询以检索所有数据。所以我使用了 django Prefetch 相关和 Select 相关的概念。他还让我用 SQL 写下查询。花了一些时间,它并不完美(因为我没有在专业经验中使用过),但是面试官明白了我想要实现的目标。
Django 基础:
- 我们讨论了 django 中简单的 HTTP 请求流。 API 调用期间发生的情况说明了流程。
简单无需使用内置函数即可轻松实现代码。 https://www.geeksforgeeks.org/reverse-words-in-a-given-string/
第二轮(任务轮):
- 任务轮次:面试官知道我有 DRF 背景。因此,为了挑战,他们要求我使用您选择的 Flask/Sanic/Fast API 框架来实现电影 API,其中包含流派、评级、导演、演员列表(仅姓名)简短的非常基本的 API。(我选择了 Sanic 和 Mongo ) 和 SQLite/Mongo 数据库。
- 没有任何具体的截止日期,但我在一个周末完成了任务。此外,我还写下了测试用例、实现了缓存、用于文档目的的 Swagger 和 Docker,并在 AWS EC2 上部署了代码。
- PS 由于我的额外努力,我被直接分配到第 4 轮,他们跳过了技术轮。基于这个经验,我给读者的建议是,如果你被赋予了一项任务,那就不要害怕。尽力而为,你不知道接下来会发生什么!至少从任务中学习最终会帮助你!
第 3 轮(技术):由于我的额外努力,他们跳过了技术轮
第4轮(首席工程师轮):我们从介绍开始。
- 他向我解释了 fynd 和即将开展的项目。
- 然后他问我 C 和Python什么区别。我回答说,一种基于功能/过程语言,另一种遵循 OOP。他笑着说这是教科书的定义!告诉我一些我不知道的事情。我尽我所能,解释了我想到的每一点。
- 然后他问我用哪种语言执行代码更快?我回答C。他又回答,这是教科书的定义,解释我怎么做!我们讨论了一些编译的操作系统概念。在 c 代码中经历了不同的阶段:链接器、汇编器、编译器,但即使在Python解释器中执行 .pyc 文件。我无法向他解释最佳答案。
- 然后作为提示,他问了我浅拷贝和深拷贝的概念。
示例代码:Python3
# code a = 5 b = 10 b = a a = 7 print(a, b)
Python3
# code a = 5 b = 7 print(id(a), id(b)) a = 5 b = 5 print(id(a), id(b))
并请我解释内存分配,我告诉 a 和 b 将分配给不同的内存分配,并且都将消耗 8 个字节(int 大小)的内存。
- 然后他问我如果我运行这个会发生什么:
蟒蛇3
# code a = 5 b = 7 print(id(a), id(b)) a = 5 b = 5 print(id(a), id(b))
PS:尝试自己得到答案!
- 然后我们讨论了一点数据库索引,规范化。
- 他还问了我 Monolith 和微服务架构之间的区别。
- 下一个问题是,当我在浏览器上写下 fynd.com 时会发生什么。我们讨论了 DNS、路由(基础)、网关和系统架构的基础。
- 编码问题:类似于滑动窗口最大值。 (需要工作代码)。
第 5 轮:基本 HR 类问题。
- 为什么要加入Fynd,你对Fynd了解多少
- 你为什么要离开你目前的组织,等等。