python网络爬虫面试题,搞定这套Python爬虫面试题(面试会so easy)

搞定这套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 = 8

b = 8

a is b

10、文件读写

简述文件读取时 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]

85

15

[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 os

print(os.path.dirname(os.path.abspath(__file__)))打印输出当前文件路径

import os

print(os.path.abspath(__file__))打印输出当前文件上两层文件目录路径

import os

print(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!

亲,试试微信扫码分享本页! *^_^*

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/454734.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

fastjson与spring mvc整合的配置

fastjson 是阿里巴巴开发的开源json解析组件&#xff0c;方便于通过java来生成和解析json格式的字符串和对象。 fastjson可以对Spring的返回数据进行json转换&#xff08;SpringMVC的ResponseBody注释&#xff09; 以下附上与spring mvc整合的xml配置&#xff1a; <mvc:anno…

Python 框架 之 Scrapy 爬虫(一)

在编写爬虫时&#xff0c;性能的消耗主要在IO请求中&#xff0c;当单进程单线程模式下请求URL时必然会引起等待&#xff0c;从而使得请求整体变慢。 1、同步执行 import requestsdef fetch_async(url):response requests.get(url)return responseurl_list [http://www.gith…

编程新手导论(转载)

第二部分 导论&#xff0c;这一部分主要是关于编程的导论&#xff0c; (要懂得一点思想具备一点常识)《设计&#xff0c;编码&#xff0c;&#xff0c;与软工》&#xff08;编程与思想&#xff09;这一章解释了三种思想&#xff0c;原语&#xff0c;抽象&#xff0c;组合&#…

如何让电脑成为看图说话的高手?计算机视觉顶会ICCV论文解读

ICCV&#xff0c;被誉为计算机视觉领域三大顶级会议之一。作为计算机视觉领域最高级别的会议之一&#xff0c;其论文集代表了计算机视觉领域最新的发展方向和水平。阿里巴巴在今年的大会上有多篇论文入选&#xff0c;本篇所解读的论文是阿里iDST与多家机构合作的入选论文之一&a…

canvas绘制线条1像素的问题

http://jo2.org/html5-canvas%E7%94%BB%E5%9B%BE3%EF%BC%9A1px%E7%BA%BF%E6%9D%A1%E6%A8%A1%E7%B3%8A%E9%97%AE%E9%A2%98/转载于:https://www.cnblogs.com/XIE7654/p/7493315.html

php汽车找车位,遭遇到车多车位少 教你如何快速找到停车位

[摘要]车主们大多时间会穿梭在市区&#xff0c;到了目的地后那就先找停车位&#xff0c;现在市区寸土寸金&#xff0c;一个停车位面积要占几平米呢&#xff0c;所以停车位基本是不够用的。下面和大家聊聊怎么找合适的停车位。车主们大多时间会穿梭在市区&#xff0c;去商场购物…

Python 框架 之 Scrapy 爬虫(二)

Scrapy是一个为了爬取网站数据&#xff0c;提取结构性数据而编写的应用框架。 其可以应用在数据挖掘&#xff0c;信息处理或存储历史数据等一系列的程序中。其最初是为了页面抓取 (更确切来说, 网络抓取)所设计的&#xff0c; 也可以应用在获取API所返回的数据(例如 Amazon Ass…

十六进制透明度参照表

00%FF&#xff08;不透明&#xff09; 5%F2 10%E5 15%D8 20%CC 25%BF 30%B2 35%A5 40%99 45%8c 50%7F 55%72 60%66 65%59 70%4c 75%3F 80%33 85%21 90%19 95%0c 100%00&#xff08;全透明&#xff09;转载于:http…

lamp和php,[LAMP]Apache和PHP的结合

在LAMP架构中&#xff0c;Apache通过PHP模块与Mysql建立连接&#xff0c;读写数据。那么配置Apache和PHP结合的步骤是怎么操作的呢&#xff1f;1、修改http.conf文件[rootjuispan ~]# cat /usr/local/apache2.4/conf/httpd.conf......#ServerName......AllowOverride noneRequi…

Day-5: Python高级特性

python的理念是&#xff1a;简单、优雅。所以&#xff0c;在Python中集成了许多经常要使用的高级特性&#xff0c;以此来简化代码。 切片&#xff1a;对于一个list或者tuple&#xff0c;取其中一段的元素&#xff0c;称为切片&#xff08;Slice&#xff09;。 L[start:end]表示…

前端之 XMLHttpRequest

XMLHttpRequest 和AJAX的爱恨情仇 AJAX 是 asynchronous javascript and XML 的简写&#xff0c;中文翻译是异步的 javascript 和 XML&#xff0c;这一技术能够向服务器请求额外的数据而无须卸载页面&#xff0c;会带来更好的用户体验。虽然名字中包含 XML &#xff0c;但 AJAX…

makefile——小试牛刀

//a.h,包含头文件stdio.h,并且定义一个函数print #include<stdio.h> void print();//b.c&#xff0c;包含头文件a.h&#xff0c;然后就可以写print函数的内容了 #include"a.h" void print(){ printf("who are you\n"); }//c.c&#xff0c;包含头文件…

云电脑是什么_云电脑和我们现在平时用的电脑有什么区别?

&#x1f340;温馨提示&#x1f340;公众号推送改版&#xff0c;为了不让您错过【掌中IT发烧友圈】每天的精彩推送&#xff0c;切记将本号设置星标哦&#xff01;~01云电脑&#xff0c;是5G云服务时代的电脑新概念&#xff0c;是电脑的新的一种形态。从具体操作使用上来讲&…

PHP如何用while实现循环,PHP 循环 -

PHP 循环 - While 循环循环执行代码块指定的次数&#xff0c;或者当指定的条件为真时循环执行代码块。PHP 循环在您编写代码时&#xff0c;您经常需要让相同的代码块一次又一次地重复运行。我们可以在代码中使用循环语句来完成这个任务。在 PHP 中&#xff0c;提供了下列循环语…

比较全的C语言面试题

1. static有什么用途&#xff1f;&#xff08;请至少说明两种&#xff09; 1).限制变量的作用域 2).设置变量的存储域 2. 引用与指针有什么区别&#xff1f; 1) 引用必须被初始化&#xff0c;指针不必。 2) 引用初始化以后不能被改变&#xff0c;指针可以改变所指的对象…

PHP爬取历史天气

PHP爬取历史天气 PHP作为宇宙第一语言&#xff0c;爬虫也是非常方便&#xff0c;这里爬取的是从天气网获得中国城市历史天气统计结果。 程序架构 main.php <?phpinclude_once("./parser.php");include_once("./storer.php");#解析器和存储器见下文$par…

Python 第三方库之docx

日常上官网 https://python-docx.readthedocs.io/en/latest/ 一、安装 pip install python-docx 二、写入word word 中主要有两种用文本格式等级&#xff1a;块等级&#xff08;block-level&#xff09;和内联等级&#xff08;inline-level&#xff09;word 中大部分内容都…

Unity AI副总裁Danny Lange:如何用AI助推游戏行业?

本文讲的是Unity AI副总裁Danny Lange&#xff1a;如何用AI助推游戏行业&#xff1f; &#xff0c;10月26日&#xff0c;在加州山景城举办的ACMMM 2017大会进入正会第三天。在会上&#xff0c;Unity Technology负责AI与机器学习的副总裁Danny Longe进行了题为《Bringing Gaming…

SPI 读取不同长度 寄存器_SPI协议,MCP2515裸机驱动详解

SPI概述Serial Peripheral interface 通用串行外围设备接口是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM&#xff0c;FLASH&#xff0c;实时时钟&#xff0c;AD转换器&#xff0c;还有数字信号处理器和数字信号解码器之间。SPI&#xff0c;是一种高…

oracle并发执行max,跪求大量并发执行insert into select语句的方案

现在有数十万张表要从A库通过insert into tablename select * from tablenamedblink的方式导入到B库中。B机上80个cpu&#xff0c;160G内存。希望能够大量并发执行。怎么写脚本呢&#xff1f;谁有这方面的经验&#xff0c;麻烦指点一下。谢谢。下面是我的脚本&#xff1a;#!/us…