2024年最新2024Python开发面试解答之设计模式,SQL基本功(二)--查询基础(1),2024年最新字节跳动产品社招面试

收集整理了一份《2024年最新Python全套学习资料》免费送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来

如果你需要这些资料,可以添加V无偿获取:hxbc188 (备注666)
img

正文

table

  • 设定汉语别名时需要使用双引号( " )括起来,字符串使用单引号

  • 在 SELECT 语句中使用 DISTINCT 可以删除重复行,DISTINCT 关键字只能用在第一个列名之前,在使用 DISTINCT 时, NULL 也被视为一类数据。 NULL 存在于多行中时 , 也会被合并为一条 NULL 数据

注释的书写方法

  • 1行注释

  • 书写在“–”之后,只能写在同一行。

  • ​​​​​​​ 多行注释

  • ​​​​​​​书写在“/*”和“*/”之间,可以跨多行。

​​​​​​​算术运算符和比较运算符

======================

  • 四则运算所使用的运算符 ( + 、 - 、 * 、 / ) 称为算术运算符。运算符就是使用其两边的值进行四则运算或者字符串拼接、数值大小比较等运算,并返回结果的符号。加法运算符 ( + ) 前后如果是数字或者数字类型的列名的话,就会返回加法运算后的结果。(PS.所有包含 NULL 的计算,结果肯定是 NULL)
含义运算符
加法运算+
减法运算-
乘法运算*
除法运算/

​​​​​​​像符号 = 这样用来比较其两边的列或者值的符号称为比较运算符,符号 = 就是比较运算符,一定要让不等号在左,等号在右。

运算符含义
=和~相等
<>和~不相等
>=大于等于~
>大于~
<=小于等于~
<小于~

字符串使用不等号规则


  • 被定为字符串类型,并且在对字符串类型的数据进行大小比较时,使用的是和数字比较不同的规则。典型的规则就是按照字典顺序进行比较,也就是像姓名那样,按照条目在字典中出现的顺序来进行排序。该规则最重要的一点就是,以相同字符开头的单词比不同字符开头的单词更相近。

  • 如’10’ 和 ‘11’ 同样都是以 ‘1’ 开头的字符串,首先判定为比 ‘2’ 小。

  • 1-1 节包含在第 1 章当中,所以肯定比第 2 章更靠前。

​​​​​​​​​​​​​​​​​​​​​不能对 NULL 使用比较运算符

SQL提供了专门用来判断是否为 NULL 的 IS NULL 运算符,如果想查询出为NULL的空值,使用IS NULL为其添加条件,希望选取 NULL 记录时,需要在条件表达式中使用 IS NULL 运算符。希望选取不是 NULL 的记录时,需要在条件表达式中使用 IS NOT NULL 运算符。

逻辑运算符

=========

NOT 运算符

  • NOT 不能单独使用,必须和其他查询条件组合起来使用,NOT 运算符用来否定某一条件,但是不能滥用。

​​​​​​​AND 运算符和 OR 运算符

  • 在 WHERE 子句中使用 AND 运算符或者 OR 运算符,可以对多个查询条件进行组合。AND 运算符在其两侧的查询条件都成立时整个查询条件才成立,其意思相当于“并且”。OR 运算符在其两侧的查询条件有一个成立时整个查询条件都成立,其意思相当于“或者”(AND 运算符的优先级高于 OR 运算符。想要优先执行 OR 运算符时可以使用括号。)

知识检验:

=========

1、编写一条 SQL 语句,从 Product (商品)表中选取出“登记日期( regist_date )在 2009 年 4 月 28 日之后”的商品。查询结果要包含 product_name 和 regist_date 两列。

SELECT

product_name,

regist_date

FROM

product

WHERE

regist_date > “2009-04-28”

2、代码清单中的 SELECT 语句能够从 Product 表中取出“销售单价( sale_price )比进货单价( purchase_price )高出 500日元以上”的商品。请写出两条可以得到相同结果的 SELECT 语句。执行结果如下所示。

SELECT product_name, sale_price, purchase_price

FROM Product

WHERE sale_price - purchase_price >= 500;

– SELECT语句①

SELECT product_name, sale_price, purchase_price

FROM Product

WHERE sale_price >= purchase_price + 500;

– SELECT语句②

SELECT product_name, sale_price, purchase_price

FROM Product

WHERE sale_price - 500 >= purchase_price;

文末有福利领取哦~

👉一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。img

👉二、Python必备开发工具

img
👉三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
img

👉 四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(文末领读者福利)
img

👉五、Python练习题

检查学习结果。
img

👉六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
img

img

👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

如果你需要这些资料,可以添加V无偿获取:hxbc188 (备注666)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

如果你需要这些资料,可以添加V无偿获取:hxbc188 (备注666)
[外链图片转存中…(img-pRNApGSo-1713812393260)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

<think>好的,用户现在想了解YOLO的工作原理,特别是算法原理及实现机制。首先,我需要回顾之前的对话历史。用户之前询问了ONNX和TensorRT模型,现在转向YOLO,可能是在研究如何将YOLO模型部署到生产环境,或者优化其性能。结合用户提供的引用内容,他们可能已经对YOLO的基本概念有所了解,但需要更深入的技术细节。 用户提到的引用[1]、[2]、[3]、[4]主要涵盖了YOLO的发展、核心思想、以及YOLOv1的具体实现。因此,在回答时需要整合这些信息,确保准确引用。用户特别提到“工作原理”和“实现机制”,所以需要详细解释YOLO的单阶段检测方法、网格划分、边界框预测、损失函数等关键点。 需要检查之前的回答结构,确保符合用户要求的格式,如使用中文、正确应用LaTeX公式、分点回答等。同时,要生成相关问题,这些问题应围绕YOLO的优化、变体、对比等,帮助用户进一步探索。 用户可能对YOLO的实时性、准确率权衡、不同版本的改进感兴趣,因此在回答中可以适当提及后续版本的优化,但主要聚焦在YOLOv1的原理上,避免信息过载。另外,注意引用标注,确保每个引用的内容正确对应来源,比如引用[3]和[4]详细描述了YOLOv1的核心思想,需要正确标注。 最后,确保回答结构清晰,分步骤解析原理,可能包括输入处理、网格划分、预测输出、损失函数等部分,并辅以公式和代码示例,增强可理解性。同时,验证LaTeX语法是否正确,避免格式错误。</think>### YOLO算法原理及实现机制详解 #### 一、核心设计思想 YOLO(You Only Look Once)采用**单阶段目标检测范式**,将检测任务转化为**端到端的回归问题**,与传统的两阶段检测器(如R-CNN系列)相比,其核心优势在于: - **单次推理**:仅需一次前向传播即可完成所有预测 - **实时性**:处理速度可达45 FPS(YOLOv1)[^3] - **全局感知**:通过整图上下文信息预测边界框 数学本质可表述为: $$ \text{预测结果} = f_{\theta}(I) $$ 其中$I$为输入图像,$f_{\theta}$为卷积神经网络,直接输出边界框坐标与类别概率[^3] #### 二、YOLOv1实现架构(以v1为例) 1. **输入处理** - 图像尺寸标准化为$448 \times 448$(引用[4]) - RGB三通道归一化 2. **网格划分** - 将图像划分为$S \times S$网格(YOLOv1采用$7 \times 7$) - 目标中心点所在网格负责预测该物体[^4] 3. **预测输出结构** 每个网格预测: - **B个边界框**:每个框包含$(x,y,w,h,\text{confidence})$ $$ \text{置信度} = P(\text{obj}) \times \text{IOU}_{\text{pred}}^{\text{truth}} $$ - **C个类别概率**:$P(\text{class}_i|\text{obj})$ *输出维度计算*: $$ S \times S \times (B \times 5 + C) \quad (\text{YOLOv1中为}7 \times 7 \times 30) $$ 4. **网络结构** 典型24层卷积+2层全连接: ```python # 简化版结构示例 def YOLOv1(): model = Sequential() model.add(Conv2D(64, (7,7), strides=2, padding='same')) # 特征提取 model.add(MaxPooling2D()) ... model.add(Flatten()) model.add(Dense(4096)) # 全连接层生成预测张量 model.add(Dense(7*7*30, activation='sigmoid')) return model ``` #### 三、损失函数设计 YOLO采用多任务加权损失: $$ \mathcal{L} = \lambda_{\text{coord}} \sum_{i=0}^{S^2} \sum_{j=0}^{B} \mathbb{1}_{ij}^{\text{obj}} \left[ (x_i - \hat{x}_i)^2 + (y_i - \hat{y}_i)^2 \right] \\ + \lambda_{\text{coord}} \sum_{i=0}^{S^2} \sum_{j=0}^{B} \mathbb{1}_{ij}^{\text{obj}} \left[ (\sqrt{w_i} - \sqrt{\hat{w}_i})^2 + (\sqrt{h_i} - \sqrt{\hat{h}_i})^2 \right] \\ + \sum_{i=0}^{S^2} \sum_{j=0}^{B} \mathbb{1}_{ij}^{\text{obj}} (C_i - \hat{C}_i)^2 \\ + \lambda_{\text{noobj}} \sum_{i=0}^{S^2} \sum_{j=0}^{B} \mathbb{1}_{ij}^{\text{noobj}} (C_i - \hat{C}_i)^2 \\ + \sum_{i=0}^{S^2} \mathbb{1}_{i}^{\text{obj}} \sum_{c \in \text{classes}} (p_i(c) - \hat{p}_i(c))^2 $$ 其中: - $\lambda_{\text{coord}}=5$ 增强坐标损失权重 - $\lambda_{\text{noobj}}=0.5$ 降低负样本影响 - $\mathbb{1}_{ij}^{\text{obj}}$ 为示性函数(负责预测物体的边界框时为1)[^4] #### 四、创新机制解析 1. **多尺度预测融合** - 早期版本仅使用单一尺度特征图 - 后续改进(如YOLOv3)引入特征金字塔: $$ \text{预测层} = \text{Conv}(C_{n}, 3\times3) \rightarrow \text{上采样} \oplus \text{浅层特征} $$ 2. **Anchor Box机制** - 从v2开始引入预定义锚框: $$ \text{锚框尺寸} = \{(w_1,h_1),...,(w_k,h_k)\} $$ - 通过k-means聚类训练集标注框确定最佳锚框 3. **非极大值抑制(NMS)** 后处理关键步骤: ```python def nms(boxes, scores, threshold): keep = [] order = np.argsort(scores)[::-1] while order.size > 0: i = order[0] keep.append(i) iou = bbox_iou(boxes[i], boxes[order[1:]]) inds = np.where(iou <= threshold)[0] order = order[inds + 1] return keep ``` #### 五、性能优化方向 1. **精度-速度权衡** - 输入分辨率与mAP关系: $$ \begin{array}{c|c} \text{分辨率} & \text{mAP} \\ \hline 224\times224 & 63.4\% \\ 448\times448 & 69.5\% \\ \end{array} $$ *数据来源:YOLOv1论文[^3]* 2. **现代改进方案** - 注意力机制(引用[1]):在骨干网络加入SE/CBAM模块 - 分布式预测:YOLOv5的Focus结构提升小目标检测 - 量化部署:结合ONNX/TensorRT实现加速(引用用户前序问题) --- ### 相关问题 1. YOLO的损失函数为什么对宽高取平方根? 2. 如何验证网格划分策略对检测精度的影响? 3. YOLO与其他单阶段检测器(如SSD)的核心区别是什么? 4. 在移动端部署YOLO需要哪些优化技术?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值