1. 简要描述 GIL 对 Python 性能的影响
- #GIL 本质就是一把互斥锁, 既然是互斥锁, 所有互斥锁的本质都一样, 都是将并发运行变成串行,
- # 以此来控制同一时间内共享数据只能被一个任务所修改, 进而保证数据安全有了 GIL 的存在, 同一时刻同一进程中只有一个线程被执行
- # 但是对于计算来说 cpu 越多越好, 由于 GPL 的存在, 我们无法利用多核优势, 对于计算来说 GPL 存在影响了一定的性能
- # 但是我们大多数情况下都是 I/O 比较多, 对于 I/O 来说再多的 CPU 有没有用, 所以在 I/O 比较多的情况下, GPL 对 Python 的性能影响较小
2.Python 斐波那契数列 1,2,3,5,8,13,21...... 根据这样的规律, 编程求出 400 万以内的最大斐波那契数列?
- def fib_n(n):
- a, b = 0, 1
- result = []
- for i in range(n):
- result.append(b)
- a, b = b, a+b
- return result
- res=fib_n(40000000)
- print(res)
3. 要求一段代码, 实现两个字典相加, 不同的 key 对应的值保留, 相同的 key 对应的值相加后保留, 如果是字符串就拼接
- a={a:1,b:2,c:3,d:4,f:hello}
- b={b:3,d:5,e:7,m:8,m:word}
- # 要求一段代码, 实现两个字典相加, 不同的 key 对应的值保留, 相同的 key 对应的值相加后保留, 如果是字符串就拼接
- for k in a:
- if k in b:
- b[k]=a[k]+b[k]
- else:
- b[k]=a[k]
- print(b)
4. 从输入一个 url 到展示页面经历了什么
输入地址
浏览器查找域名的 IP 地址
浏览器向 web 服务器发送一个 HTTP 请求
服务器的永久重定向响应
浏览器跟踪重定向地址
服务器处理请求
服务器返回一个 HTTP 响应
浏览器显示 html
浏览器发送请求获取嵌入在 HTML 中的资源 (如图片音频视频 CSSJS 等等)
5.http 状态码有什么用, 列出 你知道的状态码, 然后都讲出他们表示什么意思?
http://tool.oschina.net/commons?type=5
6.python 主要数据类型有哪些, 那些是可变的, 那些是不可变的?
- # 数字 不可变类型
- # 字符串 不可变类型
- # 列表 可变类型
- # 元祖 不可变类型
- # 字典 可变类型
- # 集合 可变类型
7. 什么是可变数据类型, 什么是不可变数据类型?
可变类型: 在 id 不变的情况下, value 可以变
# 在 Python 中如何抛出, 捕获处理异常
可变类型: value 一旦改变, id 也改变, 则称为不可变类型 (id 变, 意味着创建了新的内存空间)
8. 在 Python 中如何抛出, 捕获处理异常
- #raise 关键字: 手动抛出一个通用的异常类型 (Exception)
- # 捕获异常 try..except..else
9. 详细说说 list,tuple,dict, 的用法, 特点
- #1.list, 有序 可变数据类型
- # 切片,
- # 追加 append,
- # 删除 pop , remove ,
- # 长度 len,
- # 包含 in,
- # 插入 insert
- # 列表链接 extend
- # 清空 clear
- # 赋值 copy
- # 倒置 reverse
- #tuple 不可变数据类型 可做字典的 key 有序
- # 方法和 list 差不多
- # 字典 无序 可变数据类型
- # 取 dic[a]=aa get
- #pop:key 存在则弹出值, 不存在则返回默认值, 如果没有默认值则报错
- # 删除 pop() popitem()
- ## print(info_dic.keys())
- # print(info_dic.values())
- # print(info_dic.items())
- # 长度 len
- # 包含 in
- #update 有就更新 没有就添加
- #setdefault:key 不存在则设置默认值, 并且放回值默认值
- #fromkeys
- # d=info_dic.fromkeys((name,age,sex),None)
- # print(d)
- # d1=dict.fromkeys((name,age,sex),None)
- # d2=dict.fromkeys((name,age,sex),(egon,18,male))
- # print(d1)
- # print(d2)
10.python 是如何进行内存管理的?
https://www.cnblogs.com/wangyuhangboke/p/7802253.html
python 内部使用引用计数, 来保持追踪内存中的对象, Python 内部记录了对象有多少个引用, 即引用计数, 当对象被创建时就创建了一个引用计数, 当对象不再需要时, 这个对象的引用计数为 0 时, 它被垃圾回收
11.python 的程序会内存泄露吗? 说一说怎么方面阻止或检测内存泄露?
http://www.jb51.net/article/64745.htm
12 关于 Python 程序的运行性能方面, 有什么手段能提升性能?
- #1. 让关键代码依赖于外部包
- #2. 排序时使用键 (key)
- #3. 优化循环
- #4. 使用较新版本的 Python
- #5. 尝试多种编码方法
- #6. 交叉编译应用程序
- http://www.jb51.net/article/63166.htm
13. 简单实现一个 stack
- # 堆栈: 先进后出, 后进先出
- # l=[]
- # #入栈
- # l.append(first)
- # l.append(second)
- # l.append(third)
- # #出栈
- # print(l)
- # print(l.pop())
- # print(l.pop())
- # print(l.pop())
14. 输入某年某月某日判断这一天是这一年的第几天
year=int(input(请输入年:))
month=int(input(请输入月:))
day=int(input(请输入天:))
- sum=day
- days = [31,28,31,30,31,30,31,31,30,31,30,31]
- i=0
- if ( year%4 == 0 and year%100 != 0) or (year%400 == 0):
- days[1] = 29
- while i< month-1:
- sum=sum+days[i]
- i+=1
print(这一天是该年的第, sum, 天)
15. 如何删除一个 list 中的元素, 如何删除 dict 中的一对 kv
- a=[1,2,3,4,5]
- # a.pop(1)
- # print(a)
- # a.remove(3)
- # print(a)
- d={a:1,b:2,c:3}
- print(d.popitem())
- print(d)
16. 如何查找字符串中的特定字符? Find() 和 index 有什么不同?
- s=dssadughsgg
- #print(s.find(e))#-1
- #find 找到查找字符的位置, 找不到就返回 - 1
- print(s.index(v))# 找不到就报错
17.Python 常用的第三方库
http://blog.csdn.net/qq_33610643/article/details/53444130
来源: http://www.bubuko.com/infodetail-2499407.html