Python 爬虫面试题 170 道:2019 版

来源:Python学习开发ID:python3-5作者:陈祥安引言

最近在刷面试题,所以需要看大量的 Python 相关的面试题,从大量的题目中总结了很多的知识,同时也对一些题目进行拓展了,但是在看了网上的大部分面试题不是很满意,一个是有些部分还是 Python2 的代码,另一个就是回答的很简单,有些关键的题目,也没有点出为什么,最重要的是还有一些复制粘贴根本就跑不通,这种相信大家深有体会吧,这样就导致我们可能需要去找其他人发的类似的教程。难受啊,所以我决定针对市面上大多的 Python 题目做一个分析,同时也希望大家尽可能的做到举一反三,而不是局限于题目本身。大概就这样吧,有你看过的题目也有你没看到过的。

通过本篇文章,你将获得如下知识点:

掌握 Python 的基础语法语法常见的 Python 应用场景掌握 Python 闭包的使用以及装饰器的使用生成器和迭代器的使用常见的设计模式的使用深浅拷贝的区别线程、进程、协程的使用了解 Python 中的元编程和反射常考的数据结构和算法爬虫相关知识,网络编程基本知识等所有题目

语言特性

1.谈谈对 Python 和其他语言的区别2.简述解释型和编译型编程语言3.Python 的解释器种类以及相关特点?4.说说你知道的Python3 和 Python2 之间的区别?5.Python3 和 Python2 中 int 和 long 区别?6.xrange 和 range 的区别?

编码规范

7.什么是 PEP8?8.了解 Python 之禅么?9.了解 dosctring 么?10.了解类型注解么?11.例举你知道 Python 对象的命名规范,例如方法或者类等12.Python 中的注释有几种?13.如何优雅的给一个函数加注释?14.如何给变量加注释?15.Python 代码缩进中是否支持 Tab 键和空格混用。16.是否可以在一句 import 中导入多个库?17.在给 Py 文件命名的时候需要注意什么?18.例举几个规范 Python 代码风格的工具

数据类型

字符串

19.列举 Python 中的基本数据类型?20.如何区别可变数据类型和不可变数据类型21.将"hello world"转换为首字母大写"Hello World"22.如何检测字符串中只含有数字?23.将字符串"ilovechina"进行反转24.Python 中的字符串格式化方式你知道哪些?25.有一个字符串开头和末尾都有空格,比如“ adabdw ”,要求写一个函数把这个字符串的前后空格都去掉。26.获取字符串”123456“最后的两个字符。27.一个编码为 GBK 的字符串 S,要将其转成 UTF-8 编码的字符串,应如何操作?28.s="info:xiaoZhang 33 shandong",用正则切分字符串输出['info', 'xiaoZhang', '33', 'shandong']27.怎样将字符串转换为小写?28.单引号、双引号、三引号的区别?29.a = "你好 中国 ",去除多余空格只留一个空格。

列表

30.已知 AList = [1,2,3,1,2],对 AList 列表元素去重,写出具体过程。31.如何实现 "1,2,3" 变成 ["1","2","3"]32.给定两个 list,A 和 B,找出相同元素和不同元素33.[[1,2],[3,4],[5,6]]一行代码展开该列表,得出[1,2,3,4,5,6]34.合并列表[1,5,7,9]和[2,2,6,8]35.如何打乱一个列表的元素?

字典

36.字典操作中 del 和 pop 有什么区别37.按照字典的内的年龄排序

d1 = [{'name':'alice', 'age':38},{'name':'bob', 'age':18},{'name':'Carl', 'age':28},]38.请合并下面两个字典 a = {"A":1,"B":2},b = {"C":3,"D":4}39.如何使用生成式的方式生成一个字典,写一段功能代码。40.如何把元组("a","b")和元组(1,2),变为字典{"a":1,"b":2}

综合

41.Python 常用的数据结构的类型及其特性?

A:{1:0,2:0,3:0}B:{"a":0, "b":0, "c":0}C: {(1,2):0, (2,3):0}D: {[1,2]:0, [2,3]:0}42.如何将元组("A","B")和元组(1,2),合并成字典{"A":1,"B":2}43.Python 里面如何实现 tuple 和 list 的转换?44.我们知道对于列表可以使用切片操作进行部分元素的选择,那么如何对生成器类型的对象实现相同的功能呢?45.请将[i for i in range(3)]改成生成器46.a="hello"和 b="你好"编码成 bytes 类型47.下面的代码输出结果是什么?

a = (1,2,3,[4,5,6,7],8)a[2] = 248.下面的代码输出的结果是什么?

a = (1,2,3,[4,5,6,7],8)a[5] = 2操作类题目

49.Python 交换两个变量的值50.在读文件操作的时候会使用 read、readline 或者 readlines,简述它们各自的左右51.json 序列化时,可以处理的数据类型有哪些?如何定制支持 datetime 类型?52.json 序列化时,默认遇到中文会转换成 unicode,如果想要保留中文怎么办?53.有两个磁盘文件 A 和 B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件 C 中。54.如果当前的日期为 20190530,要求写一个函数输出 N 天后的日期,(比如 N 为 2,则输出 20190601)。55.写一个函数,接收整数参数 n,返回一个函数,函数的功能是把函数的参数和 n 相乘并把结果返回。56.下面代码会存在什么问题,如何改进?

def strappend(num):str='first'for i in range(num):str+=str(i)return str57.一行代码输出 1-100 之间的所有偶数。58.with 语句的作用,写一段代码?59.python 字典和 json 字符串相互转化方法60.请写一个 Python 逻辑,计算一个文件中的大写字母数量

高级特效

70.函数装饰器有什么作用?请列举说明?71.Python 垃圾回收机制?72.魔法函数 call怎么使用?73.如何判断一个对象是函数还是方法?74.@classmethod 和@staticmethod 用法和区别75.Python 中的接口如何实现?76.Python 中的反射了解么?77.metaclass 作用?以及应用场景?78.hasattr() getattr() setattr()的用法79.请列举你知道的 Python 的魔法方法及用途。80.如何知道一个 Python 对象的类型?81.Python 的传参是传值还是传址?82.Python 中的元类(metaclass)使用举例83.简述 any()和 all()方法84.filter 方法求出列表所有奇数并构造新列表,a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]85.什么是猴子补丁?86.在 Python 中是如何管理内存的?87.当退出 Python 时是否释放所有内存分配?

正则表达式

88.使用正则表达式匹配出

www.baidu.com中的地址a="张明 98 分",用 re.sub,将 98 替换为 10089.正则表达式匹配中(.)和(.?)匹配区别?90.写一段匹配邮箱的正则表达式

 

其他内容

91.解释一下 python 中 pass 语句的作用?92.简述你对 input()函数的理解93.python 中的 is 和==94.Python 中的作用域95.三元运算写法和应用场景?96.了解 enumerate 么?97.列举 5 个 Python 中的标准模块98.如何在函数中设置一个全局变量99.pathlib 的用法举例100.Python 中的异常处理,写一个简单的应用场景101.Python 中递归的最大次数,那如何突破呢?102.什么是面向对象的 mro103.isinstance 作用以及应用场景?104.什么是断言?应用场景?105.lambda 表达式格式以及应用场景?106.新式类和旧式类的区别107.dir()是干什么用的?108.一个包里有三个模块,demo1.py, demo2.py, demo3.py,但使用 from tools import *导入模块时,如何保证只有 demo1、demo3 被导入了。109.列举 5 个 Python 中的异常类型以及其含义110.copy 和 deepcopy 的区别是什么?111.代码中经常遇到的args, *kwargs 含义及用法。112.Python 中会有函数或成员变量包含单下划线前缀和结尾,和双下划线前缀结尾,区别是什么?113.w、a+、wb 文件写入模式的区别114.举例 sort 和 sorted 的区别115.什么是负索引?116.pprint 模块是干什么的?117.解释一下 Python 中的赋值运算符118.解释一下 Python 中的逻辑运算符119.讲讲 Python 中的位运算符120.在 Python 中如何使用多进制数字?121.怎样声明多个变量并赋值?

算法和数据结构

122.已知:

AList = [1,2,3]BSet = {1,2,3}(1) 从 AList 和 BSet 中 查找 4,最坏时间复杂度那个大?(2) 从 AList 和 BSet 中 插入 4,最坏时间复杂度那个大?123.用 Python 实现一个二分查找的函数124.python 单例模式的实现方法125.使用 Python 实现一个斐波那契数列126.找出列表中的重复数字127.找出列表中的单个数字128.写一个冒泡排序129.写一个快速排序130.写一个拓扑排序131.python 实现一个二进制计算132.有一组“+”和“-”符号,要求将“+”排到左边,“-”排到右边,写出具体的实现方法。133.单链表反转134.交叉链表求交点135.用队列实现栈136.找出数据流的中位数137.二叉搜索树中第 K 小的元素

爬虫相关

138.在 requests 模块中,requests.content 和 requests.text 什么区别139.简要写一下 lxml 模块的使用方法框架140.说一说 scrapy 的工作流程141.scrapy 的去重原理142.scrapy 中间件有几种类,你用过哪些中间件143.你写爬虫的时候都遇到过什么?反爬虫措施,你是怎么解决的?144.为什么会用到代理?145.代理失效了怎么处理?146.列出你知道 header 的内容以及信息147.说一说打开浏览器访问 www.baidu.com 获取到结果,整个流程。148.爬取速度过快出现了验证码怎么处理149.scrapy 和 scrapy-redis 有什么区别?为什么选择 redis 数据库?150.分布式爬虫主要解决什么问题151.写爬虫是用多进程好?还是多线程好?为什么?152.解析网页的解析器使用最多的是哪几个153.需要登录的网页,如何解决同时限制 ip,cookie,session(其中有一些是动态生成的)在不使用动态爬取的情况下?154.验证码的解决(简单的:对图像做处理后可以得到的,困难的:验证码是点击,拖动等动态进行的?)155.使用最多的数据库(mysql,mongodb,redis 等),对他的理解?

网络编程

156.TCP 和 UDP 的区别?157.简要介绍三次握手和四次挥手158.什么是粘包?socket 中造成粘包的原因是什么?哪些情况会发生粘包现象?

并发

159.举例说明 conccurent.future 的中线程池的用法160.说一说多线程,多进程和协程的区别。161.简述 GIL162.进程之间如何通信163.IO 多路复用的作用?164.select、poll、epoll 模型的区别?165.什么是并发和并行?167.解释什么是异步非阻塞?168.threading.local 的作用?

Git 面试题

169.说说你知道的 git 命令170.git 如何查看某次提交修改的内容x

我们整理了一个学习知识库,可以了解看一下:【超全整理】《Linux云计算从入门到精通》系列实战笔记全放送 | Linux运维部落​www.magedu.com希望大家有所帮助,祝愿大家学有所成。获取更多技术知识点+v156 5219 9186,欢豆在线解答哦~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值