nodejs可以做网站吗,重庆专业网站推广报价,监理建设协会网站,网站开发的论文参考文献搞定这套Python爬虫面试题(面试会so easy)来源#xff1a;中文源码网 浏览#xff1a; 次 日期#xff1a;2019年11月5日【下载文档: 搞定这套Python爬虫面试题(面试会so easy).txt 】(友情提示:右键点上行txt文档名-目标另存为)搞定这套Python爬虫面试题(面试会…搞定这套Python爬虫面试题(面试会so easy)来源中文源码网 浏览 次 日期2019年11月5日【下载文档: 搞定这套Python爬虫面试题(面试会so easy).txt 】(友情提示:右键点上行txt文档名-目标另存为)搞定这套Python爬虫面试题(面试会so easy)先来一份完整的爬虫工程师面试考点:一、 Python 基本功1、简述Python 的特点和优点Python 是一门开源的解释性语言相比 Java C 等语言Python 具有动态特性非常灵活。2、Python 有哪些数据类型Python 有 6 种内置的数据类型其中不可变数据类型是Number(数字), String(字符串), Tuple(元组)可变数据类型是 List(列表)Dict(字典)Set(集合)。3、列表和元组的区别列表和元组都是可迭代对象能够对其进行循环、切片等但元组 tuple 是不可变的。元组不可变的特性使得它可以成为字典 Dict 中的键。4、Python 是如何运行的CPython:Python 程序运行时会先进行编译将 .py 文件中的代码编译成字节码(byte code)编译结果储存在内存的 PyCodeObject 中然后由 Python 虚拟机解释运行。当程序运行结束后Python 解释器会将 PyCodeObject 保存到 pyc 文件中。每一次运行时 Python 都会先寻找与文件同名的 pyc 文件如果 pyc 存在则比对修改记录根据修改记录决定直接运行或再次编译后运行最后生成 pyc 文件 。5、Python 运行速度慢的原因a). Python 不是强类型的语言所以解释器运行时遇到变量以及数据类型转换、比较操作、引用变量时都需要检查其数据类型。b). Python 的编译器启动速度比 JAVA 快但几乎每次都要启动编译。c). Python 的对象模型会导致访问内存效率变低。Numpy 的指针指向缓存区数据的值而 Python 的指针指向缓存对象再通过缓存对象指向数据6、面对 Python 慢的问题有什么解决办法a). 可以使用其他的解释器比如 PyPy 和 Jython 等。b). 如果对性能要求较高且静态类型变量较多的应用程序可以使用 CPython。c). 对于 IO 操作多的应用程序Python 提供 asyncio 模块提高异步能力。7、描述一下全局解释器锁 GIL每个线程在执行时候都需要先获取 GIL保证同一时刻只有一个线程可以执行代码即同一时刻只有一个线程使用 CPU也就是说多线程并不是真正意义上的同时执行。但是在 IO 操作时是可以释放锁的(这也是 Python 能够异步的原因)。而且如果想要利用多核 CPU那么可以使用多进程。8、深拷贝 浅拷贝深拷贝是将对象本身复制给另一个对象浅拷贝则是将对象的引用复制给另一个对象。所以当复制后的对象改变时深拷贝的原对象值不会改变而浅拷贝原对象的值会被改变。9、is 和 的区别is 表示的是对象标示符(object identity)而 表示的是相等(equality)。is 的作用是用来检查对象的标示符是否一致也就是比较两个对象在内存中的地址是否一样而 是用来检查两个对象是否相等。但是为了提高系统性能对于较小的字符串 Python 会保留其值的一个副本当创建新的字符串的时候直接指向该副本即可。如a 8b 8a is b10、文件读写简述文件读取时 read 、readline、readlines 的区别和作用他们的区别除了读取内容范围不同外返回的内容类型也不同。read()会读取整个文件将读取到底的文件内容放到一个字符串变量返回 str 类型。readline()读取一行内容放到一个字符串变量返回 str 类型。readlines() 读取文件所有内容按行为单位放到一个列表中返回 list 类型。11、请用一行代码实现请分别使用匿名函数和推导式这两种方式将 [0, 1, 2, 3, 4, 5] 中的元素求乘积并打印输出元组。print(tuple(map(lambda x: x * x, [0, 1, 2, 3, 4, 5])))print(tuple(i*i for i in [0, 1, 2, 3, 4, 5]))12、请用一行代码实现用 reduce 计算 n 的阶乘(n!1×2×3×...×n)print(reduce(lambda x, y: x*y, range(1, n)))13、请用一行代码实现筛选并打印输出 100 以内能被 3 整除的数的集合print(set(filter(lambda n: n % 3 0, range(1, 100))))14、请用一行代码实现text Obj{Name: pic, data: [{name: async, number: 9, price: $3500}, {name: Wade, number: 3, price: $5500}], Team: Hot打印文本中的球员身价元组如 ( 5500)print(tuple(i.get(price) for i in json.loads(re.search(r[(.*)], text).group(0))))15、请写出递归的基本骨架def recursions(n):if n 1:# 退出条件return 1# 继续递归return n * recursions(n - 1)16、切片请写出下方输出结果tpl [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]print(tpl[3:])print(tpl[:3])print(tpl[::5])print(tpl[-3])print(tpl[3])print(tpl[::-5])print(tpl[:])del tpl[3:]print(tpl)print(tpl.pop())tpl.insert(3, 3)print(tpl)[15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95][0, 5, 10][0, 25, 50, 75]8515[95, 70, 45, 20][0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95][0, 5, 10]10[0, 5, 3]17、文件路径打印输出当前文件所在目录路径import osprint(os.path.dirname(os.path.abspath(__file__)))打印输出当前文件路径import osprint(os.path.abspath(__file__))打印输出当前文件上两层文件目录路径import osprint(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))18、请写出运行结果并回答问题tpl (1, 2, 3, 4, 5)apl (6, 7, 8, 9)print(tpl.__add__(apl))问题tpl 的值发生变化了吗运行结果如下(1, 2, 3, 4, 5, 6, 7, 8, 9)答元组是不可变的它是生成新的对象19、请写出运行结果并回答问题name (James, Wade, Kobe)team [A, B, C]tpl {name: team}print(tpl)apl {team: name}print(apl)问题这段代码能运行完毕吗为什么它的运行结果是答这段代码不能完整运行它会在 apl 处抛出异常因为字典的键只能是不可变对象而 list 是可变的所以不能作为字典的键。运行结果是{(James, Wade, Kobe): [A, B, C]}TypeError20、装饰器请写出装饰器代码骨架def log(func):def wrapper(*args, **kw):print(call %s(): % func.__name__)return func(*args, **kw)return wrapper简述装饰器在 Python 中的作用在不改动原函数代码的情况下为其增加新的功能。21、多进程 多线程多进程更稳定还是多线程更稳定为什么多进程更稳定它们是独立运行的不会因为一个崩溃而影响其他进程。多线程的致命缺点是什么因为所有线程共享进程的内存所以任何一个线程挂掉都可能直接造成整个进程崩溃。进程间通信有哪些方式共享变量、队列、管道。好了本文就给大家介绍到这里祝大家面试so easy亲,试试微信扫码分享本页! *^_^*