编程面试题汇总

本文汇总了Python编程面试中的基础、Python基础、面向对象、线程与进程、网络基础等多个方面的问题,涵盖语言特点、PEP8规范、编码类型、Python特性、数据结构、并发并行概念、网络协议等内容,旨在帮助准备Python面试者全面了解和复习相关知识。
摘要由CSDN通过智能技术生成

一、基础

1、语言相关问题

  • 问:python语言有什么特点,什么优点?

特点:python是一个解释型语言,代码是通过解释器,边解释边执行,执行哪段代码就解释哪段代码,不需要预编译生成可执行文件。

解释型语言缺点:太过依赖解释器环境,解释器是一个虚拟环境,在没有运行代码前就得申请内存、开辟空间,启动解释器,消耗更多内存。

python缺点: 执行效率不高

python优点:写代码效率高,开发速度快,跨平台性好(一次开发,到处运行,Window、Linux、Mac上只要有python解析器,就可以运行python代码)。相对容易学习,开源项目多。

  • 问:你是为什么使用python做开发,你是怎么走上python开发的?

可以列举理由: 大学时候 学的python 实习的学的是python 发现python很有意思:说出来上一问的优点。。。

  • 问:你出了python,还用过什么语言?

JavaScript(必会,网页脚本语言,vue中使用的就是JS语言)

  • 问:什么是编译型语言

编译型语言需要先编译,生成一个二进制文件,例如C,生成exe可执行文件;然后在执行。

优点:执行效率高。

缺点:调试bug麻烦,编写代码过程见效慢(写了代码不能立即看到效果,需要先编译在执行)

2、python PEP8规范

PEP8规范是python代码书写的指导规范,不是语法错误,是书写规范。(不遵守,代码不会报错的)

每一行缩进4个空格

所有行限制的最大字符数为79

不推荐一行导入多个模块(一行导入一个模块)

不使用单字符作为变量名,容易出错(1、0 像I、O)

类命名要首字母大写;函数命名要首字母小写,如果想提高可读性可以用下划线分隔。

3、常见的编码有哪些

ASCII 1个字节 英语语言(0-9 a-z A-Z 字符)

GBK 2个字节 中文编码 支持 繁体字

UTF-8 不定长编码(1-3字节) 万国码 支持 各种语言

1.为了处理英文字符,产生了ASCII码。
2.为了处理中文字符,产生了GB2312。
3.为了处理各国字符,产生了Unicode。
4.为了提高Unicode存储和传输性能,产生了UTF-8,它是Unicode的一种实现形式

二、python基础

1、p2和p3的区别

1、 python2 使用print打印   python3 使用print()方法打印
2、python2 的除法获得结果是整数    python3的除法获得结果是是浮点型数据,整除要双斜杠//
3、python2 默认是ASCII编码 要使用unicode 需要专门定义unicode字符串 例如 u'hello'
python3 默认就是unicode(utf-8)字符串
4、p2高级函数返回的是list  p3 高级函数返回的iteration迭代器

2、is 和 == 区别

== 只要值一样 则 为True

is 不仅要求值一样,还要求地址一样 才为True

例如:x=1 y=1 则 x is y 是True 这是因为python中有常量池 1属于常量池,x与y引用的是同一个常量,所以他们的地址是一样的。

例如 x=[1,2,3] y=[1,2,3] x==y 就是 True 但 x is y 是False 因为 x和y是不同的内存空间,地址页不一样

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5wpbgcPE-1620790899601)(…/…/…/images/image-20210427105228602.png)]

3.range与xrange

我没有用过xrange 我用过range, range表示一个范围,range函数返回的是一个可迭代对象),而不是列表类型。Python2中的range函数 返回的是一个list。

range(1,5) 不包括5 ,python中 这种区间的参数,一般都是 大于等于最新值,小于最大值

据我考察:python3返回列表的时候,都是返回 可迭代对象 不在直接返回列表了。

4、三元表达式

true表达式 if 判断表达式 else false表达式

y= 20 if x==3 else 10

5、互换变量

x,y=3,4

x,y=y,x

就可以实现 x与y的值的互换,由 x=3  y=4  换成了 x=4  y=3

序列解包  序列封包

6、深拷贝与浅拷贝

  • 浅拷贝: 只拷贝第一层,没有拷贝深层,修改第一层相互不影响,修改第二层,相互影响。

  • 深拷贝: 递归性质的拷贝,会在内存中生成一套完全一样的内容,修改相互不影响

切片操作就是浅拷贝。

x = ["1", "2", ['a', 'b', 'c'], "3", "4", "5"]

y = x[:3]
print(id(x), id(y))
y[2].append('k')
print(x, y)

7、python的自省

程序在运行时,可以获取到对象的信息 3个属性 2个类型

自省属性 介绍 使用
dir 获取对象中的所有属性(属性、方法;继承自父类的属性、方法)
type 查看对象的类型
hasattr 判断对象中是否有某属性
getattr 根据属性名 获取对象的属性值
isinstance 判断对象是否是某个类型

案例:

class Student:
    country = "中国"

    def __init__(self, name, age=None):
        self.name = name
        self.age = age

    def say(self):
        print("我是{}")
        return "OK"


def add():
    print("add")


if __name__ == '__main__':
    s = Student("张三")
    print(dir(s))  #
    print(type(s))
    print(hasattr(s, "gender"))
    print(getattr(s, "name"))
    print(getattr(s, "say")())
    print(isinstance(s, list))
    print(isinstance(s, Student))

8、CSV文件,是什么

逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值