没有合适的资源?快使用搜索试试~ 我知道了~
自己从网上搜集的关于爬虫面试会问到的问题,自己从网上搜集的关于爬虫面试会问到的问题
资源推荐
资源详情
资源评论
1、tcp 和 udp 的区别?
TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,
也就是说,在收发数据前,必须和对方建立可靠的连接。一个 连接必须要经过三次
“对话”才能建立起来,其中的过程非常复杂,只简单的描述下这三次对话的简单过程:主
机 向主机 发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主
机 向主机 发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协
调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;主机 再发出一个数据
包确认主机 的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目
的是使数据包的发送和接收同步,经过三次“对话”之后,主机 才向主机 正式发送数据。
TCP 三次握手过程:
主机 通过向主机 发送一个含有同步序列号的标志位的数据段给主机 向主机
请求建立连接通过这个数据段,主机 告诉主机 两件事我想要和你通信你可以用哪
个序列号作为起始数据段来回应我
主机 收到主机 的请求后用一个带有确认应答和同步序列号标志位
的数据段响应主机 也告诉主机 两件事我已经收到你的请求了你可以传输数据了你要
用哪佧序列号作为起始数据段来回应我
主机 收到这个数据段后再发送一个确认应答确认已收到主机 的数据段我已
收到回复我现在要开始传输实际数据了这样 次握手就完成了主机 和主机 就可以传
输数据了
3 次握手的特点:
没有应用层的数据
这个标志位只有在 建产连接时才会被置
握手完成后 标志位被置
建立连接要进行 次握手而断开连接要进行 次:
当主机 完成数据传输后将控制位 置 提出停止 连接的请求
主机 收到 后对其作出响应确认这一方向上的 连接将关闭将 置
由 端再提出反方向的关闭请求将 置
主机 对主机 的请求进行确认将 置 双方向的关闭结束
由 的三次握手和四次断开可以看出 使用面向连接的通信方式大大提高了数
据通信的可靠性使发送数据端和接收端在数据正式传输前就有了交互为数据正式传输打
下了可靠的基础。
名词解释:
报头的控制位之一对数据进行确认确认由目的端发出用它来告诉发送端
这个序列号之前的数据段都收到了比如确认号为 则表示前 个数据段都收到了只有
当 时确认号才有效当 时确认号无效这时会要求重传数据保证数据的完
整性
同步序列号 建立连接时将这个位置
发送端完成发送任务位当 完成数据传输需要断开时提出断开连接的一方将
这位置
TCP 的包头结构:
源端口 位
目标端口 位
序列号 位
回应序号 位
头长度 位
!" 位
控制代码 位
窗口大小 位
偏移量 位
校验和 位
选项 位可选
这样我们得出了 包头的最小长度,为 字节。
UDP(User Data Protocol,用户数据报协议)
() #$ 是一个非连接的协议,传输数据之前源端和终端不建立连接,当它想传送
时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,#$
传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在
接收端,#$ 把每个消息段放在队列中,应用程序每次从队列中读一个消息段。
() 由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,
因此一台服务机可同时向多个客户机传输相同的消息。
() #$ 信息包的标题很短,只有 % 个字节,相对于 的 个字节信息包的额
外开销很小。
() 吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、
源端和终端主机性能的限制。
(&)#$ 使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链
接状态表(这里面有许多参数)。
()#$ 是面向报文的。发送方的 #$ 对应用程序交下来的报文,在添加首部后就
向下交付给 层。既不拆分,也不合并,而是保留这些报文的边界,因此,应用程序需要
选择合适的报文大小。
我们经常使用“'()*+命令来测试两台主机之间 , 通信是否正常,其实“'()*+命
令的原理就是向对方主机发送 #$ 数据包,然后对方主机确认收到数据包,如果数据包是
否到达的消息及时反馈回来,那么网络就是通的。
UDP 的包头结构:
源端口 位
目的端口 位
长度 位
校验和 位
小结 TCP 与 UDP 的区别:
基于连接与无连接;
对系统资源的要求( 较多,#$ 少);
#$ 程序结构较简单;
流模式与数据报模式 ;
& 保证数据正确性,#$ 可能丢包, 保证数据顺序,#$ 不保证。
2、对内存中栈和堆的了解?
栈:
什么是栈,它是你的电脑内存的一个特别区域,它用来存储被每一个 -.)/0(1)(包括
2(3)()方法)创建的临时变量。栈是 45,就是先进后出原则的结构体,它密切的被
# 管理和充分利用。每次 -.)/0(1) 声明一个新的变量,它就会被“推”到栈中。然后每次
一个 -.)/0(1) 退出时,所有关于这个函数中定义的变量都会被释放(换句话说就是删除)。
一旦栈中的变量释放,这块区域就会变成可用的,提供给其他栈中的变量。
用栈存储变量的好处是,内存是被你管理的。你不用手动的创建内存,不用当你不在
需要它的时候手动释放内存。另外,由于 # 组织栈内存很高效。读出和写入栈变量是很
快的。
理解栈的关键是理解概念,当一个 -.)/0(1) 退出时,所有它的变量都会从栈中弹出
以后都会永远消失。因此栈中的变量本质是局部的。这和我们原来理解为变量作用域或者
本地或者全局变量是相关的。在 中,一个公共的 6.*是从你程序中的一个 -.)/0(1) 外
尝试访问一个在栈中的这个 -.)/0(1) 的变量(在该 -.)/0(1) 已经退出后)。
关于栈的另一个特点我们应该记住,就是存储在栈中的变量的大小有限制。而堆上创
建变量不用考虑。
总结栈:
3、栈的伸长和伸缩就是函数压入或者推出局部变量。
6、我们不用自己去管理内存,变量创建和释放都是自动的。
/、栈中的变量只有在函数创建运行时存在。
堆:
堆也是我们的计算机内存中的一个区域,但是他不是自动管理的。而且也不是被 #
密切的管理着。它是一片更加自由的内存区域(很大)。要想在堆上创建内存,我们必须
使用 23771/或者 /3771/(),他们都是 语言编译的。一旦你在堆上分配内存,当你
不在需要的时候你必须用 -去销毁。如果你不销毁或者销毁失败,你的程序就会有内
存泄露。换句话说就是堆内存会一直在,其他进程无法使用。
不像栈,堆没有变量大小的限制(除了你电脑的物理限制条件外)。堆内存读出和写
入都比较慢,因为它必须使用指针图访问堆内存。
栈和堆的优缺点:
栈:
3、快速访问。
6、没有必要明确的创建分类变量,因为它是自动管理的。
/、空间被 # 高效地管理着,内存不会变成碎片。
"、只有局部变量
、受限于栈大小取决于操作系统
-、变量不能调整大小。
堆:
3、变量可以被全局访问
6、没有内存大小限制
/、(相对)访问比较慢
"、没有高效地使用空间,随着块内存的创建和销毁,内存可能会变成碎片。
、你必须管理内存(变量的创建和销毁你必须要负责)
-、变量大小可以用 3771/调整
3、爬虫框架 scrapy 的工作流程
3、 '(" 解析下载器下下来的 '1) ,返回 (02 或是 7()8
6、(02 或者 7()8 经过 '("2(""793 的 '1/ : '(":1.0方法,交给
)*()
/、)*() 将 (02 交给 (02'('7(),将 7()8 交给调度器
"、在调度器中,先将 ;. 0 对象利用 /3'< 内置的指纹函数生成一个指纹对象
、如果 ;. 0 对象中的 "1)=0>70 参数设置为 37 ,并且该 ;. 0 对象的
指纹不在信息指纹的队列中,那么就把该 ;. 0 对象放到优先级队列中
-、从优先级队列中获取 ;. 0 对象,交给 )*()
*、)*() 将 ;. 0 对象交给下载器下载,期间会通过 "19)713"2(""793
的 '1/ :;. 0 方法
?、下载器完成下载,获得 '1) 对象,将该对象交给 )*(),期间会经过
"19)713"2(""793 的 '1/ : '1) ( )方法
(、)*() 将获得的 '1) 对象交给 '(" 进行解析,期间会经过
'("2(""793 的 '1/ : '(":()'.0的方法
@、从 3 开始循环
4、字典、列表查询时的时间复杂度是怎样的?
列表是序列,可以理解为数据结构中的数组,字典可以理解为数据结构中的
?3 ?23','<0?1) 中 7( 0 对象的存储结构采用的是线性表,因此其查询复杂度为 5)
而 "(/0 对象的存储结构采用的是散列表?3 ? 表,其在最优情况下查询复杂度为
5。"(/0 的占用内存稍比 7( 0 大,会在 & 倍左右。
5、递归中如果没有终止条件会怎样?
概念:递归算法是一种直接或者间接的调用自身算法的过程。在计算机编写程序中,
递归算法对解决一大类问题是十分有效的。
特点:
①递归就是在过程或者函数里调用自身。
②在使用递归策略时,必须有一个明确的递归条件,称为递归出口。
③递归算法解题通常显得很简洁,但递归算法解题的效率较低。所以一般不倡导使用
递归算法设计程序。
④在递归调用的过程当中系统的每一层的返回点、局部变量等开辟了栈来存储。递归
函数次数过多容易造成栈溢出等。 所以一般不倡导用递归算法设计程序
递归如果没有终止条件会导致递归调用成为死循环而不能正常结束,并且会造成栈溢
出
笔试
1、去除列表中的重复元素
"-"( 0()/0:7( 07( 0
":7AB
-1(()7( 0
(-()10()":7
":73'')"(
0.)":7
2、得到列表的一个子列表,该列表满足列表中的元素在原列表中是连续的,且子列
表的所有元素之和最大。例如[1, -2, 3, -1, 2] => [3, -1, 2]
1、多线程和多进程有什么区别?
线程:
线程是操作系统能够进行运算调度的最小单位(程序执行流的最小单元)。它被包含
在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,
一个进程中可以并发多个线程,每条线程并行执行不同的任务。
一个标准的线程由线程 $,当前指令指针,寄存器集合和堆栈组成。另外,线程
是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,
只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥
有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并
发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻
塞和运行三种基本状态。就绪状态是指线程具备运行的所有条件,逻辑上可以运行,在等
待处理机运行状态是指线程占有处理机正在运行阻塞状态是指线程在等待一个事件如某
个信号量,逻辑上不可执行。每一个程序都至少有一个线程,若程序只有一个线程,那就
是程序本身。
线程是程序中一个单一的顺序控制流程。进程内一个相对独立的、可调度的执行单元,
是系统独立调度和分派 # 的基本单位指运行中的程序的调度单位。在单个程序中同时运
行多个线程完成不同的工作,称为多线程。
进程:
进程由至少一个线程组成。进程是计算机中的程序关于某数据集合上的一次运行活动,
是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的
计算机结构中,进程是程序的基本执行实体在当代面向线程设计的计算机结构中,进程是
线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。里面包含对各
种资源的调用,内存的管理,网络接口的调用等。。。对各种资源管理的集合 就可以称为
进程
区别:
()线程共享内存空间;进程的内存是独立的
()同一个进程的线程之间可以直接交流;两个进程想通信,必须通过一个中间代
理来实现
()创建新线程很简单; 创建新进程需要对其父进程进行一次克隆
()一个线程可以控制和操作同一进程里的其他线程;但是进程只能操作子进程
(&)改变主线程(如优先权),可能会影响其它线程;改变父进程,不影响子进程
2、http 请求的 header 包含哪些信息?
包含:. 3*)0、-、/118(、?1 0、3/?1)017 等。
3、爬取的内容怎么去重?
剩余63页未读,继续阅读
资源评论
- #完美解决问题
- #运行顺畅
- #内容详尽
- #全网独家
- #注释完整
幽云十六州
- 粉丝: 3
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 【无人机编队】基于matlab多无人机编队平移与旋转做闭环控制【含Matlab源码 10910期】.zip
- 【无人机控制】基于matlab Backstepping方法无人机四电机滑模控制【含Matlab源码 10913期】.zip
- 【无人机编队】基于matlab无人机飞行包线【含Matlab源码 10908期】.zip
- 【心电信号ECG】基于matlab Pan-Tompkins方法QRS检测(含心率)【含Matlab源码 10899期】.zip
- 【无人机协同】基于matlab遗传算法GA同构异构无人机UAV协同搜索【含Matlab源码 10916期】.zip
- 【心电信号ECG】基于matlab心电信号ECG心率监测器(含BPM PR QT QRS 判断是否正常)【含Matlab源码 10900期】.zip
- 【心电信号ECG】基于matlab呼吸率和心率检测【含Matlab源码 10898期】.zip
- 【组合导航】基于matlab AHRS算法UWB和IMU融合组合导航【含Matlab源码 10904期】.zip
- 【组合导航】基于matlab卡尔曼滤波KF IMU和UWB融合高精度定位组合导航【含Matlab源码 10905期】.zip
- 【组合定位】基于matlab扩展卡尔曼滤波EKF融合UWB和IMU割草机定位【含Matlab源码 10906期】.zip
- 中科大 高级人工智能课程 复习讲义
- 获取动态库名称,自动排除lib前缀和rd,d后缀
- 一种评估源网荷储协同接纳新能源能力方法代码 该代码为一两阶段优化代码,第一阶段以综合成本最大求解出新能源消纳功率带入到第二阶段模型,二阶段模型还包括无功补偿设备
- 柔性输送线sw18可编辑全套技术资料100%好用.zip
- 软管缠绕机sw18可编辑全套技术资料100%好用.zip
- comsol激光熔覆 多层多道 包括视频和模型
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功