hello大家好,我是小π,
2020年了
相信在座的各位留学生已经很清楚
Python的重要性了
“年薪百万”“Sponsor+1”“加州敲门砖”
这个词已经带有太多tag
那么Python学到什么程度可以面试工作呢?
小π给大家找来了最新的
2019年Python最常见面试题解析
当你发现这些题你差不多都能回答上来
那你求职就完全不用慌了
本文干货来自CSDN学院
链接在这里:
原贴有129道题
小π这里只整理了20道题贴出来
感兴趣的朋友记得去看原贴哦
1.列出 5 个常用 Python 标准库?import os # 操作系统接口 示例:os.system('ls')
import sys # 命令行参数 示例:sys.path
import re # 正则模块 示例:re.match('www', 'http://www.zhihu.com ')
import math # 数学模块 示例:math.cos(math.pi / 3)
import time # 日期模块 示例:time.sleep(3)
import random # 随机数模块 示例:random.random()
import threading # 线程模块 示例:threading.Thread(target=lambda a, b:a.append(b), args=([1, 2], 3))
import multiprocessing # 进程模块 示例:multiprocessing.Process(target=method, args=([1, 2], 3)) # pickle模块不能序列化lambda,需要自定义函数
2. Python的内建数据类型有哪些?# 数值型--int、float、complex
# 布尔型--bool
# 字符串--str
# 列表--list
# 元组--tuple
# 字典--dict
3. 简述 with 方法打开处理文件帮我们做了什么?with 语句适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的“清理”操作,释放资源,比如文件使用后自动关闭、线程中锁的自动获取和释放等。
with语句即“上下文管理器”,在程序中用来表示代码执行过程中所处的前后环境 上下文管理器:含有__enter__和__exit__方法的对象就是上下文管理器。
__enter__():在执行语句之前,首先执行该方法,通常返回一个实例对象,如果with语句有as目标,则将对象赋值给as目标。
__exit__():执行语句结束后,自动调用__exit__()方法,用户释放资源,若此方法返回布尔值True,程序会忽略异常。
使用环境:文件读写、线程锁的自动释放等。
4. Python的可变和不可变数据类型?# 不可变数据类型:即数据被创建之后,数据的值将不再发生改变,有数值、字符、元祖类型。
# 可变数据类型:数据别创建之后,数据的值可以发生变化,有列表、字典、集合类型。
5.Python 获取当前日期?import datetime
print(datetime.datetime.now())
6.统计字符串每个单词出现的次数# coding:utf-8
def word_amount(sentence):
"""计算句子的单词数量
计算句子中的单词数量,并返回结果字典
:param sentence: 句子对象
:return: 计算结果字典
"""
# 使用split()方法切割句子
split_list = sentence.split()
dict_result = {}
# 遍历列表,判断每个值是否在新字典的键中,如果存在则键值加一,不存在设为1
for word_name in split_list:
if word_name not in dict_result.keys():
dict_result[word_name] = 1
else:
dict_result[word_name] += 1
return dict_result
if __name__ == '__main__':
sentence = "I can because i think i can"
dict_result = word_amount(sentence)
print(dict_result)
7. 用 python 删除文件和用 linux 命令删除文件方法# Python方法
import os
os.remove("demo.txt")
# linux方法
rm demo.txt
8. 写一段自定义异常代码?# coding:utf-8
def judge_value(num_value):
"""自定义异常函数
自定义异常函数,用于抛出大于一定值的异常
:param num_value:用于判断的值
:return:异常信息
"""
if num_value > 10:
# raise用于抛出自定义异常,格式为:raise 异常类型(异常注明)
# 一旦触发则不再执行raise之后的代码
raise ValueError("数量不能大于10")
else:
return "200"
if __name__ == '__main__':
judge_value(10)
9. 举例说明异常模块中 try except else finally 的相关意义# coding:utf-8
def read_filedata(file_name):
"""读取文件数据
读取指定文件中的所有数据,返回数据或者异常信息
:param file_name: 文件路径
:return: 文件数据或者异常信息
"""
file_obj = ""
try:
# 需要检测的异常代码片段
file_obj = open(file_name, "r")
result_data = file_obj.read()
except IOError, e:
# 发生“IOError”异常进行处理的代码片段
file_obj = "文件不存在:"+str(e)
else:
# 没有引发“IOError”异常执行的代码片段
# 返回读取到的数据
return result_data
finally:
# 不管有没有引发错误都会执行的代码片段
# isinstance()用于判断一个数据类型
if isinstance(file_obj, str):
return file_obj
elif isinstance(file_obj, file):
file_obj.close()
else:
return "未知错误,请检查您的代码..."
if __name__ == '__main__':
result = read_filedata("abc.txt")
print(result)
10. 遇到 bug 如何处理?首先查看报错信息,根据报错信息找到相应代码,通常一般的数据结构或者算法错误只要找到报错代码就可以顺利解决。
如果遇到暂时不能解决的错误先不要慌,我们可以使用编译器的Debug模式或者自己在代码中加注断点进行代码排查。
如果依然不能解决bug,我们可以拷贝报错信息,在搜索引擎中进行搜索。
没有人写代码不出bug,如果你在一个bug上耗费时间超过半小时,可以与其他同事探讨(注意节制,可能有些费同事)。
另辟蹊径:方法总比困难多,在进行快速开发时,我们应该优先实现功能而不是拘泥于运行效率,所以遇到一些暂时不能解决的BUG可以考虑另外的实现方法。
11.Python和Java相比Python是动态类型语言,而Java是静态类型语言.
动态类型语言不需要事先声明变量的类型,而且变量的数据类型可以被修改
静态类型语言需要事先声明,并且不能修改。
12.Python3 和 Python2 中 int 和 long 区别?Python 3里,只有一种整数类型 int,大多数情况下,它很像Python2里的长整型。
Python 2有为非浮点数准备的 int 和 long 类型。int 类型的最大值不能超过 sys.maxint,而且这个最大值是平台相关的。
13. xrange 和 range 的区别?Python2中使用xrange()来创建一个迭代器对象,使用range()创建一个list数组;
Python3中使用range()创建迭代器对象,移除了xrange()方法。
14.什么是 PEP8?PEP是 Python Enhancement Proposal 的缩写,翻译过来就是 Python增强建议书
PEP8 ,简单说就是一种编码规范,是为了让代码“更好看”,更容易被阅读。
15.Python 中的注释有几种?单行注释以“#”开头
# 单行注释
多行注释使用三个单引号或者双引号
"""
双引号多行注释
"""
'''
单引号多行注释
'''
单引号和双引号混用,使用一种引号后其注释中的所有引号应该使用另一种
"""
'双引号'中使用'单引号'
"""
'''
"单引号"中使用"双引号"
'''
16.如何给变量加注释?变量注释使用行内注释,根据pep8规范应该在代码后至少有两个空格,注释由#和一个空格开始:
user_name = "Robin" # 用户姓名
user_age = 26 # 用户年龄
user_gender = 1 # 用户性别,男为1,女为0
有代码洁癖的同学可以保持注释的对齐,但一行文本不宜超过79个字符(PEP8规范)。
17.Python 代码缩进中是否支持 Tab 键和空格混用。Python是一门用空格缩进来区分代码层次的语言,其实Python并没有强制要求你用Tab缩进或者用空格缩进,甚至空格按几个都没有强制要求(但在PEP8中建议了使用4个空格作为缩进)
但是却绝对!绝对不能混用Tab和空格 !
python中不提倡使用tab缩进
不同编辑器对于TAB的解释是不同的,有的编辑器tab是4个字符宽,有的8个字符宽。
如果有的地方用TAB,有的地方用空格,在不同的地方,原本对齐的代码就可能会不对齐。
18.是否可以在一句 import 中导入多个库?可以在一句import中打入多个库,但是一般我们不这样做,原因有以下几点
更易于阅读
更易于搜索
更易于编辑
多行import更易于维护
另,导入多个模块语句最好以下面方式书写,使用空行将其分割
python 标准库模块
python 第三方模块
自定义模块
有的程序员喜欢这样导入模块
from socker import *
这样写的好处就是不需要我们一个个列出“socket”需要的方法,但是这样引入的弊端如下
占用更多的内存空间,不必要的方法或类可能会进行初始化
代码可读性差,模块内部突然冒出一个没有见过也没有归属的方法,很是头疼
19.在给 Py 文件命名的时候需要注意什么?在为Python文件命名时,我们需要注意
不能与Python中的关键字命名;
不能以标准库或常用第三方库命名,除非你想重写这些库;
不能用除字母数字下换线之外的字符命名,注意不要使用中文命名任何路径和可执行文件;
数字不能作为开头。
20.例举几个规范 Python 代码风格的工具Pylint
安装:pip install pylint
使用:pylint demo.py
Black
安装:pip install black
使用:black demo.py
Autopep8
安装:pip install autopep8
使用:autopep8 --in-place --aggressive demo.py
flake8安装:
pip install flake8
使用:flake8 demo.py
其实如果你是应届生
掌握扎实的Python语言基础以及有重点方向的几个库就够了
比如Web开发,最好掌握Django、Flask这类框架中的一个,以及周边的JS、CSS
不一定要深入,有一定基础足以
Python只是一个工具
根据你要进的领域
去积累丰富的业务经验才是“年薪百万”的扎实台阶
这里小π为大家整理了面经和学习入门:
最后,再提醒一下大家,别忘了关注我们的公众号Pioneer Headhunter
欢迎大家评论私信小π