剑指笔记

流程

电话面试:尽可能形象,敢于确认细节
共享桌面远程面试:理清思路、良好的代码风格、进行单元测试、调试能力
现场面试:

  • 行为面试:准备项目经验
  • 技术面试:基础知识、高质量代码、清晰的思路、优化效率的能力、优秀的综合能力
  • 提问环节:准备与职位或者项目相关的问题

基础知识

编程语言

概念理解
实现
空间、时间复杂度

问题

个人对 Python 比较熟悉,以下均为 Python 分析解法

赋值运算符函数

1
2
3
4
5
6
7
8
9
10
题目:如下为类型CMyString的声明,请为该类型添加赋值运算符函数。
class CMyString
{
public:
CMyString(char *pData=NULL);//构造函数
CMyString(const CMyString& str);//拷贝构造函数
~CMyString();//析构函数
private:
char* m_pData;//数据域,字符指针
};

Python 支持操作符重载 operator overloading。
网上有人总结如下,一言以蔽之就是只能重载部分现有的运算符。

  • 不能重载内置类型的运算符
  • 不能新建运算符,只能重载现有的
  • 某些运算符不能重载 例如 is, and, or 和 not(不过位运算符&、|和~可以)

#todo: 研究元类、类创建过程中的微妙细节
正确性
异常安全性

实现 Singleton 模式

1
2
3
4
题目:设计一个类,我们只能生成该类的一个实例
扩展:定义一个 President 基类,从该类继承出的
FrenchPresident 和 AmericanPresident 等
类型都只能产生一个实例。

单例模式:单例对象的类必须保证只有一个实例存在。
思路:核心就是需要保存唯一的实例,并在第一次调用后找到该实例返回。

解法一:
利用导入模块只运行一次的特性,将该类写在一个 module 中,通过 import 该实例使用。
解法二:
使用装饰器,将该实例保存在该类的环境中。
解法三:
将该实例存在类的变量空间中
解法四:
使用元类,将该实例保存在元类的变量空间中

#todo: 熟悉类创建流程

#todo:学习设计模式

坚持原创技术分享,您的支持将鼓励我继续创作!