面试基础篇---迭代器,yield, tcp, 等

news2024/12/25 2:30:12

1.谈谈python的装饰器,迭代器,yield?

在这里插入图片描述

迭代器在内存中通常是一次性遍历的,也就是说,一旦遍历完所有元素,它就会停止工作,不可再用。
惰性计算:生成器按需生成数据,即只有在请求时才计算下一项数据,这样可以节省内存。

  • 迭代器 是实现了 iter() 和 next() 方法的对象,适用于需要反复遍历数据的场景。
  • 生成器 是一种简便的创建迭代器的方法,使用 yield 按需生成数据。生成器的优势在于内存效率,特别适用于处理大数据集或惰性计算的场景。

2. 标准库线程安全的队列是哪一个?不安全的是哪一个?logging是线程安全的吗?

  • 线程安全的队列:queue.Queue、queue.LifoQueue、queue.PriorityQueue 是线程安全的队列;collections.deque 是不线程安全的。
  • logging 模块是线程安全的:logging 模块已经考虑到了多线程环境,因此默认情况下是线程安全的。如果需要提高性能,可以使用 QueueHandler 和 QueueListener 来优化日志记录。

3.python适合的场景有哪些?当遇到计算密集型任务怎么办?
在这里插入图片描述

3.python高并发解决方案?我希望听到twisted->tornado->gevent

Gevent

  • gevent 是一个基于协程的 Python 库,主要用于实现并发编程,特别适用于 I/O 密集型应用。它通过绿色线程和事件循环的机制,能够高效地处理大量的并发 I/O 操作(如网络请求、文件操作等)。

特点:

  • 协程:使用轻量级的绿色线程来代替操作系统线程,避免了线程切换的开销。
  • 事件循环:基于事件循环机制,处理 I/O 时能够异步切换任务,提高并发处理效率。
  • 猴子补丁:通过 monkey.patch_all() 替换标准库中的阻塞操作(如 socket、time.sleep 等),让它们变为非阻塞操作。
  • 适用场景:适合处理大量并发的 I/O 密集型任务,如 Web 服务、网络爬虫、实时数据处理等。

使用场景:

  • 高并发的 Web 服务,如 REST API 服务器。
  • 网络爬虫,能够同时从多个网站抓取数据。
  • 实时数据流处理,适合与异步消息队列等系统集成。

Gunicorn

  • Gunicorn 是一个高效的 WSGI 服务器,广泛用于部署 Python Web 应用(特别是与框架如 Flask、Django、FastAPI 等配合使用)。它是一个多进程服务器,通常与 gevent 或 eventlet 这样的异步库结合使用,以支持高并发。

特点:

  • 多进程模型:Gunicorn 默认使用多进程(即每个请求由一个独立的进程处理),每个进程可以独立运行。
  • WSGI 兼容:Gunicorn 是一个 WSGI 服务器,适用于任何符合 WSGI 标准的 Python Web 应用(如 Flask、Django、FastAPI 等)。
  • 并发模式:通过与异步库(如 gevent 或 eventlet)结合使用,能够实现协程式并发处理。
  • 适用场景:适用于大规模部署 Web 应用,支持多种并发模型,包括多进程、异步 I/O 等。

常见用法:

  • 使用多个进程来处理请求(通过 workers 参数设置工作进程数量)。
    使用 gevent 或 eventlet 配合,启用异步 I/O 处理。
  • 可以通过配置文件进行调优,支持多种部署方式。

4 .tcp/udp的区别?tcp粘包是怎么回事,如何处理?udp有粘包吗?

TCP (Transmission Control Protocol)

面向连接:TCP 是一种面向连接的协议,在数据传输前需要进行三次握手(handshaking)来建立连接。
可靠性:TCP 提供可靠的传输服务,确保数据包按顺序到达,不丢失,不重复,并且无差错。通过校验和、确认应答、重传等机制来保证数据的完整性。
流量控制:TCP 提供流量控制和拥塞控制,避免发送方超载接收方。
数据流:TCP 是面向字节流的,发送的数据不保留边界,接收方只能按顺序读取字节流。

UDP (User Datagram Protocol)

无连接:UDP 是一种无连接的协议,数据传输不需要建立连接,也没有握手过程。
不可靠:UDP 不保证数据的可靠到达,不提供数据重传、顺序控制或流量控制。因此,数据可能丢失、重复或乱序。
较小的开销:因为没有连接管理、确认应答和重传机制,UDP 的开销较小,适合实时应用(如视频通话、在线游戏等)。
数据包:UDP 是面向数据包的,每个数据包(称为数据报)有明确的边界。
总结
  • TCP 提供可靠的连接和数据传输,但效率较低,适用于需要保证数据完整性和顺序的应用(如网页、文件传输)。
  • UDP 提供快速的无连接数据传输,适用于对速度要求较高,但可以容忍部分数据丢失的应用(如视频流、DNS 查询等)。

粘包:由于 TCP 是面向字节流的协议,发送端发送的数据会被流式传输到接收端,接收端无法知道每个数据包的边界。结果可能会出现多个小数据包合并成一个大包,导致接收方无法准确区分不同的消息,这种现象叫做“粘包”。

1.2 解决粘包

定长包:每次发送固定长度的数据包,接收方知道每个数据包的长度,因此可以根据长度来拆分接收到的数据。缺点是每次都要定义固定长度,不灵活。

包头指定长度:每个数据包的头部可以存储数据包的长度信息。接收方通过读取包头的长度信息,知道当前消息的完整长度,从而正确地读取数据。

分隔符:可以在每个数据包之间添加特定的分隔符(例如换行符、空格等),接收方根据分隔符来分隔消息。缺点是分隔符可能会出现在实际数据中,导致消息拆分出错。

时间戳:给每个数据包加上时间戳,接收方根据时间戳来判断消息的边界,虽然这种方法不常见,但也可以解决部分问题。

1.3 UDP 不发生粘包

TCP 是面向字节流的,可能发生粘包和拆包问题。粘包是因为接收方无法准确区分消息的边界,可以通过定长包、包头指定长度、分隔符等方法来解决。
UDP 是面向数据包的,每个数据包独立传输,不会发生粘包问题。但在应用层,仍然需要通过某种协议来处理连续发送的数据包。

2.time_wait是什么情况?出现过多的close_wait可能是什么原因?
3.epoll,select的区别?边缘触发,水平触发区别?

三.存储 存储可能包含rdbms,nosql以及缓存等,我以mysql,redis举例
mysql相关
1.谈谈mysql字符集和排序规则?
2.varchar与char的区别是什么?大小限制?utf8字符集下varchar最多能存多少个字符
3.primary key和unique的区别?
4.外键有什么用,是否该用外键?外键一定需要索引吗?
5.myisam与innodb的区别?innodb的两阶段锁定协议是什么情况?
6.索引有什么用,大致原理是什么?设计索引有什么注意点?

redis相关
1.什么场景用redis,为什么mysql不适合?
2.谈谈redis的事务?用事务模拟原子+1操作?原子操作还有其它解决方案吗?
3.redis内存满了会怎么样?

四.安全 web安全相关
1.sql注入是怎么产生的,如何防止?
2.xss如何预防?htmlescape后能否避免xss?
3.csrf是什么?django是如何防范的?

密码技术
1.什么是分组加密?加密模式有哪些?ecb和cbc模式有什么区别?为什么需要iv向量?
2.简单说说https的过程?
3.对称加密与非对称加密区别?
3.如何生成共享秘钥? 如何防范中间人攻击?

五.杂
是否关注新技术啊?golang,rust是否了解?numpy,pandas是啥鸟? 是否紧跟时代潮流?逛不逛微博,刷不刷知乎?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2265028.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【文档搜索引擎】搜索模块的完整实现

调用索引模块,来完成搜索的核心过程 主要步骤 简化版本的逻辑: 分词:针对用户输入的查询词进行分词(用户输入的查询词,可能不是一个词,而是一句话)触发:拿着每个分词结果&#xf…

帝国cms灵动标签调用相关文章

帝国cms相关文章调用的方法很多,官方默认调用方法是使用标签 [!--other.link--] 那么内容页调用相关文章,什么时候用到灵动标签呢 答案是调用同类型的文章,比如有相同关键词或者相同tags标签的文章 使用灵动标签是如何调用的呢&#xff0…

低空经济的地理信息支撑:构建安全、高效的飞行管理体系

随着无人机等低空飞行器的广泛应用,低空空域管理的重要性日益凸显。地理信息技术作为低空空域管理的重要支撑,对于保障低空经济的健康发展具有不可替代的作用。 地理信息技术在低空空域管理中的作用 地理信息技术在低空空域管理中扮演着关键角色&#x…

一体式IO模块:打印机加工产线国产化降本增效的新利器

在当今全球化的市场竞争中,打印机制造行业面临着前所未有的挑战与机遇。为了提升生产效率、降低成本,并加速国产化进程,各大打印机制造商纷纷寻求技术创新与升级。明达技术自研推出的MR20一体式IO模块作为工业自动化领域的核心组件&#xff0…

「下载」智慧产业园区-数字孪生建设解决方案:重构产业全景图,打造虚实结合的园区数字化底座

数字孪生技术作为一种创新的管理工具,正逐步展现出其在智慧园区建设中的重要意义。以下将从几个方面详细阐述数字孪生在智慧园区建设中的关键作用。 一、提升园区运营管理的智能化水平 数字孪生技术通过构建园区的虚拟镜像,实现了对园区物理世界的全面…

ICASSP 2025 中了 ,不去印度参会就撤稿?

近日,ICASSP 2025正式放榜,身边很多同学都收到了好消息,虽然目前官方还没有给出正式的数据,但据知情人士透露,今年的投稿编号超过8000,可以说是创造了历史新高,预测整体录取率在46%左右。 根据…

深度学习之目标检测——RCNN

Selective Search 背景:事先不知道需要检测哪个类别,且候选目标存在层级关系与尺度关系 常规解决方法:穷举法,在原始图片上进行不同尺度不同大小的滑窗,获取每个可能的位置 弊端:计算量大,且尺度不能兼顾 Selective …

LOS/NLOS环境建模与三维TOA定位,MATLAB仿真程序,可自定义锚点数量和轨迹点长度

本代码的主要功能是建模 LOS(视距)和 NLOS(非视距)环境下的定位系统,估计目标的动态位置,三维空间 文章目录 运行结果源代码代码介绍 总结 运行结果 10个点的轨迹定位: 50个点的轨迹定位&#…

企业内训|高智能数据构建、Agent研发及AI测评技术内训-吉林省某汽车厂商

吉林省某汽车厂商为提升员工在AI大模型技术方面的知识和实践能力,举办本次为期8天的综合培训课程。本课程分为两大部分:面向全体团队成员的AI大模型技术结构与行业应用,以及针对技术团队的高智能数据构建与Agent研发。课程内容涵盖非结构化数…

专业的内外网数据交换方案 可解决安全、效率、便捷3大问题

内外网数据交换是很多企业和行业都会面临的场景,既然隔离了内外网,重中之重就是要确保数据的安全性,其次在数据流转交换过程中,不能太繁琐复杂,需要让用户快速、便捷的进行数据交换。首先我们来看看,在进行…

【linux】NFS实验

NFS服务 NFS是Network File System(网络文件系统)的缩写。它是一种用于在计算机网络中共享文件和目录的协议。NFS允许计算机上的用户访问和操作远程计算机上的文件,就像访问本地文件一样。它使用客户端-服务端模型,其中客户端机器…

2024年Python最新下载安装教程,附详细图文,持续更新

大家好,我是Python老安,今天为大家带来的是Windows Python3下载、安装教程,适用于 Python3 所有版本,包括 Python3.7,Python33.8,Python33.10 等版本。希望对大家有所帮助 Python目前已支持所有主流操作系统,在Linux,…

职业技能赛赛后心得

这是一位粉丝所要求的,也感谢这位粉丝对我的支持。 那么本篇文章我也是分成四个部分,来总结一下这次赛后心得。 赛中问题 那么这里的赛中问题不会只包含我所遇到的问题,也会包含赛中其他选手出现的问题。 那么首先我先说一下我在赛中遇到的…

WordPress File Upload 插件 任意文件读取漏洞复现(CVE-2024-9047)

0x01 产品简介 WordPress File Upload插件是一款功能强大的WordPress站点文件上传插件,它允许用户在WordPress站点中的文章、页面、侧边栏或表单中轻松上传文件到wp-contents目录中的任何位置。该插件使用最新的HTML5技术,确保在现代浏览器和移动设备上都能流畅运行,同时也…

没想到互联网大厂都喜欢问MySQL中的数据类型?

🎥 作者简介: CSDN\阿里云\腾讯云\华为云开发社区优质创作者,专注分享大数据、Python、数据库、人工智能等领域的优质内容 🌸个人主页: 长风清留杨的博客 🍃形式准则: 无论成就大小,…

YOLOv8 引入高效的可变形卷积网络 DCNv4 | 重新思考用于视觉应用的动态和稀疏算子

我们介绍了可变形卷积v4(DCNv4),这是一种为广泛的视觉应用设计的高效且有效的算子。DCNv4通过以下两项关键改进解决了其前身DCNv3的局限性: 在空间聚合中移除softmax归一化,以增强其动态特性和表达能力。优化内存访问,减少冗余操作以提高速度。这些改进使得DCNv4相比DCNv…

入侵他人电脑,实现远程控制(待补充)

待补充 在获取他人无线网网络密码后,进一步的操作是实现入侵他人电脑,这一步需要获取对方的IP地址并需要制作自己的代码工具自动化的开启或者打开对方的远程访问权限。 1、获取IP地址(通过伪造的网页、伪造的Windows窗口、hook,信…

C++中的字符串实现

短字符串优化(SSO) 实现1 实现2 写时复制 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<cstdio> #include<cstring> #include<cstring> using std::cout; using std::endl;// 引用计数存放的位置 // 1. 存放在栈上 --- 不行 // 2. 存…

clickhouse解决suspiciously many的异常

1. 问题背景 clickhouse安装在虚拟机上&#xff0c;持续写入日志时&#xff0c;突然关机&#xff0c;然后重启&#xff0c;会出现clickhouse可以正常启动&#xff0c;但是查询sql语句&#xff0c;提示suspiciously many异常&#xff0c;如图所示 2. 问题修复 touch /data/cl…

JVM系列(十三) -常用调优工具介绍

最近对 JVM 技术知识进行了重新整理&#xff0c;再次献上 JVM系列文章合集索引&#xff0c;感兴趣的小伙伴可以直接点击如下地址快速阅读。 JVM系列(一) -什么是虚拟机JVM系列(二) -类的加载过程JVM系列(三) -内存布局详解JVM系列(四) -对象的创建过程JVM系列(五) -对象的内存分…