Android 面试问题 2024 版(其一)

Android 面试问题 2024 版(其一)

  • 一、Java 和 Kotlin
  • 二、安卓组件
  • 三、用户界面 (UI) 开发
  • 四、安卓应用架构
  • 五、网络和数据持久性

在这里插入图片描述

一、Java 和 Kotlin

  1. Java 中的抽象类和接口有什么区别?

答:抽象类是不能实例化的类,它可以有抽象方法和非抽象方法。另一方面,接口是可以由任何类实现的抽象方法和常量的集合。两者之间的一个关键区别是,一个类可以实现多个接口,但只能扩展一个抽象类。

  1. Java 中的 “==” 运算符和 “.equals()” 方法有什么区别?

答案: “==” 运算符检查对象引用是否相等,而“.equals()”方法检查对象值是否相等。例如,两个具有相同值的不同 String 对象使用“.equals()”比较时将返回 true,但使用“==”比较时将返回false。

  1. Kotlin 中的 lambda 表达式是什么?

答案: lambda 表达式是一种在 Kotlin 中定义函数而无需创建单独的命名函数的方法。它允许您使用更简洁的语法定义内联函数。例如,以下代码定义了一个 lambda 表达式,它接受两个整数并返回它们的和:“(x: Int, y: Int) -> x + y”。

  1. Kotlin 中的 Lateinit 属性和初始化属性有什么区别?

答案: lateinit 属性是在声明时没有初始值的属性,但保证在使用之前进行初始化。这对于无法在构造函数中初始化但需要在使用前初始化的属性非常有用。另一方面,初始化属性是使用初始值声明并且可以立即使用的属性。

  1. Java 中的 HashSetTreeSet 有什么区别?

答案: HashSet 是一组无序的唯一元素,使用哈希表实现。另一方面,TreeSet 是唯一元素的有序集合,使用红黑树实现。TreeSet 中的元素按排序顺序存储。

  1. Kotlin 中的伴生对象是什么?

答案:伴生对象是与类关联的对象,而不是类的实例。它可用于定义类的静态方法和属性。例如,以下代码为 MyClass 类定义了一个伴生对象,具有静态方法“myStaticMethod”:

class MyClass {
companion object {
fun myStaticMethod() {
/* code */ }
}
}
  1. Kotlin 中的类和对象有什么区别?

答:类是创建对象的蓝图,而对象是类的单个实例。Kotlin 中经常使用对象来实现单例。

  1. Java 中的多态性是什么?

答:多态性是一个对象呈现多种形式的能力。在Java中,这可以通过继承和方法重写来实现。例如,子类可以重写其超类中的方法以提供不同的实现。

  1. Java 中的函数式接口是什么?

答:函数式接口是一种只有一个抽象方法的接口。它通常与 Java 中的 lambda 表达式和方法引用一起使用。Java 提供了 @FunctionalInterface 注解来表明接口是函数式接口。

  1. Java 中私有方法和受保护方法有什么区别?

答:私有方法是只能在同一个类中访问的方法。另一方面,可以在同一类和任何子类中访问受保护的方法。

二、安卓组件

  1. Android 应用程序的关键组件是什么?

答:关键的 Android 应用程序组件是“活动”、“片段”、“服务”、“广播接收器”和“内容提供器”。

  1. Android 中的 Activity 是什么?

答:活动代表一个带有用户界面的屏幕,用于与应用程序交互。它管理 UI 组件并接收和处理用户输入。

  1. Android 中的 Fragment 是什么?

答: Fragment 是一个可重用的 UI 组件,代表 Activity 的一部分。它可用于构建多窗格 UI,并可在运行时动态添加或删除。

  1. Android 中的服务是什么?

答:服务是一个后台进程,它在没有用户界面的情况下执行⻓时间运行的任务。即使应用程序不在前台,它也可以在后台运行。

  1. Android 中的广播接收器是什么?

答:广播接收器是一个监听系统或应用程序事件并根据这些事件执行任务的组件。它用于接收和响应来自其他组件的广播消息或系统事件。

  1. Android 中的内容提供者是什么?

答:内容提供程序是一个管理一组共享应用程序数据的组件,这些数据可以由其他应用程序或组件访问。它提供了访问和操作数据的标准化接口。

  1. AndroidActivity 的生命周期是怎样的?

答: Android中Activity的生命周期包括几种状态,例如Created、Started、Resumed、Paused、Stopped和Destroyed。每个状态都有特定的方法,可以覆盖这些方法以在该状态期间执行操作。

  1. Android 中的 Activity 之间如何传递数据?

答:可以通过使用 Intent extras 或使用 startActivityForResult 方法在 Android 中的 Activity 之间传递数据。

  1. AndroidBundle 的用途是什么?

答: Bundle 是一个数据容器,可以在 Android 中的组件(例如 Activity、Fragments 或Services)之间传递数据。它通常用于保存和恢复实例状态数据。

  1. Android 中的 ServiceIntentService 有什么区别?

答: Service 是一个后台进程,它会持续运行直到停止,而 IntentService 是 Service 的子类,它运行一小段时间以执行单个任务,然后自动停止。IntentService 可用于需要在单独线程中执行的后台任务。

三、用户界面 (UI) 开发

  1. Android UI 开发中 ViewViewGroup 有什么区别?

答:在Android UI开发中,View代表一个UI元素,例如按钮或文本字段,而 ViewGroup 是保存 View 和其他 ViewGroup的容器。ViewGroup可以容纳其他ViewGroup和View,并且可以以不同的方式排列它们。例如,LinearLayout 是一个 ViewGroup,它以水平或垂直的线性布局排列视图。

  1. Android UI 开发中基于 XML 的布局的目的是什么?

答:基于 XML 的布局用于定义 Android 应用程序用户界面的结构和外观。这些布局定义 UI 元素(例如按钮、文本字段和图像)的位置、大小和样式。通过在 XML 中定义布局,开发人员可以将 UI 设计与应用程序逻辑分离,从而使代码更易于维护和修改。

  1. 如何在 Android 中创建自定义视图?

答:在Android中创建自定义View,需要扩展View类并重写其onDraw()方法来定义自定义View的绘制行为。然后,您可以通过将自定义视图类的完全限定名称指定为 XML 标记,在应用程序的XML 布局中使用此自定义视图。

  1. 开发 Android 应用程序时应遵循哪些常⻅的 UI 设计原则?

答:开发 Android 应用程序时应遵循的一些常⻅ UI 设计原则包括简单性、一致性、可⻅性、反馈和可用性。用户界面应该易于使用和理解,具有清晰的标签和直观的导航。执行操作时应向用户提供反馈,并且应在应用程序的 UI 中保持一致性。

  1. 如何在 Android UI 开发中实现响应式设计?

答:要在Android UI开发中实现响应式设计,您可以使用RelativeLayout、ConstraintLayout或新的GridLayout等技术。这些布局管理器允许您定义彼此相关的 UI 元素,确保 UI 在不同的屏幕尺寸和方向上正确缩放。

  1. Android UI 开发中如何处理不同的屏幕密度?

答:在Android UI开发中,您可以使用-hdpi、-xhdpi和-xxhdpi等资源限定符来为不同的屏幕密度指定不同版本的UI元素。系统会根据设备的屏幕密度自动加载合适版本的资源。

  1. Android UI 开发中的 RecyclerView 是什么?

答: RecyclerView 是 Android UI 开发中 ListView 和 GridView 更灵活、更高效的替代品。它允许开发人员在可滚动列表或网格中显示大量数据,并具有可定制的项目视图和更高效的数据加载和回收机制。

  1. Android UI 开发中如何实现动画?

答:在Android UI开发中,可以使用Animation和Animator类来实现淡入、淡出、滑入等动画。您还可以使用新的 Transition 框架来创建涉及多个 UI 元素的更复杂的动画。

  1. Android 中有哪些常⻅的 UI 组件?

答: Android 中一些常⻅的 UI 组件包括 TextView、ImageView、Button、EditText、ProgressBar 和 RecyclerView。这些组件用于显示文本、图像、用户输入字段和进度指示器。

  1. Android UI 开发中的 Material Design 指南是什么?

答: Material Design 是 Google 创建的一套 Android UI 设计指南。它为 Android 应用程序提供一致且直观的设计语言,并提供排版、颜色、布局和动画指南。遵守 Material Design 指南可以帮助开发人员创建更具视觉吸引力和用户友好的应用程序。

  1. Android XML 布局中 “match_parent” 属性的用途是什么?

答: “match_parent”属性用于指示 View 在其父容器内占用尽可能多的空间。它通常用于创建全屏或动态大小的 UI 组件。

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="This text will take up the full width of its parent"/>
  1. 移动应用程序的一些常⻅ UI 设计原则有哪些?

答:移动应用程序的一些常⻅ UI 设计原则包括简单性、一致性、反馈、可供性和可发现性。这些原则有助于确保应用程序易于使用、直观且具有视觉吸引力。

例子:

  • 简单性:应用程序应该具有简单明了的用户界面,易于导航和使用。
  • 一致性:应用程序的各个屏幕和组件应该具有一致的设计语言。
  • 反馈:当用户与 UI 组件(例如按钮或文本输入)交互时,应用程序应向用户提供清晰的反馈。
  • 可供性:UI 组件应该提供视觉提示来指示其预期功能,例如看起来可以按下的按钮。
  • 可发现性:所有 UI 组件都应该易于用户发现和访问。
  1. 如何提高 Android 应用程序 UI 的性能?

答:您可以通过减少布局层次结构的数量、最大 限度地减少昂贵图形的使用、使用 RecyclerView 而不是 ListView 来处理⻓列表以及优化动 画和过渡来提高 Android 应用程序 UI 的性能。

例子:
使用RelativeLayout而不是嵌套的LinearLayout层次结构来减少所需的布局遍数。
使用矢量绘图代替位图图像可以减少图形的内存占用。
对于⻓列表,请使用 RecyclerView 小部件而不是 ListView 小部件来提高滚动性能。
使用 Lint 工具检测并修复 UI 性能问题。

  1. Android“dp” (密度无关像素)单位的用途是什么?

答: “dp”单位用于以独立于设备屏幕密度的方式指定尺寸。这使得 UI 组件在具有不同屏幕密度的设备上看起来相同。

<Button
android:layout_width="100dp"
android:layout_height="50dp"
android:text="Click me!" />
  1. AndroidViewStub 的用途是什么?

答: ViewStub 是一个轻量级 UI 组件,它允许您将 UI 组件的膨胀推迟到需要时为止。这可以缩短应用程序启动时间并减少内存使用量。

<ViewStub
android:id="@+id/stub"
android:inflatedId="@+id/my_view"
android:layout="@layout/my_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content" />

在此示例中,ViewStub 设置为在需要时扩充“my_layout”布局文件。膨胀的布局将具有ID“my_view”。

  1. Android 中如何处理不同的屏幕尺寸?

答:您可以在 Android 中使用“layout- small”、“layout-large”和“layout-xlarge”等布局限定符来处理不同的屏幕尺寸,为不同的屏 幕尺寸提供不同版本的布局文件。您还可以使用“dp”单位以独立于设备屏幕密度的方式指定尺寸。

    res/layout/main.xml 
    res/layout-small/main.xml 
    res/layout-large/main.xml 
    res/layout-xlarge/main.xml

四、安卓应用架构

  1. 什么是模型 - 视图 - 视图模型 (MVVM) 架构以及它与其他架构有何不同?

答: MVVM 是 Android 应用程序的一种流行架构模式,它将应用程序分为三个不同的组件:模型、视图和 ViewModel。Model 组件代表数据和业务逻辑,View 组件代表 UI,ViewModel 充当Model 和 View 组件之间的中介。MVVM 的主要优点是它可以更轻松地单独测试每个组件并启用数据绑定。相比之下,模型-视图-呈现器 (MVP) 将视图和呈现器组件分开,而清洁架构则使用层将业务逻辑与表示层分开。

  1. 如何使用 JetpackAndroid 应用程序中实现 MVVM 架构?

答:要使用Jetpack实现MVVM架构,您可以使用以下组件:

LiveData :生命周期感知的可观察数据持有者,可用于在 ViewModel 和 View 组件之间传
达更改。
ViewModel :存储和管理 UI 相关数据、与模型组件通信并在配置更改后继续存在的类。
DataBinding :一个库,使 UI 组件能够绑定到 ViewModel 中的数据源,并消除对
findViewById() 调用的需要。您还可以使用其他 Jetpack 组件,例如用于数据库操作的
Room、用于在屏幕之间导航的 Navigation 以及用于后台处理的 WorkManager。
  1. 什么是依赖注入以及它如何改进应用程序架构?

答:依赖注入是一种管理应用程序中对象之间依赖关系的技术。您不直接创建对象,而是使用依赖注入框架(例如 Dagger)来提供所需的对象。这使得应用程序更加模块化、可测试和可维护,因为每个组件都可以轻松替换或修改,而不会影响应用程序的其余部分。它还减少了代码重复并提高了代码可读性。

  1. Dagger 在应用程序架构中的作用是什么?它是如何工作的?

答: Dagger 是一种流行的 Android 依赖注入框架,它简化了应用程序中管理依赖项的过程。它使用注释生成为其他类
提供依赖项的代码,从而消除了手动依赖项注入的需要。Dagger 的主要优点是它支持模块化应用程序设计,并且可以更轻松地单独测试组件。它的工作原理是在编译时创建依赖关系图,然后使用该图在运行时向应用程序提供依赖关系。

  1. Jetpack 中的 ViewModel 组件如何改进应用程序架构?

答: Jetpack 中的 ViewModel 组件旨在存储和管理与 UI 相关的数据,例如 UI 的状态和用户输入。通过使用保留其状态的生命周期感知机制,它可以在配置更改(例如屏幕旋转)中幸存下来。这减少了对诸如将状态保存到 Bundle 之类的解决方法的需求,并且使得更容易将表示层与数据层分离。它还支持在多个 UI 组件(例如 Fragments)之间共享数据,并促进更加模块化的应用程序架构。

  1. LiveDataJetpack 中的作用是什么?它如何实现响应式编程?

答: LiveData 是一个生命周期感知的可观察数据持有者,可用于在 Android 应用程序中的ViewModel 和 View 组件之间传达更改。它通过允许 View 观察 ViewModel 数据的变化并相应地更新 UI 来实现响应式编程。这消除了手动 UI 更新的需要,减少了样板代码并提高了性能。LiveData 还尊重应用程序组件(例如片段和活动)的生命周期,并在不再需要时自动删除观察
者,从而防止内存泄漏。

  1. 您能解释一下 Android 应用程序开发中模型 - 视图 - 控制器 (MVC) 和模型 - 视图 - 呈现器 (MVP) 模式之间的区别吗?

答: MVC 模式将应用程序分为三个组件:模型(数据和业务逻辑)、视图(用户界面)和控制器(模型和视图之间的中介)。MVP 模式建立在 MVC 模式的基础上,添加了一个演示器,充当视图和模型之间的中介,处理用户输入并相应地更新视图。在 MVP 中,视图和模型是解耦的,使得测试应用程序变得更容易。

  1. Android 开发中的模型 - 视图 - 视图模型 (MVVM) 模式与模型 - 视图 - 呈现器 (MVP) 模式有何不同?

答:在 MVVM 中,视图绑定到 ViewModel,ViewModel 处理表示逻辑和状态管理。ViewModel负责检索和准备数据以供视图显示。这种模式可以更好地分离关注点,并且更容易测试代码。与MVP 不同,视图和 ViewModel 并不直接耦合。

  1. 您能解释一下在 Android 应用程序开发中使用 Clean Architecture 模式的好处吗?

答:清洁架构模式促进关注点分离以及业务逻辑与框架和基础设施层的隔离。这使得应用程序更易于维护、可测试和可扩展。该模式由多个层组成,包括域、用例和数据层。

  1. Jetpack 中使用 LiveData 如何改进 Android 开发中的应用程序架构?

答: LiveData是一个Jetpack组件,向UI层提供可观察的数据。它可以在数据更改时自动更新视图,从而更高效、更灵敏地更新 UI。LiveData 还有助于将视图与业务逻辑解耦,使应用程序更易于维护。

  1. 您能否解释一下 JetpackViewModel 的用途以及它与 Android 开发中的 UI 层有何关系?

答: ViewModel 是一个 Jetpack 组件,它为 UI 相关数据提供生命周期感知的容器。ViewModel 保存 UI 的数据,并且它可以在配置更改后继续存在。它将数据与 UI 分开,并在 UI 层和数据层之间提供了清晰的关注点分离。

  1. Android 应用程序开发中使用 Dagger 如何改进应用程序架构?

答: Dagger 是一个依赖注入框架,可以简化应用程序中依赖项的管理。它有助于解耦应用程序的组件,并允许更轻松的测试和维护。它还有助于避免样板代码并增加代码重用。

  1. 您能解释一下存储库模式在 Android 应用程序开发中如何工作吗?

答:存储库模式用于在一个位置管理来自不同来源(例如本地数据库或远程 API)的数据。存储库在数据源和应用程序之间进行中介,提供了一个抽象层,使交换数据源变得更加容易,而不会影响应用程序的其余部分。

  1. 您能解释一下依赖倒置原则( DIP )在 Android 应用程序开发中是如何实现的吗?

答:依赖倒置原则规定高层模块不应该依赖于低层模块。相反,两者都应该依赖于抽象。在Android应用程序开发中,这意味着代码的编写方式应使业务逻辑不依赖于框架或基础设施的实现细节。

五、网络和数据持久性

  1. 什么是 Retrofit ?它是如何工作的?

答: Retrofit 是一个适用于 Android 和 Java 的类型安全 HTTP 客户端,用于使网络请求更轻松、更高效。它允许开发人员使用带注释的方法定义接口,指定 HTTP 请求方法、URL、请求参数、标头和响应类型。然后,这些接口用于创建和发送 HTTP 请求,并处理响应。Retrofit还支持多个用于解析响应数据的转换库,包括Gson、Jackson和Moshi。

@GET("posts") Call<List<Post>> getPosts(@Query("userId") int userId);

在上面的示例中,使用查询参数“userId”向 URL“ https://example.com/posts ”发出 GET 请求。响应预计是 Post 对象的列表。

  1. Android 中用于 JSON 解析的 GsonJackson 库有什么区别?

答: Gson 和 Jackson 是两个流行的用于解析 JSON 数据的 Java 库。Gson由Google开发,以简单易用而闻名,而Jackson则更强大、功能更丰富,但使用起来也更复杂。Gson 提供了一组 API将 Java 对象转换为 JSON,反之亦然,而 Jackson 提供了用于 JSON 处理的流式处理和数据绑定API。

Gson gson = new Gson(); String json = "{\"id\": 1, \"title\": \"Post Title\", \"body\": \"Post Body\"}"; Post post = gson.fromJson(json, Post.class);

在上面的示例中,Post 对象是使用 Gson 库从 JSON 字符串创建的。

  1. Room 是什么?它在 Android 中如何用于数据持久化?

答: Room 是 Android Jetpack 库 的一部分,用于 Android 应用程序中的本地数据存储。它为 SQLite 数据库操作提供了一个抽象层,使开发人员可以更轻松地执行常⻅的数据库任务,例如查询、插入、更新和删除 数据。Room 使用注释来定义实体(表示数据库中的表的对象)和 DAO(数据访问对象)提供访问数据库的方法的接口)。

    @Entity(tableName = "posts") 
    public class Post { 
         @PrimaryKey public int id; public String title; public String body; 
    } 
    
    @Dao public interface PostDao { 
    
         @Query("SELECT * FROM posts") 
         List<Post> getAllPosts(); 
        
         @Insert void insertPost(Post post); 
    }

在上面的示例中,Post 实体是使用指定其主键和表名称的注释来定义的。PostDao 接口还定义了用于检索和插入 Post 对象的方法。

  1. Android 中同步和异步网络请求有什么区别?

答: Android中的同步网络请求是在主线程上执行的,这可能会导致应用程序冻结和无响应。另一方面,异步网络请求在后台的单独线程上执行,允许主线程继续处理用户界面事件。异步请求通常使用回调、接口或 Kotlin 协程来实现。

OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://example.com/posts")
.build(); client.newCall(request)
.enqueue(new Callback() {
@Override public void onResponse(Call call, Response response) throw
String responseBody = response.body().string();
Log.d(TAG, responseBody);
}
@Override public void onFailure(Call call, IOException e) {
Log.e(TAG, e.getMessage());
}
});

在上面的示例中,使用 OkHttp 库发出异步网络请求。请求在单独的线程上执行,并使用回调处理响应。

  1. Android 中的 Retrofit 是什么?它是如何工作的?

答: Retrofit 是一种流行的类型安全 HTTP 客户端库,用于在 Android 应用程序中进行 API 调用。它简化了从 Web 服务检索和发送 JSON 或 XML 数据的过程。它的工作原理是定义一个描述API 的 HTTP 端点的接口,Retrofit 负责在运行时创建该接口的实现。例如,以下代码片段显示了如何使用 Retrofit 定义接口:

public interface MyApi {
@GET("users") Call<List<User>> getUsers();
}
  1. Android 中的 Room 是什么?它与 SQLite 有什么不同?

答: Room 是 Android 中的一个数据库库,它提供了 SQLite 之上的抽象层,使得在 Android 应用程序中使用本地数据存储变得更加容易。它简化了定义数据库模式、查询数据和管理数据库事务的过程。Room 提供 SQL 查询的编译时验证,使迁移数据库模式变得更加容易。它与 SQLite 的不同之处在于,它提供了更加面向对象的数据库操作方法,并且与 LiveData 等其他 Android 库集成,可以轻松观察数据库的变化。

  1. RESTSOAP API 有什么区别?

答: REST(表述性状态传输)和 SOAP(简单对象访问协议)是用于 Web 服务的两种不同类型的 API。REST API 是轻量级的,依赖 HTTP 请求来执行创建、读取、更新和删除数据等操作。REST API 使用 GET、POST、PUT 和 DELETE 等 HTTP 方法来操作服务器上的资源。另一方面,SOAP API 更为重量级,并且依赖 XML 消息传递来执行操作。SOAP API 定义客户端和服务器之间的正式契约,包括可以交换的数据类型,并提供更多安全功能。

  1. Android 中如何处理网络请求?

答:在 Android 中,可以使用 Retrofit、OkHttp 或 Volley 等库来处理网络请求。这些库提供HTTP 客户端,可以轻松发出 API 请求并异步处理响应。请求和响应数据可以使用 GSON 或Jackson 等 JSON 或 XML 解析器进行序列化和反序列化。网络请求应在单独的线程上执行,或使用回调或协程等异步机制,以避免阻塞主线程。

  1. Okhttp 是什么?

答: OkHttp 是 Android 应用程序开发中用于发出 HTTP 请求的流行网络库。它构建在 Java HttpURLConnection API 之上,并提供一个简单的 API 用于发送和接收 HTTP 请求和响应。OkHttp 包括对缓存、压缩、超时和身份验证等功能的支持。它还支持同步和异步请求。

示例:以下是使用 OkHttp 发出 GET 请求并从 API 检索数据的示例:

val client = OkHttpClient()
val request = Request.Builder()
.url("https://api.example.com/users")
.build()
val response = client.newCall(request).execute()
val responseBody = response.body?.string() // Process the response body here
  1. HTTP 请求中 Cache-Control 标头的用途是什么?

答: HTTP 请求中的 Cache-Control 标头指定客户端或中间缓存(如代理)应如何缓存响应。标头值可以包含诸如 max-age 之类的指令,它指示可以缓存响应的最⻓时间,no-cache,它指示在没有验证的情况下无法从缓存中提供响应,no-store,它指示响应不能完全被缓存。Cache-Control 标头对于控制响应的缓存行为非常有用,可以帮助减少网络请求数量并提高应用程序性能。

  1. 什么是 JSON ? 它在 Android 应用程序开发中是如何使用的?

答: JSON(JavaScript 对象表示法)是一种轻量级数据交换格式,用于在 Web 服务和客户端之间交换数据。它由一组键值对组成,这些键值对可以嵌套形成复杂的数据结构。在 Android 应用程序开发中,JSON 通常用于解析来自 Web 服务的数据,并使用 GSON 或 Jackson 等库将其转换为 Java 或 Kotlin 对象。JSON 数据还可以作为 HTTP 请求的一部分发送到 Web 服务以创建或更新资源。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

番茄工作法规则

番茄工作法规则: 一个番茄钟共30分钟&#xff0c;包括25分钟的工作时间和5分钟的休息时间。每完成四个番茄钟&#xff0c;就进行一次较长时间的休息&#xff0c;大约15-30分钟。一个番茄钟是不可分割的&#xff0c;一旦开启就必须坚持到底&#xff0c;如果打断&#xff0c;就视…

万界星空科技MES系统,实现数字化智能工厂

万界星空科技帮助制造型企业解决生产过程中遇到的生产过程不透明&#xff0c;防错成本高&#xff0c;追溯困难&#xff0c;品质不可控&#xff0c;人工效率低下&#xff0c;库存积压&#xff0c;交期延误等问题&#xff0c;从而达到“降本增效”的目标。打通各个信息孤岛&#…

英伟达推出ConsiStory免训练文生图模型;Sora物理悖谬的几何解释;Groq推出全球最快大模型

&#x1f989; AI新闻 &#x1f680; 英伟达推出ConsiStory免训练文生图模型 摘要&#xff1a;ConsiStory是一种免训练的一致性连贯文生成图模型&#xff0c;由英伟达和特拉维夫大学的研究人员开发。它解决了文生成图模型在生成内容一致性方面的两个主要问题。首先&#xff0…

顺序表漫谈

目录 ​编辑 1.线性表 2.顺序表 2.1概念及结构 2.2接口实现 1.顺序表的动态存储 2.顺序表初始化 3.顺序表销毁 4.顺序表增容 5.顺序表头插 6.顺序表尾插 7.顺序表头删 8.顺序表尾删 9.顺序表打印 10.顺序表在任意下标位置插入数据 11.顺序表删除任意下标位置的值…

VIO第2讲:IMU标定实验

VIO第2讲&#xff1a;IMU标定实验 文章目录 VIO第2讲&#xff1a;IMU标定实验5 IMU标定实验5.1 仿真数据产生5.1.1 c代码分析5.1.2 生成ros包数据 5.2 Allan方差实验&#xff08;港科大imu_utils&#xff09;5.2.1 安装5.2.2 运行 5.3 Allan方差实验&#xff08;matlab代码kali…

深度学习基础——GAN生成对抗网络

生成对抗网络(GAN)的简介 生成对抗网络GAN(Generative adversarial networks)是Goodfellow等在2014年提出的一种生成式模型。GAN在结构上受博弈论中的二元零和博弈(即二元的利益之和为零&#xff0c;一方的所得正是另一方的所失)的启发&#xff0c;系统由一个生成器和一个判别器…

pc微信逆向最新3.9.8.25版本

朋友让我开发一个关于微信的计数、统计、自动回复功能的机器人&#xff0c;主要是用在win10上面。 先看看结果&#xff01; 之前写过手机端的逆向&#xff0c;PC端逆向很长时间没写了&#xff0c;所以就在网上找了找。基本都是基于3.6&#xff0c;3.7&#xff0c;3.8版本的&a…

python读取txt文档数据并断言value值的大小

本文主要介绍&#xff1a;将接口返回的字典值{"x1":1,"x2":2....}手动存到txt&#xff0c;然后写代码断言每个value值是否都满足某个区间。运用到&#xff1a; 1、读取txt文件中的数据 2、pytest写用例格式 3、pytest.assume断言方式&#xff08;出现报错A…

C++力扣题目139--单词拆分 198--打家劫舍 213--打家劫舍II 337打家劫舍III

139.单词拆分 力扣题目链接(opens new window) 给定一个非空字符串 s 和一个包含非空单词的列表 wordDict&#xff0c;判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 说明&#xff1a; 拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。 …

【IEEE出版会议征稿】第七届计算机信息科学与应用技术国际学术会议(CISAT 2024)

【IEEE出版】第七届计算机信息科学与应用技术国际学术会议&#xff08;CISAT 2024&#xff09; 2024 7th International Conference on Computer Information Science and Application Technology 第七届计算机信息科学与应用技术国际学术会议&#xff08;CISAT 2024&#x…

低代码:更高效、简单的方式开发出专业级的项目

你是否为编程世界的各种挑战感到头痛&#xff1f;想要以更高效、简单的方式开发出专业级的项目&#xff1f; JNPF低代码工具正是你苦心寻找的产品&#xff01;它是一款专为稍微懂一点点编程思想的入门级人员设计的神奇工具&#xff0c;集成了丰富的功能和组件&#xff0c;让你轻…

[NOIP2016 普及组] 魔法阵(枚举的典型例题,值得一看)

在透视这道题之前&#xff0c;先用一道小题来练练手 密码锁&#xff08;这道题是我根据魔法阵改的&#xff09; Description 叮当在探索迷宫时被一扇大门挡住了去路&#xff0c;门上刻画了很多乱七八糟的数字&#xff0c;门被锁上了&#xff0c;无法打开&#xff0c;但是门上…

WebGIS开发常用的JS库:VUE/React/Angular对比

Angular: 作用&#xff1a; Angular是一个完整的基于TypeScript的Web应用开发框架&#xff0c;主要用于构建单页Web应用&#xff08;SPA&#xff09;。它适用于大型和复杂的项目&#xff0c;具有强大的组件集合和丰富的文档。 架构&#xff1a; Angular采用组件化的方式&am…

【DC-DC】世微AP5192 LED恒流IC 摩托电动车货车 12-80V 1.5A 有极输入 电源驱动芯片

产品描述 AP5192是一款PWM工作模式,效率高、简单、内置功率MOS管&#xff0c;适用于4.5-100V输入的高精度降压LED恒流驱动芯片。电流1.5A。AP5192可实现线性调光和PWM调光&#xff0c;线性调光脚有效电压范围0.55-2.6V.AP5192 工作频率可以通过RT 外部电阻编程来设定&#xff0…

[经验] 动车盒饭价格2022 #其他#职场发展

动车盒饭价格2022 1、动车盒饭 近年来&#xff0c;随着中国高速铁路的发展&#xff0c;动车盒饭也成为了不可忽视的一份美食。它不仅解决了旅途中的饮食需求&#xff0c;还体现了中国美食文化的多样性和可口。 动车盒饭是一种便捷且美味的餐食&#xff0c;在火车上也不失为一…

胶原蛋白市场研究:预计2029年将达到27亿美元

胶原蛋白是一种白色、无支链的纤维状蛋白&#xff0c;是细胞外间质蛋白质的主要成分&#xff0c;占人体总蛋白质的25%到30%。 按胶原蛋白来源划分&#xff0c;可分为天然胶原蛋白和人工合成的胶原蛋白&#xff0c;后者以重组类人胶原蛋白为主&#xff0c;而重组类人胶原蛋白又可…

失败了,又继续失败了

这是一个普通的老人在小县城坚持写作的故事。与很多人的老年生活不同&#xff0c;78岁的舒绍平每天过着规律的写作生活&#xff0c;不做家务的时候&#xff0c;他便坐在书房&#xff0c;打开笔记本电脑&#xff0c;时断时续地敲字写作。 年轻时&#xff0c;他当过老师&#xf…

五种多目标优化算法(MOJS、MOGWO、NSWOA、MOPSO、NSGA2)性能对比,包含6种评价指标,9个测试函数(提供MATLAB代码)

一、5种多目标优化算法简介 1.1MOJS 1.2MOGWO 1.3NSWOA 1.4MOPSO 1.5NSGA2 二、5种多目标优化算法性能对比 为了测试5种算法的性能将其求解9个多目标测试函数&#xff08;zdt1、zdt2 、zdt3、 zdt4、 zdt6 、Schaffer、 Kursawe 、Viennet2、 Viennet3&#xff09;&#xff0…

C++学习Day08之函数模板

目录 前言一、程序及输出1.1 不使用函数模板1.2 使用函数模板1.2.1 自动类型推导1.2.2 显示指定类型 二、分析与总结 前言 C 函数模板是一种通用编程技术&#xff0c;允许您编写通用的函数代码&#xff0c;以适用于不同类型的数据。 一、程序及输出 1.1 不使用函数模板 每一…

【riscv】使用qemu运行riscv裸机freestanding程序

文章目录 1. 运行显示2. 工具准备3. 裸机代码和编译3.1 源码3.2 编译 4. 使用qemu仿真运行riscv裸机程序 1. 运行显示 详见左下角&#xff0c; 运行时串口输出的字符 A ; 2. 工具准备 # for riscv64-linux-gnu-gcc sudo apt-get install gcc-riscv64-linux-gnu# for qemu-s…