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

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.rhkb.cn/news/494911.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件测试之测试用例

文章目录 测试用例测试用例的编写总结 测试用例 测试用例:描述测试点执行的文档(测试输入、执行条件、预期结果等) 作用 1.测试点能被精准执行 2.便于团队合作测试用例核心内容 用例编号、用例标题、所属模块、优先级、前置条件、测试步骤、测试数据、预期结果 测试用例的编写…

微机接口课设——基于Proteus和8086的打地鼠设计(8255、8253、8259)

原理图设计 汇编代码 ; I/O 端口地址定义 IOY0 EQU 0600H IOY1 EQU 0640H IOY2 EQU 0680HMY8255_A EQU IOY000H*2 ; 8255 A 口端口地址 MY8255_B EQU IOY001H*2 ; 8255 B 口端口地址 MY8255_C EQU IOY002H*2 ; 8255 C 口端口地址 MY8255_MODE EQU IOY003H*2 ; …

I.MX6U 启动方式详解

一、启动方式选择 BOOT 的处理过程是发生在 I.MX6U 芯片上电以后,芯片会根据 BOOT_MODE[1:0]的设置 来选择 BOOT 方式。 BOOT_MODE[1:0]的值是可以改变的,有两种方式,一种是改写 eFUSE(熔 丝),一种是修改相应的 GPIO 高低电平。第一种修改 eFUSE 的方式只能修改一次,后面就…

下载运行Vue开源项目vue-pure-admin

git地址:GitHub - pure-admin/vue-pure-admin: 全面ESMVue3ViteElement-PlusTypeScript编写的一款后台管理系统(兼容移动端) 安装pnpm npm install -g pnpm # 国内 淘宝 镜像源 pnpm config set registry https://registry.npmmirror.com/…

springboot-starter版本升级es版本问题

一、背景说明 版本漏洞处理,springboot版本升级,es版本暂不升级,但是pom引用中es版本一直为7.17.15高版本,不想显示声明版本,定位具体问题,最后还是重新定义了版本进行处理。 二、异常情况 这里看4.4.18是…

模型优化之知识蒸馏

文章目录 知识蒸馏优点工作原理示例代码 知识蒸馏优点 把老师模型中的规律迁移到学生模型中,相比从头训练,加快了训练速度。另一方面,如果学生模型的训练精度和老师模型差不多,相当于得到了规模更小的学生模型,起到模…

Hadoop集群(HDFS集群、YARN集群、MapReduce​计算框架)

一、 简介 Hadoop主要在分布式环境下集群机器,获取海量数据的处理能力,实现分布式集群下的大数据存储和计算。 其中三大核心组件: HDFS存储分布式文件存储、YARN分布式资源管理、MapReduce分布式计算。 二、工作原理 2.1 HDFS集群 Web访问地址&…

使用 acme.sh 申请域名 SSL/TLS 证书完整指南

使用 acme.sh 申请域名 SSL/TLS 证书完整指南 简介为什么选择 acme.sh 和 ZeroSSL?前置要求安装过程 步骤一:安装 acme.sh步骤二:配置 ZeroSSL 证书申请 方法一:手动 DNS 验证(推荐新手使用)方法二&#xf…

# 起步专用 - 哔哩哔哩全模块超还原设计!(内含接口文档、数据库设计)

↑ 上方下载文档 (大小374KB) 接口文档预览 (超过50个接口) 一、数据库25张表er-关系清晰构图!(tip: 鼠标右键图片 > 放大图像) 二、难点/经验 详细说明 热门评论排序评论点赞列表|DTO封装经验分享|精华接口文档说明 组员都说喜欢分档对应枚举码 如果这篇文章…

掌握 Ansys ACP 中的参考方向:简化复杂的复合材料设计

概括 在复合材料分析领域,精度至关重要,尤其是在定义纤维方向和铺层时。Ansys ACP(Ansys Composite PrepPost)提供了强大的工具来建立参考方向,这是实现精确结构模拟的关键步骤。在本博客中,我们将揭开在 …

牵手红娘:牵手App红娘助力“牵手”,脱单精准更便捷

随着互联网的普及,现代青年的社交圈层加速扩大,他们的恋爱观也正经历着前所未有的转变。在繁忙的工作之余,人们希望能够找到一种既高效又真诚的交友方式。于是,线上交友平台成为了他们寻找爱情的新选择。让不同文化背景、不同工作…

动态规划<四> 回文串问题(含对应LeetcodeOJ题)

目录 引例 其余经典OJ题 1.第一题 2.第二题 3.第三题 4.第四题 5.第五题 引例 OJ 传送门Leetcode<647>回文子串 画图分析&#xff1a; 使用动态规划解决 原理&#xff1a;能够将所有子串是否是回文的信息保存在dp表中 在使用暴力方法枚举出所有子串&#xff0c;是…

突发!!!GitLab停止为中国大陆、港澳地区提供服务,60天内需迁移账号否则将被删除

GitLab停止为中国大陆、香港和澳门地区提供服务&#xff0c;要求用户在60天内迁移账号&#xff0c;否则将被删除。这一事件即将引起广泛的关注和讨论。以下是对该事件的扩展信息&#xff1a; 1. 背景介绍&#xff1a;GitLab是一家全球知名的软件开发平台&#xff0c;提供代码托…

一网多平面

“一网多平面”是一种网络架构概念&#xff0c;具体指的是在一张物理网络之上&#xff0c;逻辑划分出“1N”个平面。以下是对“一网多平面”的详细解释&#xff1a; 定义与构成 01一网多平面 指的是在统一的物理网络基础设施上&#xff0c;通过逻辑划分形成多个独立的网络平面…

shell脚本定义特殊字符导致执行mysql文件错误的问题

记得有一次版本发布过程中有提供一个sh脚本用于一键执行sql文件&#xff0c;遇到一个shell脚本定义特殊字符的问题&#xff0c;sh脚本的内容类似以下内容&#xff1a; # 数据库ip地址 ip"127.0.0.1" # 数据库密码 cmdbcmdb!#$! smsm!#$!# 执行脚本文件&#xff08;参…

R语言数据分析案例46-不同区域教育情况回归分析和探索

一、研究背景 教育是社会发展的基石&#xff0c;对国家和地区的经济、文化以及社会进步起着至关重要的作用。在全球一体化进程加速的今天&#xff0c;不同区域的教育发展水平呈现出多样化的态势。这种差异不仅体现在教育资源的分配上&#xff0c;还表现在教育成果、教育投入与…

我用Cursor+DeepSeek做了个飞书文档一键同步插件,免费使用!

作为一个飞书文档的重度使用者&#xff0c;我基本上都是先在飞书上写好文章&#xff0c;然后再想办法搬到其他平台上&#xff0c;所以对飞书一键同步有很强的需求。​ 于是我决定做个插件来支持飞书文档的同步。​ 说实话我是第一次玩插件&#xff0c;源代码看起来有些陌生&a…

【Qt】对象树(生命周期管理)和字符集(cout打印乱码问题)

1.对象树 对象树统一管理窗口内部控件的生命周期&#xff0c;本质是一颗多叉树。 new对象会加入到对象树中&#xff0c;窗口关闭/释放时统一销毁&#xff0c;不需要手动delete。 如果在栈上定义label对象&#xff0c;生命周期随构造函数&#xff0c;无法正常显示控件。 1.1演…

v3s点RGB屏 40pin 800x480,不一样的点屏,不通过chosen。

一、背景、目的、简介。 一般来说&#xff0c;通过uboot将屏幕参数传给kernel&#xff0c;是通过修改设备树。 uboot和kernel都需要屏幕点亮。uboot侧重于显示一张图片。而kernel则多是动画。 在这里&#xff0c;我先是找到了一个裸机点屏的代码。将其编译成静态库后&#x…

密码学期末考试笔记

文章目录 公钥加密之前的部分 (非重点&#xff0c;关注工具怎么用&#xff0c;和性质)一、对称加密 (symmetric ciphers)1. 定义 二、PRG (伪随机数生成器)1. 定义2. 属性 三、语义安全 (Semantic Security)1. one-time key2. 流密码是语义安全的 四、分组密码 (Block Cipher)1…