您现在的位置是:首页 > 技术教程 正文

【Python八股文系列】:100个Python的面试/笔试高频考点

admin 阅读: 2024-03-19
后台-插件-广告管理-内容页头部广告(手机)

Python的100个面试/笔试高频考点


本文主要整理了关于Python的面试/笔试的一些考点,可用于查漏补缺。

涉及到的一些Python进阶知识,可以查看专栏学习:《Python进阶


\quad
\quad

1. 解释型和编译型语言的区别

  • 编译型语言:把做好的源程序全部编译成二进制的可运行程序。然后,可直接运行这个程序。如:C,C++ ;
  • 解释型语言:把做好的源程序翻译一句,然后执行一句,直至结束!如:Python。

注意:Java 有些特殊,java程序也需要编译,但是没有直接编译成为机器语言,而是编译称为字节码,然后用解释方式执行字节码。

\quad
\quad

2. 简述下 Python 中的字符串、列表、元组和字典

  • 字符串(str):字符串是用引号括起来的任意文本,是编程语言中最常用的数据类型。
  • 列表(list):列表是有序的集合,可以向其中添加或删除元素。
  • 元组(tuple):元组也是有序集合,元组中的数无法修改。即元组是不可变的。
  • 字典(dict):字典是无序的集合,是由键值对(key-value)组成的。
  • 集合(set):是一组 key 的集合,每个元素都是唯一不重复无序的。

\quad
\quad

3. 简述上述数据类型的常用方法

字符串:

  1. 切片:'luobodazahui'[1:3]
  2. format:"welcome to luobodazahui, dear {name}"format(name="baby")
  3. join:可以用来连接字符串,将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串。'-'.join(['luo', 'bo', 'da', 'za', 'hui'])
  4. String.replace(old,new,count):将字符串中的 old字符替换为 New字符,count为替换的个数 'luobodazahui-haha'.replace('haha', 'good')
  5. split:切割字符串,得到一个列表
>>> mystr5 = 'luobo,dazahui good' >>> print(mystr5.split()) # 默认以空格分割 ['luobo,dazahui', 'good'] >>> print(mystr5.split('h')) # 以h分割 ['luobo,daza', 'ui good'] >>> print(mystr5.split(',')) # 以逗号分割 ['luobo', 'dazahui good']
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

列表:

  1. 切片,同字符串
  2. append和 extend向列表中添加元素
>>> mylist1 = [1, 2] >>> mylist2 = [3, 4] >>> mylist3 = [1, 2] >>> mylist1.append(mylist2) >>> print(mylist1) [1, 2, [3, 4]] >>> mylist3.extend(mylist2) >>> print(mylist3) [1, 2, 3, 4]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  1. 删除元素 del:
    1. 根据下标进行删除pop:删除最后一个元素
    2. remove:根据元素的值进行删除
>>> mylist4 = ['a', 'b', 'c', 'd'] >>> del mylist4[0] >>> print(mylist4) ['b', 'c', 'd'] >>> mylist4.pop() >>> print(mylist4) ['b', 'c'] >>> mylist4.remove('c') >>> print(mylist4) ['b']
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  1. 元素排序 sort:是将list按特定顺序重新排列,默认为由小到大,参数 reverse=True可改为倒序,由大到小。
>>> mylist5 = [1, 5, 2, 3, 4] >>> mylist5.sort() >>> print(mylist5) [1, 2, 3, 4, 5] >>> mylist5.reverse() >>> print(mylist5) [5, 4, 3, 2, 1]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  1. reverse:是将list逆置。

字典:

  1. 清空字典 dict.clear()
>>> dict1 = {'key1':1, 'key2':2} >>> dict1.clear() >>> dict1 {}
  • 1
  • 2
  • 3
  • 4
  1. 指定删除:使用 pop方法来指定删除字典中的某一项(随机的)。
>>> dict1 = {'key1':1, 'key2':2} >>> d1 = dict1.pop('key1') >>> dict1 {'key2': 2} >>> d1 1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  1. 遍历字典
>>> dict2 = {'key1':1, 'key2':2} >>> mykey = [key for key in dict2] # ['key1', 'key2'] >>> mykey ['key1', 'key2'] >>> myvalue = [value for value in dict2.values()] >>> myvalue [1, 2] >>> key_value = [(k, v) for k, v in dict2.items()] >>> key_value [('key1', 1), ('key2', 2)]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  1. fromkeys用于创建一个新字典,以序列中元素做字典的键,value为字典所有键对应的初始值。
>>> keys = ['zhangfei', 'guanyu', 'liubei', 'zhaoyun'] >>> dict.fromkeys(keys, 0) {'zhangfei': 0, 'guanyu': 0, 'liubei': 0, 'zhaoyun': 0}
  • 1
  • 2
  • 3

\quad
\quad

4. 简述 Python 中的字符串编码

计算机在最初的设计中,采用了8个比特(bit)作为一个字节(byte)的方式。一个字节能表示的最大的整数就是255,如果要表示更大的整数,就必须用更多的字节。最早,计算机只有 ASCII 编码,即只包含大小写英文字母、数字和一些符号,这些对于其他语言,如中文,日文显然是不够用的。后来又发明了Unicode,Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。UTF-8 是隶属于 Unicode 的可变长的编码方式

在 Python 中,以 Unicode 方式编码的字符串,可以使用 encode() 方法来编码成指定的 bytes,也可以通过 decode()方法来把 bytes编码成字符串。

>>> "你好".encode('utf-8') b'\xe4\xbd\xa0\xe5\xa5\xbd' >>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8') "你好"
  • 1
  • 2
  • 3
  • 4

\quad
\quad

5. 一行代码实现数值交换

>>> a, b = 1, 2 >>> a, b = b, a >>> print(a, b)
  • 1
  • 2
  • 3

\quad
\quad

6. is 和 == 的区别

==是比较操作符,只是判断对象的(value)是否一致,而 is 则判断的是对象之间的身份(内存地址)是否一致。对象的身份,可以通过 id() 方法来查看。

>>> c = d = [1, 2] >>> e = [1, 2] >>> print(c is d) True >>> print(c == d) True >>> print(c is e) False >>> print(c == e) True
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

只有 id一致时,is比较才会返回 True,而当 value一致时,== 比较就会返回 True。

\quad
\quad

7. Python 函数中的参数类型

位置参数,默认参数,可变参数,关键字参数。

\quad
\quad

8. *arg 和 **kwarg 作用

允许我们在调用函数的时候传入多个实参

>>> def test(*arg, **kwarg): ... if arg: ... print("arg:", arg) ... if kwarg: ... print("kearg:", kwarg) ... >>> test('ni', 'hao', key='world') arg: ('ni', 'hao') kearg: {'key': 'world'}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

可以看出,*arg 会把位置参数转化为 tuple,**kwarg 会把关键字参数转化为 dict。

\quad
\quad

9. 获取当前时间

>>> import time >>> import datetime >>> print(datetime.datetime.now()) 2022-09-12 19:51:24.314335 >>> print(time.strftime('%Y-%m-%d %H:%M:%S')) 2022-09-12 19:51:24
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

\quad
\quad

10. PEP8 规范

简单列举10条:

  1. 尽量以免单独使用小写字母’l’,大写字母’O’,以及大写字母’I’等容易混淆的字母。
  2. 函数命名使用全部小写的方式,可以使用下划线。
  3. 常量命名使用全部大写的方式,可以使用下划线。
  4. 使用 has或 is前缀命名布尔元素,如: is_connect = True; has_member = False。
  5. 不要在行尾加分号,也不要用分号将两条命令放在同一行。
  6. 不要使用反斜杠连接行。
  7. 方法定义之间空1行,顶级定义之间空两行。
  8. 如果一个类不继承自其它类,就显式的从object继承。
  9. 内部使用的类、方法或变量前,需加前缀_表明此为内部使用的。
  10. 要用断言来实现静态类型检测。

\quad
\quad

11. Python 的深浅拷贝(

标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

在线投稿:投稿 站长QQ:1888636

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索
排行榜