前言:

说几句,坐标CQ,爬虫工程师的需求在这个二线城市真的是太少了。

正文:

NO.1 :列表生成式和生成器的区别 ?
NO.2 :如何不用任何循环快速筛掉列表中的奇数元素 ?
NO.3 :map和reduce的用法 ?
这几个问题的答案作如下统一回答:
#列表生成式
print list(range(11))
#列表生成式第二种写法
a = [x for x in range(11)]#使用内置filter函数过滤列表a中不满足lambda函数的元素,即过滤掉奇数,留下偶数
print filter(lambda x: x%2==0 , a)  #[0, 2, 4, 6, 8, 10]'''
列表生成式直接生成一个列表,所有元素对象被立即创建在内存中,当元素过多时,势必会占用过多内存,
不可取,要用到生成器,它即时创建一个生成器对象,未创建任何元素
'''
#生成器来生成一个列表,它不会立即创建大量的对象在内存中
b = (x for x in range(11))#生成器的缺点,没有列表的方法,如append、len、index等等
#print len(b)   #抛出异常,生成器没有__len__属性,查看不了列表长度#通过next方法来访问其元素
print b.next(),b.next()  #0 1#可通过循环打印出所有的元素
for i in b:print i'''
第二种生成器写法,使用yield:迭代器 封装于函数内
'''
def generator_(n):for i in range(n):yield i
#此时这个函数已经是一个生成器了
print generator_(11).next()#使用内置函数filter配合匿名函数过滤掉数组中不符合条件的元素
print filter(lambda x:x%2 ==0, [1,2,3,4,5]) #[2,4]
#也可以把以下函数作为第一个参数传入
def get_2(n):return n%2==0
print filter(get_2, [1,2,3,4,5]) #[2,4]
'''
扩展;
可以直接作用于for循环的数据类型有以下几种:
一类是集合数据类型,如list、tuple、dict、set、str等;
一类是generator,包括生成器和带yield的generator function。
这些可以直接作用于for循环的对象统称为可迭代对象:Iterable。
可以使用isinstance()判断一个对象是否是Iterable对象:
'''from collections import Iterable #这个是可迭代对象
for i in ['123',[],(1,),set(),{}]:print isinstance(i,Iterable)  #都是truefrom collections import Iterator #这个是迭代器#可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator
print isinstance((i for i in range(11)),Iterator)  #True#用Iter函数把可迭代对象变成迭代器
print isinstance(iter('123'),Iterator)# reversed将可迭代对象反转为一个迭代器
print  reversed([1,2,3]).next()'''
高阶函数用法:reduce,map
'''
#map
#使用函数来处理序列中的元素 :包含数字的元组、列表
res = map(lambda n:n*2, range(10))
print res  #[0, 2, 4, 6...#可以接收2个数序列,生成一个列表
print map(lambda x,y:(x,y) , [1,2,3],[4,5,6]) #[(1, 4), (2, 5), (3, 6)]#reduce
#使用函数来累积处理序列中的元素,可实现阶乘、求数组内的数字和
print reduce(lambda x,y:x*y , [1,2,3,4])  #24
print reduce(lambda x,y:x+y , [1,2,3,4])  #10  ,sum([1,2,3])更快print reduce(lambda x,y:x+y ,'123','123')  #123123
print reduce(lambda x,y:x+y , ['x','y','z'])  #xyz

NO.4:  装饰器的作用 ?

答:装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,提高了代码的复用性。
NO.5: 如何处理封IP的反爬 ?
答:因为网络上的免费代理平台可用的IP数量太少,所以自己写一个模块去抓取平台的IP来维护是没有什么意义的。我选择的是付费代理,通过使用平台的api在本地动态维护一个IP缓存池来供给分布式架构的爬虫节点使用。这个缓存池不需要做IP有效性验证,因为我的爬虫若下载某个Request彻底失败后会把这个Request重新放回Request队列,而且选择一个好的代理平台可以大大提高代理IP质量。我常用的是快代理。缓存池的IP被取走一个,池中的数量就减少一个,当数量少于M时,再从平台获取N个。(具体可查看我的另一篇文章

        NO.6: 如何处理验证码 ?
答:简单的验证码可以通过预处理(灰度、二值化、去除干燥点)验证码图片再使用tesseract库来识别;复杂一点的则接入付费平台识别。当然,如果这个目标网站的app端没有验证码的话,会优先通过app端爬取。
NO.7: 说几个redis中的数据类型和命令
答:字符串、列表、set集合;set key 123,,,lpush key 1 2 3,,,sadd key 1 2 3
NO.8: MySQL中的inner join和left join的区别 ?
答:INNER JOIN(内连接,或等值连接):取得两个表中存在连接匹配关系的记录。 
LEFT JOIN(左连接):取得左表(table1)完全记录,即是右表(table2)并无对应匹配记录。 
扩展:RIGHT JOIN(右连接):与 LEFT JOIN 相反,取得右表(table2)完全记录,即是左表(table1)并无匹配对应记录。(可参考菜鸟教程
待续。

----------------------------------------------------------------  saosao的分割线  ------------------------------------------------------------------------

博主的Coding部落群 588757596,快来一起玩耍!

[爬虫面试] 总结一些爬虫工程师遇到的面试题(真实)相关推荐

  1. python爬虫面试问题_Python爬虫面试总结

    ## Python爬虫面试总结 1. 写一个邮箱地址的正则表达式? [A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$ 2. 谈 ...

  2. python爬虫面试经验_Python爬虫面试简历 经验分析

    分享之前的爬虫简历,仅供参考,因为技术有限,简历技能点逼格不是很高,但提到的很多爬虫常用技术,都已经写入简历,靠这份简历之前找工作时候2天预约了8家面试,面的第二天,在第4家公司通过拿到offer,后 ...

  3. python爬虫面试简历_Python爬虫面试简历

    分享之前的爬虫简历,仅供参考,因为技术有限,简历技能点逼格不是很高,但提到的很多爬虫常用技术,都已经写入简历,靠这份简历之前找工作时候2天预约了8家面试,面的第二天,在第4家公司通过拿到offer,后 ...

  4. 【Python】爬虫面试总结分享

    一.xxx大数据公司(2018.10.30) Q1. 你遇到的比较难的爬虫问题? Q2. 请求一定页数后就会被封如何应对? A:这个时候,我们会估算一下,多少页之后会封,然后换cookie继续. Q3 ...

  5. python爬虫面试自我介绍范文_走过路过不容错过,Python爬虫面试总结

    Python爬虫面试总结 1. 写一个邮箱地址的正则表达式?[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$ 2. 谈一谈你对 ...

  6. 面试妥了!2020 爬虫面试题目合集

    作者 | 不愿透露姓名の网友 出品 | CSDN博客 介绍爬虫 1.爬虫:自动的抓取互联网上信息的脚本文件. 2.爬虫可以解决的问题: (1)解决冷启动问题 (2)搜索引擎的根基:做搜索引擎少不了爬虫 ...

  7. 开发网络爬虫应该怎样选择爬虫框架?

    2019独角兽企业重金招聘Python工程师标准>>> 有些人问,开发网络爬虫应该选择Nutch.Crawler4j.WebMagic.scrapy.WebCollector还是其他 ...

  8. 精通python网络爬虫-精通python网络爬虫

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 作者:韦玮 转载请注明出处 随着大数据时代的到来,人们对数据资源的需求越来越多, ...

  9. python爬虫百度百科-python爬虫(一)_爬虫原理和数据抓取

    本篇将开始介绍Python原理,更多内容请参考:Python学习指南 为什么要做爬虫 著名的革命家.思想家.政治家.战略家.社会改革的主要领导人物马云曾经在2015年提到由IT转到DT,何谓DT,DT ...

最新文章

  1. MFC界面库BCGControlBar v25.3新版亮点:Gauge Controls
  2. snap安装指定版本的软件
  3. Lua 函数、闭包、尾调用总结
  4. 23种设计模式详解_太厉害了,清华大牛一个坦克项目就把23种设计模式给抽丝剥茧了...
  5. vivo C/C++工程师 HR视频面试问题总结20180807
  6. 基于OpenDDS开发发布订阅HelloMsg程序的过程(Windows)
  7. struct对象可能分配在托管堆上吗
  8. CIO们拼命都想上的“网红”中台,也有它的另一面
  9. Centos6.5下搭建nagios详解
  10. 《解密并行和分布式深度学习:深度并发分析》摘要记录
  11. C专家编程 三 C语言声明是如何形成的
  12. 华为安装gsm框架_华为gms框架app下载-华为gms框架2020版下载最新版-乐游网安卓下载...
  13. html5 css3 JavaScript响应式中文静态网页模板js源代码
  14. 《蔡康永的说话之道》
  15. PDF怎么删除空白页?必备PDF页面删除技巧
  16. 2021.04.09丨使用featurecount进行定量处理
  17. gtx1050ti和gtx1050的区别
  18. 不用找,你想要的卡车 SolidWorks模型素材都在这里
  19. 数组的push、unshift、pop、shift方法实现
  20. uniapp 埋点(友盟)

热门文章

  1. mysql数据库 导入excel_如何在MySQL数据库中导入excel文件内的数据 详细始末
  2. 微信小程序分享带参数
  3. 微信活动——微信房产经纪公司评比活动
  4. 商品中心中台支持系统(1)-总体架构设计
  5. 国外数据采集的10个经典方法
  6. 考虑阶梯式碳交易机制与电制氢的综合能源系统热电优化(Matlab代码实现)
  7. CentOS7或Ubuntu 配置阿里云yum源
  8. 《惢客创业日记》2019.09.26(周四) 高龄创业者的健康博弈(十六)
  9. 怎么在Linux内核模块加打印,在ARM-linux上实现4G模块PPP拨号上网
  10. python打开的文件应该放在哪里-python放在哪里