当前位置:首页 > 服务端 > python面试题-1

python面试题-1

2022年08月05日 09:44:34服务端4

1.Tcp 协议和 udp 协议有什么区别?

  (1)TCP 面向连接(如打电话要先拨号建立连接);UDP 是无连接的,即发送数据之前不需要建立连接。
  (2)每一条 TCP 连接只能是点到点的;UDP 支持一对一,一对多,多对一和多对多的交互通信。
  (3)TCP 首部开销 20 字节;UDP 的首部开销小,只有 8 个字节。
  (4)TCP 的逻辑通信信道是全双工的可靠信道,UDP 则是不可靠信道。

  2.Post 和 get 区别?

  (1)GET 请求的数据会暴露在地址栏中,而 POST 请求则存在表单中提交所以 post 相对安全。
  (2)post 传输数据比 get 大。
  (3)post 比 get 安全。

  3.cookie 和 session 的区别?

  (1)cookie 数据存放在客户的浏览器上,session 数据放在服务器上。
  (2)cookie 不是很安全,别人可以分析存放在本地的 COOKIE 并进行 COOKIE欺骗考虑到安全应当使用 session。
  (3)session 会在一定时间内保存在服务器上。当访问增多,会比较占用服务器的性能考虑到减轻服务器性能方面,应当使用 COOKIE。
  (4)单个 cookie 保存的数据不能超过 4K,很多浏览器都限制一个站点最多保存 20 个 cookie。
  (5)建议:将登陆信息等重要信息存放为 SESSION其他信息如果需要保留,可以放在 COOKIE 中。

  4.什么是僵尸进程和孤儿进程,怎么避免僵尸进程?

  (1)孤儿进程:父进程退出,子进程还在运行的这些子进程都是孤儿进程,孤儿进程将被会被其它进程收养,不会造成影响。
  (2)僵尸进程:子进程退出,而父进程迟迟不回收,造成资源浪费。
  (3)避免僵尸进程的方法:1.fork 两次用孙子进程去完成子进程的任务。2.用 wait()函数使父进程阻塞。

 

      5.scrapy 和 scrapy-redis 有什么区别?

  答:scrapy 是一个 Python 爬虫框架,爬取效率极高,具有高度定制性,但是不支持分布式。而 scrapy-redis 一套基于 redis 数据库、运行在 scrapy 框架之上的组件,可以让scrapy 支持分布式策略,Slaver 端共享 Master 端 redis 数据库里的 item 队列、请求队列和请求指纹集合。

 

    6.描述下 scrapy 框架运行的机制?

  答:从 start_urls 里获取第一批 url 并发送请求,请求由引擎交给调度器入请求队列,获取完毕后,调度器将请求队列里的请求交给下载器去获取请求对应的响应资源,并将响应交给自己编写的解析方法做提取处理:1. 如果提取出需要的数据,则交给管道文件处理;2. 如果提取出url,则继续执行之前的步骤(发送url请求,并由引擎将请求交给调度器入队列...),直到请求队列里没有请求,程序结束。

 

   7.Post 和 get 区别和应用场合?

  区别:

  Get:从指定的服务器中获取数据。GET 请求能够被缓存;GET 请求会保存在浏览器的浏览记录中;以 GET 请求的URL能够保存为浏览器书签;GET 请求有长度限制;GET 请求主要用以获取数据。

  Post:POST 请求不能被缓存下来;POST 请求不会保存在浏览器浏览记录中; POST 请求的 URL 无法保存为浏览器书签;POST 请求没有长度限制;POST 请求会把请求的数据放置在HTTP 请求包的包体中,POST 的安全性比 GET的高。可能修改变服务器上的资源的请求

  应用场合:

  post:请求的结果有持续性的副作用(数据库内添加新的数据行)若使用 GET 方法,则表单上收集的数据可能让 URL 过长。要传送的数据不是采用 7 位的 ASCII 编码。

  get:请求是为了查找资源,HTML表单数据仅用来帮助搜索。请求结果无持续性的副作用。收集的数据及 HTML 表单内的输入字段名称的总长不超过 1024 个字符。

 

   8.说一下 mysql 数据库存储的原理?

  储存过程是一个可编程的函数,它在数据库中创建并保存。它可以有 SQL 语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式。存储过程通常有以下优点:

  a、存储过程能实现较快的执行速度。

  b、存储过程允许标准组件是编程。

  c、存储过程可以用流程控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。

  d、存储过程可被作为一种安全机制来充分利用。

  e、存储过程能够减少网络流量。

 

  9.数据库索引

  数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用 B_TREE。B_TREE 索引加速了数据访问,因为存储引擎不会再去扫描整张表得到需要的数据;相反,它从根节点开始,根节点保存了子节点的指针,存储引擎会根据指针快速寻找数据。

 

  10.数据库优化方案

  优化索引、SQL 语句、分析慢查询

  设计表的时候严格根据数据库的设计范式来设计数据库

  使用缓存,把经常访问到的数据而且不需要经常变化的数据放在缓存中,能节约磁盘 IO

  优化硬件;采用 SSD,使用磁盘队列技术(RAID0,RAID1,RDID5)等;

  采用MySQL内部自带的表分区技术,把数据分层不同的文件,能够提高磁盘的读取效率

  垂直分表;把一些不经常读的数据放在一张表里,节约磁盘 I/O

  主从分离读写;采用主从复制把数据库的读操作和写入操作分离开来

  分库分表分机器(数据量特别大),主要的的原理就是数据路由

  选择合适的表引擎,参数上的优化

  进行架构级别的缓存,静态化和分布式

  不采用全文索引

  采用更快的存储方式,例如 NoSql 存储经常访问的数据。

 

  11.数据库怎么优化查询效率?

  1、储存引擎选择:如果数据表需要事务处理,应该考虑使用 InnoDB,因为它完全符合 ACID 特性。如果不需要事务处理,使用默认存储引擎 MyISAM 是比较明智的

  2、分表分库,主从。

  3、对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引

  4、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描

  5、应尽量避免在 where 子句中使用 != 或 <> 操作符,否则将引擎放弃使用索引而进行全表扫描

  6、应尽量避免在 where 子句中使用 or 来连接条件,如果一个字段有索引,一个字段没有索引,将导致引擎放弃使用索引而进行全表扫描

  7、Update 语句,如果只更改 1、2 个字段,不要 Update 全部字段,否则频繁调用会引起明显的性能消耗,同时带来大量日志

  8、对于多张大数据量(这里几百条就算大了)的表 JOIN,要先分页再 JOIN,否则逻辑读会很高,性能很差。

作者:yblackd
来源链接:https://www.cnblogs.com/yblackd/p/12141786.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/server/17638.html

分享给朋友:

“python面试题-1” 的相关文章

Spring Cloud面试问题

Spring Cloud面试问题

问:什么是Spring Cloud?     答: Spring Cloud Stream App Starters是基于Spring Boot的Spring Integration应用程序,提供与外部系统的集成。Spring Cloud Task。...

MySQL面试有这一篇就够了

MySQL面试有这一篇就够了

MySQL面试常见知识点 1、 MySQL常用的存储引擎有什么?它们有什么区别? InnoDB InnoDB是MySQL的默认存储引擎,支持事务、行锁和外键等操作。 MyISAM MyISAM是M...

蚂蚁金服测试开发的面试题【杭州多测师】【杭州多测师_王sir】

1、抽象类和Java当中的接口有什么区别 2、Java中空指针是怎么引起的? 3、Java的多线程是怎么实现的? 4、Java用的哪些框架? 5、Java中截图或者录屏用代码怎么实现的 6、自己有没有开发过什么小工具 7、自己搭建过什么关于Java的...

IOS面试题详解(二)..

IOS面试题详解(二)..

上一篇文章列出了共32道IOS面试题: http://www.cnblogs.com/fkdd/archive/2012/03/13/2394724.html 下面从第一题开始解答: 题目:1.Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?...

面试官问:为什么你们项目要用消息队列?

面试官问:为什么你们项目要用消息队列?

同学们应该都会被问到过这个问题:你的系统为什么要用消息队列? 大家普遍回答:我入职前,系统里面就已经用了消息队列啊,然后就用了。 其实面试官就是想看看你有没有深入了解过消息队列,有没有认真思考过消息队列解决了哪些问题? ​ 这篇文章主要带大家解决以...

4.面试必问:线程池的原理是什么?

4.面试必问:线程池的原理是什么?

虽然线程给我们程序带来了更高的执行效率,但是线程不是创建的越多越好,那么线程创建的过多,会带来什么问题呢? 线程之间频繁的进行上下文切换,增加系统的负载 线程的创建和销毁本身也是非常消耗资源的 所以为了解决上面这个问题,让...

Java面试题:Error和Exception有什么区别?

[ Error表示系统级的错误和程序不必处理的异常,是恢复不是不可能但很困难的情况下的一种严重问题;比如内存溢出,不可能指望程序能处理这样的情况;Exception表示需要捕捉或者需要程序进行处理的异常,是一种设计或实现问题;也就是说,它表示如果程序运行正常,从不会发生的...

java基础面试题:运行时异常与一般异常有何异同?error和exception有什么区别? 请写出你最常见到的5个runtimeexception?

Throwable是Java错误处理的父类,有两个子类:Error和Exception。   Error:无法预期的严重错误,导致JVM虚拟机无法继续执行,几乎无法恢复捕捉的 Exception:可恢复捕捉的。java健壮程序的手段。  ...

rabbitmq面试题

rabbit面试题 1.什么是rabbitmq 采用AMQP高级消息队列协议的一种消息队列技术,最大的特点就是消费并不需要确保提供方存在,实现了服务之间的高度解耦 2.为什么要使用rabbitmq 1.在分布式系统下具备异步,削峰...

JAVA面试精选【Java基础第二部分】

  上一篇,我们给出了大概35个题目,都是基础知识,有童鞋反映题目过时了,其实不然,这些是基础中的基础,但是也是必不可少的,面试题目中还是有一些基础题目的,我们本着先易后难的原则,逐渐给出不同级别的题目,猛料还在后头呢,继续关注哦。   这一章我们继续接下来的35个题目,这些题目...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。