工作经验算上实习1年多,外包公司,员工各种离职,项目越做越难,工资不涨怒而离职。目前陷入找工作的泥潭,记录一些知识点的不足来督促自己吧。
2018/5/29 zn公司 : 很棒的公司,环境好,员工都是年轻人,大牛很随和,问了很多题目,回答上来一部分,还答错了一部分。
1、多个装饰器调用时先后关系
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
def decoratora(func): print 'decorator_a start' def wrapper(): print 'in the wrapper_a' func() return wrapper def decoratorb(func): print 'decorator_b start' def wrapper(): print 'in the wrapper_b' func() return wrapper @decoratora @decoratorb def test(): print 'in the func' |
不进行调用test 此时结果:
先调用decoratorB 再调用decoratorA
接着加上 test()
这里就有点迷糊了。为啥先调用wrapper_a呢,再加一点代码就看清楚了
https://blog.csdn.net/jyhhhhhhh/article/details/54627850 这里有帖子说的很清楚了。
2、定时任务
crontab -l 查看 -e 编辑 -r 删除所有
***** 执行命令
这里分别指 分 时 日 月 周
其中*表示全部 ,表示和 -表示一个时间段 /n 隔一段时间(n的时间)
crontab真实文件放在 /var/spool/cron 目录下可以写一个文件通过crontab命令来调用 不能直接修改文件
3、python2和python3的区别
3.1 print()
3.2 raw_input与input合并为input
3.3可以使用中文作为变量名
4、序列化
这里是把内存的运行数据保存下来 模块是pickle pickle.dumps 和 pickle.load
josn 也是有这两个方法用法相同
5、生成器和迭代器区别
迭代器是一个实现了迭代器协议的对象,例如
it=range(2)
ite=iter(it)
ite.next()
生成器是迭代器的一种,是使用yield语句快速生成的迭代器,把一个普通函数变成生成器,每次执行到yield都会停止,调用next继续执行。
6、树的遍历 前序中序后序
前序遍历:根节点 左节点 右节点
中序遍历:左节点 根节点 右节点
后序遍历:左节点 右节点 根节点
7、字符串找最大相同
这里的思路是创建一个二维数组来保存相同位置的状态

#coding:utf-8
def getLongestString(str1,str2):
len1=len(str1)
len2=len(str2)
record=[[0 for i in range(len2+1)] for j in range(len1+1)]
print record
maxNum=0 #最长匹配长度
p=0 #匹配起始位
for i in range(len1):
for j in range(len2):
if str1[i]==str2[j]:
record[i+1][j+1]=record[i][j]+1
if record[i+1][j+1]>maxNum:
maxNum=record[i+1][j+1]
p=i
return str1[p-maxNum:p],maxNum
if __name__ == '__main__':
str1='abcefghijk'
str2='dasdghijad'
res=getLongestString(str1,str2)
print res
结果
8、网络结构
问了一个问题,在浏览器输入百度的网址,到显示百度的页面为止,数据是怎么工作的。
首先要明确网络的七层协议:应用层 表示层 传输层 会话层 网络层 数据链路层 传输层 数据被一层层传输,传到服务器,然后再返回数据包,浏览器进行解析,打开网页。
1.DNS解析 根据输入的域名进行解析到服务器的具体地址。这里浏览器会有缓存,如果没有则发出DNS请求到DNS服务器。
2.发出TCP请求 这里的重点是三次握手(具体参数)
3.http请求
4.负载均衡 将自己ip的请求分配到服务器上
5.浏览器渲染