千家信息网

Python工程师常见面试题有哪些

发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,本篇内容介绍了"Python工程师常见面试题有哪些"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.
千家信息网最后更新 2024年11月11日Python工程师常见面试题有哪些

本篇内容介绍了"Python工程师常见面试题有哪些"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

  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,否则逻辑读会很高,性能很差。

"Python工程师常见面试题有哪些"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

数据 进程 数据库 存储 索引 引擎 过程 浏览 安全 字段 服务器 浏览器 队列 服务 缓存 僵尸 孤儿 性能 方法 磁盘 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 高科技和互联网哪个稳 工业无线网络安全的行业现状 嵌入式软件开发商防水材料 网络安全笔记本推荐 ipfs互联网科技巨头谷歌 湘潭大学数据库老师 网络安全系列课观后感 数据库表名与参数名相同 电脑怎么改装服务器运行游戏软件 网络经济属于网络技术发展阶段吗 遥感与软件开发 原神不一样的服务器可以组队玩么 网络技术的盈利 地下城服务器喇叭怎么出售 软件开发培训哪种好一点 网络安全工程师证什么时候考 深圳爱生活网络技术有限公司 云主机怎么设服务器 游戏王决斗链接服务器什么看的 数据库数据增量 阿西大数据库是什么意思 数据库安全性包括几个方面 ftp服务器都有什么 网络技术研究院院长 网络安全怎么抵御未来犯罪 数据库核心理论与技术 软件开发安全风险分析 网络安全研究内容有哪些 网络安全法 隐私 只狼用什么软件开发的
0