2019 第一次面试

2019 第一场面试

1.格式化当前时间

1
2
import datetime
datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")

2.单例模式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 方法一:类属性
class Singleton(object):
def __new__(cls, *args, **kwargs):
if not hasattr(cls, "_instance"):
cls._instance = super(Singleton, cls).__new__(cls)
return cls._instance

# 方法二:共享属性
class Singleton(object):
_state = {}
def __init__(self, name):
self.name = name

def __new__(cls, *args, **kwargs):
obj = super(Singleton, cls).__new__(cls)
obj.__dict__ = cls._state
return obj

# 方法二:装饰器
def singleton(cls):
instance = {}
def function(*args, **kwargs):
if cls not in instance:
instance[cls] = cls(*args, **kwargs)
return instance[cls]
return function

@singleton
class Foo(object):
def __init__(self,name):
self.name = name

3.整形和字符串类型转换

1
2
i = int("1")
s = str(12)

4.使用匿名函数反转字符串

1
2
3
4
5
6

string = "abcd"
reverse = lambda s : s[::-1]
string = reverse(string)
reverse2 = lambda s: "".join(reversed(s))

5.介绍面向对象

  1. 面向对象的三个特点:封装, 继承,多态
    1.1 封装: 吧客观事物封装成抽象的类
    1.2 继承: 可以使用现有的类的所有功能,而不需要重新实现,并且可以对这些功能进行扩展。python 新式采用广度优先搜索 旧式类使用深度优先搜索。
    1.3 多态:基于对象所属类的不同,外部对同一个方法的调用,实际执行的逻辑不同。实现多态,有二种方式,覆盖,重载。覆盖,是指子类重新定义父类的虚函数的做法。重载,是指允许存在多个同名函数,而这些函数的参数表不同。

6.python 获取路径下的文件目录

1
2
3
import os
os.chdir("\\")
os.listdir()

7.如何发起HTTP请求

1
2
3
4
5
import qeruests
url = "http://www.baidu.com"
params = {}
contens = requests.get(url, params = params)

8. python 实现常量

http://www.malike.net.cn/blog/2013/11/03/python-constants/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# python2
class _const:
class ConstError(TypeError):
pass

def __setattr__(self, name, value):
if self.__dict__.has_key(name):
raise self.ConstError, "Can't rebind const instance attribute (%s)" % name
self.__dict__[name] = value

import sys
sys.modules[__name__] = _const()

import const
const.magic = 23

9.想不起来了。。。