Xamarin 面试问题

2025 年 4 月 17 日 | 阅读 17 分钟
Xamarin Interview Questions

以下是 Xamarin 常见面试问题和答案列表。

1) 什么是 Xamarin?

Xamarin 是一家构建软件的公司。Xamarin 的主要业务是构建可在跨平台运行的移动应用。它用于为 Android、iOS 和 Windows 操作系统构建用户界面。Xamarin 应用程序共享代码库。Xamarin 的功能类似于原生应用程序。开发人员可以在 Visual Studio 中下载 Xamarin 工具。


2) Xamarin 开发的优势是什么?

Xamarin 开发的优势是

  • 用户界面简单且原生。
  • 开发人员可以使用 Xamarin 制作跨平台应用程序。
  • 出现 bug 的几率较小。
  • 我们可以使用相同的代码库为 iOS、Android 和 Windows 创建应用程序。
  • Xamarin 拥有强大的社区支持。

3) Xamarin 开发的缺点是什么?

Xamarin 应用程序开发的缺点是

  • Xamarin 中的用户界面开发耗时。
  • Xamarin 中创建的应用程序文件大小较大。这些应用程序在商店中的大小通常在 3 MB 到 15 MB 之间。
  • 即使应用程序在平台之间共享代码,但开发人员仍需要创建与操作系统的链接,这对于用户来说很难。

4) Xamarin 有哪些开发方法?

Xamarin 有两种应用程序开发方法。它们是

  1. Xamarin.Forms: Forms 是希望为所有独立的移动平台(即 Windows、iOS 和 Android)创建单个应用程序的开发人员的选择。
  2. Xamarin Native: 当我们想为不同的平台创建相同应用程序的单独版本时,使用此方法。开发人员可以使用 Xamarin.iOS、Xamarin.Android 和 Xamarin.Windows 库为每个特定平台创建应用程序。

5) Xamarin 和 Xamarin.Forms 有什么区别?

Xamarin 和 Xamarin.Forms 之间的区别是

XamarinXamarin.Forms
Xamarin 是一款用于创建跨平台移动应用程序的应用程序开发工具。Xamarin.Forms 是一个用于开发应用程序的 UI 工具包。
开发人员可以使用 Xamarin.iOS、Xamarin.Android 和 Xamarin.Windows 来创建基于应用程序所创建的特定平台的应用程序。开发人员可以使用 Xamarin.Forms 创建可以在整个移动平台运行的应用程序的一个原生版本。

6) 什么是 Xamarin Profiler?

Xamarin Profiler 是开发人员用于监视 Visual Studio 中特定应用程序信息的工具。借助 Xamarin Profiler,开发人员可以轻松分析应用程序的行为。我们可以使用探查器来跟踪应用程序的内存信息并采样其统计数据。


7) 什么是 Xamarin Insights?

Xamarin Insights 是一种工具,它允许开发人员实时识别和跟踪应用程序问题。我们还可以将其用于监控系统以报告问题。Xamarin 于 2014 年 10 月推出了 Xamarin Insights。但是,它于 2016 年 3 月 31 日关闭。现在,开发人员可以相信 Visual Studio App Center 具有 Xamarin Insights 提供的相同功能。


8) 什么是 Xamarin.Forms?

Xamarin.Forms 是一个用于在移动应用程序中构建用户界面的框架。在相同的代码库中,开发人员必须为每个平台单独编写 UI。这既耗时又困难。Xamarin.Forms 允许开发人员只创建一个 UI,该 UI 可用于所有平台,如 Android、iOS 和 Windows。


9) Xamarin 支持哪些编程语言?

Xamarin 在移动应用程序开发中支持三种语言

Xamarin Interview Questions
  • C#
  • F#
  • Visual Basic.NET

10) XAML 在 Xamarin 中的作用是什么?

XAML 或可扩展标记语言 是一种特殊的工具,它允许开发人员在 Xamarin 应用程序开发中定义用户界面。XAML 在 Xamarin 中扮演着至关重要的角色,但它对于 Xamarin.Forms 中的应用程序开发来说并不是必需的。XAML 与应用程序的 ModelView-ViewModel 或 MVVM 架构一起工作。

Xamarin Interview Questions

11) 什么是 Xamarin Studio?

Xamarin Studio 是一个用于开发基于开源项目 Monodevelop 的跨平台移动应用程序的独立 IDE。


12) Xamarin Studio 和 Visual Studio 有什么区别?

Xamarin Studio 和 Visual Studio 都是用于开发 Android、iOS、类库、控制台、PCL 和 Windows Phone 应用程序的 IDE。Xamarin Studio 和 Visual Studio 都支持 F#。

Xamarin StudioVisual Studio
Xamarin Studio 在 Windows 和 OS X 环境中都可运行。Visual Studio 仅适用于 Windows 环境。
在 Windows 上,Xamarin Studio 不支持 Windows Phone 和 iOS 项目。在 Visual Studio 中,我们可以创建任何应用程序。
Windows 上的 Xamarin Studio 仅支持 Xamarin.Android 项目。Visual Studio 支持 Xamarin.Android、Xamarin.iOSXamarin.Windows 项目。

13) Xamarin.Forms 应用程序的生命周期是什么?

Xamarin.Forms 是一个平台,用于使用 XAML 作为前端和 C# 作为应用程序的后端开发跨平台移动应用程序。在 Xamarin.Forms 应用程序中,我们可以共享所有代码。Xamarin.Forms 还提供 Android 和 iOS 原生 API 的 100% API 覆盖。因此,我们可以开发原生 Android、iOS 和 Windows 应用程序。

有关 Xamarin.Forms 生命周期,请点击此链接:Xamarin 生命周期

当我们创建 Xamarin.Forms 应用程序时,我们将看到四个项目

  • 可移植项目: 这是我们将编写 95% 应用程序代码的项目,此代码在所有三个平台中共享。
  • Android: 这是我们设置 Android 应用程序图标和启动屏幕的项目,所有其他代码都将来自可移植项目。
  • iOS: 在此项目中,我们设置 iOS 应用程序架构和图标。
  • 通用 Windows: 通用 Windows 平台是应用程序平台

14) Xamarin 中数据绑定模式的类型有哪些?

不同类型的数据绑定模式是

  • 默认
  • 单向:源中的更改会影响目标
  • 双向:源和目标中的更改会相互影响

15) Xamarin 和 Mono 有什么区别?

XamarinMono
Xamarin 是构建出色应用程序的强大解决方案。当我们想为单个平台构建应用程序时,会使用 Mono。在这种情况下,需要一个原生平台。
借助 Xamarin,我们可以通过相同的 IDE、API 和语言为多个平台创建原生应用程序。原生移动应用程序构建在 Android、iOS.Java 和 Windows 上。
使用 Xamarin,我们可以跳过每个平台的额外开发时间。使用 Mono,我们无法跳过每个平台的额外开发时间。
Xamarin 应用程序以较低的成本提供更广泛的范围。Mono 应用程序以较高的成本提供更广泛的范围。

16) Xamarin.Forms 中使用的不同场景是什么?

以下是 Xamarin.Forms 中使用的不同类型的场景

  • 视图到视图绑定
  • 反向绑定
  • 与模型绑定
  • 与集合绑定

17) Xamarin 中的数据绑定是什么?

数据绑定是一种用于将数据源与用户界面同步的技术。当数据绑定完成并且数据或我们的业务模型发生更改时,它会自动将更改显示到 UI 元素,反之亦然。


18) 什么是 Xamarin 测试云?

Xamarin 测试云允许我们在各种设备上测试移动应用程序。测试云也用于在许多真实设备上同时进行自动化测试。


19) 如何设置 Xamarin?

Xamarin 设置有四个步骤

  • 下载 Xamarin 安装程序
  • 运行安装程序
  • 配置它
  • 激活 Xamarin

欲了解更多信息,请点击此处:Xamarin 安装


20) Xamarin.Forms 中布局控件的类型有哪些?

Xamarin.Forms 中不同类型的布局控件是

  • 堆栈布局
  • 内容视图
  • Frame
  • 滚动视图
  • 模板视图
  • 绝对布局
  • 网格
  • 相对布局

有关布局的更多信息,请点击此链接:Xamarin 布局


21) Xamarin.Forms 中存在哪些不同类型的页面?

Xamarin.Forms 中存在的不同类型的页面是

  • 内容页面- 此类型的页面显示单个视图,通常是堆栈布局或滚动视图等容器。
  • 主从页面- MasterDetailPage 是一个管理两个相关页面之间信息的页面。
  • 导航页面- 导航页面管理页面的导航。
  • 选项卡式页面- 选项卡式页面帮助使用选项卡导航子页面。
  • 模板页面- 模板页面帮助使用控件模板显示整个页面的内容。
  • 轮播页面- 此页面允许子页面之间进行滑动手势,例如画廊。
Xamarin Interview Questions

有关 Xamarin 页面的更多信息,请点击此链接:Xamarin.Forms


22) Xamarin 的优势是什么?

Xamarin 的优势是

  • 我们可以使用现有技能和代码(C#、XAML)交付原生 iOSAndroidWindows 应用程序。
  • 我们可以充分利用 Xamarin 技术的原生 API。
  • Xamarin 组件商店 允许我们直接从 IDE 将高质量组件添加到我们的应用程序,包括控件、Web 服务 API 等。
  • PCL/共享项目使开发人员能够轻松地在不同项目之间共享相同的代码库。

23) Xamarin.Forms 中的代码共享技术有哪些?

在跨平台应用程序之间共享代码有两种方法

  • 可移植库 (PCL)
  • 共享项目

代码共享策略的目标是支持多个平台可以利用单个代码库的架构。


24) 可移植类库和共享项目有什么区别?

可移植类库

Xamarin Interview Questions

我们在 .Net 中创建类库以重用我们的代码或使我们的代码仅适用于相同类型的应用程序,但这可能不适用于某些条件。这里我们假设我们已经为 WPF 或任何其他类型的应用程序创建了类库。如果我们要访问 Windows 8 或 Windows Phone 应用程序的相同类型的类库,那么在这种情况下,我们不能将其称为类库。

我们希望所有平台都有相同的应用程序,以使我们的生活更轻松。我们希望在多个平台上使用相同的应用程序。微软技术日益发展,涵盖了各种设备。我们可以在一个框架中构建和验证所有类型的应用程序,适用于 Windows、Web、移动或平板电脑等所有类型的平台。

PCL 解决了这个问题。.Net 4.5 引入了可移植类库 (PCL),用于在一个位置开发业务逻辑,我们可以在 .Net Framework 中将此库端到端地用于所有类型的应用程序或所有平台(Windows、Web 或移动)。

该图显示了可移植类库 (PCL) 的流程。所有这些应用程序都在 .Net Framework 上运行。所有这些应用程序都有不同的环境和平台,但它们都可以轻松使用可移植类库。换句话说,我们可以说我们只需要为所有 Windows、Web 和移动设备准备应用程序的 UI 并进行数据绑定,因为相同的业务逻辑可以在整个平台中使用。

共享项目

共享项目是一个包含标准代码并链接到每个特定平台库或应用程序的项目。它作为平台特定代码的一部分进行编译。要开发一个基于共享项目的出色解决方案,需要对其进行架构设计,使其核心功能位于共享项目中。这里,我们可能会使用部分类、抽象类和接口来管理平台特定项目中特定于每个平台的对象。当我们在原型阶段时,这种项目很好,因为为通用代码实现可共享项目速度很快。我们可以利用平台特定框架的所有优势。

Xamarin Interview Questions

共享代码可以使用编译器指令(例如 #if_Android_、#if_iOS_、#if_Windows_Phone_App.etc.)根据平台进行分支。

  • 无输出程序集
  • 重构操作不会自动更新。

25) XAML 的优势是什么?

XAML 的优势是

  1. XAML 清晰地划分了应用程序及其代码。因此,它实现了清晰的开发人员-设计流程。
  2. XAML 比类似的代码更简洁准确。
  3. XAML 具有用户界面对象的父子层次结构,具有更简单的视觉界面

26) 什么是视图?

视图被称为控件或小部件。它们可以是视觉对象,如 Label、Button、Entry、BoxView、ListView、TableView 等。所有 UI 元素都是视图的子类。


27) ListView 和 TableView 有什么区别?

ListView 和 TableView 控件相似。我们可以将它们视为一个控件。它们之间的主要区别在于它们如何布局项目。

ListView: ListView 控件垂直显示数据堆栈。它就像一个标准的 Listbox。我们使用此控件以列表形式显示数据顺序,尤其是需要滚动的长列表,例如电子邮件列表、联系人列表或搜索结果。

TableView: TableView 将数据堆栈水平显示在行中。当我们需要更多空间来丰富显示项的可视化时,我们使用此控件。


28) Xamarin 使用的应用程序类型有哪些?

使用 Xamarin 的不同类型的应用程序是

  • OLO - 一个在线订餐平台。
  • 世界银行调查应用程序 - 此应用程序用于全球调查。
  • Storyo - 此应用程序有助于从图片创建视频。
  • Freshdirect - 此应用程序是我们的友好杂货店。
  • Just Giving - 一个慈善界面。

29) Xamarin.Forms 中使用的不同场景有哪些?

Xamarin.Forms 使用的场景是

  • 视图到视图绑定
  • 反向绑定
  • 与集合绑定
  • 与模型绑定

30) Xamarin 为 Android 设计了哪些应用程序?

Xamarin 为 Android 设计的应用程序是

  • 秘密社团
  • 家长访问
  • Toolwiz 清理器
  • iLearnForKids
  • 2014 年足球经理目标

31) 列举 Xamarin 为 iOS 设计的应用程序?

Xamarin 为 iOS 设计的应用程序是

  • QuickPLan- 项目计划高清
  • NewsPager
  • Apocalypse Archer: 僵尸入侵
  • Stone Skimmer: 掠水动作游戏

32) Xamarin.Android 应用程序如何工作?

Xamarin.Android 应用程序依赖于 Microsoft 的 Mono 虚拟机。Mono 是 Microsoft 的 .Net Framework 开源实现,它基于 C# 和 CLR 的开源标准。Mono 于 2001 年推出。它最初是为了允许 .Net 应用程序在 Linux 平台上运行,但后来进行了修改以支持各种设备的开发,包括嵌入式系统。

在 Xamarin 中,Mono 与 Android 的 ART 并行工作。在 Android 上,大多数系统功能(如音频、图形、OpenGL 和电话)不能直接用于本机应用程序。它们可以通过 Android Runtime Java API 添加,这些 API 在 Java.* 命名空间或 Android.* 命名空间中可用。本机应用程序然后与公开的 .NET API 交互。这些 API 然后通过 Android 绑定 调用 Android Runtime Java API。

架构看起来像这样

Xamarin Interview Questions

33) 什么是 Fresh MVVM?

Fresh MVVM 是一个超轻量 MVVM 框架,专为 Xamarin.Forms 设计。它的设计简单、易用且灵活。它易于学习,并采用约定优于配置的原则。

Fresh MVVM 与 MVVM 略有不同。FreshMvvm 使用 Page 和 PageModel 的概念,而不是 View 和 ViewModel。


34) MVVM Cross 和 MVVM Light 有什么区别?

MVVM Cross: MVVM Cross 是一个 .NET 跨平台 MVVM 框架。它允许我们为 Xamarin.Forms、Xamarin.Android、Xamarin.iOS、Xamarin.Mac 和 WPF 等平台构建跨平台解决方案。它处于不活跃的开发状态。

MVVM Cross 要求应用程序分为两部分:核心和 UI。

核心部分包含视图模型、服务、模型和业务逻辑,而 UI 部分包含与核心交互的不同视图和平台特定代码。视图是包含图形内容的视图屏幕。除了核心和 UI,应用程序可能还包含用于各种功能的附加库。

MVVM Cross 提供的功能是

  • MVVM 架构模式
  • 灵活的导航系统
  • 数据绑定以允许源到目标的自动绑定。
  • 平台特定支持
  • 控制反转容器
  • 依赖注入引擎

MVVM Cross 的后果是

它的学习曲线过长,并且缺少有关如何开始开发应用程序的 Wiki。

MVVM Light: MVVM Light 是另一个框架,它允许使用 MVVM 架构模式在 Xamarin 上创建企业级应用程序。MVVM Light 使开发人员能够在各种平台(如 Xamarin.Forms、Xamarin.Android、Xamarin.iOS、UWP 和 WPF)上创建和开发 MVVM 应用程序。它允许我们将视图与模型分离,从而编写可测试和可扩展的应用程序。它不支持异步。

MVVM Light 应用程序分为以下几个部分

  • 视图: 它是与屏幕关联的平台特定用户界面。
  • 视图模型: 它公开数据和数据的相关属性。
  • 视图模型定位器: 它注册自定义视图模型。

35) Xamarin 中 Model-View-ViewModel (MVVM) 模式的必要性是什么?

Model-View-ViewModel 模式可以在所有平台上使用。它旨在提供用户界面控件及其逻辑之间的清晰分离。

Xamarin Interview Questions

好处

  • 在开发过程中,开发人员和设计人员可以独立地处理他们的组件。设计人员可以专注于视图,如果他们使用 Expression Blend,他们可以生成示例数据。另一方面,开发人员可以处理视图模型和模型组件。
  • 开发人员为视图模型创建单元测试,并可以为视图创建模型。
  • 重新设计应用程序的 UI 很容易,而无需修改代码,因为视图完全在 XAML 中实现。新版本的视图应该与现有视图模型一起工作。
  • 如果模型的现有表示绑定了现有的业务逻辑,则更改它可能很困难或有风险。在这种情况下,视图模型充当模型类的适配器,使我们能够避免对模型代码进行任何重大更改。

36) 什么是 NuGet?它在应用程序开发中如何有用?

NuGet 是 .Net 开发中最流行的包管理器。它存在于 Xamarin Studio 5 和 Visual Studio 中。我们可以使用 IDE 轻松地搜索并将包/第三方库添加到 Xamarin.Forms 中。


37) 什么是 HTTP 客户端?

HTTPClient 帮助开发人员通过互联网使用基于 REST 的服务连接到外部世界。HTTPClient 类用于发送 HTTP 请求并从 URI 标识的资源接收 HTTP 响应。HTTPClient 类存在于 System.Net.HTTP 命名空间中。


38) 什么是 ResourceDictionary?

ResourceDictionary 用于定义 XAML 资源,这些资源可以在整个 Xamarin.Forms 应用程序中多次重用。

  • XAML 资源 是可以多次使用的对象的定义。
  • ResourceDictionary 允许所有资源对象在同一位置声明。
  • 我们可以在 ResourceDictionary 中定义样式、ControlTemplates、DataTemplates、颜色和转换器。
  • 在 XAML 中, 资源可以在元素级别(特定元素内部)、页面级别(页面内部)或应用程序级别(App.Xaml 内部)访问。

39) Xamarin.Forms 和 Xamarin Native 有什么区别?

Xamarin.Forms

Xamarin.Forms 在以下情况下使用

  • 在平台特定场景中,代码需求较少。
  • 代码共享比自定义 UI 更重要。
  • UI 不复杂。

Xamarin Native

Xamarin Native 在以下情况下使用

  • 需要大量平台特定代码。
  • 自定义 UI 比代码共享更重要。
  • 使用平台特定 API 时。

40) 什么是 App.cs 类?

App.cs 是应用程序的主类,它提供以下功能

MainPage: 它帮助我们设置应用程序的初始页面。

属性字典: 它帮助我们存储跨生命周期状态的值。

静态 Current 属性: 它提供当前应用程序对象的实例


41) Xamarin.Forms 应用程序的生命周期方法是什么?

生命周期方法是一组技术,在应用程序进入特定状态时执行。这些方法是

  • OnStart: 当应用程序从头开始启动时,此方法将运行。
  • OnSleep: 当应用程序进入后台时,此方法将执行。
  • OnResume: 当应用程序从睡眠状态回到前台时,此方法将执行。

42) XAML 编译器 (XALC) 的目的是什么?

使用 XAML 编译器,我们可以直接将 XAML 编译成中间 (IL) 语言。

好处

  • 它执行编译时检查以查找 XAML 中的错误。在编译时,它会通知用户任何错误。
  • 它消除了 XAML 元素的开销和初始化时间。
  • 它不将 XAML 文件包含在最终程序集中,因此减少了程序集时间。

43) 什么是 XAML 命名空间声明?

XAML 命名空间是 XAML 文件顶部的命名空间声明。当我们创建任何新的 XAML UI 时,根元素中有两个声明可用。这是没有前缀的 xmlns 的默认声明

第二个声明使用 x 前缀

所有使用前缀的命名空间声明都是非默认声明。

假设我们想将 ViewModel 与 XAML 绑定,并且该 ViewModel 在命名空间“XamSample.ViewModels”中声明。

然后我们可以使用 VM 前缀从这个 命名空间 内部访问元素。


44) 从一个页面导航到另一个页面的方式是什么?

点击第一个页面上的按钮后,我们调用以下方法,通过该方法我们可以从一个页面导航到另一个页面。

我们必须使用 ContentPage 类下可用的“Navigation”页面属性。此代码写在 MainPage.XAML 文件的代码页中。


45) 什么是 ViewCell?

ViewCell 是一个小型独立元素,代表 ListView 或 Table 中的单个项目。ViewCell 不是视觉元素,而是创建视觉方面的模板的描述。


46) 内置单元格的类型有哪些?

内置单元格的类型是

  • TextCell: 它是一个包含标题/主文本和详细信息/次要文本标签的单元格。
  • ImageCell: 它是一个文本单元格,左侧包含图像组件。
  • SwitchCell: 此单元格包含标签和拨动开关。
  • EntryCell: 此单元格包含标签和单行文本框,可用于输入数据。

47) ControlTemplate 和 DataTemplate 有什么区别?

ControlTemplate: 此模板决定控件的外观。它定义了控件的表示样式。

例如, 一个按钮可以包含图像和文本。


48) 什么是触发器?有多少种触发器可用?

触发器允许我们在 XAML 中声明操作,当控件的特定属性满足特定条件时,这些操作会更改控件的外观。

我们可以在资源字典中添加控件级别、页面级别或应用程序级别的触发器。这里有四种类型的触发器可用。它们是

  • 属性触发器: 当控件的属性设置为特定值时,此触发器执行。
  • 数据触发器: 此触发器与属性触发器类似,但它使用数据绑定。
  • 事件触发器: 此触发器在控件上发生事件时触发。
  • 多触发器: 此触发器允许我们在操作发生之前设置多个触发器的条件。

49) 什么是 HockeyApp?

HockeyApp 为 iOS、Android 和 Windows Phone 提供测试服务。


50) 什么是 TestFlight?

Apple 是 TestFlight 的所有者。这是我们 Xamarin.iOS 应用程序 Beta 测试的主要方式。


51) 创建 Xamarin 应用程序的类型有哪些?

以下是使用 Xmarin 构建应用程序的三种方式。