0|1第一部分 必答题注意:第31题1分,其他题均每题3分。 1,了解哪些基于爬虫相关的模块? - 网络请求:urllib,requests,aiohttp - 数据解析:re,xpath,bs4,pyquery - selenium - js逆向:pyexcJs 2,常见的数据解析方式? - re、lxml、bs4 3,列举在爬虫过程中遇到的哪些比较难的反爬机制? - 动态加载的数据 - 动态变化的请求参数 - js加密 - 代理 - cookie 4,简述如何抓取动态加载数据? - 基于抓包工具进行全局搜索 - 如果动态加载的数据是密文,则全局搜索是搜索不到 5,移动端数据如何抓取? - fiddler,appnium,网络配置 6,抓取过哪些类型的数据,量级多少? - 电商,医疗器械,彩妆,新闻资讯,金融,体育赛事(参考hao123网站) - 量级: - 最好不要超过100w。自己计算(页数,一页显示多少数据) 7,了解哪些爬虫框架? - scrapy,pyspider 8,谈谈对scrapy的了解? - 功能:数据解析,持久化存储,深度爬取,分布式,关键件 - 五大核心组件的作用和工作流程 9,如何解析出携带标签的局部页面数据? - bs4 10,scrapy核心组件? - spider,引擎,调度器,下载器,管道 11,scrapy中间件的应用? - 作用:拦截请求和响应 - 拦截请求:设置代理 12,如何实现全站数据爬取? - 基于手动请求发送+递归解析 - 基于CrwalSpider(LinkExtractor,Rule) 13,如何检测网站数据更新? - 增量式爬虫 14,分布式爬虫实现原理? - 基于scrapy-redis实现的分布式。 15,如何提升爬取数据的效率(异步爬虫) - 使用框架 - 线程池,多任务的异步协程 - 分布式 16,列举你接触的反爬机制? ua检测、封ip、js混淆、参数加密、数据加密,动态加载 17,什么是深度优先和广度优先(优劣) - 默认情况下scrapy是深度优先。 - 深度优先:占用空间大,但是运行速度快 - 广度优先:占用空间少,运行速度慢 18,scrapy如何实现持久化存储 - 解析数据 - 将解析的数据封装到item中 - 将item提交管道 - 在管道中持久化存储 - 开启管道 19,谈谈对crawlspider的理解,如何使用其进行深度爬取 - 链接提取器&规则解析器 20,如何实现数据清洗? - 清洗空值(缺失值) - 将空对应的行数据删除.dropna - 使用近邻值填充空值.fillna - 清洗重复值 - 重复的行数据删除:drop_duplicates() - 清洗异常值 - 一定要有一个判定异常值的条件 21,了解过机器学习吗? - 特征工程 - 特征预处理 - 归一化,标准化 - 特征值化 - 将非数值型的数据转换成数值型的数据 - 降维 - sklean框架 - 线性回归,KNN,贝叶斯 - 补充: 1.树模型:决策树 2.集成模型:随机森林 - 深度学习框架: - tensorflow 22,在爬虫中为什么需要是用selenium?selenium和爬虫之间的关联么? selenium和爬虫之间的关联是什么? - 爬取动态加载的数据 - 模拟登录 23,列举你所熟知的selenium模块中的常用方法及其作用 24,解释在多任务异步协程中事件循环(loop)的作用是什么? - 可以将注册在其内部的任务对象表示的特定操作进行异步执行 25,多任务异步协程是如何实现异步的? - 一个任务对象就是一个协程也是一组特定的操作,将任务对象注册到事件循环中,就可以异步的执行每一组特定的操作 - wait方法,await关键字 26,验证码如何处理? - 打码平台 27,scrapy 和 scrapy-redis 有什么区别? - scrapy-redis这个组件可以给scrapy框架提供共享的管道和调度器实现分布式爬虫 28,说一说打开浏览器访问 www.baidu.com 获取到结果,整个流程。 1.域名解析成IP 2.与目的主机进行TCP连接(三次握手) 3.发送和接收数据 29,列出你知道 header 的内容以及信息 - User-Agent - Connection 30,简述scrapy的去重原理?
31,下列叙述中错误的是:(1分) A.栈是线性结构 B.队列是线性结构 32,简述前序、中序、后续遍历? 跟左右 左跟右 左右跟 33,写代码:实现一个冒泡排序。 def sort(alist): length = len(alist)for j in range(length-1)for i in range(length-1-j):if alist[i] > alist[i+1]: alist[i],alist[i+1] = alist[i+1],alist[i]return alist alist = [3,8,5,2,0,7,6]print(sort(alist)) 34,写代码:实现一个快速排序。 def sort(alist,left,right): low = left hight = rightif low < high:return mid = alist[low]while low < high:while low < high:if alist[high] < mid: alist[low] = alist[high]breakelse: high -= 1while low < high:if alist[low] < mid: low += 1else: alist[high] = alist[low]breakif low == high: alist[low] = mid sort(alist,left,low-1) sort(alist,high+1,right)return alist 0|1第二部分 补充题1,列举常见用的git命令? 2,你们公司/团队用怎么做的协同开发? 3,公司如何做代码review?谁来做? 4,线上代码如果出现bug如何解决? 5,git rebase的作用? git实战视频地址:https://www.bilibili.com/video/av70772636 __EOF__ 作 者:One Piece |
|
来自: 文炳春秋 > 《Python资料》