python面试问题,一般都问什么问题?

找工作是每个学习Python人员的目标為了更好的找到工作,刷面试题是必不可少的了解最新企业招聘试题,可以让你面试更加的顺利小编整理了一些2017年最新的python面试问题题,来测测你技术的掌握度吧

1、Python里面如何拷贝一个对象?(赋值浅拷贝,深拷贝的区别)

答:赋值(=)就是创建了对象的一个新的引鼡,修改其中任意一个变量都会影响到另一个

浅拷贝:创建一个新的对象,但它包含的是对原始对象中包含项的引用(如果用引用的方式修改其中一个对象另外一个也会修改改变){1,完全切片方法;2,工厂函数如list();3,copy模块的copy()函数}

深拷贝:创建一个新的对象并且递归的複制它所包含的对象(修改其中一个,另外一个不会改变){copy模块的deep.deepcopy()函数}

3、有没有一个工具可以帮助查找python的bug和进行静态的代码分析

答:PyChecker是┅个python代码的静态分析工具,它可以帮助查找python代码的bug, 会对代码的复杂度和格式提出警告

这里能说的很多你应该提到下面几个主要的点:

Python在內存中存储了每个对象的引用计数(reference count)。如果计数值变成0那么相应的对象就会小时,分配给该对象的内存就会释放出来用作他用

偶尔吔会出现引用循环(reference cycle)。垃圾回收器会定时寻找这个循环并将其回收。举个例子假设有两个对象o1和o2,而且符合o1.x == o2和o2.x == o1这两个条件如果o1和o2沒有其他代码引用,那么它们就不应该继续存在但它们的引用计数都是1。

Python中使用了某些启发式算法(heuristics)来加速垃圾回收例如,越晚创建的对象更有可能被回收对象被创建之后,垃圾回收器会分配它们所属的代(generation)每个对象都会被分配一个代,而被分配更年轻代的对潒是优先被处理的

5、什么是lambda函数?它有什么好处?

答:lambda 表达式通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用吔就是指匿名函数

lambda函数:首要用途是指点短小的回调函数

6、请写出一段Python代码实现删除一个list里面的重复元素

8、如何在一个function里面设置一个全局嘚变量?

答:解决方法是在function的开始插入一个global声明:

9、编程用sort进行排序然后从最后一个元素开始判断

10、下面的代码在Python2中的输出是什么?解釋你的答案

另外在Python3中上面的代码的输出有何不同(假设代码中的print语句都转化成了Python3中的语法结构)?

在Python2中代码的输出是:

默认情况下,如果兩个操作数都是整数Python2默认执行整数运算。所以5/2 结果是2,而5./2结果是2.5

注意你可以通过下面的import语句来覆盖Python2中的这一行为

还要注意“双斜杠”(//)操作符将会一直执行整除忽略操作数的类型。这就是为什么5.0//2.0即使在Python2中结果也是2.0

但是在Python3并没有这一行为两个操作数都是整数时,也不执荇整数运算在Python3中,输出如下:

原标题:10个python面试问题常问的问题

Python昰个非常受欢迎的编程语言随着近些年机器学习、云计算等技术的发展,Python的职位需求越来越高下面我收集了10个python面试问题官经常问的问題,供大家参考学习

  • 程序员大咖整理发布,转载请联系作者获得授权

今天给大家带来的还是python面试问题題的实战练习其实实战练习一个是让你见各种各样的题型,达到见到题目秒解的程度另外一个就是锻炼大家的心态,不至于一面试就緊张下来我们来看看这些题目是不是可以顺利做出来吧:

os:提供了不少与操作系统相关联的函数

sys: 通常用于命令行参数

GIL 是python的全局解释器锁,同一进程中假如有多个线程运行一个线程在运行python程序的时候会霸占python解释器(加了一把锁即GIL),使该进程内的其他线程无法运行等该线程運行完后其他线程才能运行。如果线程运行过程中遇到耗时操作则解释器锁解开,使其他线程运行所以在多线程中,线程的运行仍是囿先后顺序的并不是同时进行。

多进程中因为每个进程都能被系统分配资源相当于每个进程有了一个python解释器,所以多进程可以实现多個进程的同时运行缺点是进程系统资源开销大

python2返回列表,python3返回迭代器节约内存

4、一句话解释什么样的语言能够用装饰器?

函数可以作为參数传递的语言,可以使用装饰器

5、python内建数据类型有哪些

6、避免转义给字符串加哪个字母表示原始字符串?

r , 表示需要原始字符串不转义特殊字符

Python2 既可以使用带小括号的方式,也可以使用一个空格来分隔打印内容比如 print 'hi'

python3中str表示字符串序列,byte表示字节序列

10、正则pile是将正则表达式編译成一个对象加快速度,并重复使用

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

只要不满足其中任意一个要求就不符合同源策略,就会出現“跨域”

23、简述多线程、多进程

1、操作系统进行资源分配和调度的基本单位多个进程之间相互独立

2、稳定性好,如果一个进程崩溃鈈影响其他进程,但是进程消耗资源大开启的进程数量有限制

1、CPU进行资源分配和调度的基本单位,线程是进程的一部分是比进程更小嘚能独立运行的基本单位,一个进程下的多个线程可以共享该进程的所有资源

2、如果IO操作密集则可以多线程运行效率高,缺点是如果一個线程崩溃都会造成进程的崩溃

IO密集的用多线程,在用户输入sleep 时候,可以切换到其他线程执行减少等待的时间

CPU密集的用多进程,因為假如IO操作少用多线程的话,因为线程共享一个全局解释器锁当前运行的线程会霸占GIL,其他线程没有GIL就不能充分利用多核CPU的优势

ImportError:無法引入模块或包,基本是路径问题

IndexError:下标索引超出序列边界

KeyError:试图访问你字典里不存在的键

NameError:使用一个还未赋予对象的变量

25、列出几种魔法方法并简要介绍用途

__new__:创建对象时候执行的方法单列模式会用到

__str__:当使用print输出对象的时候,只要自己定义了__str__(self)方法那么就会打印从在这个方法中return的数据

__del__:删除对象执行的方法

1、InnoDB 支持事务,MyISAM 不支持这一点是非常之重要。事务是一种高

级的处理方式如在一些列增删改中只要哪个絀错还可以回滚还原,而 MyISAM

2、MyISAM 适合查询以及插入为主的应用InnoDB 适合频繁修改以及涉及到

4、对于自增长的字段,InnoDB 中必须包含只有该字段的索引但是在 MyISAM

表中可以和其他字段一起建立联合索引;

5、清空整个表时,InnoDB 是一行一行的删除效率非常慢。MyISAM 则会重

28、列举3条以上PEP8编码规范

1、顶级萣义之间空两行比如函数或者类定义。

2、方法定义、类定义与第一个方法之间都应该空一行

29、简述乐观锁和悲观锁

悲观锁, 就是很悲观,每次去拿数据的时候都认为别人会修改所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁传统的关系型數据库里边就用到了很多这种锁机制,比如行锁表锁等,读锁写锁等,都是在做操作之前先上锁

乐观锁,就是很乐观每次去拿数據的时候都认为别人不会修改,所以不会上锁但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机淛乐观锁适用于多读的应用类型,这样可以提高吞吐量

Linux 允许将命令执行结果 重定向到一个 文件

将本应显示在终端上的内容 输出/追加 到指萣文件中

> 表示输出会覆盖文件原有的内容

>> 表示追加,会将内容追加到已有文件的末尾

31、常见的网络传输协议

32、单引号、双引号、三引号鼡法

1、单引号和双引号没有什么区别不过单引号不用按shift,打字稍微快一点表示字符串的时候,单引号里面可以用双引号而不用转义芓符,反之亦然。

2、但是如果直接用单引号扩住单引号则需要转义,像这样:

3、三引号可以直接书写多行通常用于大段,大篇幅的字符串

1、GET请求是通过URL直接请求数据数据信息可以在URL中直接看到,比如浏览器访问;而POST请求是放在请求头中的我们是无法直接看到的;

2、GET提交有數据大小的限制,一般是不超过1024个字节而这种说法也不完全准确,HTTP协议并没有设定URL字节长度的上限而是浏览器做了些处理,所以长度依据浏览器的不同有所不同;POST请求在HTTP协议中也没有做说明一般来说是没有设置限制的,但是实际上浏览器也有默认值总体来说,少量的數据使用GET大量的数据使用POST。

3、GET请求因为数据参数是暴露在URL中的所以安全性比较低,比如密码是不能暴露的就不能使用GET请求;POST请求中,請求参数信息是放在请求头的所以安全性较高,可以使用在实际中,涉及到登录操作的时候尽量使用HTTPS请求,安全性更好

34、简述多線程、多进程

1、操作系统进行资源分配和调度的基本单位,多个进程之间相互独立

2、稳定性好如果一个进程崩溃,不影响其他进程但昰进程消耗资源大,开启的进程数量有限制

1、CPU进行资源分配和调度的基本单位线程是进程的一部分,是比进程更小的能独立运行的基本單位一个进程下的多个线程可以共享该进程的所有资源

2、如果IO操作密集,则可以多线程运行效率高缺点是如果一个线程崩溃,都会造荿进程的崩溃

IO密集的用多线程在用户输入,sleep 时候可以切换到其他线程执行,减少等待的时间

CPU密集的用多进程因为假如IO操作少,用多線程的话因为线程共享一个全局解释器锁,当前运行的线程会霸占GIL其他线程没有GIL,就不能充分利用多核CPU的优势

感谢大家的阅读专门找个时间做做这些python面试问题题吧,相信会对你的面试有所帮助好了,更多Python相关的内容尽在官网敬请关注!

免责声明:内容和图片源自网絡,版权归原作者所有如有侵犯您的原创版权请告知,我们将尽快删除相关内容

我要回帖

更多关于 python面试问题 的文章

 

随机推荐