Python相关面经2(末尾配资源)

1.ascii、Unicode、utf-8、gbk的区别
  • ascii 是最早美国用的标准信息交换码,把所有的字母的大小写,各种符号用 二进制来表示,共有256中,加入些拉丁文等字符,1bytes代表一个字符
  • Unicode是为了统一世界各国语言的不用,统一用2个bytes代表一个字符,可以表达2^16=65556个,称为万国语言,特点:速度快,但浪费空间
  • utf-8 为了改变Unicode的这种缺点,规定1个英文字符用1个字节表示,1个中文字符用3个字节表示,特点;节省空间,速度慢,用在硬盘数据传输,网络数据传输,相比硬盘和网络速度,体现不出来的

gbk  是中文的字符编码,用2个字节代表一个字符

2.三元运算编写格式

表达式1 if 布尔表达式2 else 表达式3

例如:a=3 if 3 > 4 else 5

3.列举字符串、列表、元组、字典每个常用的5个方法
  • 字符串---字符串方法总结
    1. strip() ->去掉字符串两端的空白符
    2. split() ->对字符串进行分割,默认按照空格分割
    3. join() ->字符串连接
    4. startwith(),endwith() ->判断是否以啥开头或者结尾
    5. replace() -> 字符串替换
    6. find() -> 查找字符串,存在返回第一个索引,不存在返回-1
  • 列表---列表方法总结
    1. count() ->统计在列表中出现的个数
    2. apped() ->在列表末尾添加值
    3. pop() ->删除一个对象,默认最后一个
    4. remove() ->删除指定的第一个匹配项
    5. insert() ->插入对象
    6. index() ->获取索引
  • 元组
    1. count() ->统计在元组中出现的个数
    2. index() ->获取索引
  • 字典
    1. keys() ->获取所有的键
    2. pop() ->删除指定的键的键值对
    3. popitem() ->随机删除一个键值对
    4. update() ->更新字典,参数为一个字典,如果键已存在,则更改,不存在则添加
    5. setdefault() ->如果键存在则,返回该键对应的值,如果不存在,设置该键为设置的默认值,然后返回该键对应的值
    6. get() ->返回键对应的值
    7. fromkeys() ->创建字典,第一个参数为可迭代对象,每个值变成字典的键,第二个参数为每个键的默认值
4.什么是断言(assert)?应用场景?

断言的参考

  • assert是用来检查一个条件,如果它为真,就不做任何事。如果它为假,则会抛出AssertError并且包含错误信息。
  • 应用场景:
    1. 防御型编程
    2. 运行时检查程序逻辑
    3. 检查约定
    4. 程序常量
    5. 检查文档
5.解决哈希冲突的算法有哪几种?分别有什么特点?

哈希冲突参考 1. 开放定址法 2. 再哈希法 3. 链地址法 4. 建立公共溢出区

6.简述python字符串的驻留机制

python字符串驻留机制参考文档

  • 相同对象的引用都指向内存中的同一个位置,这个也叫python的字符串驻留机制
  • python的引用计数机制,并不是对所有的数字,字符串,他只对”[0-9][a-z][A-Z] 和"_"(下划线)  ”有效“,当字符串中由其他字符比如“! @ # ¥ % -”时字符驻留机制是不起作用的。
7.描述以下字典的items()方法和iteritems()方法有啥不同?
  • 字典的items方法作用:是可以将字典中的所有项,以列表方式返回。因为字典是无序的,所以用items方法返回字典的所有项,也是没有顺序的。
8.介绍一下try except的用法和作用?
  • 主要用来处理异常
  • 完整用法如下:
  1. :
         Normal execution block
    except A:
         Exception A handle
    except B:
         Exception B handle
    except:
         Other exception handle
    else:
         if no exception,get here
    finally:
         print("finally")   
9.关于Python程序的运行方面,有什么手段能提升性能?
  1. 使用多进程,充分利用机器的多核性能
  2. 对于性能影响较大的部分代码,可以使用C或C++编写
  3. 对于IO阻塞造成的性能影响,可以使用IO多路复用来解决
  4. 尽量使用Python的内建函数5、尽量使用局部变量
10.什么是闭包
  • 在函数中可以(嵌套)定义另一个函数时,如果内部的函数引用了外部的函数的变量,则可能产生闭包。闭包可以用来在一个函数与一组“私有”变量之间创建关联关系。在给定函数被多次调用的过程中,这些私有变量能够保持其持久性。
  • 内部函数使用了外部函数的变量,就相当于闭包
    def func1():
    a=1
    def inner():
        return a
    return inner
    print(func1()())
11.简述生成器,迭代器,装饰器以及应用场景

参考链接

  1. 迭代器对象实现了iter()方法
  2. 迭代器实现了iter()和next()方法,迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束
  3. 生成器是迭代器的一种,一个函数调用时返回一个迭代器,这个函数就叫生成器。通常带有yield
  4. 装饰器是一个以函数作为参数,并返回一个替换函数的可执行函数,是闭包的一种应用。通常用来给一个函数添加功能
12.生成器与函数的区别?
  • 生成器和函数的主要区别在于函数 return a value,生成器 yield a value同时标记或记忆point of the yield 以便于在下次调用时从标记点恢复执行。 yield 使函数转换成生成器,而生成器反过来又返回迭代器。 ```python # 简单实现生成器 def dec(): n=0 for i in range(10): yield n n+=i

for i in dec(): print(i) ```

13.是否使用过functools中的函数?他的作用是什么?
  1. functools.wraps()
    • 在装饰器中用过,如果不使用wraps,则原始函数的__name__和__doc__的值就会丢失
  2. functools.reduce()
    • 第一个参数是一个函数,第二个参数是一个可迭代对象,代码如下:
    • 下面代码相当于从1加到9
      from functools import reduce
      a=reduce(lambda x,y:x+y,range(10))
      print(a)

http://t.csdnimg.cn/OYwt7icon-default.png?t=N7T8http://t.csdnimg.cn/OYwt7链接:https://pan.baidu.com/s/1g5Ompkh4_E-Zb3j7X6GVhg?pwd=cvcz 
提取码:cvcz 
--来自百度网盘超级会员V4的分享

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

好事(花生)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值