Android第四次面试总结之Java基础篇(补充)
一、设计原则高频面试题(附大厂真题解析)
1. 单一职责原则(SRP)在 Android 开发中的应用(字节跳动真题)
- 真题:“你在项目中如何体现单一职责原则?举例说明。”
- 考点:结合实际场景说明职责拆分,避免贫血模型。
- 满分答案:
在开发网络模块时,原代码将 “网络请求逻辑”“数据解析”“错误处理” 耦合在一个NetworkManager
类中,违反 SRP。
重构方案:- 拆分为
OkHttpHelper
(负责底层网络请求)、DataParser
(解析 JSON/Proto 数据)、ErrorHandler
(统一处理网络异常); - 高层模块(如
UserRepository
)依赖这三个抽象组件,通过构造器注入协作。
优势:每个类仅一个修改原因(如网络库升级只需改OkHttpHelper
),降低维护成本。
- 拆分为
2. 里氏替换原则(LSP)的经典反例及修正(腾讯真题)
- 真题:“为什么 Square 不能直接继承 Rectangle?如何正确设计?”
- 考点:理解继承的约束条件,区分 “Is-a” 与 “Can-do”。
- 满分答案:
反例分析:Rectangle
定义setWidth(int w)
和setHeight(int h)
,允许宽高独立变化;Square
重写这两个方法时,强制宽高相等,破坏父类 “宽高可独立设置” 的契约,违反 LSP(子类不能替换父类)。
修正方案:
- 放弃继承,让
Square
和Rectangle
实现共同接口Quadrilateral
,提供getWidth()
和getHeight()
,但不强制宽高可独立设置; - 或引入
MutableRectangle
接口,明确 “可修改宽高” 的能力,Square
不实现该接口。
3. 依赖倒置原则(DIP)在 MVP 中的应用(阿里真题)
- 真题:“MVP 架构如何体现依赖倒置原则?”
- 考点:区分高层模块与低层模块,抽象接口解耦。
- 满分答案:
MVP 分层:- 高层模块(Presenter):依赖抽象接口
View
(如UserView
)和Repository
(如UserRepository
),而非具体实现(Activity
或RetrofitImpl
); - 低层模块(Model/View 实现):实现这些抽象接口,如
UserActivity implements UserView
,UserRetrofit implements UserRepository
。
依赖关系:
Presenter 与具体 Activity / 网络库解耦,可通过依赖注入(如 Dagger)切换实现(如单元测试时用 MockView),符合 “高层模块依赖抽象” 的 DIP 原则。
- 高层模块(Presenter):依赖抽象接口
二、DCL 单例模式大厂真题解析
1. 为什么 DCL 单例需要 volatile?(美团真题)
- 考点:理解指令重排对单例的影响,volatile 的内存语义。
- 满分答案:
指令重排风险:
instance = new DCLSingleton()
可分解为:- 分配内存空间(
memory = allocate()
); - 初始化对象(
ctorInstance(memory)
); - 将内存地址赋给
instance
(instance = memory
)。
JVM 可能重排为 1→3→2,若线程 A 执行到 3 时(instance
非空但未初始化),线程 B 调用getInstance()
返回未初始化的对象,导致 NPE。
volatile 作用:
- 禁止指令重排,确保 1→2→3 的顺序;
- 保证可见性,线程 A 修改
instance
后,线程 B 立即看到最新值。
JDK 版本关键:JDK 1.5 + 修复了 volatile 的语义,此前版本 DCL 可能失效,因此现代 Java 必须使用 volatile。
- 分配内存空间(
2. 单例模式的线程安全实现有哪些?对比优缺点(百度真题)
- 考点:掌握不同单例实现的适用场景,反序列化安全。
- 满分答案:
实现方式 | 线程安全 | 优点 | 缺点 | 大厂应用场景 |
---|---|---|---|---|
DCL | 是 | 延迟初始化,性能高 | 需 volatile,实现较复杂 | 高并发且内存敏感场景 |
静态内部类 | 是 | 简洁,利用类加载机制安全 | 类加载后立即初始化 | 通用场景(推荐) |
枚举单例 | 是 | 反序列化安全,防止反射攻击 | 不支持延迟初始化 | 需严格防止实例化场景 |
- 反序列化安全:
枚举单例天然支持(Java 规范保证反序列化返回枚举常量),其他方式需重写readResolve()
返回单例实例:protected Object readResolve() { return instance; }
三、HashMap 高频面试题(附大厂真题解析)
1. JDK8 HashMap 为什么引入红黑树?链表转红黑树的条件?(字节跳动真题)
-
考点:理解哈希冲突优化,阈值设计原理。
-
满分答案:
引入红黑树原因:
JDK7 及以前用链表处理哈希冲突,当链表长度为 n 时,查找时间复杂度 O (n)。数据倾斜时(如大量键哈希值相同),链表可能很长,性能下降。
红黑树将查找、插入、删除的时间复杂度降至 O (logn),提升极端场景下的性能。转换条件(两个同时满足):
- 链表长度≥8(
TREEIFY_THRESHOLD=8
); - 数组容量≥64(
MIN_TREEIFY_CAPACITY=64
)。
原因:
- 链表长度 8 的概率极低(泊松分布计算,概率仅 0.0000006),若出现则认为是哈希冲突严重;
- 若数组容量小(如 16),直接扩容比转红黑树更高效(减少树节点维护开销)。
- 链表长度≥8(
2. 自定义类作为 HashMap 的 Key 需要注意什么?(阿里真题)
- 考点:正确重写 hashCode 和 equals,不可变性。
- 满分答案:
- 必须重写
hashCode()
和equals()
:- 若只重写
equals
,不同对象可能哈希值相同,导致存入 HashMap 后无法正确查找; - 示例:
class Person { String id; @Override public boolean equals(Object o) { ... } // 必须同时重写hashCode,保证相等对象哈希值相同 @Override public int hashCode() { return Objects.hash(id); } }
- 若只重写
- Key 建议为不可变类:
- 若 Key 可变,修改后哈希值变化,导致存入的键值对无法通过新值查找(如
String
是不可变类,推荐作为 Key); - 若必须用可变类,修改前先从 HashMap 中删除旧 Key。
- 若 Key 可变,修改后哈希值变化,导致存入的键值对无法通过新值查找(如
- 必须重写
四、ConcurrentHashMap 大厂真题解析
1. JDK7 与 JDK8 的 ConcurrentHashMap 实现有何区别?(腾讯真题)
- 考点:分段锁 vs 细粒度锁,数据结构演进。
- 满分答案:
特性 | JDK7(分段锁) | JDK8(CAS + 细粒度锁) |
---|---|---|
数据结构 | Segment 数组(每个 Segment 是小 HashMap) | 数组 + 链表 + 红黑树(同 HashMap 结构) |
锁机制 | 对 Segment 加 ReentrantLock(锁粒度大) | 对链表头节点或红黑树根节点加 synchronized(锁粒度小) |
插入逻辑 | 锁 Segment 后遍历链表 | 先 CAS 无锁插入,失败后加锁 |
并发度 | 受限于 Segment 数量(默认 16) | 理论并发度更高(锁竞争更小) |
内存效率 | 每个 Segment 有独立数组,内存占用略高 | 共享数组,内存更紧凑 |
- 典型场景:
JDK8 在高并发写入场景(如秒杀系统的计数器)性能提升显著,因锁粒度从 “段” 细化到 “节点”,减少线程竞争。
2. ConcurrentHashMap 为什么不允许 Key 和 Value 为 null?(美团真题)
- 考点:线程安全与 null 值的歧义性。
- 满分答案:
历史原因:- HashMap 允许 null Key(唯一)和 null Value,ConcurrentHashMap 为避免与 Hashtable(不允许 null)行为不一致,选择不允许 null;
- 更重要的是,null 值在多线程场景下存在歧义:
- 当
get(key)
返回 null 时,无法区分 “Key 不存在” 和 “Value 为 null”; - 若允许 null Value,多线程插入时可能出现 “Key 存在但 Value 为 null” 的中间状态,导致后续读取误判。
对比 HashMap:
HashMap 单线程下可明确处理 null(Key 只能有一个 null,Value 可为多个 null),但 ConcurrentHashMap 作为线程安全类,需避免这种歧义性,保证语义清晰。
- 当
五、面试真题陷阱与避坑指南
1. 设计原则陷阱题:“所有类都应该遵守单一职责原则吗?”(字节跳动)
- 陷阱:考察对原则的灵活应用,而非教条主义。
- 正确回答:
不是。单一职责原则的 “职责” 是 “变化的原因”,若多个职责不会同时变化(如 “用户校验” 和 “日志记录” 在项目中始终一起修改),可暂时合并以减少类数量。原则需结合项目规模和变化频率权衡,避免过度设计。
2. HashMap 扩容陷阱:“初始容量设为 10,实际数组长度是多少?”(阿里)
- 陷阱:HashMap 会将容量自动调整为≥给定值的最小 2 的幂(10→16)。
- 正确回答:
实际长度为 16。HashMap 的构造函数会调用tableSizeFor(int cap)
方法,将容量向上取整为 2 的幂,确保(n-1)&hash
的计算正确性。
面试扩展:
1. 设计原则综合题:“MVC 架构是否符合开闭原则?为什么?”
- 考点:架构与设计原则的结合,扩展性分析。
- 预测答案:
部分符合:- View 层(如 Activity)常因 UI 变化直接修改,违反 “对修改关闭”;
- Model 层(数据模型)和 Controller 层(逻辑处理)可通过抽象接口扩展(如新增数据源时实现新 Model 接口),符合 “对扩展开放”。
改进建议:
引入接口隔离,让 View 依赖抽象(如 MVP 中的 View 接口),减少对具体实现的修改,更贴近开闭原则。
2. HashMap 深度陷阱题:“键的 hashCode () 返回 0,会发生什么?如何优化?”
- 考点:极端哈希冲突处理,红黑树阈值。
- 预测答案:
- 所有键存入数组的 0 号位置,形成长链表(或红黑树);
- 若数组容量≥64 且链表长度≥8,转为红黑树,查询时间复杂度 O (logn);
- 优化:重写 hashCode (),让键的哈希值更分散(如结合多个字段计算哈希)。
六、总结
知识点 | 高频问题示例 | 核心考点 | 满分答案关键要素 |
---|---|---|---|
单一职责原则 | 如何拆分 Android 中的网络模块? | 职责定义(变化原因)、实际案例 | 拆分前后对比,说明每个类的独立变化原因 |
DCL 单例 | 为什么需要两次检查和 volatile? | 线程安全、指令重排、可见性 | 结合源码解释两次检查的作用,volatile 的必要性 |
HashMap 红黑树 | 链表转红黑树的条件是什么? | 阈值设计、概率分析、性能权衡 | 同时满足长度≥8 和容量≥64,避免小树维护开销 |
ConcurrentHashMap | 与 Hashtable 的区别? | 锁机制、null 支持、并发度 | 细粒度锁 vs 全表锁,弱一致性设计 |
设计原则与集合类核心考点
├─ 设计原则(6大原则)
│ ├─ SRP:职责=变化原因,拆分类/模块
│ ├─ OCP:通过抽象扩展,避免修改原有代码
│ ├─ LSP:子类可替换父类,不破坏契约
│ ├─ ISP:接口细化,客户端不依赖无用方法
│ ├─ DIP:高层模块依赖抽象,而非具体实现
│ └─ LoD:仅与直接朋友交互,减少耦合
├─ DCL单例
│ ├─ 双重检查+volatile:防指令重排,线程安全
│ ├─ 防御反射/反序列化:构造函数检查+readResolve
│ └─ 最佳实践:枚举单例(最简、最安全)
├─ HashMap
│ ├─ 底层:数组+链表(≥8转红黑树,容量≥64)
│ ├─ 哈希计算:高位异或,减少冲突
│ ├─ 扩容:容量翻倍,重新哈希(初始容量设为2的幂)
│ └─ Key要求:重写hashCode/equals,不可变类最佳
└─ ConcurrentHashMap ├─ 线程安全:JDK8细粒度synchronized+CAS ├─ 与HashMap区别:不允许null,弱一致性 └─ 适用场景:高并发读写,替代Hashtable/同步HashMap
相关文章:
Android第四次面试总结之Java基础篇(补充)
一、设计原则高频面试题(附大厂真题解析) 1. 单一职责原则(SRP)在 Android 开发中的应用(字节跳动真题) 真题:“你在项目中如何体现单一职责原则?举例说明。”考点:结合…...
网络开发基础(游戏)之 心跳机制
简介 心跳机制:是指客户端定时(比如每隔着10秒)向服务端发送PING消息,服务端收到后回应PONG消息。服务端会记录客户端最后一次发送PING消息的时间,如果很久没有收到下一次客户端发来的消息,服务端就就判…...
Hive进阶之路
目录 一、Hive 基础回顾 二、数据定义语言(DDL)进阶 2.1 复杂表创建 2.2 分区与分桶优化 三、数据操作语言(DML)深入 3.1 高效的数据加载 3.2 灵活的数据更新与删除 四、Hive 函数高级应用 4.1 内置函数的巧用 4.2 自定义…...
imx6uLL应用-v4l2
Linux V4L2 视频采集 JPEG 解码 LCD 显示实践 本文记录一个完整的嵌入式视频处理项目:使用 V4L2 接口从摄像头采集 MJPEG 图像,使用 libjpeg 解码为 RGB 格式,并通过 framebuffer 显示在 LCD 屏幕上。适用于使用 ARM Cortex-A 系列开发板进…...
以太坊智能合约开发框架:Hardhat v2 核心功能从入门到基础教程
一、设置项目 Hardhat 项目是安装了 hardhat 包并包含 hardhat.config.js 文件的 Node.js 项目。 操作步骤: ①初始化 npm npm init -y②安装 Hardhat npm install --save-dev hardhat③创建 Hardhat 项目 npx hardhat init如果选择 Create an empty hardhat.…...
【现代深度学习技术】现代循环神经网络06:编码器-解码器架构
【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上,结合当代大数据和大算力的发展而发展出来的。深度学习最重…...
Jasper and Stella: distillation of SOTA embedding models
摘要 Dense检索是许多深度学习应用系统中(例如常见问题 (FAQ) 和检索增强生成 (RAG))关键组成部分。在此过程中,Embedding模型将原始文本转换为向量。然而,目前在文本Embedding基准…...
程序的本质—API接口
API 是什么 官方定义:API 英文全称 Application Programming Interface,翻译过来为程序之间的接口。也是程序与外部世界的桥梁,实现了服务拆分与解藕的核心机制 大白话:按照规则提供输入,它帮你得到对应的输出 API可…...
Python函数完全指南:从零基础到灵活运用
Python函数是组织代码、实现代码复用的基本单元,也是Python编程中最重要的概念之一。本文将全面介绍Python函数的知识体系,帮助初学者系统掌握函数的使用方法。 一、函数基础概念 1. 什么是函数? 函数是一段可重复使用的代码块,…...
第十章.XML
文章目录 1.XMl简介2.解析XML技术2.1DOM解析XML 2.2DOM4j3.json 1.XMl简介 EXtensible Markup Language ,可扩充标记语言 特点: XML与操作系统,编程语言的开发平台无关实现不同系统之间的数据交换 作用: 数据交互配置应用程序和网站 XML标签 xml文档由一系列标签元素组成<…...
5个情感丰富GPT-4o图像提示词(不是吉卜力风格)
一场新的创意运动正在迅速兴起——人们不仅使用ChatGPT进行写作,还用它来构思富有想象力、情感丰富的视觉概念。 这一趋势正在改变我们讲故事、建立品牌和探索创意的方式。从异想天开的海报世界到基于物品的故事叙述,各行业的创作者正在将ChatGPT与视觉生成工具结合使用,赋…...
华为OD机试真题——求最多可以派出多少支队伍(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
2025 A卷 100分 题型 本专栏内全部题目均提供Java、python、JavaScript、C、C、GO六种语言的最佳实现方式; 并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析; 本文收录于专栏:《2025华为OD真题目录…...
《七年一剑》速读笔记
文章目录 书籍信息概览知己知彼市场的本质认识自我了解他人人剑合一 技术分析精要K线分型均线节奏形态画线成交量周期级别指标之王——MACD波动理论 管窥基本面A股周期论实战角度看财报 构建交易系统打开交易之门交易基础之买卖依据风险控制与仓位管理系统评估及情绪管理 实战秘…...
VMware-centOS7安装redis分布式集群
1.部署redis包 1.1 在usr/local文件夹里创建文件夹 mkdir software 1.2 进入文件夹 cd /usr/local/software/ 下载redis wget http://download.redis.io/releases/redis-6.2.6.tar.gz解压 tar zxvf redis-6.2.6.tar.gz重命名文件夹 mv redis-6.2.6 redis安装gcc编译器 yum i…...
Kubernetes(k8s)学习笔记(六)--KubeSphere前置环境安装
1、安装 helm(master 节点执行) Helm 是 Kubernetes 的包管理器。包管理器类似于我们在 Ubuntu 中使用的apt、Centos 中使用的 yum 或者 Python 中的 pip 一样,能快速查找、下载和安装软件包。Helm由客户端组件 helm 和服务端组件 Tiller 组…...
黑马点评day01(基于Redis)
1.7 Redis代替session的业务流程 1.7.1、设计key的结构 首先我们要思考一下利用redis来存储数据,那么到底使用哪种结构呢?由于存入的数据比较简单,我们可以考虑使用String,或者是使用哈希,如下图,如果使用…...
14.Excel:排序和筛选
一 位置 两个位置。 二 排序:如何使用 1.常规使用 补充:不弹出排序提醒排序。 选中要排序列中的任意一个单元格,然后排序。 2.根据要求进行排序 1.根据姓名笔画进行降序排序 要勾选上数据包含标题,默认是勾选了。 2.根据运营部、…...
力扣-字符串-468 检查ip
思路 考察字符串的使用,还有对所有边界条件的检查 spilt(“\.”),toCharArray,Integer.parseInt() 代码 class Solution {boolean checkIpv4Segment(String str){if(str.length() 0 || str.length() > 4) retur…...
C++名称空间
名称空间 名称空间可以是全局的,也可以位于另一个名称空间中,但不能位于代码块中。因此,在默认情况下,在名称空间中声明的名称的链接性为外部的(除非它引用了常量) 名称空间是开放的,你可以在…...
Redis 过期与淘汰机制全解析
概述 Redis 作为一种高性能的内存数据库,提供了数据过期和淘汰策略以管理存储的数据。本文将详细探讨 Redis 中数据失效的基本原理、实现方式,并结合源码进行分析,帮助读者更深入地理解和优化 Redis 的使用。 数据过期机制 过期键的存储方…...
PMP-第四章 项目整合管理(一)
项目整合管理 项目整合管理包括对项目管理过程组内的各种过程和项目管理活动而进行识别、定义、组合、统一与协调的各种过程和活动项目整合管理必须由项目经理负责。其他知识领域可以由相关领域专家管理,但整合的责任不能被授权或转移项目与项目管理本质上具有整合…...
VSCode搭建STM32开发调试环境
闲言碎语: 好久没更,在忙着科研→校招→写毕业论文。 临近毕业,总结自己的大学生活:C\C、Java、Python、深度学习,学的乱七八糟。 秋招找了个嵌入式工作(涉及AI应用),大致确定了以后…...
【数据结构】稀疏矩阵的快速转置
稀疏矩阵的快速转置 如图给出一个稀疏矩阵,要求表示出它的转置矩阵 由这个矩阵我们能轻松得到它的三元组顺序表 6行(x坐标)7列(y坐标)8个元素121213931-3361443245218611564-7 接下来我们同样把转置后的矩阵的三元组…...
【Godot】使用 Shader 实现可调节的精确切角效果
今天我们要实现的是一个四角精确切割Shader,可以在UI元素或Sprite的四个角分别切割出不同大小的三角形区域。 文章目录 什么是Godot Shader?数学原理详解左上角切割右上角切割右下角切割左下角切割四角切割Shader完整代码使用方法在Godot编辑器中设置通过代码控制进阶技巧1. …...
在CentOS环境中安装MySQL数据库保姆级教程
一.确认当前系统版本 1.1登录系统,切换至root账户 如图所示: 1.2:在终端中执行如下命令查看系统版本 cat /etc/redhat-release 二.添加 MySQL Yum 源 2.1访问MySQL开发者专区 https://dev.mysql.com/downloads/repo/yum/ TIPS: 1.发布包命…...
分布式系统中的 ActiveMQ:异步解耦与流量削峰(二)
四、流量削峰 (一)流量削峰原理深入解析 在当今互联网应用中,高并发场景屡见不鲜 。例如,电商平台的促销活动、在线票务系统的抢票时刻以及社交平台的热点事件爆发期等,都会在短时间内迎来大量用户请求。这些瞬间涌入…...
JAVA设计模式——(十)抽象工厂模式(Abstract Factory Pattern)
JAVA设计模式——(十)抽象工厂模式(Abstract Factory Pattern) 介绍理解实现工厂接口工厂实现类应用类应用类实现测试改造工厂类 应用 介绍 抽象工厂模式在工厂模式的基础上,适配的对象变为一组相关的对象,…...
STM32的定时器
定时器的介绍 介绍:STM32F103C8T6微控制器内部集成了多种类型的定时器,这些定时器在嵌入式系统中扮演着重要角色,用于计时、延时、事件触发以及PWM波形生成、脉冲捕获等应用。 *几种定时器(STM32F103系列)࿱…...
ubuntu-PyQt5安装+PyCharm配置QtDesigner + QtUIC
个人环境 ubuntu22.04 pycharm 2024.3 python 3.10 1)先使用apt命令在线安装 1)sudo apt install pyqt5* 2)sudo apt install qttools5-dev-tools2)Pycharm配置Pycharm External Tool 在设置—工具——外部工具中 配置QtDesigner Name :QtDesigne…...
测试基础笔记第十九天
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、接口的概念二、接口的类型三、接口测试1.概念2.原理:3.特点:4.实现方式:5.什么是自动化接口测试? 二、HTTP协议1.HTTP协议简介2.URL格式…...
Ubuntu 系统上广受好评的浏览器推荐
日常使用与开发者首选 Firefox 特点:开源、隐私保护强大,支持丰富扩展(如开发者工具、广告拦截),默认预装且跨平台兼容368。 适用场景:日常浏览、开发者调试(支持实时 CSS/JS 编辑)、…...
第 13 届蓝桥杯 C++ 青少组省赛中 / 高级组真题解析
一、选择题 第 1 题 题目:下列关于类中声明的变量描述正确的是 ( )。 选项: A. 只属于该类 B. 属于全局变量 C. 任何情况下都可被该类所有实例共享 D. 属于该类,某些情况下也可被该类不同实例所共享 答案:D 解析&…...
Win10下安装Linux-Ubuntu24.04双系统
0 引言 Ubuntu 24.04 LTS(代号“Noble Numbat”)是 Canonical 于 2024 年 4 月 25 日发布的第 10 个长期支持版本,专注于性能优化、企业安全和开发者体验提升 Windows 10 是微软于 2015 年 7 月发布的跨平台操作系统,融合了传统桌…...
express 怎么搭建 WebSocket 服务器
一:使用 express-ws var express require(express); var app express(); var expressWs require(express-ws)(app);app.use(function (req, res, next) {console.log(middleware);req.testing testing;return next(); });app.get(/, function(req, res, next){…...
模型部署——cuda编程入门
CUDA中的线程与线程束 kernel是在device上线程中并行执行的函数,核函数用__global__符号声明,在调用时需要用<<<grid_size, block_size>>>来指定kernel要执行的线程数量。在CUDA中,每一个线程都要执行核函数,并…...
llfc项目TCP服务器笔记
ChatServer 一个TCP服务器必然会有连接的接收,维持,收发数据等逻辑。那我们就要基于asio完成这个服务的搭建。主服务是这个样子的 #include "LogicSystem.h"#include <csignal>#include <thread>#include <mutex>#include "AsioIOServiceP…...
NPP库中libnppi模块介绍
1. libnppi 模块简介 libnppi 是 NPP 库中专门用于 图像处理 的模块,提供高度优化的 GPU 加速函数,支持: 图像滤波(卷积、形态学操作) 几何变换(旋转、缩放、透视变换) 颜色空间转换…...
从头训练小模型: 3 传统RLHF与DPO的区别
这个步骤我其实是忽略了。如果我的目标是建立一个安全领域的模型,我个人理解这步骤并不太必要。关于人类偏好对齐:在前面的训练步骤中,模型已经具备了基本的对话能力。 此时模型还不知道什么是好的回答,什么是不好的回答。我们希…...
Python-Django系列—视图
一、通用显示视图 以下两个基于类的通用视图旨在显示数据。在许多项目中,它们通常是最常用的视图。 1、DetailView class django.views.generic.detail.DetailView 当该视图执行时,self.object 将包含该视图正在操作的对象。 祖先(MRO&a…...
el-input Vue 3 focus聚焦
https://andi.cn/page/622173.html...
动态规划(5)路径问题--剑指offer -珠宝的最大值
题目: 现有一个记作二维矩阵 frame 的珠宝架,其中 frame[i][j] 为该位置珠宝的价值。拿取珠宝的规则为: 只能从架子的左上角开始拿珠宝每次可以移动到右侧或下侧的相邻位置到达珠宝架子的右下角时,停止拿取 注意࿱…...
ZArchiver正版:高效文件管理,完美解压体验
在使用安卓设备的过程中,文件管理和压缩文件的处理是许多用户常见的需求。无论是解压下载的文件、管理手机存储中的文件,还是进行日常的文件操作,一款功能强大且操作简便的文件管理工具都能极大地提升用户体验。今天,我们要介绍的…...
Netlink在SONiC中的应用
Netlink在SONiC中的应用 Netlink介绍 Netlink 是 Linux 内核态程序与用户空间程序之间进行通信的机制之一,原本是用于传递网络协议栈中的各种控制消息。它采用和套接字(socket)编程接口相同的形式,常用于配置内核网络子系统&…...
ReentrantLock实现公平锁和非公平锁
在 Java 里,公平锁和非公平锁是多线程编程中用于同步的两种锁机制,它们的主要差异在于获取锁的顺序规则。下面是对二者的详细介绍: 公平锁 公平锁遵循 “先来先服务” 原则,也就是线程获取锁的顺序和请求锁的顺序一致。先请求锁…...
【C++】 —— 笔试刷题day_25
一、笨小猴 题目解析 这道题,给定一个字符str,让我们找到这个字符串中出现次数最多字母的出现次数maxn和出现次数最少字母的出现次数minn; 然后判断maxn - minn是否是一个质数,如果是就输出Lucky Word和maxn - minn;如…...
terraform resource创建了5台阿里云ecs,如要使用terraform删除其中一台主机,如何删除?
在 Terraform 中删除阿里云 5 台 ECS 实例中的某一台,具体操作取决于你创建资源时使用的 多实例管理方式(count 或 for_each)。以下是详细解决方案: 方法一:使用 for_each(推荐) 如果创建时使…...
Office 三大组件Excel、Word、Access 里 VBA 区别对比
以下是Excel、Word和Access在VBA中的主要区别对比及详细说明: 核心对象模型 Excel Workbook(工作簿)→ Worksheet(工作表)→ Range(单元格区域) 核心围绕单元格数据处理,如 Cells(1,1).Value = "数据" Word Document(文档)→ Range(文本范围)→ Paragrap…...
Linux 进程基础(二):操作系统
目录 一、什么是操作系统:用户和电脑之间的「翻译官」🌐 OS 的层状结构🧩 案例解析:双击鼠标的「跨层之旅」 二、操作系统的必要性探究:缺乏操作系统的环境面临的挑战剖析🔑 OS 的「管理者」属性࿱…...
Java高并发处理核心技术详解:从理论到实战
高并发处理能力是衡量系统性能的重要指标。Java作为企业级开发的主力语言,提供了丰富的并发编程工具和框架。 一、Java并发基础 1.1 Java内存模型(JMM) 主内存与工作内存:每个线程拥有独立的工作内存,通过JMM协议与主…...
单细胞测序数据分析试验设计赏析(二)
单细胞测序数据分析试验设计赏析(二) 这次的单细胞测序数据分析的试验设计是单细胞测序分析机器学习(with SHAP分析),也是常见的试验设计之一,重点是可以用于筛选鉴定基因调控网络,也可以是构建…...