史上最全python工程师常见面试题集锦,有这一份就够了

daniumiqi daniumiqi     2023-05-01     363

关键词:

从互联网诞生以来,基本上所有的程序都属于网络程序,也就需要设计到网络编程,在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面试题和详解(10套)完整版

本文件内含10个文档,文档格式为md,可以以文本的形式打开。内容如题,全面的Python面试题和详解,需要的朋友可下载试试!包含:2019Python最新面试题及答案16道题、110道Python面试题(上)、最常见的35个Python面试题及答案(201... 查看详情

linux运维工程师50个常见面试题

1、请简述OSI七层网络模型有哪些层及各自的含义?物理层:底层数据传输,比如网线、网卡标准数据链路层:定义数据的基本格式,如何传输,如何标识。比如网卡MAC地址网络层:定义IP编码,定义路由功能,比如不同设备的数... 查看详情

python常见面试题(代码片段)

https://www.cnblogs.com/Allen-rg/p/7693394.html问题1到底什么是Python?你可以在回答中与其他技术进行对比(也鼓励这样做)。答案下面是一些关键点:Python是一种解释型语言。这就是说,与C语言和C的衍生语言不同,Python代码在运行之前... 查看详情

python常见面试题(代码片段)

在这里存一下python常见的一些面试题,当然也可以用其他语言实现啦! 1.列表去重1"""2有一个列表[11,2,3,3,7,9,11,2,3],去重并且保持原来的顺序.3"""45l1=[11,2,3,3,7,9,11,2,3]6ret=list(set(l1))7print(ret)8ret.sort(key=l1.index)#按值在l1中的索引进... 查看详情

python常见面试题讲解数字颠倒(代码片段)

题目描述描述:输入一个整数,将这个整数以字符串的形式逆序输出程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001 输入描述:输入一个int整数输出描述:将这个整数以字符串的形式逆序... 查看详情

最近python常见面试题精华整理

1、list和tuple的一些区别区别一:语法差异1、使用方括号[]创建列表,而使用括号()创建元组区别二:是否可变2、列表是可变的,而元组是不可变的,这标志着两者之间的关键差异。我们可以修改列表的值,但是不修改元组的值... 查看详情

python-常见面试题-持续更新(代码片段)

1.请你简要介绍一下Python的生成器是什么答:Python生成器是一个返回可以迭代对象的函数,可以被用作控制循环的迭代行为。生成器类似于返回值为数组的一个函数,这个函数可以接受参数,可以被调用,一般函数会返回包括所... 查看详情

数据库常见面试题总结

参考如下:数据库常见面试题(开发者篇)数据库优化SQL数据库面试题及答案常见面试题整理--数据库篇 查看详情

js正则表达式常见面试题

1.给一个连字符串例如:get-element-by-id转化成驼峰形式。varstr="get-element-by-id";varreg=/-w/g;//匹配横杆以及之后的一个字符,全局匹配console.log(str.replace(reg,function($0){return$0.slice(1).toUpperCase();//匹配到到是-e-b-i形式截取后一个字符转成... 查看详情

200+java常见面试题总结《最少必要面试题》(代码片段)

答案解析见文末这份【Java常见面试题总结】我想准备很久了,前面做面试官,后来自己也面了很多一线二线互联网公司,希望通过当下真实经历做一份面试题总结,助力金九银十,喜提心仪Offer。pub哥刚开始... 查看详情

python常见面试题讲解提取不重复的整数(代码片段)

题目描述输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。输入描述:输入一个int型整数输出描述:按照从右向左的阅读顺序,返回一个不含重复数字的新的整数示例1输入9876673输出37689解题思路:... 查看详情

面试题redis篇-常见面试题p1(代码片段)

【面试题】Redis篇-常见面试题p1备战实习,会定期的总结常考的面试题,大家一起加油!🎯🎯🎯往期文章:【面试题】计算机网络篇-10道常见面试题p1【面试题】JVM篇-10道常见面试题p1【面试题】Java并... 查看详情

面试题redis篇-常见面试题p1(代码片段)

【面试题】Redis篇-常见面试题p1备战实习,会定期的总结常考的面试题,大家一起加油!🎯🎯🎯往期文章:【面试题】计算机网络篇-10道常见面试题p1【面试题】JVM篇-10道常见面试题p1【面试题】Java并... 查看详情

python常见面试题讲解字符串最后一个单词的长度(代码片段)

题目描述计算字符串最后一个单词的长度,单词以空格隔开。输入描述:一行字符串,非空,长度小于5000。输出描述:整数N,最后一个单词的长度。示例1输入复制helloworld输出复制5解题思路:降输入的字符串用空隔分解,取出最... 查看详情

python常见面试题讲解字符串最后一个单词的长度(代码片段)

题目描述计算字符串最后一个单词的长度,单词以空格隔开。输入描述:一行字符串,非空,长度小于5000。输出描述:整数N,最后一个单词的长度。示例1输入复制helloworld输出复制5解题思路:降输入的字符串用空隔分解,取出最... 查看详情

mybatis常见面试题汇总

Mybatis常见面试题汇总  最近在复习整理Mybatis的相关知识,针对面试中的典型问题,结合相关书籍和网上相关帖子,做如下整理。=================================================================1、#和$的区别是什么?答:$是Properties文件中的... 查看详情

mysql常见面试题(代码片段)

测试数据:/*NavicatPremiumDataTransferSourceServer:localhostSourceServerType:MySQLSourceServerVersion:50624SourceHost:localhostSourceDatabase:sqlexamTargetServerType:MySQLTargetServerVersion:50624FileEncod 查看详情

计算机视觉算法工程师常见面试题1

参考技术A参考:https://www.zhihu.com/column/c_1170719557072326656反卷积也称为转置卷积,如果用矩阵乘法实现卷积操作,将卷积核平铺为矩阵,则转置卷积在正向计算时左乘这个矩阵的转置WT,在反向传播是左乘W,与卷积操作刚好相反,... 查看详情