1、一行代码实现1-100之间和

  1. In [1]: sum(range(0,101))
  2. Out[1]: 5050

2、如何在一个函数内部修改全局变量

利用global修改全局变量

  1. In [2]: a = 10
  2. In [3]: def fn():
  3. ...: global a
  4. ...: a=4
  5. ...:
  6. In [4]: fn()
  7. In [5]: print(a)
  8. 4

3、列出5给python标准库

  1. os:提供了不少与操作系统相关联的函数
  2. sys:通常用于命令行参数
  3. re:正则表达式
  4. math:数学运算
  5. datetime:处理日期时间

4、字典如何删除和合并字典

使用字典的方法del和update

  1. In [6]: dict1 = {1:'one',2:'two',3:'three'}
  2. In [7]: del dict1[1] #删除字典的键值
  3. In [8]: dict1
  4. Out[8]: {2: 'two', 3: 'three'}
  5. In [9]: dict2 = {4:'four',5:'five'}
  6. In [10]: dict1.update(dict2) #update合并字典
  7. In [11]: dict1
  8. Out[11]: {2: 'two', 3: 'three', 4: 'four', 5: 'five'}

5、谈下python的GIL

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

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

6、python实现列表去重的方法

先通过集合去重,后再转换为列表

  1. In [20]: list1 = [4,6,3,4,12,7,5,8]
  2. In [21]: a = set(list1) #转换为集合
  3. In [22]: a
  4. Out[22]: {3, 4, 5, 6, 7, 8, 12}
  5. In [23]: [x for x in a]
  6. Out[23]: [3, 4, 5, 6, 7, 8, 12]

7、fun(*args,**kwargs)中的*args,**kwarg什么意思?

*args,**kwargs主要用于函数定义,可以将不定数量的参数传递给一个函数,这里的不定意思是:预先并不知道函数使用者会传递多少个参数,所以在这个场景下使用这两个关键字。*args是用来发送一个非键值对的可变数量的参数列表给函数,来看个例子

  1. In [24]: def dome(arg,*args):
  2. ...: print(arg)
  3. ...: for i in args:
  4. ...: print(i)
  5. ...:
  6.  
  7. In [25]: dome(1,5,7,3,8)
  8. 1
  9. 5
  10. 7
  11. 3
  12. 8

**kwargs允许将不定长度的键值对作为参数传递给一个函数,如想要在一个函数里处理带名字的参数,这时就要使用**kwargs,上个例子

  1. In [28]: def demo(**kwargs):
  2. ...: for k,v in kwargs.items():
  3. ...: print(k,v)
  4. ...:
  5.  
  6. In [29]: demo(name='marry',age='女')
  7. name marry
  8. age

8、python2和python3的range(100)区别

python2返回列表

python3返回迭代器,节约内存

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

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

10、python内建数据类型那些

  1. 整型--int
  2. 布尔型--bool
  3. 字符串--str
  4. 列表--list
  5. 元组--tuple
  6. 字典--dict

11、简述面向对象中__new__和__init__区别

__init__是初始化方法,创建对象后,就立刻被默认调用了,可以接收参数,如所示

  1. In [41]: class demo_new:
  2. ...: def __init__(self,newnum,newcolor): #__init__方法自动被调用,可以接收参数
  3. ...: self.newnum = newnum
  4. ...: self.newcolor = newcolor
  5. ...: def move(self):
  6. ...: print('飞起来')
  7. ...:
  8.  
  9. In [42]: demo1 = demo_new(2,'green') #创建对象
  10. In [43]: print(demo1.newcolor)
  11. green
  12. In [44]: print(demo1.newnum)
  13. 2

(1)__new__至少要有一个参数cls,当前类,此参数在实例化时由python解释器自动识别

(2)__new__必须要有返回值,返回实例化出来的实例,这点在自己实现__new__时要特别注意,可以return父类(通过super(当前类名,cls))__new__出来的实例,或者直接是object的__new__出来的实例

(3)__init__有一个参数self,就是__new__返回的实例,__init__在__new__的基础上可以完成一些其他初始化动作,__init__不需要返回值

(4)如果__new__创建的是当前类的实例,会自动调用__init__函数,通过return语句里面调用__new__函数的第一个参数是cls来保证是当前类实例,如果是其他类的类名,那么实际创建返沪的就是其他类的实例,其实就不会调用其他类__init__函数

  1. In [46]: class A(object):
  2. ...: def __init__(self):
  3. ...: print('__init__方法',self)
  4. ...: def __new__(cls):
  5. ...: print('这是cls的ID',id(cls))
  6. ...: print('这是__new__方法',object.__new__(cls))
  7. ...: return object.__new__(cls)
  8. ...:
  9.  
  10. In [47]: A()
  11. 这是clsID 2069068533960
  12. 这是__new__方法 <__main__.A object at 0x000001E1BEE0BE48>
  13. __init__方法 <__main__.A object at 0x000001E1BEE0BE48>
  14. Out[47]: <__main__.A at 0x1e1bee0be48>
  15. In [48]: print('这是类A的ID',id(A))
  16. 这是类AID 2069068533960

12、简述with方法打开处理文件帮我们做了什么

  1. In [50]: f = open('./1.txt','wb')
  2. In [51]: try:
  3. ...: f.write('hello world')
  4. ...: except:
  5. ...: pass
  6. ...: finally:
  7. ...: f.close()

打开文件在进行读写的时候可能会出现一些异常状况,如果汉族常规的f.open写,我们需要try,excpet,finally做异常判断,并且文件最终不管遇到什么情况,都要执行finally f.close()关闭文件,with方法帮我们实现了finally中的f.close()

13、列表[1,2,3,4,5],请使用map()函数输出[1,4,9,16,25],并使用列表推导式提取出大于10的数,最终输出[16,25]

map()函数第一个参数是fun,第二个参数一般是list,第三个参数可以写list,也可不写

  1. In [52]: list1 = [1,2,3,4,5]
  2. In [53]: def fn(x):
  3. ...: return x**2
  4. ...:
  5. In [54]: res = map(fn,list1)
  6. In [55]: res = [i for i in res if i >10]
  7. In [56]: print(res)
  8. [16, 25]

14、python中生成随机整数、随机销售,0-1之间的小数方法

  1. 随机整数:random.randint(a,b) 区间整数
  2. 随机小数:用numpy库,利用np.random.randn(5) 生成5个随机小数
  3. 0-1随机小数:random.random(),注:括号内不传参

15、避免转义给字符串加那个字母表示原始字符串:

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

16、<div class=’nam’>中国</div>,用正则匹配出标签里面的内容(‘中国’),其中class的类名不确定

  1. In [67]: import re
  2. In [68]: str1 = '<div class="nam">中国</div>'
  3. In [69]: res = re.findall(r'<div class=".*">(.*?)</div>',str1)
  4. In [70]: print(res)
  5. ['中国']

17、python中断言方法举例

assert()方法,断言成功,则程序继续执行,断言失败,则程序报错

  1. In [71]: a = 3
  2. In [72]: assert(a>1)
  3. In [73]: print("断言成功,程序继续向下执行")
  4. 断言成功,程序继续向下执行
  5. In [74]: b = 5
  6. In [75]: assert(b>9)
  7. ---------------------------------------------------------------------------
  8. AssertionError Traceback (most recent call last)
  9. <ipython-input-75-e543486a620d> in <module>
  10. ----> 1 assert(b>9)
  11. AssertionError:

18、数据表student有id,name,score,city字段,其中name中有名字可能重复,需要消除重复行,请写sql语句

select distinct name from student

19、10个Linux常用命令

ls pwd cd touch rm mkdir tree cp mv cat more grep echo

20、python2和python3区别?

(1)python3使用print必须用小括号包裹打印内容

(2)python2 range(10)返回列表,python3返回迭代器,节约内存

(3)python2使用ascii编码,python3使用uft-8编码

(4)python2中unicode表示字符串序列,str表示字节序列;python3中str表示字符串学历,byte表示字节序列

(5)python2中正常显示中文,引入coding声明,python3不需要

(6)python2中raw_input()函数,python3中是input()函数

21、列出python中可变数据类型和不可变数据类型,简述原理

不可变数据类型:数值型、字符串型string和远祖tuple

不可变数据类型:不允许变量的值发生变化,如果改变了变量的值,相当于新建了一个对象,而对于相同的值的对象,内存中则只有一个对象地址,可用id()方法查看

可变数据类型:列表list和字典dict

允许变量的值发生变化,即如果对变量进行了append、+=等操作后,只是改变了变量的值,而新建对象,变量引用的地址也不会变化,不过对于相同的值的不同对象,在内存中则会存在不同的对象,即,每个对象都有自己的地址,相当于内存中对于同值的对象保存了多份,这里不存在引用计数,是实实在在的对象。

  1. In [76]: a = 3
  2. In [77]: b = 3
  3. In [78]: id(a)
  4. Out[78]: 1608819872
  5. In [79]: id(b)
  6. Out[79]: 1608819872
  7. In [80]: a = [1,2]
  8. In [81]: b = [1,2]
  9. In [82]: id(a)
  10. Out[82]: 2069075295752
  11. In [83]: id(b)
  12. Out[83]: 2069084580424

22、s=’abcadbdx’,去重并从小到大排序‘abcdx’

  1. In [85]: s = 'abcadbdx'
  2. In [86]: s = set(s)
  3. In [87]: s = list(s)
  4. In [88]: s.sort(reverse=False)
  5. In [89]: res = ''.join(s)
  6. In [90]: print(res)
  7. abcdx

23、用lambda函数实现两个数相乘

  1. In [91]: sum1 = lambda a,b:a*b
  2. In [92]: print(sum1(4,5))
  3. 20

24、字典根据键从小到大排序dict1=

{'name':'sx','age':5000,'city':'西安','tel':'132xxxxxxxxx'}

  1. In [93]: dict1 = {'name':'sx','age':5000,'city':'西安','tel':'132xxxxxxxxx'}
  2. In [94]: list1 = sorted(dict1.items(),key=lambda i :i[0],reverse=False)
  3. In [95]: print('sorted根据字典键排序',list1)
  4. sorted根据字典键排序 [('age', 5000), ('city', '西安'), ('name', 'sx'), ('tel', '132xxxxxxxxx')]
  5. In [96]: new_dict = {}
  6. In [97]: for i in list1:
  7. ...: new_dict[i[0]]=i[1]
  8. ...:
  9. In [98]: print('新字典',new_dict)
  10. 新字典 {'age': 5000, 'city': '西安', 'name': 'sx', 'tel': '132xxxxxxxxx'}

25、字符串a =’not 404 found 张三 99 西安’,每个词中间都有空格,用正则过滤掉英文和数字,最终输出;张三 深圳

  1. In [106]: import re
  2. In [107]: a = 'not 404 found 张三 99 西安'
  3. In [108]: list1 = a.split(" ")
  4. In [109]: print(list1)
  5. ['not', '404', 'found', '张三', '99', '西安']
  6. In [110]: res = re.findall('\d+|[a-zA-Z]+',a)
  7. In [111]: for i in res:
  8. ...: if i in list1:
  9. ...: list1.remove(i)
  10. ...:
  11. In [112]: new_str = " ".join(list1)
  12. In [113]: print(res)
  13. ['not', '404', 'found', '99']
  14. In [114]: print(new_str)
  15. 张三 西安

26、用filter方法求出列表所有奇数,并构造新列表,a = [1,2,3,4,5,6,7,8,9,10]

filter()函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素构成的新列表。该接收两个参数,第一个为函数,第二个位序列,序列的每个元素作为参数传递给函数进行判断,返回True或False,最后将返回为True的放到中

  1. In [115]: a = [1,2,3,4,5,6,7,8,9,10]
  2. In [116]: def fn(a):
  3. ...: return a%2==1
  4. ...:
  5. In [117]: newlist = filter(fn,a)
  6. In [118]: newlist = [i for i in newlist]
  7. In [119]: print(newlist)
  8. [1, 3, 5, 7, 9]

27、列表推导式求列表所有奇数,并构造新列表,a=[1,2,3,4,5,6,7,8,9,10]

  1. In [120]: a = [1,2,3,4,5,6,7,8,9,10]
  2. In [121]: res = [i for i in a if i%2==1]
  3. In [122]: print(res)
  4. [1, 3, 5, 7, 9]

28、正则re.complie作用

re.complie是将正则表达式编译成一个对象,加快速度,并重复使用

29、a=(1,),b=(1),c=(‘1’)分别表示什么类型数据

  1. In [123]: type((1,))
  2. Out[123]: tuple
  3.  
  4. In [124]: type((1))
  5. Out[124]: int
  6.  
  7. In [125]: type(('1'))
  8. Out[125]: str

30、利用collections库的Counter方法统计字符串每个单词出现的次数

  1. In [130]: from collections import Counter
  2. In [131]: a = 'aksfnwoefjaonfakfasojf;sfhwnafsn;sfhowsjfaoemsm,'
  3. In [132]: res = Counter(a)
  4. In [133]: print(res)
  5. Counter({'f': 9, 's': 7, 'a': 6, 'o': 5, 'n': 4, 'w': 3, 'j': 3, 'k': 2, 'e': 2, ';': 2, 'h': 2, 'm': 2, ',': 1})

30道python真实面试题(搜集到的,看看其实都是基础)的更多相关文章

  1. 面试前赶紧看了5道Python Web面试题,Python面试题No17

    目录 本面试题题库,由公号:非本科程序员 整理发布 第1题: Flask中的请求上下文和应用上下文是什么? 第2题:django中间件的使用? 第3题: django开发中数据做过什么优化? 第4题: ...

  2. 震惊!几道Python 理论面试题,Python面试题No18

    本面试题题库,由公号:非本科程序员 整理发布 第1题: 简述解释型和编译型编程语言? 解释型语言编写的程序不需要编译,在执行的时候,专门有一个解释器能够将VB语言翻译成机器语言,每个语句都是执行的时候 ...

  3. 110道python面试笔试题汇总,你能答对几道?

    数据分析系列教程插播一篇面试题教程,最近公众号新来了不少朋友,这几天不少粉丝留言说问我有没有python面试题,其实之前分享过一些面试题,今天统一再给大家分享一遍,也希望能帮助此时仍在找工作的同学,尽 ...

  4. 合格linux运维人员必会的30道shell编程面试题及讲解

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://oldboy.blog.51cto.com/2561410/1632876 超深度 ...

  5. 超强汇总!110 道 Python 面试笔试题

    https://mp.weixin.qq.com/s/hDQrimihoaHSbrtjLybZLA 今天给大家分享了110道面试题,其中大部分是巩固基本python知识点,希望刚刚入手python,对 ...

  6. (转)合格linux运维人员必会的30道shell编程面试题及讲解

    超深度讲解shell高级编程实战,截至目前shell编程课程国内培训机构最细的课程,不信请看学员表现的水平. 课程牛不牛,不是看老师.课表,而是看培养的的学生水平,目前全免费中伙伴们赶紧看啊. htt ...

  7. 315道Python常见面试题

    第一部分,Python基础篇 为什么学习Python? 通过什么途径学习的Python? Python和Java.PHP.C.C#.C++等其他语言的对比? 简述解释型和编译型编程语言? Python ...

  8. 精选30道Java多线程面试题

    1.线程和进程的区别 进程是应用程序的执行实例.比如说,当你双击的Microsoft Word的图标,你就开始运行的Word的进程.线程是执行进程中的路径.另外,一个过程可以包含多个线程.启动Word ...

  9. 10道Python常见面试题

    1.MySQL索引种类 1.普通索引 2.唯一索引 3.主键索引 4.组合索引 5.全文索引 2.索引在什么情况下遵循最左前缀的规则? 最左前缀原理的一部分,索引index1:(a,b,c),只会走a ...

随机推荐

  1. CC通信软件list

    bozokgh0stnanocoredarkcometponydarkcometadwindadzokaecomblacknixbluebananacorigaratdarkcometDRAThuig ...

  2. java中相对路径加载xml

    一.xml文件一般的存放位置有三个: 1.放在WEB-INF下: 2.xml文件放在/WEB-INF/classes目录下或classpath的jar包中: 3.放在与解析它的java类同一个包中,不 ...

  3. 每天一个linux命令(5):mkdir命令

    版权声明更新:2017-05-09博主:LuckyAlan联系:liuwenvip163@163.com声明:吃水不忘挖井人,转载请注明出处! 1 文章介绍 本文介绍了Linux下命令mkdir. 2 ...

  4. MongoDB中的一些坑(最好不要用)

    MongoDB 是目前炙手可热的 NoSQL 文档型数据库,它提供的一些特性很棒:如自动 failover 机制,自动 sharding,无模式 schemaless,大部分情况下性能也很棒.但是薄荷 ...

  5. Standby Redo Log 的设定原则、创建、删除、查看、归档位置

    设定: 1.每个standby redo log file 至少要和primary database的redo log 一样大,为了方便管理,Oracle 建议主备库的redo log 设置成一样的大 ...

  6. BZOJ3938:Robot

    浅谈标记永久化:https://www.cnblogs.com/AKMer/p/10137227.html 题目传送门:https://www.lydsy.com/JudgeOnline/proble ...

  7. C# Unit Test 备注

    1. UT工程的编译一定要让依赖的dll在同一目录,即和测试目标dll运行的环境一样. 比如 Demo-UT测试Demo工程, 则Demo工程依赖的所有dll必须和Demo输出的可执行环境Demo.d ...

  8. WPF DelegateCommand CanExecute

     private DelegateCommand searchCommand;         public DelegateCommand SearchCommand         {       ...

  9. Modbus通讯协议学习 - 认识篇

    转自:http://www.cnblogs.com/luomingui/archive/2013/06/14/Modbus.html 什么是Modbus? Modbus 协议是应用于电子控制器上的一种 ...

  10. 极客时间_Vue开发实战_汇总贴

    视频地址: https://time.geekbang.org/course/intro/163 https://github.com/tangjinzhou/geektime-vue-1 电脑dem ...