python必会进阶经典面试题(答案)分享

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/brytlevson/article/details/100109340

···python
这些题的答案是自己做的,可能有些答的不到位,总之,和大家一起进步吧! 希望对大家有所帮助。

1、 在浏览器输入www.google.com回车后,会发生什么?
答:
(1)查找域名的IP地址,DNS域名解析 --浏览器首先要确认的是域名所对应的服务器IP地址,获取是需要的页面内容,由DNS服务器将域名解析成对应的服务器IP地址。
(2)建立TCP链接 ,客户端与服务器的TCP链接 – 三次握手
(3)客户端发起请求后服务器接收请求,处理请求并返回响应内容
(4)关闭TCP连接
(5)浏览器解析HTML,渲染页面

2、 简述TCP三次握手的过程
答:
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手.完成三次握手,客户端与服务器开始传送数据

3、 简述HTTP、TCP、IP、UDP和区别
答:
(1)TCP/UDP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。IP协议是网络层协议。
(2)TCP提供有保证的数据传输,而UDP不提供。这意味着TCP有一个特殊的机制来确保数据安全的不出错的从一个端点传到另一个端点,而UDP不提供任何这样的保证。
(3)HTTP(超文本传输协议)是利用TCP在两台电脑(通常是Web服务器和客户端)之间传输信息的协议。客户端使用Web浏览器发起HTTP请求给Web服务器,Web服务器发送被请求的信息给客户端。

4、 简述HTTP与HTTPS的区别
答:
(1)Http:超文本传输协议,Http协议是以明文方式发送信息的,如果黑客截取了Web浏览器和服务器之间的传输报文,就可以直接获得其中的信息。
(2)Https:是以安全为目标的Http通道,是Http的安全版。Https的安全基础是SSL。SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。
(3)http默认端口号是80,Https是443。
(4)Https协议握手阶段比较费时, Https连接缓存不如Http高效

5、 简述Cookie、Session的工作原理
答:cookie工作原理:
(1)创建:用户向服务器发起请求时,由服务器端生成,通过response对象响应给浏览器并保存
(2)使用:当再次发起请求时,request对象携带浏览器的cookie到达服务器,再通过request对象读取cookie中的值

session工作原理:
浏览器第一次请求session对象时,服务器会创建一个session并且生成一个sessionId,存储在数据库中,并将sessionid返回给浏览器,这个sessionId会被保存在浏览器的会话cookie中。
在浏览器不关闭的情况下,之后的每次请求请求头都会携带这个sessionId到服务器。服务器接收到请求后就得到该请求的sessionID,服务器找到该id对应的session返还给请求者使用。

  1. 事务的基本特征
    原子性(atomicity):一个事务必须视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作
    一致性(consistency):数据库总数从一个一致性的状态转换到另一个一致性的状态。
    隔离性(isolation):一个事务所做的修改在最终提交以前,对其他事务是不可见的。
    持久性(durability):一旦事务提交,则其所做的修改就会永久保存到数据库中。此时即使系统崩溃,修改的数据也不会丢失。

  2. 说一说你能想到的sql语句优化,至少五种
    避免全表扫描select *,将需要查找的字段列出来
    尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描
    尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描
    使用连接(join)来代替子查询
    使用limit对查询结果的记录进行限定
    用 exists 代替 in 是一个好的选择
    用Where子句替换HAVING 子句 因为HAVING 只会在检索出所有记录之后才对结果集进行过滤

  3. union、union all的区别
    对重复结果的处理:UNION在进行表链接后会筛选掉重复的记录,Union All不会去除重复记录
    对排序的处理:Union将会按照字段的顺序进行排序;UNION ALL只是简单的将两个结果合并后就返回;
    从效率上说,UNION ALL 要比UNION快很多

  4. 索引的作用?和它的优点缺点是什么
    索引就一种特殊的查询表,数据库的搜索引擎可以利用它加速对数据的检索。它很类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要的数据。索引可以是唯一的,创建索引允许指定单个列或者是多个列。缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小

    扫描二维码关注公众号,回复: 7663339 查看本文章
  5. MySQL主要的索引类型
    普通索引:是最基本的索引,它没有任何限制;
    唯一索引:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一;
    主键索引:是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值;
    组合索引:指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用组合索引时遵循最左前缀集合;
    全文索引:主要用来查找文本中的关键字,而不是直接与索引中的值相比较,mysql中MyISAM支持全文索引而InnoDB不支持;

  6. 使用索引注意事项
    索引不会包含有NULL的列,复合索引中只要有一列含有NULL值,那么这一列对于此符合索引就是无效的;使用短索引,对串列进行索引,如果可以就应该指定一个前缀长度;短索引不仅可以提高查询速度而且可以节省磁盘空间和I/O操作;
    mysql查询只使用一个索引,因此数据库默认排序可以符合要求的情况下不要使用排序操作,尽量不要包含多个列的排序,如果需要最好给这些列建复合索引;
    索引要建立在值比较唯一的字段上;对于那些定义为text、image和bit数据类型的列不应该增加索引

  7. 说一说脏读、不可重复读、幻读
    脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据;
    不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果因此本事务先后两次读到的数据结果会不一致;
    幻读:幻读解决了不重复读,保证了同一个事务里,查询的结果都是事务开始时的状态(一致性);

猜你喜欢

转载自blog.csdn.net/brytlevson/article/details/100109340