大话性能 python 新手学习 - 常用 python 面试题

大话性能 · 2023年09月27日 · 3890 次阅读

基础知识

1、列出 5 个常用 Python 标准库?

import os
import sys
import re
import math
import time
import datetime
import random
import threading
import multiprocessing

更多内容可以学习《测试工程师 Python 工具开发实战》书籍《大话性能测试 JMeter 实战》书籍

2.、Python 的内建数据类型有哪些?

int、float、complex # 数值型
bool # 布尔型
str # 字符串
list # 列表
tuple # 元组
dict # 字典

3、简述 with 方法打开处理文件帮我我们做了什么?

with 语句适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的清理操作,释放资源,比如文件使用后自动关闭、线程中锁的自动获取和释放等;

with 语句即上下文管理器,在程序中用来表示代码执行过程中所处的前后环境。上下文管理器:含有enterexit方法的对象就是上下文管理器。

enter():在执行 with 语句之前,首先执行该方法,通常返回一个实例对象,如果 with 语句有 as 目标,则将对象赋值给 as 目标。

exit():在执行 with 语句结束后,自动调用exit() 方法,用户释放资源,若此方法返回布尔值 True,程序会忽略异常。

使用环境:文件读写、线程锁的自动释放等。

with context_expression [as target(s)]:
with-body
这里 context_expression 要返回一个上下文管理器对象,该对象并不赋值给 as 子句中的 target(s),而是会将上下文管理器的enter() 方法的返回值赋值给 target(s)。

4、Python 的可变和不可变数据类型?

不可变数据类型:即数据被创建之后,数据的值将不再发生改变,有数值、字符、元祖类型;

可变数据类型:数据别创建之后,数据的值可以发生变化,有列表、字典、集合类型。

5、Python 获取当前日期?

# -*- coding: UTF-8 -*-
import datetime
import time

if __name__ == "__main__":
    print(time.time())           # 时间戳
    print(time.strftime("%Y-%m-%d %H:%M:%S %w", time.localtime()))  # 年月日时分秒
    print(datetime.datetime.now())      # 年月日时分秒

6、统计字符串每个单词出现的次数。

def word_amount(sentence):
    split_list = sentence.split()
    dict_result = {}
    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)

或者:

if __name__ == '__main__':
    sentence = "I can because i think i can"
    result = {word: sentence.split().count(word) for word in set(sentence.split())}
    print(result)

或者:

from collections import Counter

if __name__ == '__main__':
    sentence = "I can because i think i can"
    counts = Counter(sentence.split())
    print(counts)

7、用 python 删除文件和用 linux 命令删除文件方法。

import os
os.remove("demo.txt")

8、写一段自定义异常代码?

class printException(Exception):
    pass

def testRaise():
    raise printException('printErr')

if __name__ == '__main__':
    try:
        testRaise()
    except printException, e:
        print e

9、举例说明异常模块中 try except else finally 的相关意义。

# -*- coding: UTF-8 -*-

def read_filedata(file_name):
    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 可以考虑另外的实现方法。

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册