流程
电话面试:尽可能形象,敢于确认细节
共享桌面远程面试:理清思路、良好的代码风格、进行单元测试、调试能力
现场面试:
- 行为面试:准备项目经验
- 技术面试:基础知识、高质量代码、清晰的思路、优化效率的能力、优秀的综合能力
- 提问环节:准备与职位或者项目相关的问题
基础知识
编程语言
概念理解
实现
空间、时间复杂度
- 官方文档 https://docs.python.org/zh-cn/3.6/reference/
- python cookbook
- 流畅的 python
问题
个人对 Python 比较熟悉,以下均为 Python 分析解法
赋值运算符函数
1 | 题目:如下为类型CMyString的声明,请为该类型添加赋值运算符函数。 |
Python 支持操作符重载 operator overloading。
网上有人总结如下,一言以蔽之就是只能重载部分现有的运算符。
- 不能重载内置类型的运算符
- 不能新建运算符,只能重载现有的
- 某些运算符不能重载 例如 is, and, or 和 not(不过位运算符&、|和~可以)
#todo: 研究元类、类创建过程中的微妙细节
正确性
异常安全性
实现 Singleton 模式
1 | 题目:设计一个类,我们只能生成该类的一个实例 |
单例模式:单例对象的类必须保证只有一个实例存在。
思路:核心就是需要保存唯一的实例,并在第一次调用后找到该实例返回。
解法一:
利用导入模块只运行一次的特性,将该类写在一个 module 中,通过 import 该实例使用。
解法二:
使用装饰器,将该实例保存在该类的环境中。
解法三:
将该实例存在类的变量空间中
解法四:
使用元类,将该实例保存在元类的变量空间中
#todo: 熟悉类创建流程
#todo:学习设计模式