专栏名称: python
隔天更新python文章,我希望用我的努力换来劳动的成果帮助更多的人掌握一门技术,因此我要更加努力。
目录
相关文章推荐
Python爱好者社区  ·  “给我滚出贵大!”郑强出任贵州大学校长,打算 ... ·  2 天前  
Python爱好者社区  ·  python接私活,yyds ·  16 小时前  
Python开发者  ·  “李飞飞团队50 美元炼出 ... ·  3 天前  
Python开发者  ·  国产 DeepSeek V3 ... ·  4 天前  
Python爱好者社区  ·  英伟达憾失DeepSeek关键人才?美国放走 ... ·  3 天前  
51好读  ›  专栏  ›  python

Python爬虫面试常见问题

python  · 公众号  · Python  · 2018-03-10 23:08

正文



是否了解线程的同步和异步?
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数据都会丢失。







请到「今天看啥」查看全文