首页 > 编程语言 >python基础面试总结

python基础面试总结

时间:2022-10-25 12:00:50浏览次数:42  
标签:__ 总结 UDP python TCP 列表 面试 线程 内存

1 闭包

  定义:闭包是由函数及其相关的引用环境组合而成的实体(即:闭包=函数+引用环境)(想想Erlang的外层函数传入一个参数a, 内层函数依旧传入一个参数b, 内层函数使用a和b, 最后返回内层函数)
  代码:
  def ExFunc(n):
    sum=n
    def InsFunc():
      return sum+1
    return InsFunc
2 装饰器

  定义:他们是修改其他函数的功能的函数。他们有助于让我们的代码更简短
  def debug(func):
    def wrapper():
      print ""[DEBUG]: enter {}()"".format(func.__name__)
      return func()
    return wrapper

  @debug
  def say_hello():
  print ""hello!"""
3 迭代器

   iter(),配合for循环使用,可以控制循环的进度,使用next()函数获取下一个值,直至遇到StopIteration停止循环
4 生成器

  也是一种迭代器,配合yield使用,返回yeild后面的值,下次运行从yield开始
5 描述器

  描述器的表现
  用到三个魔术方法。__get__() __set__() __delete__()
  方法签名如下:
    object.__get__(self,instance,owner)
    object.__set__(self,instance,value)
    object.__delete__(self,instance)
    Self指指代当前实例,调用者。
    Instance是owner的实例。
    Owner是属性所属的类。
  典型的描述器:@Property
  作用:访问类和实例的属性
6 内置模块

  os、json、re、sys
7 内置函数

  zip()、list()、set()、eval()、int()、 str()、max()、min()、tapy()、id()、super()、sum()
8 列表特点

  使用 "列表:无序、可增删改查、可下标查询
  内置函数使用:len(列表)、max(列表)、min(列表)、list(元组)
  添加:列表.append(值)
  修改:列表[下标] = 值
  插入:列表.insert(下标,值)
  删除:列表.remove(值) del 列表[下标] 列表.pop()默认最后一个值
  查看:列表.index(下标) "
9 字符串特点,使用 "切片:str[开始下标 : 结束下标 : 相隔字符]
  super()大写 lower()小写 replace()替换 spli()分割"
10 TCP/UDP

  TCP的优点: 可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。
  TCP的缺点: 慢,效率低,占用系统资源高,易被攻击 TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU、内存等硬件资源。 而且,因为TCP有确认机制、三次握手机制,这些也导致TCP容易被人利用,实现DOS、DDOS、CC等攻击。
  UDP的优点: 快,比TCP稍安全 UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制,UDP是一个无状态的传输协议,所以它在传递数据时非常快。没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些。但  UDP也是无法避免攻击的,比如:UDP Flood攻击……
  UDP的缺点: 不可靠,不稳定 因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。
  小结TCP与UDP的区别:
    1.基于连接与无连接;
    2.对系统资源的要求(TCP较多,UDP少);
    3.UDP程序结构较简单;
    4.流模式与数据报模式 ;
    5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。
  什么时候应该使用TCP: 当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议。 在日常生活中,常见使用TCP协议的应用如下: 浏览器,用的HTTP FlashFXP,用的FTP Outlook,用的POP、SMTP Putty,用的Telnet、SSH QQ文件传输 ………… 什么时候应该使用UDP: 当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用UDP。 比如,日常生活中,常见使用UDP协议的应用如下: QQ语音 QQ视频 TFTP ……
有些应用场景对可靠性要求不高会用到UPD,比如长视频,要求速率"
11  HTTP/HTTPS协议

  HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
  HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
  HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。
  区别:
  1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
  2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
  3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。"
12 深/浅拷贝

  浅拷贝:拷贝表面层,更深的层次引用原来地址的,说明:如果拷贝的数据更改,原数据也跟着变浅拷贝list.copy()
  深拷贝:拷贝所有,内存中开辟新地址,说明:如果拷贝的数据更改,原数据没有变深拷贝shallowCopy(list)"
13 __new__ 和 __init__的区别

  1、 继承自object的新式类才有__new__
  2、 __new__至少要有一个参数cls,代表当前类,此参数在实例化时由Python解释器自动识别
  3、 __new__必须要有返回值,返回实例化出来的实例,这点在自己实现__new__时要特别注意,可以return父类(通过super(当前类名, cls))__new__出来的实例,或者直接是object的__new__出来 的实例
  4、 __init__有一个参数self,就是这个__new__返回的实例,__init__在__new__的基础上可以完成一些其它初始化的动作,__init__不需要返回值"
14 线程、进程和协程

  线程:轻量级进程,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个 进程的其它线程共享进程所拥有的全部资源
使用threading这个高级模块
  多个线程访问同一资源时需要加线程锁lock
  获取锁:lock.acquire()
  释放锁:lock.release()
  进程:进程是一个实体。每一个进程都有它自己的地址空间
  创建进程的类:process
  协程:一个程序可以包含多个协程,可以对比与一个进程包含多个线程,因而下面我们来比较协程和线程。我们知道多个线程相对独立,有自己的上下文,切换受系统控制;而协程也相对独立,有自己的上下文,但是其切换由自己控制,由当前协程切换到其他协程由当前协程来控制。
  优点:IO资源、减少callback的使用
  用第三方库 gevent 来支持协程。gevent用到的主要模式是greenlet"
15 内存管理

  1、 Python引入了一个机制:引用计数
  2、 垃圾回收机制:当引用计数为0时,调用__del__方法
  注意:
    1、垃圾回收时,Python不能进行其它的任务,频繁的垃圾回收将大大降低Python的工作效率;
    2、Python只会在特定条件下,自动启动垃圾回收(垃圾对象少就没必要回收)
  3、当Python运行时,会记录其中分配对象(object allocation)和取消分配对象(object deallocation)的次数。当两者的差值高于某个阈值时,垃圾回收才会启动。
  4、内存池机制
    Python中有分为大内存和小内存:(256K为界限分大小内存)
    1、大内存使用malloc进行分配
    2、小内存使用内存池进行分配
    3、Python的内存池(金字塔)"
16 随机数据

  random.shuffle(lst):将列表中的元素打乱,洗牌
  random.random():生成一个0-1之间的随机浮点数.
  random.uniform(a, b):生成[a,b]之间的浮点数."
17 一行带实现1-100之和 sum(range(1,101))
18 python2和python3的区别

  1.print 2 - 没有括号 3 - 右括号
  2.input 2 - int 3 - str
  3.unicode 2 - 对str不友好 3 - utf-8
  4.不等运算符 2 - 有<> 3 去掉了
  5.数据类型 2 - long 3 去掉了"
19  Linux常用命令

  ls、cd、vim、mkdir、pwd、rm、rmdir、mv、cp、cat、find、head、history、tail、grep、chmod、tar、ps、top、kill、free、
20 python中json.loads与eval的区别

  1.json.lodes()可以将英文字符串转化为types.UnicodeType,eval可以将因为字符串转化为tape.stringtape
  2.json.lodes()可以将字符串中的unll空值转化为None,eval会报错
  3.json.lodes()不可以将字符串中的运算输出结果,eval会输出结果"

标签:__,总结,UDP,python,TCP,列表,面试,线程,内存
From: https://www.cnblogs.com/Happy-Girl-T/p/16824395.html

相关文章

  • 软件测试基础面试总结
    1常用响应码?1开头是信息相应100内容可行,应继续请求,如已完成忽略2开头是成功响应200成功202请求接收到,但是没有响应3开头是重定向301转至指定的url......
  • 接口自动化测试面试题
    1json和python中字典的区别?字典是一种数据类型,而json不是,json是一种数据交换格式,但他又类似与字典,都是key/values储存,所以json和字典可以相互转化,json.lodes()、jso......
  • ui自动化测试面试题总结
    1UI自动化框架如何让搭建?首先按照Po模式搭建自动化框架,搭建框架使用的技术是selenium+pytest,将框架分为6层,common层(公共层:basepage[基础操作封装]、hander_config......
  • Python之格式化输出
    1.格式化字符串 %s,还可以写成  f'{表达式}'     f-格式化字符串是Python3.6中新增的格式化⽅法,该方法更简单易读。 2.转义字符\n:换⾏符。\t:制表符,一个tab......
  • Python报错-UnicodeDecodeError: 'gbk' codec can't decode byte 0x81 in position 35
    问题描述:读文件报错  【代码】:withopen("D:\Code\Python\data.txt")asfile_object:contents=file_object.read()print(contents)【报错提示】:Trace......
  • pycharm中使用pip报错:You should consider upgrading via the 'python -m pip install
    问题:在pycharm中使用pip命令安装时出现以下报错:解决办法:1.在python安装路径下找到site-packages文件夹下的类似pip-21.1.3.dist-info文件夹,将整个文件夹删掉 2.再在p......
  • 12个常用的图像数据增强技术总结
    机器学习或深度学习模型的训练的目标是成为“通用”模型。这就需要模型没有过度拟合训练数据集,或者换句话说,我们的模型对看不见的数据有很好的了解。数据增强也是避免过度......
  • Python 类
    1.一个简单的类__init__()是一个特殊的方法,每当根据Dog类创建新的实例时,Python都会自动运行它。形参self是必不可少的,且不用手动为它传递实参。self为前缀的变量可以供类......
  • vue面试考察知识点全梳理
    一、简介vue几个核心思想:数据驱动组件化虚拟dom、diff局部最优更新源码目录介绍Vue.js的源码在src目录下,其目录结构如下。src├──compiler#编译......
  • 腾讯前端常考vue面试题整理
    什么是mixin?Mixin使我们能够为Vue组件编写可插拔和可重用的功能。如果希望在多个组件之间重用一组组件选项,例如生命周期hook、方法等,则可以将其编写为mixin,并在......