12个离子面试的基本问题 *

最优秀的Ionic开发人员和工程师可以回答的基本问题. 在我们社区的推动下,我们鼓励专家提交问题并提供反馈.

现在就雇佣一名顶尖的Ionic开发人员
Toptal logo是顶级自由软件开发人员的专属网络吗, designers, finance experts, product managers, 和世界上的项目经理. 顶级公司雇佣Toptal自由职业者来完成他们最重要的项目.

Interview Questions

1.

“离子构建”和“离子制备”有什么区别??

View answer

ionic prepare 将WWW文件夹中的所有文件复制到目标平台的WWW文件夹中.

ionic build also does this, 而且还构建了应用程序的源代码,以便它可以在模拟器/模拟器或设备上运行.

2.

Ionic应用程序在旧的Android设备上的性能很差. 为什么会这样,我们可以做些什么来改善它?

View answer

Ionic框架使用设备可用的默认web浏览器来运行其混合应用程序. 旧版本的Android设备(4).0-4.3)使用Android的默认浏览器, 它的性能和标准遵从性明显低于现代Chrome浏览器.

解决这个问题的一种方法是使用 crosswalk 以及Ionic框架. Crosswalk允许您打包一个现代Chrome webview与Ionic应用程序, 因此,应用程序不必依赖于本地Android浏览器. 最终的结果是更好的性能和现代的web API在所有Android版本.

3.

使用Ionic框架构建应用程序最突出的优点和缺点是什么?

View answer

最明显的优点是:

  1. Ionic框架使用web技术构建混合应用程序. 这意味着网页开发者也可以轻松构建移动应用程序. Also, 因为它使用了JavaScript, 几乎相同的代码库可以用来构建iOS和Android应用程序.
  2. 与原生iOS和Android应用相比,开发成本更低.
  3. Ionic框架非常适合快速构建应用程序的原型.

一些缺点是:

  1. 它不适合高端图形依赖的应用程序或游戏.
  2. 性能不如本机应用程序好, namely animations, scrolling, 以及网络运营.
  3. 如前所述,JavaScript动画的性能不如本机动画. However, 有JavaScript库, like tweenMAX, 哪些设备提供了不错的动画表现.

申请加入Toptal的发展网络

并享受可靠、稳定、远程 自由离子型开发者职位

申请成为自由职业者
4.

PhoneGap、Cordova和Ionic之间的区别是什么?

View answer

PhoneGap是一个将原生移动电话功能作为JavaScript API公开的库. 当Adobe收购PhoneGap时, 它的开源核心以Cordova的名义捐赠给了Apache软件基金会. 一开始,Cordova和PhoneGap之间几乎没有什么区别. Although, 经过多年的发展, Adobe开始向PhoneGap添加一套专有的服务. 今天,可以说PhoneGap是Cordova加上额外的Adobe服务.

Ionic的核心工具是Cordova,而不是PhoneGap. 除了本地手机功能, Ionic通过使用AngularJS为JavaScript应用程序提供结构和代码可伸缩性. 它还提供了一组Angular指令和组件来加速应用程序的开发.

5.

如何使用Ionic框架在应用启动之间持久化数据?

View answer

Ionic在后台构建基于HTML5的应用程序,您可以使用 localStorage and sessionStorage 在移动电话上持久化数据的API. However, since localStorage 只能存储字符串,对象需要在保存前进行字符串化吗. 此外,重要的是要提到 localStorage 大小限制在5MB左右吗.

6.

在Ionic应用程序中,如何将数据从一个视图传递到另一个视图?

View answer

Ionic使用AngularJS和UI-router. 这意味着你可以使用Angular服务或UI-router的状态 resolve 将数据从一个视图传递到另一个视图. 因为Angular的服务都是单例的, 存储在服务中的数据可以跨其他Angular控制器访问.

如前所述,UI-router提供了一个 resolve configuration. For example:

$stateProvider
  .state('todos', {
    url: '/todos',
    控制器:“TodosCtrl”,
    templateUrl: 'todos.html',
    resolve: {
      todos:函数(TodosService) {
        return TodosService.getTodos()
      }
    }
  })

One advantage of resolve 有状态的服务是更好的测试:as resolve 在控制器中注入依赖项,很容易测试它们.

7.

如何在Ionic中呈现5000个项目列表,而不影响滚动性能?

View answer

Ionic provides a collection-repeat 指令,只呈现DOM中可见的项. 所以即使列表很大,比如我们的例子中有5000个,也只有在视口中可见的项目才会被渲染. 因此,滚动性能不受影响.

8.

在Ionic应用程序中缓存视图的优势是什么? Provide examples.

View answer

Ionic默认最多缓存10个视图, 这样既能提高性能,又能同时在视图中保持不同的状态. 例如,缓存可以保持视图中的滚动位置或按钮的活动状态.

可以在每个视图中禁用缓存 cache: false 在UI-router的状态配置中,如下例所示:

$stateProvider.state('myState', {
   cache: false,
   url : '/myUrl',
   templateUrl: my-template.html'
})

也可以通过设置全局禁用缓存 maxCache to 0:

ionicConfigProvider美元.views.maxCache(0);
9.

如何在Ionic应用程序运行时检测平台(Android或iOS)?

View answer

Ionic提供了平台类:当应用加载时,Ionic将CSS类添加到 tag. 例如,在iOS设备上,Ionic补充道 platform-ios class to tag. Ionic还添加了OS版本类,比如 platform-ios8 (for iOS 8) and platform-android4_4 (for Android 4.4).

10.

如何在Ionic应用程序中访问手机原生功能,例如摄像头?

View answer

Ionic并没有提供现成的摄像头API. However, 因为Ionic使用插件架构, 因为它是基于Cordova的, 我们可以在我们的应用中使用Cordova插件. Ionic团队提供了一组带有Angular包装器的Cordova扩展,它们可以在 ngCordova.

要使用Cordova插件,我们需要使用Ionic命令安装插件 install . In some cases, 我们还需要将插件的Angular模块添加到你的Angular应用中.

要在Ionic应用程序中使用手机的摄像头,我们可以使用 在GitHub上托管的cordova-plugin-camera. 这个插件定义了一个全局变量 navigator.camera object, 它为拍照和从系统的图像库中选择图像提供了一个API.

11.

如何测试Ionic应用程序?

View answer

Ionic应用是用AngularJS构建的. Angular有一组丰富的测试库和框架,比如Jasmine和Karma测试运行器. 这些框架可用于为Ionic应用程序编写单元测试. Also, ionic-CLI provides live reload 特性,以便可以在浏览器中测试应用程序. For example, the ionic serve 命令可用于在任何浏览器中加载应用程序. Thus, 我们可以使用Chrome开发者工具或Mozilla Firefox和Firebug来调试和检查Ionic应用程序.

12.

从广义上讲,就是如何将Ionic项目部署到设备上?

View answer

To run your app, 你所要做的就是在安卓设备上启用USB调试和开发者模式, then run Ionic cordova运行android——device 从命令行.

面试不仅仅是棘手的技术问题, 所以这些只是作为一个指南. 并不是每一个值得雇佣的“A”候选人都能回答所有的问题, 回答所有问题也不能保证成为A级考生. 一天结束的时候, 招聘仍然是一门艺术,一门科学,需要大量的工作.

Why Toptal

厌倦了面试候选人? 不知道该问什么才能让你得到一份好工作?

让Toptal为你找到最合适的人.

现在就雇佣一名顶尖的Ionic开发人员

我们的Ionic开发者独家网络

希望找到一份Ionic开发人员的工作?

让Toptal为你找到合适的工作.

申请离子型开发人员

工作机会从我们的网络

提出面试问题

提交的问题和答案将被审查和编辑, 并可能会或可能不会选择张贴, 由Toptal全权决定, LLC.

*所有字段均为必填项

寻找Ionic开发者?

Looking for Ionic Developers? 看看Toptal的Ionic开发者吧.

Rahul Devaskar

自由离子开发员

AustraliaToptal Member Since October 3, 2014

Rahul是一名专业的软件工程师,在构建全栈React和Node方面具有领导经验和专业知识.Js应用程序和流数据分析解决方案. 他使用Node设计并开发了一个创新的上下文感知广告平台.Js和机器学习技术, 这家总部位于硅谷的数据分析公司后来收购了这家公司.

Show More

Michal Mikolajczyk

自由离子开发员

PolandToptal Member Since September 17, 2014

Michal是Toptal Warsaw的高级软件工程师和社区领导者. 他善于沟通,主动帮助创业公司扩大规模. Michal writes clean, functional code, 自动化基础设施, 并且喜欢协调和确定任务范围. 作为一名前数字游民,Michal在会议上发言,并为Toptal Blog撰写文章. 他的专业兴趣包括区块链和人工智能.

Show More

塞尔吉奥·安东尼奥·米里奇

自由离子开发员

ArgentinaToptal Member Since May 20, 2014

Sergio是一名软件工程师,具有为复杂问题开发可扩展且高效的解决方案的才能. 他对设计流程有全面的了解,在产品的所有设计阶段都有经验, including research, development, scalability, and testing.

Show More

Toptal Connects the Top 3% 世界各地的自由职业人才.

加入Toptal社区.

Learn more