1、请尽可能列举python列表的成员方法,并给出一下列表操作的答案:

  • len() 返回列表中的元素数量。
  • max() 返回列表中的最大元素。最大元素的判断依据是列表中的对象类型。数字列表中的最大元素是最大的数字。字符串列表中的最大元素是按照字母顺序排序时排在最后一位的元素。因为 max() 函数的定义依据是大于比较运算符。如果列表包含不同的无法比较类型的元素,则 max() 的结果是 undefined。
  • min() 返回列表中的最小元素。它是 max() 函数的对立面,返回列表中的最小元素。
  • sort() 返回一个从最小到最大排序的列表副本,并使原始列表保持不变。
  • append() 会将元素添加到列表末尾。
  • reverse() 反转列表中元素
  • pop([index=-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
  • insert(index, obj)将对象插入列表

(1) a=[1, 2, 3, 4, 5], a[::2]=?, a[-2:] = ?

  a[::2]=[1,3,5], a[-2:] = [4,5]
(2) 一行代码实现对列表a中的偶数位置的元素进行加3后求和?

考察map()函数 map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。

  sum(map(lambda x:x+3, a[1::2]))
(3) 将列表a的元素顺序打乱,再对a进行排序得到列表b,然后把a和b按元素顺序构造一个字典d。

考察random.shuffle()  将序列的所有元素随机排序。考察浅拷贝和深拷贝,直接赋值,传递对象的引用而已,原始列表改变,被赋值的b也会做相同的改变;深拷贝是拷贝子对象,所以原始数据改变,子对象不会改变。

考察zip()函数,用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

import random  
import copy

list_a = [20, 16, 10, 5,63,42,31]
random.shuffle(list_a)
print(list_a)
list_b = copy.deepcopy(list_a)
list_b.sort()
print(list_b)
d = {}
#方法一

#for i in range(len(list_a)):
#    d[list_a[i]]=list_b[i]

#方法二
d=dict(zip(list_a,list_b))
print(d)

2、用python实现统计一篇英文文章内每个单词的出现频率,并返回出现频率最高的前10个单词及其出现次数,并解答以下问题?(标点符号可忽略)

(1) 创建文件对象f后,解释f的readlines和xreadlines方法的区别?
(2) 追加需求:引号内元素需要算作一个单词,如何实现?

import sys,re
urldir=r"C:\python27\a.txt"
distone={}
numTen=[]
#先文档变成一个字典
f=open(urldir,'r')
for line in f.readlines():
#用空格替换到所有非单词字符,\W是匹配任何非单词字符
    line = re.sub('\W'," ",line)   
    lineone=line.split()
    for keyone in lineone:
#如果distone字典中没有找到keyone
        if not distone.get(keyone):
            distone[keyone]=1           
        else:
            distone[keyone]+=1
f.close()
#整理前10出现的单词的次数
for v in distone.values():
    if v not in numTen:
        numTen.append(v)
numTen.sort()
numTen=numTen[-10:]
#将字典转为列表,其其实这个可以不转。直接遍历也行,之前没有想到同时出现的怎么办。
distone = sorted(distone.iteritems(),key=lambda d:d[1],reverse = True )
#最后遍历,可能出现的次数一样的。
for i in distone:
    if i[1] in numTen:
        print i

3、简述python GIL的概念, 以及它对python多线程的影响?

5、请回答一下问题:

(1) 阐述一下装饰器,描述符(property)、元类的概念,并列举其应用场景;
(2) 如何动态获取和设置对象的属性。

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

答:赋值(=),就是创建了对象的一个新的引用,修改其中任意一个变量都会影响到另一个。
浅拷贝:创建一个新的对象,但它包含的是对原始对象中包含项的引用(如果用引用的方式修改其中一个对象,另外一个也会修改改变){1,完全切片方法;2,工厂函数,如list();3,copy模块的copy()函数}
深拷贝:创建一个新的对象,并且递归的复制它所包含的对象(修改其中一个,另外一个不会改变){copy模块的deep.deepcopy()函数}

7.介绍一下except的用法和作用?

答:try…except…except…[else…][finally…]
执行try下的语句,如果引发异常,则执行过程会跳到except语句。对每个except分支顺序尝试执行,如果引发的异常与except中的异常组匹配,执行相应的语句。如果所有的except都不匹配,则异常会传递到下一个调用本代码的最高层try代码中。
try下的语句正常执行,则执行else块代码。如果发生异常,就不会执行
如果存在finally语句,最后总是会执行。

8.Python中pass语句的作用是什么?

答:pass语句不会执行任何操作,一般作为占位符或者创建占位程序,whileFalse:pass

9.介绍一下Python下range()函数的用法?

答:列出一组数据,经常用在for in range()循环中

10.如何用Python来进行查询和替换一个文本字符串?

答:可以使用re模块中的sub()函数或者subn()函数来进行查询和替换,
格式:sub(replacement, string[,count=0])(replacement是被替换成的文本,string是需要被替换的文本,count是一个可选参数,指最大被替换的数量)

>> import re
>>p=re.compile(‘blue|white|red’)
>>print(p.sub(‘colour’,'blue socks and red shoes’))
colour socks and colourshoes
>>print(p.sub(‘colour’,'blue socks and red shoes’,count=1))
colour socks and redshoes
subn()方法执行的效果跟sub()一样,不过它会返回一个二维数组,包括替换后的新的字符串和总共替换的数量

11.Python里面match()和search()的区别?

答:re模块中match(pattern,string[,flags]),检查string的开头是否与pattern匹配。
re模块中research(pattern,string[,flags]),在string搜索pattern的第一个匹配值。

>>print(re.match(‘super’, ‘superstition’).span())
(0, 5)
>>print(re.match(‘super’, ‘insuperable’))
None
>>print(re.search(‘super’, ‘superstition’).span())
(0, 5)
>>print(re.search(‘super’, ‘insuperable’).span())
(2, 7)

12.用Python匹配HTML tag的时候,<.>和<.?>有什么区别?

答:术语叫贪婪匹配( <.*> )和非贪婪匹配(<.*?> )  贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配. 而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配。

源字符串:aa<div>test1</div>bb<div>test2</div>cc
正则表达式一:<div>.*</div>
匹配结果一:<div>test1</div>bb<div>test2</div>
正则表达式二:<div>.*?</div>
匹配结果二:<div>test1</div>(这里指的是一次匹配结果,所以没包括<div>test2</div>)

13.Python里面如何生成随机数?

答:random模块
随机整数:random.randint(a,b):返回随机整数x,a<=x<=b
random.randrange(start,stop,[,step]):返回一个范围在(start,stop,step)之间的随机整数,不包括结束值。
随机实数:random.random( ):返回0到1之间的浮点数
random.uniform(a,b):返回指定范围内的浮点数。

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

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

15.如何在一个function里面设置一个全局的变量?

答:解决方法是在function的开始插入一个global声明:
def f()
global x

16.单引号,双引号,三引号的区别

答:单引号和双引号是等效的,如果要换行,需要符号(),三引号则可以直接换行,并且可以包含注释如果要表示Let’s go 这个字符串
单引号:s4 = ‘Let\’s go’
双引号:s5 = “Let’s go”
s6 = ‘I realy like“python”!’
这就是单引号和双引号都可以表示字符串的原因了

------------------------------------------------------------分割线----------------------------------------------------------------------------

1)对if __name__ == 'main'的理解陈述

__name__是当前模块名,当模块被直接运行时模块名为__main__,也就是当前的模块,当模块被导入时,模块名就不是__main__,即代码将不会执行。

2)python是如何进行内存管理的?

a、对象的引用计数机制
python内部使用引用计数,来保持追踪内存中的对象,Python内部记录了对象有多少个引用,即引用计数,当对象被创建时就创建了一个引用计数,当对象不再需要时,这个对象的引用计数为0时,它被垃圾回收。

b、垃圾回收

1>当一个对象的引用计数归零时,它将被垃圾收集机制处理掉。

2>当两个对象a和b相互引用时,del语句可以减少a和b的引用计数,并销毁用于引用底层对象 的名称。然而由于每个对象都包含一个对其他对象的应用,因此引用计数不会归零,对象也不会销毁。(从而导致内存泄露)。为解决这一问题,解释器会定期执行一个循环检测器,搜索不可访问对象的循环并删除它们。

c、内存池机制

Python提供了对内存的垃圾收集机制,但是它将不用的内存放到内存池而不是返回给操作系统。

1>Pymalloc机制。为了加速Python的执行效率,Python引入了一个内存池机制,用于管理 对小块内存的申请和释放。

2>Python中所有小于256个字节的对象都使用pymalloc实现的分配器,而大的对象则使用 系统的malloc。

3>对于Python对象,如整数,浮点数和List,都有其独立的私有内存池,对象间不共享他们的内存池。也就是说如果你分配又释放了大量的整数,用于缓存这些整数的内存就不能再分配给浮点数。

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

?
1
2
3
4
5
6
7
8
9
# 1.使用set函数
list = [1, 3, 4, 5, 51, 2, 3]
set(list)
# 2.使用字典函数,
>>> a = [1, 2, 4, 2, 4, 5, 6, 5, 7, 8, 9, 0]
>>> b = {}
>>> b = b.fromkeys(a)
>>> c = list(b.keys())
>>> c

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

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

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

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

5)介绍一下except的用法和作用?

try…except…except…else…

执行try下的语句,如果引发异常,则执行过程会跳到except语句。对每个except分支顺序尝试执行,如果引发的异常与except中的异常组匹配,执行相应的语句。如果所有的except都不匹配,则异常会传递到下一个调用本代码的最高层try代码中。

try下的语句正常执行,则执行else块代码。如果发生异常,就不会执行如果存在finally语句,最后总是会执行。

6)Python中__new__与__init__方法的区别

__new__:它是创建对象时调用,会返回当前对象的一个实例,可以用__new__来实现单例

__init__:它是创建对象后调用,对当前对象的一些实例初始化,无返回值

7)常用的网络数据爬取方法

  • 正则表达式
  • Beautiful Soup
  • Lxml
   

16)Linux部署服务脚本命令(包括启动和停止的shell脚本)

18)POST与 GET的区别

  • GET数据传输安全性低,POST传输数据安全性高,因为参数不会被保存在浏览器历史或web服务器日志中;
  • 在做数据查询时,建议用GET方式;而在做数据添加、修改或删除时,建议用POST方式;
  • GET在url中传递数据,数据信息放在请求头中;而POST请求信息放在请求体中进行传递数据;
  • GET传输数据的数据量较小,只能在请求头中发送数据,而POST传输数据信息比较大,一般不受限制;
  • 在执行效率来说,GET比POST好

19)什么是lambda函数?它有什么好处?

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

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

?
1
2
3
lambda [arguments]:expression
>>> a=lambdax,y:x+y
>>> a(3,11)

转载于:https://www.cnblogs.com/xiaohuhu/p/9010450.html

Python工程师面试题目相关推荐

  1. Python后端工程师面试题目分享,求职面试之前先来看看!

    Python后端工程师面试题目有哪些?下面就跟着小编一起赶紧来看看吧! 面试是公司挑选职工的一种重要方法.它给公司和应招者提供了进行双向交流的机会,能使公司和应招者之间相互了解,从而双方都可更准确做出 ...

  2. JAVA工程师面试题目大全_绝对值得看

    JAVA工程师面试题目大全 一.单选题 1.下列哪种说法是正确的( D) A)实例方法可直接调用超类的实例方法 B)实例方法可直接调用超类的类方法 C)实例方法可直接调用其他类的实例方法 D)实例方法 ...

  3. 嵌入式软件工程师面试题目整理(一)

    文章目录 嵌入式软件工程师面试题目整理(一) Arm有多少32位寄存器? Arm2440和6410有什么区别 CPU,MPU,MCU,SOC,SOPC联系与差别 上拉&下拉&高阻态 串 ...

  4. Python工程师面试必备25条Python知识点,赶紧收藏!

    人生苦短 我用python 有些小伙伴最近问我Python工程师面试会问些什么 现在就给大家来总结一下干货! 源码.资料电子书点击此处 1.到底什么是Python?你可以在回答中与其他技术进行对比 下 ...

  5. 25道Python工程师面试必备知识点!

    2018-01-13 许以沉默 小象 Python作为近年来受人关注的流行编程语言,在众编程语言中排名靠前.因此,企业对这方面的人才需求逐渐增大,越来越多的人想要成为Python工程师.今天,小编就分 ...

  6. python软件工程师面试题目及答案_Python面试题及答案汇总整理(2019版)

    发现网上很多Python面试题都没有答案,所以博主花了很长时间搜集整理了这套Python面试题及答案,由于网上的Python相关面试题大多数都是2019年的,所以我这个也是2019版的,哈哈~ 1.一 ...

  7. 浩鲸新智能解决方案工程师面试_【华为解决方案工程师面试题目|面试经验】-看准网...

    1. 网申: 其实华为网申基本不刷人的,认真填写基本没有问题.但是不是说不刷人,我身边有人网申没过,主要是因为专业太不对口,简历上也没有跟申请岗位相关的内容,另外六级成绩太低(当然这只是我们自己的猜想 ...

  8. python开发面试题目_Python测试开发面试笔试题

    Python 测试开发面试笔试题 一,中文单项选择题(30 分,每个 3 分) 1.下列哪个语句在 Python 中是非法的? A.x = y = z = 1 B.x = (y = z + 1) C. ...

  9. Python工程师面试汇总

    A公司(爬虫工程师) 1.国际惯例,请您做一下自我介绍? 2.说一下你为什么从上一家公司中离职? 3.HTTP你了解吗,有几次握手? 4.说说你在爬取网站的过程中,哪家或者哪几家公司是你觉得最难爬的, ...

  10. 软件工程师如何测试项目,【软件测试工程师(华为项目)软件工程师面试题目|面试经验】-看准网...

    2011.3.30:一面 早上鸡还没叫我就醒来了,在家里简单地打扮打扮,重塑个人形象,胡子长的剃,头发乱的修,然后边穿衣服边拉裤链左手拎包右手锁门地就从家里出来了. 其实,上周三的时候我就收到了面试通 ...

最新文章

  1. Activiti——HelloWorld-模拟流程执行(三)
  2. VMware虚拟机搭MAC系统
  3. WebClient 请求 https 页面出错:未能创建 SSL/TLS 安全通道
  4. JavaScript网页换肤
  5. 最大矩阵(简单DP)
  6. C/C++ 踩过的坑和防御式编程
  7. Redis大乱探------哨兵(二)
  8. dotnet new 命令安装模板
  9. Map-Reduce原理
  10. 华东云友会主播栏目01期 阿里云X海底捞,千人千锅就是如此任性!
  11. 全球首款5g全网通智能路由器华为5G CPE Pro发布 售价2499元
  12. 设计模式七: 策略(Strategy)
  13. node.js + express服务端,客户端请求图片,在浏览器出现乱码解决方案
  14. python3基本语法规则,Python中的语法规则
  15. strut-控制器ActionServlet类详解
  16. 文件随机重命名的方法
  17. python动态仪表图_matplotlib仪表动态更新
  18. python邮件发送和正则表达式(1)
  19. vue实现列表的无缝滚动
  20. 百度网盘无法登陆网络异常

热门文章

  1. 以太坊 ERC EIP是什么
  2. 基于SSM的宠物商城系统
  3. mysql 索引使用不当_MySQL笔记:select默认使用不当索引导致的巨大性能损失问题_MySQL...
  4. 解决anaconda与pycharm冲突导致import无法使用
  5. python多进程与多线程_第十五章 Python多进程与多线程
  6. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-2.微信扫一扫功能开发前期准备...
  7. 阶段3 2.Spring_06.Spring的新注解_2 spring的新注解-Bean
  8. VMware黑屏解决方法
  9. awk --- 常用技巧
  10. POJ 1141 Brackets Sequence