文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python的面试问答题有哪些

2023-06-27 10:00

关注

今天小编给大家分享一下Python的面试问答题有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

一、基础知识

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

import os

import sys

import re

import math

import time

import datetime

import random

import threading

import multiprocessing

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

int、float、complex         # 数值型

bool            # 布尔型

str             # 字符串

list            # 列表

tuple           # 元组

dict            # 字典

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

with context_expression [as target(s)]:

    with-body

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

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

5. Python 获取当前日期?

import datetime

import time

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")

rm 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 的相关意义。

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 如何处理?

二、语言特性

1. 谈谈对 Python 的了解和其他语言的区别?

Python 是一门语法简洁优美,功能强大无比,应用领域非常广泛,具有强大完备的第三方库的一门强类型动态,可移植,可扩展,可嵌入的解释型编程语言。

强类型语言、弱类型语言的区别:

动态语言、静态语言的区别:

编译型语言、解释型语言的区别:

2. 简述解释型和编译型编程语言?

可参考上一条的解释内容。

3. Python 的解释器种类以及相关特点?

4. 说说你知道的 Python3 和 Python2 之间的区别?

编码:Python2 的默认编码是 asscii,这也是导致 Python2 中经常遇到编码问题的原因之一,至于是为什么会使用 asscii 作为默认编码,原因在于 Python 这门语言诞生的时候还没出现 Unicode。Python3 默认采用了 UTF-8 作为默认编码,因此你不再需要在文件顶部写 # coding=utf-8 了。

字符串:Python2 中字符的类型,str:已经编码后的字节序列,unicode:编码前的文本字符;而 Python3 中字符的类型,str:编码过的 unicode 文本字符,bytes:编码前的字节序列。

可以认为字符串有两种状态,即文本状态和字节(二进制)状态。Python2 和 Python3 中的两种字符类型都分别对应这两种状态,然后相互之间进行编解码转化。编码就是将字符串转换成字节码,涉及到字符串的内部表示;解码就是将字节码转换为字符串,将比特位显示成字符。

在 Python2 中,str 和 unicode 都有 encode 和 decode 方法。但是不建议对 str 使用 encode,对 unicode 使用 decode, 这是Python2 设计上的缺陷。Python3 则进行了优化,str 只有一个 encode 方法将字符串转化为一个字节码,而且 bytes 也只有一个 decode 方法将字节码转化为一个文本字符串。

print:Python2 中的 print 是语句;Python3 中的 print 是函数。例如:

>>> print("hello", "world")

('hello', 'world')

# py3

>>> print("hello", "world")

hello world

这个例子就比较明显了,在 py2 中,print 语句后面接的是一个元组对象,而在 py3 中,print 函数可以接收多个位置参数。如果希望在 Python2 中把 print 当函数使用,那么可以导入 future 模块中的 print_function。

import:python2 默认是按照相对路径导入模块和包,python3 默认则是按照绝对路径导入。

input:Python3:input 解析输入为str字符型;Python2:input 解析输入为int型,raw_input 解析输入为 str 类型。

算法符:在 Python2 中,/ 执行传统除法,对于整数执行截断除法,浮点数执行浮点除法(保留小数部分,即使整除);// 执行 Floor 除法,截除掉余数并且针对整数操作数返回一个整数,如果有任何一个操作数是浮点数,则返回一个浮点数。在 Python3 中,/ 总是执行真除法,不管操作数的类型,都会返回包含任何余数的浮点结果;// 执行 Floor 除法,截除掉余数并且针对整数操作数返回一个整数,如果有任何一个操作数是浮点数,则返回一个浮点数。

int/long:Python3 里,只有一种整数类型 int,大多数情况下,它很像 Python2 里的长整型。Python2 有为非浮点数准备的 int 和 long 类型。int 类型的最大值不能超过 sys.maxint,而且这个最大值是平台相关的。

True和False:在 Python2 中,True 和 False 是两个全局变量(名字),在数值上分别对应 1 和 0,既然是变量,那么它们就可以指向其它对象。Python3 修正了这个缺陷,True 和 False 变为两个关键字,永远指向两个固定的对象,不允许再被重新赋值。

迭代器:在 Python2 中很多返回列表对象的内置函数和方法在 Python3 都改成了返回类似于迭代器的对象,因为迭代器的惰性加载特性使得操作大数据更有效率。

例如:Python2 中使用 xrange() 来创建一个迭代器对象,使用 range() 创建一个 list 数组(要生成很大的数字序列的时候,用 xrange 会比 range 性能优很多,因为不需要一上来就开辟一块很大的内存空间);Python3 中使用 range() 创建迭代器对象,移除了 xrange() 方法。

另外,字典对象的 dict.keys()、dict.values() 方法都不再返回列表,而是以一个类似迭代器的 view 对象返回。高阶函数 map、filter、zip 返回的也都不是列表对象了。Python2 的迭代器必须实现 next 方法,而 Python3 改成了__iter__()、next。

nonlocal:在 Python2 中可以在函数里面可以用关键字 global 声明某个变量为全局变量,但是在嵌套函数中,想要给一个变量声明为非局部变量是没法实现的,在 Pyhon3,新增了关键字 nonlcoal,一般使用在闭包中的,使变量使用外层的同名变量。

LEGB作用域的理解:python3 的 local, global, nonlocal 简析

以上就是“Python的面试问答题有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯