从互联网诞生以来,基本上所有的程序都属于网络程序,也就需要设计到网络编程,在python中,就是在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工程师数据库常见面试题。你面试的时候有遇到过吗?又或许你现在刚刚开始学习

Python开发,一定要着重掌握关于数据库相关的知识,未来是大数据时代,对于数据库的要求会越来越多。所以能掌握数据库的知识也是为自己未来的职场发展提供更多的机会。

python常用面试题_史上最全Python工程师常见面试题集锦,有这一份就够了相关推荐

  1. cad和python哪个应该学_史上最全Python快速入门教程,满满都是干货

    Python是面向对象,高级语言,解释,动态和多用途编程语言.Python易于学习,而且功能强大,功能多样的脚本语言使其对应用程序开发具有吸引力. Python的语法和动态类型具有其解释性质,使其成为 ...

  2. python迭代器与生成器答案_史上最全 Python 迭代器与生成器

    原标题:史上最全 Python 迭代器与生成器 作者:浪子燕青 链接:http://www.langzi.fun/迭代器与生成器.html 迭代器与可迭代对象 概念 迭代器:是访问数据集合内元素的一种 ...

  3. python 列表生成器放while_史上最全 Python 迭代器与生成器

    原标题:史上最全 Python 迭代器与生成器 转自:浪子燕青 http://www.langzi.fun/迭代器与生成器.html 概念 迭代器:是访问数据集合内元素的一种方式,一般用来遍历数据,但 ...

  4. python高分书籍推荐_史上最全的Python书排行榜|你想知道的都在这里

    原标题:史上最全的Python书排行榜|你想知道的都在这里 感谢关注天善智能,走好数据之路↑↑↑ 欢迎关注天善智能,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习,问答.求职一站式搞定 ...

  5. 猿辅导python面试题_史上最全猿辅导面试流程及感受

    主要包括:投简历-初试-岗前培训-终审-注意事项 投简历 大概1–3天会有电话通知参加初试,要注意接听武汉或郑州的电话哦. 初试 群面形式,hr会拉一个四人微信小群,有三名面试人员,依次进行面试.1m ...

  6. JavaScript中的load事件的作用_史上最全的web前端面试题汇总及答案JavaScript之二(二)...

    作者:樱桃小丸子儿 链接:https://www.jianshu.com/p/abadcc84e2a4 JavaScript JS的基本数据类型 number,string,boolean,objec ...

  7. c++全局类对象_史上最全 Python 面向对象编程

    面向对象编程和函数式编程(面向过程编程)都是程序设计的方法,不过稍有区别. 面向过程编程: 1. 导入各种外部库 2. 设计各种全局变量 3. 写一个函数完成某个功能 4. 写一个函数完成某个功能 5 ...

  8. javascript array添加图片_史上最全的web前端面试题汇总及答案JavaScript之二(二)...

    作者:樱桃小丸子儿 链接:https://www.jianshu.com/p/abadcc84e2a4 JavaScript JS的基本数据类型 number,string,boolean,objec ...

  9. amigo幸运字符什么意思_史上最全python字符串操作指南

    字符串的定义 日常编码中,大家会发现,太多时候我们需要对数据进行处理,而这数据不管是数组.列表.字典,最终都逃不开字符串的处理. 所以今天要来跟大家发散的聊聊字符串! 估计很多人看到是将字符串肯定觉得 ...

最新文章

  1. 霍夫变换直线检测基本原理
  2. CPU GPU FPU TPU 及厂商
  3. undefined reference to `std::ios_base::Init::Init() 解决
  4. python复杂非线性方程_非线性方程python入门——屠龙刀
  5. scikit-learn——快速入门 - daniel-D(转)
  6. linux位置变量的应用,llinux中变量的运用
  7. python tkinter实例_Python tkinter模版代码实例
  8. Linux命令:SAMBA配置与win10共享
  9. UI设计入门:解析设计标注规范和图标规范
  10. 案例 | 基于JMP的机器学习,解决半导体良率问题
  11. php程序员工作日记,PHP程序员战地日记
  12. 设计模式学习之访问者模式
  13. ei论文计算机,容易写的计算机ei论文题目 计算机ei专业论文题目如何拟
  14. LPC1768 IIC通信示——PCF8563
  15. laravel 压缩图片 Intervention/image
  16. 读书笔记-干法-热爱工作天道酬勤
  17. html5 xdwlnjs cn,最近需要调用一个网站的js,但是发现是加密的,有大佬来解密下吗?...
  18. 买的天猫转让网店怎么取名
  19. 【嵌入式系统设计与实现】4 十字路口交通灯控制(简易版)
  20. Microsoft Teams会议文件无法下载或在线访问

热门文章

  1. SqlService 数据操作
  2. Linq中的Where与SkipWhile
  3. 使用EL表达式接收url的传值
  4. BZOJ2002 [HNOI2010] 弹飞绵羊
  5. Kudu Tablet design
  6. iOS:多线程的详细介绍
  7. iphone-common-codes-ccteam源代码 CCUIKit.m
  8. crontab命令简介
  9. IIS 错误代码大汇总
  10. 计算机应用技术国外现状,浅析计算机应用技术的现状及发展趋势