python经典面试题

1.什么是Python自省?
python自省是python具有的一种能力,使程序员面向对象的语言所写的程序在运行时,能够获得对象的python类型,python是一种解释性语言,为程序员提供了极大的灵活性和控制力。

2.什么是PEP 8?
PEP8是一种编程规范,内容是一些关于如何让你的程序更具有可读性的建议。

3.什么是python的命名空间?
在python中所有的名字都存在于一个空间中,它们在该空间中存在和被操作–这就是命名空间。它们就好像一个盒子,每一个变量名字都对应装着一个对象。当查询变量的时候,会从该盒子里面寻找相应的对象。

4.什么是字典推倒式和列表推倒式?
它们可以轻松创建字典和列表的语法结构。

5.*args,**keargs参数是什么?
如果我们不确定要往函数中传入多少个参数,或者我们想往函数中以列表和元祖的形式传参数时,那就要使用*args;如果我们不知道要往函数中传入多少个关键词参数时,或者想传入字典的值作为关键词参数时,那就要使用 **kwargs

6.构造器是什么?
构造器是实现迭代器的一种机制,它的功能实现依赖于yield表达式,除此之外它跟普通函数没有两样

7.模块和包是什么?
在python中,模块是搭建程序的一种方式,每一个python代码文件都是一个模块,并可以引用其他模块,比如对象和属性。

8.垃圾回收是什么?
在python中为了解决内存泄露的问题,采用对象引用计数,并基于引用计数实现自动垃圾回收

9.CSRF是什么?
CSRF是伪造客户端请求的一种攻击,字面意思是跨站点伪造请求。

10._new__init_的区别?
_init_是当实例对象创建完成之后被调用的,然后设置对象属性的一些初始值;
_new_是在实例创建之前被调用的,因为它的任务就是创建实例然后返回该实例,是个静态方法。
也就是,_new__init_之前被调用,_new_的返回值(实例)将传递给_init_方法的第一个参数,然后_init_给这些实例设置参数。

11.python中单下划线和双下划线的区别?
“单下划线”开始的成员变量叫做保护变量,意思就是只有类对象和子类对象自己能访问到这些变量;
“双下划线”开始的是私有成员,意思就是只有类对象自己可以访问,连子类对象也不能访问这个数据。

12.浅拷贝和深拷贝的区别?
在python中,对象赋值实际上是对象的引用。浅拷贝,没有拷贝子对象,所以原始数据改变,子对象改变,而深拷贝,包含对象里面的子对象拷贝,所以原始对象的改变不会造成深拷贝里任何元素的改变。

13.多进程和多线程的区别?
a.简而言之,一个程序至少有一个进程,一个进程至少由一个线程。

b.线程的划分尺度小于进程,使得多线程程序的并发性高。

c.另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大的提高了程序的运行效率。

d.线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

e.从逻辑的角度来看,多线程的意义在于在一个应用程序中,有多个执行部分可以同时执行,但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理及资源的分配。

14.TCP和UDP的区别?边缘触发和水平触发的区别?
a.基本区别?
基于连接和无连接
TCP要求系统资源较多,UDP较少;
UDP程序结构简单;
流模式(TCP)与数据包模式(UDP);
TCP保证数据的正确性,UDP可能会丢包;
TCP保证数据顺序,UDP不保证;

b.编程中区别?
socket()的参数不同
UDP Server不需要调用listen和accept;
UDP收发数据用sendto/recvfrom函数;
TCP:地址信息在connect/accept时确定;
UDP:在sendto/recvfrom函数中每次均需指定地址信息;
UDP:shutdown函数无效

15.os和sys模块的区别?
前者提供了一种方便的使用操作系统函数的方法。后者提供访问由解释器使用或维护的变量和与解释器进行交互的函数。

16.NoSQL和SQL的区别?
a.SQL数据存在特定结构的表中;而NoSQL则更加灵活和可扩展,存储方式可以是JSON文档、哈希表或者其他方式。

b.在SQL中,必须定义好表和字段结构后才能添加数据,例如定义表的主键、索引、触发器、存储过程等。表结构可以在被定义之后更新,如果是比较大的结构变更的话就变得比较复杂。在NoSQL中,数据可以在任何时候任何地方添加,不需要先定义表。

c.SQL中如果需要增加外部关联数据的话,规范化做法是在原表中增加一外键,关联外部数据表。在NoSQL中除了这种方法外还可以把外部数据直接放到原数据集中,以提高查询效率。缺点也比较明显,更新审核数据比较麻烦

d.SQL中不允许删除已经被使用的外部数据,而NoSQL中则没有这种强耦合的概念,可以随时删除任何数据。

e.在相同水平的系统设计的前提下,因为NoSQL省略了JOIN查询的消耗,故理论上性能上是优于SQL的。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值