精华内容
下载资源
问答
  • Python爬虫面试常见问题2018-03-12 莫航 Python达人课堂是否了解线程的同步和异步?1线程同步:多个线程同时访问同一资源,等待资源访问结束,浪费时间,效率低 2线程异步:在访问资源时在空闲等待时同时访问其他...

    Python爬虫面试常见问题

    2018-03-12 莫航 Python达人课堂
    是否了解线程的同步和异步?1线程同步:

    多个线程同时访问同一资源,等待资源访问结束,浪费时间,效率低  

    2线程异步:

    在访问资源时在空闲等待时同时访问其他资源,实现多线程机制

    是否了解网络的同步和异步?1同步:

    提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事

    2异步:

    请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕 

    链表和顺序表储存时各自有什么优点?1顺序表存储:

    原理:顺序表存储是将数据元素放到一块连续的内存存储空间,存取效率高,速度快。但是不可以动态增加长度

    优点:存取速度高效,通过下标来直接存储

    缺点:1.插入和删除比较慢,2.不可以增长长度    

                    比如:插入或者删除一个元素时,整个表需要遍历移动元素来重新排一次顺序


    2链表存储:

    原理:链表存储是在程序运行过程中动态的分配空间,只要存储器还有空间,就不会发生存储溢出问题

    优点:插入和删除速度快,保留原有的物理顺序,比如:插入或者删除一个元素时,只需要改变指针指向即可

    缺点:查找速度慢,因为查找时,需要循环链表访问


    使用redis搭建分布式系统时如何处理网络延迟和网络异常?


    由于网络异常的存在,分布式系统中请求结果存在“三态”的概念,即三种状态:“成功”、“失败”、“超时(未知)”


    当出现“超时”时可以通过发起读取数据的操作以验证 RPC 是否成功(例如银行系统的做法)


    另一种简单的做法是,设计分布式协议时将执行步骤设计为可重试的,即具有所谓的“幂等性”


    数据仓库是什么?

    数据仓库是一个面向主题的、集成的、稳定的、反映历史变化的、随着时间的流逝发生变化的数据集合。它主要支持管理人员的决策分析。

    数据仓库收集了企业相关内部和外部各个业务系统数据源、归档文件等一系列历史数据,最后转化成企业需要的战略决策信息。

    特点:

    面向主题:根据业务的不同而进行的内容划分;

    集成特性:因为不同的业务源数据具有不同的数据特点,当业务源数据进入到数据仓库时,需要采用统一的编码格式进行数据加载,从而保证数据仓库中数据的唯一性;

    非易失性:数据仓库通过保存数据不同历史的各种状态,并不对数据进行任何


    你是否了解谷歌的无头浏览器?

    无头浏览器即headless browser,是一种没有界面的浏览器。既然是浏览器那么浏览器该有的东西它都应该有,只是看不到界面而已。


    Python中selenium模块中的PhantomJS即为无界面浏览器(无头浏览器):是基于QtWebkit的无头浏览器


    你是否了解MySQL数据库的几种引擎?

    InnoDB:

    InnoDB是一个健壮的事务型存储引擎,这种存储引擎已经被很多互联网公司使用,为用户操作非常大的数据存储提供了一个强大的解决方案。


    在以下场合下,使用InnoDB是最理想的选择:

    1.更新密集的表。InnoDB存储引擎特别适合处理多重并发的更新请求。

    2.事务。InnoDB存储引擎是支持事务的标准MySQL存储引擎。

    3.自动灾难恢复。与其它存储引擎不同,InnoDB表能够自动从灾难中恢复。

    4.外键约束。MySQL支持外键的存储引擎只有InnoDB。

    5.支持自动增加列AUTO_INCREMENT属性。

    一般来说,如果需要事务支持,并且有较高的并发读取频率,InnoDB是不错的选择。

    MEMORY:

      使用MySQL Memory存储引擎的出发点是速度。为得到最快的响应时间,采用的逻辑存储介质是系统内存。

      虽然在内存中存储表数据确实会提供很高的性能,但当mysqld守护进程崩溃时,所有的Memory数据都会丢失。

      获得速度的同时也带来了一些缺陷。  

    一般在以下几种情况下使用Memory存储引擎:

    1.目标数据较小,而且被非常频繁地访问。在内存中存放数据,所以会造成内存的使用,可以通过参数max_heap_table_size控制Memory表的大小,设置此参数,就可以限制Memory表的最大大小。

    2.如果数据是临时的,而且要求必须立即可用,那么就可以存放在内存表中。

    3.存储在Memory表中的数据如果突然丢失,不会对应用服务产生实质的负面影响。


    redis数据库有哪几种数据结构?

    5种数据结构

    string

    使用string时,redis**大多数情况下**并不会理解或者解析其含义,无论使用json、xml还是纯文本在redis看来都是一样的,只是一个字符串,只能进行strlen、append等对字符串通用的操作,无法针对其内容进一步操作。其基本操作命令有set、get、strlen、getrange、append:

    1 SET key value

    2 GET key

    3 STRLEN key

    4 GETRANGE  key start end

    5 APPEND key value

    在大多数情况之外,就是string中存储的为纯数字的情况,redis可以将字符串当做数字进行进一步操作,这些操作包括decr、decrby、incr、incrby和incrbyfloat。


    hash

      使用hash时,在我看来,就是value本身就是一组key-value对,不过redis将这里的key称为field(但是hkeys命令为什么不叫hfields命令呢哈哈),也就是value是一组field-value对。其基本操作命令有hset、hget、hmset、hmget、hgetall、hkeys和hdel:

    1 HSET key field value

    2 HGET key field

    3 HMSET key field value [field value ...]

    4 HMGET key field [field ...]

    5 HGETALL key

    6 HKEYS key

    7 HDEL key field [field ...]


    list

    使用list时,value就是一个string数组,操作这组string时,可以像对待栈一样使用pop和push操作,但是这个栈两端都能进行操作;也可以像对待数组一样使用一个index参数来操作。list的操作命令略杂,主要分为两类:L开头的和R开头的,L代表LEFT或者LIST,进行一些从列表左端进行的操作,或者一些与端无关的操作;R代表RIGHT,进行一些从列表右端进行的操作。  

    set

      set用于存储一组不重复的值,也可以进行一些集合的操作,就像数学上的集合,它是无序的。基本操作有sadd和sismember:

    1 SADD key member [member ...]

    2 SISMEMBER key member

     

    集合操作有:求交sinter、求并sunion和求差sdiff:

    1 SINTER key [key ...]

    2 SUNION key [key ...]

    3 SDIFF key [key ...]


    sorted set

      sorted set类似set,但是sorted set里每个元素都有一个score,这个score可用于排序和排名。基本操作有zadd、zcount、zrank:  

    1 ZADD key score member [score member ...]

    2 ZCOUNT key min max

    3 ZRANK key member

    让我们一起喊出我们的口号:人生苦短,快用python

    展开全文
  •  原理:链表存储是在程序运行过程中动态的分配空间,只要存储器还有空间,就不会发生存储溢出问题  优点:插入和删除速度快,保留原有的物理顺序,比如:插入或者删除一个元素时,只需要改变指针指向即可  ...

    是否了解线程的同步和异步?

        线程同步:多个线程同时访问同一资源,等待资源访问结束,浪费时间,效率低   

        线程异步:在访问资源时在空闲等待时同时访问其他资源,实现多线程机制

     

    是否了解网络的同步和异步?

    同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事

    异步: 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕

     

    链表和顺序表储存时各自有什么优点?

        1.顺序表存储

             原理:顺序表存储是将数据元素放到一块连续的内存存储空间,存取效率高,速度快。但是不可以动态增加长度

             优点:存取速度高效,通过下标来直接存储

             缺点:1.插入和删除比较慢,2.不可以增长长度    

                        比如:插入或者删除一个元素时,整个表需要遍历移动元素来重新排一次顺序

        2.链表存储

              原理:链表存储是在程序运行过程中动态的分配空间,只要存储器还有空间,就不会发生存储溢出问题

             优点:插入和删除速度快,保留原有的物理顺序,比如:插入或者删除一个元素时,只需要改变指针指向即可

             缺点:查找速度慢,因为查找时,需要循环链表访问

     

    使用redis搭建分布式系统时如何处理网络延迟和网络异常?

    由于网络异常的存在,分布式系统中请求结果存在“三态”的概念,即三种状态:“成功”、“失败”、“超时(未知)”

    当出现“超时”时可以通过发起读取数据的操作以验证 RPC 是否成功(例如银行系统的做法)

    另一种简单的做法是,设计分布式协议时将执行步骤设计为可重试的,即具有所谓的“幂等性”

     

    数据仓库是什么?

    数据仓库是一个面向主题的、集成的、稳定的、反映历史变化的、随着时间的流逝发生变化的数据集合。它主要支持管理人员的决策分析。

    数据仓库收集了企业相关内部和外部各个业务系统数据源、归档文件等一系列历史数据,最后转化成企业需要的战略决策信息。

    特点:

    面向主题:根据业务的不同而进行的内容划分;

    集成特性:因为不同的业务源数据具有不同的数据特点,当业务源数据进入到数据仓库时,需要采用统一的编码格式进行数据加载,从而保证数据仓库中数据的唯一性;

    非易失性:数据仓库通过保存数据不同历史的各种状态,并不对数据进行任何更新操作。

    历史特性:数据保留时间戳字段,记录每个数据在不同时间内的各种状态。

    你是否了解谷歌的无头浏览器?

    无头浏览器即headless browser,是一种没有界面的浏览器。既然是浏览器那么浏览器该有的东西它都应该有,只是看不到界面而已。

    Python中selenium模块中的PhantomJS即为无界面浏览器(无头浏览器):是基于QtWebkit的无头浏览器,

     

    你是否了解MySQL数据库的几种引擎?

        InnoDB:

        InnoDB是一个健壮的事务型存储引擎,这种存储引擎已经被很多互联网公司使用,为用户操作非常大的数据存储提供了一个强大的解决方案。

    在以下场合下,使用InnoDB是最理想的选择:

    1.更新密集的表。InnoDB存储引擎特别适合处理多重并发的更新请求。

    2.事务。InnoDB存储引擎是支持事务的标准MySQL存储引擎。

    3.自动灾难恢复。与其它存储引擎不同,InnoDB表能够自动从灾难中恢复。

    4.外键约束。MySQL支持外键的存储引擎只有InnoDB。

    5.支持自动增加列AUTO_INCREMENT属性。

    一般来说,如果需要事务支持,并且有较高的并发读取频率,InnoDB是不错的选择。

    MEMORY:

      使用MySQL Memory存储引擎的出发点是速度。为得到最快的响应时间,采用的逻辑存储介质是系统内存。

      虽然在内存中存储表数据确实会提供很高的性能,但当mysqld守护进程崩溃时,所有的Memory数据都会丢失。

      获得速度的同时也带来了一些缺陷。

    一般在以下几种情况下使用Memory存储引擎:

    1.目标数据较小,而且被非常频繁地访问。在内存中存放数据,所以会造成内存的使用,可以通过参数max_heap_table_size控制Memory表的大小,设置此参数,就可以限制Memory表的最大大小。

    2.如果数据是临时的,而且要求必须立即可用,那么就可以存放在内存表中。

    3.存储在Memory表中的数据如果突然丢失,不会对应用服务产生实质的负面影响。

     

    redis数据库有哪几种数据结构?

    5种数据结构

    string  

    使用string时,redis**大多数情况下**并不会理解或者解析其含义,无论使用json、xml还是纯文本在redis看来都是一样的,只是一个字符串,只能进行strlen、append等对字符串通用的操作,无法针对其内容进一步操作。其基本操作命令有set、get、strlen、getrange、append:

    展开全文
  • 搞定这套 Python 爬虫面试题, 面试会 so easy先来一份完整的爬虫工程师面试考点:image一, Python 基本功1, 简述 Python 的特点和优点Python 是一门开源的解释性语言, 相比 Java C++ 等语言, Python 具有动态特性, ...

    搞定这套 Python 爬虫面试题, 面试会 so easy

    先来一份完整的爬虫工程师面试考点:

    c1.gif

    image

    一, Python 基本功

    1, 简述 Python 的特点和优点

    Python 是一门开源的解释性语言, 相比 Java C++ 等语言, Python 具有动态特性, 非常灵活.

    2,Python 有哪些数据类型?

    Python 有 6 种内置的数据类型, 其中不可变数据类型是 Number(数字), String(字符串), Tuple(元组), 可变数据类型是 List(列表),Dict(字典),Set(集合).

    3, 列表和元组的区别

    列表和元组都是可迭代对象, 能够对其进行循环, 切片等, 但元组 tuple 是不可变的. 元组不可变的特性, 使得它可以成为字典 Dict 中的键.

    Python 学习群: 556370268, 有大牛答疑, 有资源共享! 是一个非常不错的交流基地! 欢迎喜欢 Python 的小伙伴!

    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 的指针指向缓存对象, 再通过缓存对象指向数据:

    c1.gif

    image

    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

    aisb

    10, 文件读写

    简述文件读取时 read ,readline,readlines 的区别和作用

    他们的区别除了读取内容范围不同外, 返回的内容类型也不同.

    read() 会读取整个文件, 将读取到底的文件内容放到一个字符串变量, 返回 str 类型.

    readline() 读取一行内容, 放到一个字符串变量, 返回 str 类型.

    readlines() 读取文件所有内容, 按行为单位放到一个列表中, 返回 list 类型.

    11, 请用一行代码实现

    请分别使用匿名函数和推导式这两种方式将 [0, 1, 2, 3, 4, 5] 中的元素求乘积, 并打印输出元组.print(tuple(map(lambdax:x*x,[0,1,2,3,4,5])))

    print(tuple(i*iforiin[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"'

    打印文本中的球员身价元组, 如 (

    c1.gif5500)

    print(tuple(i.get("price") for i in JSON.loads(re.search(r'[(.*)]', text).group(0))))

    15, 请写出递归的基本骨架defrecursions(n):

    ifn==1:

    # 退出条件

    return1

    # 继续递归

    returnn*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[:])

    deltpl[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, 文件路径

    打印输出当前文件所在目录路径importos

    print(os.path.dirname(os.path.abspath(__file__)))

    打印输出当前文件路径importos

    print(os.path.abspath(__file__))

    打印输出当前文件上两层文件目录路径importos

    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']

    }

    TypeError

    20, 装饰器

    请写出装饰器代码骨架deflog(func):

    defwrapper(*args,**kw):

    print('call %s():'%func.__name__)

    returnfunc(*args,**kw)

    returnwrapper

    简述装饰器在 Python 中的作用:

    在不改动原函数代码的情况下, 为其增加新的功能.

    Python 学习群: 556370268, 有大牛答疑, 有资源共享! 是一个非常不错的交流基地! 欢迎喜欢 Python 的小伙伴!

    21, 多进程 多线程

    多进程更稳定还是多线程更稳定? 为什么?

    多进程更稳定, 它们是独立运行的, 不会因为一个崩溃而影响其他进程.

    多线程的致命缺点是什么?

    因为所有线程共享进程的内存, 所以任何一个线程挂掉都可能直接造成整个进程崩溃.

    进程间通信有哪些方式?

    共享变量, 队列, 管道.

    来源: http://www.jianshu.com/p/4e92215b587d

    展开全文
  • 链表存储 原理:链表存储是在程序运行过程中动态的分配空间,只要存储器还有空间,就不会发生存储溢出问题 优点:插入和删除速度快,保留原有的物理顺序,比如:插入或者删除一个元素时,只需要改变指针指向即可 ...

    是否了解线程的同步和异步?

    线程同步:多个线程同时访问同一资源,等待资源访问结束,浪费时间,效率低

    线程异步:在访问资源时在空闲等待时同时访问其他资源,实现多线程机制

    是否了解网络的同步和异步?

    同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事

    异步: 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕

    链表和顺序表储存时各自有什么优点?

    1.顺序表存储

    原理:顺序表存储是将数据元素放到一块连续的内存存储空间,存取效率高,速度快。但是不可以动态增加长度

    优点:存取速度高效,通过下标来直接存储

    缺点:1.插入和删除比较慢,2.不可以增长长度

    比如:插入或者删除一个元素时,整个表需要遍历移动元素来重新排一次顺序

    2.链表存储

    原理:链表存储是在程序运行过程中动态的分配空间,只要存储器还有空间,就不会发生存储溢出问题

    优点:插入和删除速度快,保留原有的物理顺序,比如:插入或者删除一个元素时,只需要改变指针指向即可

    缺点:查找速度慢,因为查找时,需要循环链表访问

    使用redis搭建分布式系统时如何处理网络延迟和网络异常?

    由于网络异常的存在,分布式系统中请求结果存在“三态”的概念,即三种状态:“成功”、“失败”、“超时(未知)”

    当出现“超时”时可以通过发起读取数据的操作以验证 RPC 是否成功(例如银行系统的做法)

    另一种简单的做法是,设计分布式协议时将执行步骤设计为可重试的,即具有所谓的“幂等性”

    数据仓库是什么?

    数据仓库是一个面向主题的、集成的、稳定的、反映历史变化的、随着时间的流逝发生变化的数据集合。它主要支持管理人员的决策分析。

    数据仓库收集了企业相关内部和外部各个业务系统数据源、归档文件等一系列历史数据,最后转化成企业需要的战略决策信息。

    特点:

    面向主题:根据业务的不同而进行的内容划分;

    集成特性:因为不同的业务源数据具有不同的数据特点,当业务源数据进入到数据仓库时,需要采用统一的编码格式进行数据加载,从而保证数据仓库中数据的唯一性;

    非易失性:数据仓库通过保存数据不同历史的各种状态,并不对数据进行任何更新操作。

    历史特性:数据保留时间戳字段,记录每个数据在不同时间内的各种状态。

    假设有一个爬虫,从网络上获取数据的频率快,本地写入数据的频率慢,使用什么数据结构好?

    在线求解(o°ω°o)

    你是否了解谷歌的无头浏览器?

    无头浏览器即headless browser,是一种没有界面的浏览器。既然是浏览器那么浏览器该有的东西它都应该有,只是看不到界面而已。

    Python中selenium模块中的PhantomJS即为无界面浏览器(无头浏览器):是基于QtWebkit的无头浏览器,

    你是否了解MySQL数据库的几种引擎?

    InnoDB:

    InnoDB是一个健壮的事务型存储引擎,这种存储引擎已经被很多互联网公司使用,为用户操作非常大的数据存储提供了一个强大的解决方案。

    在以下场合下,使用InnoDB是最理想的选择:

    1.更新密集的表。InnoDB存储引擎特别适合处理多重并发的更新请求。

    2.事务。InnoDB存储引擎是支持事务的标准MySQL存储引擎。

    3.自动灾难恢复。与其它存储引擎不同,InnoDB表能够自动从灾难中恢复。

    4.外键约束。MySQL支持外键的存储引擎只有InnoDB。

    5.支持自动增加列AUTO_INCREMENT属性。

    一般来说,如果需要事务支持,并且有较高的并发读取频率,InnoDB是不错的选择。

    MEMORY:

    使用MySQL Memory存储引擎的出发点是速度。为得到最快的响应时间,采用的逻辑存储介质是系统内存。

    虽然在内存中存储表数据确实会提供很高的性能,但当mysqld守护进程崩溃时,所有的Memory数据都会丢失。

    获得速度的同时也带来了一些缺陷。

    一般在以下几种情况下使用Memory存储引擎:

    1.目标数据较小,而且被非常频繁地访问。在内存中存放数据,所以会造成内存的使用,可以通过参数max_heap_table_size控制Memory表的大小,设置此参数,就可以限制Memory表的最大大小。

    2.如果数据是临时的,而且要求必须立即可用,那么就可以存放在内存表中。

    3.存储在Memory表中的数据如果突然丢失,不会对应用服务产生实质的负面影响。

    redis数据库有哪几种数据结构?

    5种数据结构

    string

    使用string时,redis**大多数情况下**并不会理解或者解析其含义,无论使用json、xml还是纯文本在redis看来都是一样的,只是一个字符串,只能进行strlen、append等对字符串通用的操作,无法针对其内容进一步操作。其基本操作命令有set、get、strlen、getrange、append:

    1 SET key value2 GET key3 STRLEN key4 GETRANGE key start end5 APPEND key value

    在大多数情况之外,就是string中存储的为纯数字的情况,redis可以将字符串当做数字进行进一步操作,这些操作包括decr、decrby、incr、incrby和incrbyfloat。

    hash

    使用hash时,在我看来,就是value本身就是一组key-value对,不过redis将这里的key称为field(但是hkeys命令为什么不叫hfields命令呢哈哈),也就是value是一组field-value对。其基本操作命令有hset、hget、hmset、hmget、hgetall、hkeys和hdel:

    1 HSET key field value2 HGET key field3 HMSET key field value [field value ...]4 HMGET key field [field ...]5 HGETALL key6 HKEYS key7 HDEL key field [field ...]

    list

    使用list时,value就是一个string数组,操作这组string时,可以像对待栈一样使用pop和push操作,但是这个栈两端都能进行操作;也可以像对待数组一样使用一个index参数来操作。list的操作命令略杂,主要分为两类:L开头的和R开头的,L代表LEFT或者LIST,进行一些从列表左端进行的操作,或者一些与端无关的操作;R代表RIGHT,进行一些从列表右端进行的操作。

    set

    set用于存储一组不重复的值,也可以进行一些集合的操作,就像数学上的集合,它是无序的。基本操作有sadd和sismember:

    1 SADD key member [member ...]2 SISMEMBER key member

    集合操作有:求交sinter、求并sunion和求差sdiff:

    1 SINTER key [key ...]2 SUNION key [key ...]3 SDIFF key [key ...]

    sorted set

    sorted set类似set,但是sorted set里每个元素都有一个score,这个score可用于排序和排名。基本操作有zadd、zcount、zrank:

    1 ZADD key score member [score member ...]2 ZCOUNT key min max3 ZRANK key member

    (摘自:http://blog.csdn.net/imred/article/details/51222237)

    展开全文
  • 主要介绍了python爬虫面试宝典及常见问题小结,需要的朋友可以参考下
  • 前言之所以在这里写下python爬虫常见面试题及解答,一是用作笔记,方便日后回忆;二是给自己一个和大家交流的机会,互相学习、进步,希望不正之处大家能给予指正;三是我也是互联网寒潮下岗的那批人之一,为了找工作...
  • 前言之所以在这里写下python爬虫常见面试题及解答,一是用作笔记,方便日后回忆;二是给自己一个和大家交流的机会,互相学习、进步,希望不正之处大家能给予指正;三是我也是互联网寒潮下岗的那批人之一,为了找工作...
  • python爬爬虫虫面面试试宝宝典典(常常见见问问题题) 这篇文章主要介绍了python爬虫面试宝典及常见问题小结,需要的朋友可以参考下 是否了解线程的同步和 步 线程同步 多个线程同时访问同一资源等待资源访问结束浪费...
  • 链表存储 原理:链表存储是在程序运行过程中动态的分配空间,只要存储器还有空间,就不会发生存储溢出问题 优点:插入和删除速度快,保留原有的物理顺序,比如:插入或者删除一个元素时,只需要改变指针指向即可 ...
  • 分享之前的爬虫简历,仅供参考,因为技术有限,简历技能点逼格不是很高,但提到的很多爬虫常用技术,都已经写入简历,靠这份简历之前找工作时候2天预约了8家面试,面的第二天,在第4家公司通过拿到offer,后面的公司...
  • 不住重点,总结以下面试常见问题,为想要转爬虫的小伙伴提供一些参考。一.项目问题:一般面试官的第一个问题八成都是问一下以前做过的项目,所以最好准备两个自己最近写的有些技术含量的项目,当然一定要自己亲手写...
  • 为了帮助学员更快更好的通过企业面试,小编悉心整理了5道Python爬虫面试题及答案,希望能够给大家提供帮助!1、简要介绍下scrapy框架及其优势scrapy是一个快速(fast)、高层次(high-level)的基于Python的Web爬虫构架,...
  • 这篇文章主要介绍了python爬虫面试必看的常见问题与参考答案,结合实例形式总结分析了Python爬虫面试相关的Python基础知识、概念、原理、算法及相关操作注意事项,需要的朋友可以参考下 文章目录一、 Python 基本功1、...
  • 今天接着跟大家总结Python爬虫面试常见的高频面试题。有需要的伙伴用心看啦!1 . Request中包含什么呢?1、请求方式:主要有GET和POST两种方式,POST请求的参数不会包含在url里面2、请求URLURL:统一资源定位符,如...
  • Python面试常见问题汇总集锦(含爬虫工程师面试考点)
  • Python 爬虫面试题 170 道

    千次阅读 2019-07-05 12:48:21
    Python 爬虫面试题 170 道 最近在刷面试题,看了网络上大量的 Python 相关面试题后,我发现了这几个问题: 有些还是 Python2 的代码 回答的很简单,关键的题目没有点出为什么 一些复制粘贴的代码根本就跑不通 ...
  • 前言之所以在这里写下python爬虫常见面试题及解答一是用作笔记,方便日后回忆;二是给自己一个和大家交流的机会,互相学习、进步,希望不正之处大家能给予指正;三是我也是互联网寒潮下岗的那批人之一,为了找工作而...
  • Python爬虫面试常见问题 一、项目问题: 1.你写爬虫的时候都遇到过什么反爬虫措施,你是怎样解决的 2.用的什么框架。为什么选择这个框架 二、框架问题: 1.scrapy的基本结构(五个部分都是什么,请求发出去的...
  • Python爬虫工程师面试常见

    千次阅读 2018-06-25 10:45:12
    项目问题: 一般面试官的第一个问题八成都是问一下以前做过的项目,所以最好准备两个自己最近写的有些技术含量的项目,当然一定要自己亲手写过的,在别的地方看的源码,就算看的再清楚,总归没有自己敲的了解的多。...
  • 爬虫面试常见问题

    万次阅读 多人点赞 2018-02-27 18:12:11
    许多自学爬虫(python)的小伙伴因为没有经历过面试所以在找工作之前难免有些抓不住重点,虽然自己有些技术但是因为发挥不好而错失工作机会,本人经过n次面试以后特总结以下面试常见问题,为想要转爬虫的小伙伴提供...
  • python爬虫最新常见面试

    千次阅读 2018-12-20 09:51:24
    1.你写爬虫的时候都遇到过什么反爬虫措施,你是怎么解决的 2.用的什么框架,为什么选择这个框架(我用的是scrapy框架,所以下面的问题也是针对scrapy) 二.框架问题(scrapy)可能会根据你说的框架问不同的问题,...
  • python爬虫面试精选01集 文章目录python爬虫面试精选01集网络基础专题五层网络模型什么是 2MSL?tcp 服务器创建流程什么是TTL,MSL,RTT?==HTTP/HTTPS 的区别==HTTPS 安全证书由来常见的HTTP状态码初级爬虫专题什么...
  • 原标题:Python 爬虫面试题 170 道:2019 版引言最近在刷面试题,所以需要看大量的 Python 相关的面试题,从大量的题目中总结了很多的知识,同时也对一些题目进行拓展了,但是在看了网上的大部分面试题不是很满意。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,677
精华内容 1,870
关键字:

python爬虫面试常见问题

python 订阅
爬虫 订阅