python基础面试题整理---从零开始 每天十题(01)

  最近在弄flask的东西,好久没写博客的,感觉少了点什么,感觉被别人落下好多,可能渐渐的养成了写博客的习惯吧。也是自己想学的东西太多了(说白了就是基础太差了,只是know how,不能做到konw why)。

  不说那些毒鸡汤了,我们来说说我们今天的python基础面试题吧。

一,Q:python的优缺点有什么?

  A:优点:

    1,基础语法简单易学,对于初学者来说,语法还是相对简单的,比较容易学习,网上的学习资料也很多。

      2,面向对象,在python里继承和封装较多,而python的多态还是相对较少的(起个不一样的名字不就可以吗....对java的多态表示无奈),从而减少了大量代码的输出。

    3,语言简洁,相对java比,语法要比java简单很多(我只会java和python,会一点点Node.js和前端的VUE)

    4,开源,python语言开源便于我们自行去维护和更深入的了解源码。

    5,丰富的社区资源,具有超级丰富的三方库。

    缺点:

    1,运行速度慢,由于python是解释性语言,对比其它语言要相对慢一些。

    2,python2和python3不兼容(python2在2020年1月就不在维护)

    3,代码安全性较弱,我们发布项目,其实就是发布我们的源码,安全性差。

  MA:个人认为python的优点在于他是一种面向对象的动态类型语言,从自动化运维到web开发再到人工智能,python都有着良好的表现,

    个人觉得还是python有着丰富的三方类库,给予了python很大的发展,例如NumPy,pandas在自然语言处理内都是很常用,而且是很好用的

    三方库,缺点就是运行速度稍慢一些,就是因为python是解释性语言,需要在CPU上一行行翻译成机器可以读懂的机器码,这个翻译的过程比较耗时,所有运行会慢一些,

    再就是部署时候就是直接源码部署,安全性差,python2和python3不兼容的问题,我觉得不是问题,python2将要不再维护了,python2也就逐渐推出我们的程序。

  注:开放性题,想了解更多,你可以去自行百度,组织成自己的语言就可以啦。A即为比较官方的说法(只摘取部分),MA为我自己组织的一段话,大家可以参考。

二,Q:说一说你对深拷贝和浅拷贝的理解,他们有什么不同。

  A:假设我们复制了一份A,复制出来的叫做B,如果我们修改A,发现B也随着变化了,说明这个是浅拷贝,也就是说明了,我们的浅拷贝,只是增加了一个指针指向了同一个内存地址,当我们修改A,也就是修改原有的内存地址的值,B一定随之变化;如果我们修改了A,发现B没有变化,说明这个是深拷贝,也看得出来,深拷贝就是我们拿到A的内存的值,开辟了一个新的内存空间和创建了一个新的指针,指向了B,就是说,深拷贝就是将内存也复制成了两份,而浅拷贝并没有。浅拷贝:shallowCopy();深拷贝:deepCope()。

三,Q:python里的基本数据类型都有什么?

  A:数字-number-数字;布尔型-bool-(True,False);字符串-str-‘a‘或者"a";列表-list-[];元祖-tuple-();字典-dict-{}。其中列表list,字典dict是可变的,其余数字number,字符串str,元祖tuple是不可变的

四,Q:简单说一下python中如何实现多线程

  A:线程是轻量级的进程,多线程允许一次执行多个线程。众所周知,Python 是一种多线程语言,它有一个多线程包。

  GIL(全局解释器锁)确保一次执行单个线程。一个线程保存 GIL 并在将其传递给下一个线程之前执行一些操作,这就产生了并行执行的错觉。但实际上,只是线程轮流在 CPU 上。当然,所有传递都会增加执行的开销。

  注意:GIL后期会出一个专门的博客来说一说,刚才查了一下,要说的东西还是比较多的。

五,Q:什么是Flask,和Django对比有什么不同

  A:Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。Flask使用 BSD 授权。

    Flask是一个轻量级框架,相当于一个步枪,而 Django是一个个重量级框架,相当于一个重机枪,但是Flask的三方库也是相当强大的,Django能做到的 Flask也都可以(个人表示只用过Flask)。

   Flask的优势:

   Flask自由、灵活,可扩展性强,入门简单,适用于中小型网站的开发,非常试用web服务的API开发,性能方面均优于或高于Django,Django自带的或第三方的好评如潮的功能,Flask上总会找到与之类似第三方库,Flask与关系型数据库的配合使用不弱于Django,而其与NoSQL数据库的配合远远优于Django

   Django的优势:(三方摘录)

   Django的自带ORM非常优秀,综合评价略高于SQLAlchemy,Django自带的模板引擎简单好用,但其强大程度和综合评价略低于Jinja,Django自带的数据库管理app好评如潮,Django目前支持Jinja等非官方模板引擎。

六,Q:如何在python中管理内存

  A:python的内存管理是由私有的堆空间管理的,所有的python对象和数据结构都在一个专有的堆,程序员没有访问该堆的权限,只有解释器才能对他进行操作。可用 is 判断两个对象的内存地址是否一样,用 == 判断两个对象的值是否一样。None值也有内存地址,用print(id(None))可以打印其内存地址。

  备注:这个写的感觉听不错哒,可以参考。https://www.cnblogs.com/wangyuhangboke/p/7802253.html

七,Q:刚刚说完了内存管理,现在我们来说说垃圾回收吧

  A:python提供了对内存的垃圾收集机制,但是他将不用的内存放到内存池而不是反回给操作系统。python内部使用引用计数,来保持追踪内存中的对象,python内部记录了对象有多少个引用,就是引用计数,当对象被创建时就创建了一个引用计数,当对象不再需要的时候,这个对象的引用计数为0时,他被垃圾回收。当对象被创建被、作为参数传递给函数或作为容器对象的一个元素引用计数增加,相反,一个本地引用离开他的作用域、对象的别名被显式的销毁、对象的一个别名被赋值给其他对象或窗口对象本身被销毁引用计数会减少。

八,Q:能否解释一下 *args 和 **kwargs?

  A:当函数的参数不确定时,可以使用*args和**kwargs。*args没有key值,**kwargs有key值。*args可以当作可容纳多个变量组成的list或tuple。直观一点来点代码吧。  

#!/usr/bin/env python
# -*- coding: utf-8 -*-

def parseArgs(*args, **kwargs):
    print(type(args))
    print(args)
    print(type(kwargs))
    print(kwargs)

if __name__ == ‘__main__‘:
    parseArgs("test","123",‘456‘,hello="hello",name=‘tom‘)

九,Q:解释 Python 中的 join() 和 split() 函数

  A:join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串,例如

#!/usr/bin/env python
# -*- coding: utf-8 -*-

str = "-"
seq = ("a", "b", "c")  # 字符串序列
print(str.join(seq))

li = [‘d‘, ‘e‘, ‘f‘]  # 字符串序列
print(str.join(li))

  split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串。语法 str.split(str="", num=string.count(str)).

  str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。

  num -- 分割次数。默认为 -1, 即分隔所有。例如

#!/usr/bin/env python
# -*- coding: utf-8 -*-

str = "my name is xc"
print(str.split())  # 以空格为分隔符,包含 \n
print(str.split(‘ ‘, 2))  # 以空格为分隔符,分隔成2+1个

十,Q:Python 区分大小写吗?

   A:python是区分大小写的,最后一个题我自身觉得挺无聊的,但是仔细想想,还有点懵,自己试了一遍才知道,真的区分,别让别人的问题问懵了。

最近忙着弄Flask的源码,写博客的时间不多,过几天整理好了,把基础的工具类,权限,OSS登陆写好以后,我会开源在码云上。觉得是可以拆分部署的,不知道真实项目可不可以使用,还在补全注释和代码优化。

原文地址:https://www.cnblogs.com/cxiaocai/p/11009114.html

时间: 2024-11-05 22:45:33

python基础面试题整理---从零开始 每天十题(01)的相关文章

python基础面试题整理---从零开始 每天十题(02)

书接上回,我们继续来说说python的面试题,我在各个网站搜集了一些,我给予你们一个推荐的答案,你们可以组织成自己的语言来说出来,让我们更好的做到面向工资编程 一.Q:说说你对zen of python的理解,你有什么办法看到它. A:The Zen of Python是Python语言的指导原则,遵循这些基本原则,输入import this,然后直接运行即可 二.Q:什么是元类(meta_class) A:我们定义类来创建对象,但是现在我们知道类也是对象.那么是通过什么来创建类呢?答案就是元类

python基础面试题整理---从零开始 每天十题(04)

一.Q:如何用Python来进行查询和替换一个文本字符串? A:可以使用sub()方法来进行查询和替换,sub方法的格式为:sub(replacement, string[, count=0]) replacement是被替换成的文本 string是需要被替换的文本 count是一个可选参数,指最大被替换的数量,示例: #!/usr/bin/env python # -*- coding: utf-8 -*- import re p = re.compile('(blue|white|red)'

Python基础班每日整理(六)

03_面向对象_day03 类属性和实例属性的概念.类属性是给类对象(类是一个特殊的对象)中定义的属性,通常用来记录与这个类相关的特征,类属性不会用于记录具体对象的特征.类属性的定义是在初始化方法之外的实例对象的属性叫做实例属性,在初始化方法内部定义 类属性和实例属性的访问类属性的访问是类名.类属性实例属性的访问是实例对象.属性名,也可以在类内部使用self.属性名访问 类方法的定义和使用br/>@classmethoddef 类方法名(cls):pass需要修饰器@classmethod来标识

python测试工程师高端基础面试题整理

面试总括篇 技术技能 开发语言:python 数据库:mysql 操作系统;linux 网络协议基础 测试技能:自动化(UIselenium+接口)+性能 业务知识 测试工程师执业规划 初级-->中级-->高级-->资深或者测试经理(汇报+组内协调+部门协调) 面试类型 技术面试:广博的技术面+专精的技术方向 项目面试:为团队做了什么+为项目做了什么+为公司做了什么 综合素质面试:团队协作能力+团队管理能力+核心竞争能力(学习能力) 精彩的自我介绍 深刻的第一印象 优秀的语言表达能力 亲

架构师必备之常见面试题整理——数据库灵魂十问!

常见的数据库面试题有哪些 (一)什么是存储过程?有哪些优缺点? 存储过程是一些预编译的SQL语句. 更加直白的理解:存储过程可以说是一个记录集,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字,在用到这个功能的时候调用他就行了. 存储过程是一个预编译的代码块,执行效率比较高 一个存储过程替代大量T_SQL语句 ,可以降低网络通信量,提高通信速率 可以一定程度上确保数据安全 (二)索引是什么?有什么作用以

.NET基础面试题整理

今年毕业,本学期找工作期间在面试前做的一些临时的准备 以下的关于老赵分享的面试题解答参考了手头的书籍和视频教程,以及网上的资料,现整理出来希望对大家有所帮助,不对或欠佳的地方望大家指出来我好改正. 1.什么是.NET?什么是CLI?什么是CLR?IL是什么?   (1).net用于代码编译和执行的集成托管环境,换句话,它管理应用程序运行的方方面面,包括首次运行的编译,为程序分配内存存储数据和指令,对于应用程序授予或拒绝相应的权限,并启动管理应用程序的执行,剩余内存的在分配.由于所有.net应用程

Python基础班每日整理(一)

01_Linux基础1.操作系统的作用?操作系统是配置在计算机硬件上的第一层软件,主要作用是管理好硬件设备.2.Linux中根目录和家目录分别用什么表示?/表示根目录.~表示家目录3.Linux中相对路径和绝对路径?以根目录(/)或者家目录(~)开始的路径称为绝对路径,反之称为相对路径4.常用终端命令的介绍.ls list 查看当前文件夹下的内容pwd print wrok directory 查看当前所在文件夹cd [目录名] change directory 切换文件夹touch [文件名]

Python基础班每日整理(二)

02_Python基础_day02 Python中注释的作用?单行和多行注释在程序中对某些代码进行标注说明,增强程序的可读性.单行注释:以#号开头,再加一个空格,后面跟上注释内容TODO注释:# TODO 注释内容 备忘功能,可以记录待开发的程序多行注释:一对连续的三个双引号"""注释内容""" 计算机的三大件CPU.内存.硬盘 程序执行原理?程序没运行之前保存在硬盘上,运行之后加载到内存,然后CPU执行内存中程序代码 变量的作用?如何定义变量?

Python基础班每日整理(四)

02_Python基础_day06 字符串的定义字符串就是一串字符,用一对儿单引号或者双引号括起来 字符串切片切片就是使用索引值,从一个大的字符串中切出小的字符串,适用于字符串.元组.列表.基本语法是 字符串[开始索引:结束索引:步长],默认步长为1,索引从0开始,如果倒序切片,索引从-1开始. Python内置的公共方法len.del.max.min.cmp 列表"+"和extend.append的区别两个列表相加得到了一个全新的列表extend(列表),是给原来的列表又扩展了一个新