Python基础面试题。很基础也特别容易被面试到。

1.HTTP和Session的区别
http是用于从万维网服务器传输超文本到本地浏览器的传送协议。基于TCP/IP通信协议来传送数据,主要特点:【1、简单快速,请求方法:get,head,post,因为协议简单,使的HTTP服务器的程序规模小,通信速度快。2、灵活,HTTP允许传输任意类型的数据对象。3、无连接,限制每次连接只处理一个请求,服务器处理完请求,并受到客户的应答后,即断开连接,这种方式可以节省传输时间。4、无状态,指协议对事务处理能力没有记忆能力,如果后续处理需要前面的信息,他必须重传,导致每次连接传送的数据量增大。5、支持b/s,c/s模式】
客户端发送一个HTTP请求到服务器的请求消息包括:请求行(用来说明请求类型POST,GET,要访问的资源以及所使用的http版本),请求头(User-Agent),空行,请求数据四个部分。
HTTP响应由四个部分组成:状态行(http版本 ,状态码,状态消息),消息报头(客户端要使用的一些附加信息),空行,响应正文(服务器返回给客户端的文本信息)。
200 OK                        //客户端请求成功
400 Bad Request               //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized              //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 
403 Forbidden                 //服务器收到请求,但是拒绝提供服务
404 Not Found                 //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error     //服务器发生不可预期的错误
503 Server Unavailable        //服务器当前不能处理客户端的请求,一段时间后可能恢复正常

GET     请求指定的页面信息,并返回实体主体。
HEAD     类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
POST     向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
PUT     从客户端向服务器传送的数据取代指定的文档的内容。
DELETE      请求服务器删除指定的页面。
CONNECT     HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
OPTIONS     允许客户端查看服务器的性能。
TRACE     回显服务器收到的请求,主要用于测试或诊断。
2、Session:session是一种会话机制,用来储存特定用户会话所需的信息。当用户是第一次访问一个服务器的时候,如果该服务器启用session,服务器就要给该用户创建一个session并生成一个sessionID,session保存在服务器端,sessionId保存在客户端,sessionID 是唯一的。当用户下次再访问该服务器的时候,服务器首先检查发来的请求是否包含一个sessionID ,如果包含,就在服务器中查找与sessionID匹配的session,找到之后,给客户端返回响应。
     Cookie:因为http是一种无状态协议,所以有了cookie的产生。cookie由服务器产生,然后发送给客户端,然后保存在客户端的内存或硬盘中。保存在内存的话,浏览器关闭就消失了,时间短暂,保存在硬盘的话,可以设置过期时间,除非手动删除或者时间过期才会消失。当用户向服务器发送请求的时候,服务器会给此用户生成一个唯一的识别码(Session ID ,即cookie),创建一个cookie对象,发送给客户端,然后客户端保存起来。当再次请求该网站服务器的时候,客户端会在内存中查找是否有此cookie,如果有则把cookie附在请求资源的http请求头上发送给服务器,cookie的根本作用是在客户端存储用户访问网站的一些信息,典型应用有:记住密码,下次自动登录,购物车功能,记录用户浏览的数据。cookie的大小限制在4kb左右。
3、URL与URI的区别
     URI是统一资源标识符,用来唯一的标识一个资源(HTML文档,图像,视频片段)。URI一般有三部分组成:访问资源的命名机制,存放资源的主机名,资源自身的名称。
     URL:统一资源定位器,是一种具体的URI,URL可以用来标识一个资源。由三部分组成:协议/主机IP地址,端口号/主机资源的具体地址,如目录文件名。

4.在视频电话通信中往往使用UDP协议,为什么?
   UDP是一个无连接的传输层协议,传输数据之前不需要在客户端与服务器之间建立连接,传输速度快。可靠性不高,数据可能会丢失。适用于传输量小的场景。

5、TCP滑动窗口机制:
     1:首先是AB之间三次握手建立TCP连接。在报文的交互过程中,A将自己的缓冲区大小(窗口大小)3发送给B,B同理,这样双方就知道了对端的窗口大小。
     2:A开始发送数据,A连续发送3个单位的数据,因为他知道B的缓冲区大小。在这一波数据发送完后,A就不能再发了,需等待B的确认。
    3:A发送过来的数据逐渐将缓冲区填满。
    4:这时候缓冲区中的一个报文被进程读取,缓冲区有了一个空位,于是B向A发送一个ACK,这个报文中指示窗口大小为1。A收到B发过来的ACK消息,并且知道B将窗口大小调整为1,因此他只发送了一个单位的数据并且等待B的下一个确认报文。
    5:如此反复。
6、TCP/IP协议
     总的来说分为:应用层,运输层,网络层,链路层。再往下的话就是硬件层了。TCP/IP不是一个协议,而是一个协议族,里面包含了太多的协议,如IP协议,IMCP协议,TCP协议等。然后这个TCP/IP的作用的主要是给不同的操作系统建立连接,可以达到不同操作系统能进行信息交流。更加方便的为人类服务。(好像圣经中上帝打乱了各地人的口音,让他们无法合作一样。计算机使用者意识到,计算机只是单兵作战并不会发挥太大的作用。只有把它们联合起来,电脑才会发挥出它最大的潜力。于是人们就想方设法的用电线把电脑连接到了一起)
7、分别阐述进程、线程、协程的区别和联系。
     进程是系统进行资源分配和调度的基本单位 。在早期面向进程设计的计算机结构中,进程是程     序的基本执行实体,在当代面向线程设计的计算机结构中,进程是线程的容器。
     线程:有时被称为轻量级进程,是程序执行流的最小单元,另外线程是进程中的一个实体,是被系统独立调度和分派的基本单位。
     协程:协程的概念很抽象,没有做出自己的定义,协程就想是进程中的线程一个,一个线程里里面也可以开辟多个协程,协程又与线程类似,每个协程表示一个执行单元。

8、scrapy中的Spider和CrawlSpider有什么区别?
9.scrapy中pipleline的主要作用?
   一个是查重并丢弃,第二是将爬取的数据保存在文件或者数据库中。
10.描述scrapy进行网页爬取的主要流程?
1、爬虫引擎获得初始请求开始抓取。 

2、爬虫引擎开始请求调度程序,并准备对下一次的请求进行抓取。 

3、爬虫调度器返回下一个请求给爬虫引擎。 

4、引擎请求发送到下载器,通过下载中间件下载网络数据。 

5、一旦下载器完成页面下载,将下载结果返回给爬虫引擎。 

6、引擎将下载器的响应通过中间件返回给爬虫进行处理。 

7、爬虫处理响应,并通过中间件返回处理后的items,以及新的请求给引擎。 

8、引擎发送处理后的items到项目管道,然后把处理结果返回给调度器,调度器计划处理下一个请求抓取。 

9、重复该过程(继续步骤1),直到爬取完所有的url请求。
11、写出使用正则表达式匹配中国运营商手机号的正则表达式(不含港澳台地区)
      ^1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$
12.有25匹马,速度都不同,但每匹马的速度都是定值。现在只有5条赛道,无法计时,即每赛一场最多只能知道5匹马的相对快慢。问最少赛几场可以找出25匹马中速度最快的前3名?(写出过程即可)
     25匹马。可以分为五组,然后进行五次比赛,假设每一组的第一名分别为:A1,B1,C1,D1,E1。然后A1,B1,C1,D1,E1进行一场比赛,假设比赛成绩A1最快,且A1>B1>C1>D1>E1,所以A1为第一名,那A2,A3,B1,B2,C1都有可能为第二名第三名,所以A2,A3,B1,B2,C1进行一场比赛取出前两名即可得出前三名。
13.有两柱不均匀的香,每柱香燃烧完需要1个小时,问:怎样用两柱香度量出一个15分钟的时间段?
   因为一炷香烧完需要一个小时,那么一炷香点两头,一炷香点一头,一炷香烧完就是半个小时,然后再将另一根香的另一头点上,然后烧完就是15分钟。

猜你喜欢

转载自blog.csdn.net/LoveL_T/article/details/84422396