10个重要的手机应用面试问题 *

最优秀的手机应用开发者可以回答的基本问题. 在我们社区的推动下,我们鼓励专家提交问题并提供反馈.

Hire a Top Mobile App Developer Now
Toptal logo是顶级自由软件开发人员的专属网络吗, designers, finance experts, product managers, and project managers in the world. 顶级公司雇佣Toptal自由职业者来完成他们最重要的项目.

Interview Questions

1.

如何在Android和iOS中存储数据? 有哪些数据库和本地解决方案可用?

View answer

Android的本地数据存储解决方案是 SharedPreferences. 这是为了存储少量数据,如用户偏好或设置. The data are stored in an XML file.

iOS上也有类似的解决方案 UserDefaults (previously NSUserDefaults). The data are stored in a .plist file.

两个平台都有可能使用SQLite并提供框架和库来操作数据(尽管可以手动使用数据库):

  • iOS has Core Data,一个管理对象图的框架. 它可以使用SQLite,但也可以将数据保存在二进制存储或仅保存在内存中.
  • Android has the Room persistence library,它简化了SQLite数据库的管理,并减少了数据库使用的样板文件.

另一种可能是Realm,这是一种为移动设备设计的非关系数据库系统. 它也可用于混合解决方案,如Xamarin或React Native,并且比SQLite更高效.

2.

什么是国际化和本地化? Do these terms mean the same thing?

View answer

不,这些术语不是同义词,但它们是相关的. 它们都与使应用程序以默认语言以外的语言可用(和用户友好)有关.

国际化(“i18n”)是使应用程序代码适应其他语言的过程. For example, 应用程序可能需要以不同的格式显示数据, prices, 或带有正确小数或千位分隔符的数字, 甚至处理文本是从右向左还是从左向右书写. 它还需要考虑用户的时区.

Localization (“l10n”), on the other hand, 准备应用程序内容的过程是否有不同的语言版本. 这包括翻译应用程序的大部分资源,如文本、图像和声音. 不同语言的资源通常保存在不同的文件或目录中, 操作系统会根据用户设置选择合适的.

3.

服务器通知应用程序有新数据可用的最佳方式是什么?

View answer

不通过一系列请求轮询从服务器接收信息, 移动应用程序可能会使用推送通知. 这是比不断请求新数据更好的解决方案, 因为它不会耗尽电池,将使用更少的网络数据.

Android和iOS都有自己的解决方案:

  • Apple Push Notifications 只向iOS设备发送推送通知.
  • Firebase Cloud Messaging 谷歌向设备发送推送通知的机制是什么 replaced Google Cloud Messaging (GCM). This is touted as “multi-platform,这意味着它也支持iOS设备, 通过苹果的推送通知服务(apn)进行转发.

申请加入Toptal的发展网络

and enjoy reliable, steady, remote Freelance Mobile App Developer Jobs

Apply as a Freelancer
4.

当你的应用程序已经发布时,你如何调试它?

View answer

有很多工具可以提供手机应用程序的崩溃和使用报告.

其中最流行的(免费的)是Firebase Crashlytics,它同时支持iOS和Android. 它提供了很多关于应用程序崩溃的有用信息,比如全栈跟踪, operating system version, device manufacturer, and user language.

其他一些工具是Sentry(当你用JavaScript编写应用程序时很有用).g.(用于React Native)、Appsee、Raygun和Instabug. 它们的不同之处在于提供了崩溃和使用细节以及价格.

5.

在移动应用程序的世界里,如何保护像联系人或访问摄像头(或其他传感器)这样的敏感数据?

View answer

对用户数据或传感器的访问受到权限系统的限制. 这意味着当应用程序想要使用像GPS这样的功能时, 它必须请求用户的许可,并解释为什么需要这个许可.

用户可以同意或拒绝请求. 开发者必须预见到拒绝,并提供一种方法来继续使用应用的某些功能, 没有被拒绝的传感器或数据,哪个可以工作. 权限不仅可以在应用程序运行时授予或拒绝,还可以从用户的设置中授予或拒绝, 所以应用程序必须一直检查它.

权限机制可能在不同的操作系统版本之间发生变化,因此开发人员必须意识到这一点. 例如,在Android版本6以下.0 (Marshmallow),权限声明在 AndroidManifest.xml,用户在应用程序安装期间授予所有这些权限.

6.

原生应用和混合应用的区别是什么? 混合应用的优势和劣势是什么?

View answer

原生应用是专门为一个平台编写的,使用该平台使用的语言.e. iOS平台的Objective-C或Swift, Android平台的Java或Kotlin. 这些应用程序具有最佳性能,并且可以针对用户习惯的特定平台进行设计, 所以iOS用户不会对Android的一些行为或布局感到惊讶,反之亦然.

混合应用可以在多个平台上运行. Under the hood, 混合应用程序实际上是在web视图中显示的网页, 所以它通常是用JavaScript和HTML编写的. 流行的混合框架有Ionic、Cordova和PhoneGap.

不过,混合应用的性能比原生应用差. 访问设备硬件(如传感器)有时可能会出现问题, 并且通常需要针对每个平台分别编写, 所以开发者必须使用本地代码并编写特定于平台的内容.

设计一款既美观又对iOS和Android用户友好的应用程序也非常困难. On the other hand, 编写混合应用的过程可能比为每个平台编写原生应用更便宜、更快捷. 这种技术特别适用于小型和简单的应用程序.

There is also a third group of apps, 使用React Native等技术开发, Xamarin, or Flutter. 这些框架试图将编写多平台应用程序的便利性与本机性能联系起来. 它们提供了用一种语言(javascript)编写代码的可能性, C#, 或dart -并将其编译为本机代码. 框架通常使用控件的本机实现, 所以用户体验比混合应用好一点.

7.

在为手机平台编写游戏时,你需要注意的主要事项是什么?

View answer

Network

手机比独立的电脑更容易出现网络问题. 用户可以移动,去一些隧道或区域没有WiFi或蜂窝网络接入. 因此,互联网并不总是可用的,或者不是最好的质量. 手机可能会频繁切换网络. 当用户使用他们的蜂窝网络时,加载大量的重数据将耗尽他们的数据包,并使他们面临额外的成本. 当使用WiFi时,开发者可能会提供离线模式和不同的数据加载行为, LTE, 3G or H; e.g.,不要下载电影或要求低质量的图像.

Fragmentation

开发者必须意识到,他们测试应用的设备只是用户使用的数千种设备中的一种. 他们必须检查应用程序在小型手机、大型手机、平板电脑等设备上的效果., and adapt the layout to them.

开发者还必须考虑使用的不同系统版本的数量(主要是在Android手机上)。, decide which are supported, 并了解它们之间的区别. Also, 这款应用在不同制造商的设备上可能存在一些漏洞, 因此,拥有各种物理设备用于测试或使用测试设备场总是很好的.

RAM

尽管我们手机的内存越来越大, 良好的内存管理仍然是必要的. 该操作系统将关闭使用过多内存的应用程序, 因此,开发人员必须关心内存泄漏并优化长时间运行的操作.

Disk Space

和内存一样,制造商给我们提供了越来越多的磁盘空间. 对于某些设备,还可以使用SD卡扩展此功能.

尽管如此,开发者还是应该让应用尽可能的小. 使用计算器之类的小应用程序需要下载500mb的内存,这将打消用户尝试应用程序的念头.

But also once installed, 保留不必要的文件或占用太多空间可能会导致用户卸载应用程序并寻找更好的替代方案.

Battery

这是当代手机最薄弱的地方之一. 我们在应用程序中的每一个动作都会影响电池.

用户肯定会删除那些耗电过多的应用. 开发者在使用不同的服务(如GPS)时必须小心谨慎. 开发人员应该只在必要时使用这些功能,并使用优化的操作系统解决方案在后台更新数据.

8.

描述在Google Play和苹果App Store发布应用的过程. 向每个商店发布应用程序需要什么?

View answer

Google Play和App Store都需要图片、应用描述和唯一标识符.

Google Play

谷歌要求你拥有开发者账户才能发布应用.

当一个应用程序准备好了,它应该被构建到一个APK文件.

APK必须签名以证明它来自您的特定公司. The signing is done using a keystore, 哪个文件包含属于公司/开发人员的一个或多个私钥. (如果该文件丢失,则无法对应用程序进行更新.)

谷歌还推出了一个名为Android App Bundles的新发布系统, 它提供较小的APK大小并管理签名, 但旧版本的安卓系统无法使用.

发送完文件后,可能需要几个小时的时间,应用程序才能在商店中可用.

The App Store

苹果需要一个与苹果开发者计划(Apple developer Program)相连的开发者账户才能在这里发布应用.

首先,应用程序必须在iTunes Connect中为其创建一个配置文件.

完成的应用程序被构建到一个IPA文件中,该文件必须由一些证书签名. Xcode可以使用分发证书(DC)和配置文件自动完成这一切, which connects the DC to the app ID.

一旦发送,应用程序将由苹果的一个团队进行检查. 可能需要几天的时间,应用程序才会被批准(或拒绝)发布.

9.

你该如何处理各种不同的屏幕分辨率和屏幕尺寸呢? 什么单位被引入来简化定位和大小元素? How do you deal with images?

View answer

苹果和谷歌都推出了自己的设备来帮助开发者应对不同的屏幕分辨率. 对于苹果来说,他们重新利用了(或者可能是现代化了)?),“点”(pt)不再是1/72英寸, but to be 2x that on retina displays, 或者在更大的视网膜显示器上是3倍,但是 精确的缩放并不总是整数倍 like that.

相反,谷歌使用了一个相对较新的术语,“与密度无关的像素”(DIP或dp)。. 这两种策略背后的想法是一样的:隐藏真实的屏幕分辨率,给程序员一个独立于像素的单位.

每个设备都有一个比例因子,表示多少像素对应于一个点(或密度像素)。. 这意味着当iOS开发者说图像是80px * 80px时, 在一些非常老的设备上,真实的像素大小是80x80.g.iPhone 6为160 × 160, iPhone X为240 × 240.

The same rule is true for Android phones; however, 在这个平台上有更多可能的比例因子.

处理不同的屏幕尺寸对设计师来说也非常重要, 因为他们必须为每个密度组准备图形. 有时候,为手机和平板电脑准备不同的布局是件好事, 甚至是纵向和横向.

如果可能的话,应该使用SVG格式的图像. 它们可以在不损失质量的情况下缩放,并且比不同尺寸的相同图像占用更少的空间. Android和iOS都支持使用SVG图像.

此外,这两个平台都支持布局约束. 使用这种技术,元素可以放置在与其他元素或屏幕边缘的关系中. 这在不同的屏幕和方向上提供了更灵敏的设计.

10.

什么是应用沙箱?它的作用是什么?

View answer

应用沙箱是一种在内核级别隔离应用的安全机制. Each app is run in its own sandbox, 这意味着它对数据的访问非常有限:它只能访问自己的数据和文件, 没有其他应用程序可以读取或写入它们.

这是为了保护用户数据免受恶意软件的侵害,恶意软件可能会意外或故意安装在设备上. Apps are still able share some data, but only the data they want to, 使用系统提供的机制(例如.g., ContentProvider on Android).

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

Why Toptal

Tired of interviewing candidates? 不知道该问什么才能让你得到一份好工作?

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

Hire a Top Mobile App Developer Now

我们的独家移动应用程序开发者网络

希望找到一份移动应用程序开发人员的工作?

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

Apply as a Mobile App Developer

Job Opportunities From Our Network

Submit an interview question

提交的问题和答案将被审查和编辑, 并可能会或可能不会选择张贴, at the sole discretion of Toptal, LLC.

* All fields are required

Looking for Mobile App Developers?

Looking for Mobile App Developers? 看看Toptal的移动应用开发者.

Daniel Song

Freelance Mobile App Developer

United StatesToptal自由移动应用开发者 Since August 8, 2023

Daniel是一个思想开放的移动开发人员,他的大部分职业生涯都花在移动和web开发上. 他擅长于React, React Native, GraphQL, Firebase, REST api, Node.js, and Agile software development. 他还精通Swift和Kotlin. 在过去的12年里,他在各个行业开发并发布了许多应用程序. 丹尼尔的目标是在每个项目中达到最高效率, learn from the experience, 并使用两者来改进和交付高质量的产品.

Show More

Diego Alfarache

Freelance Mobile App Developer

United StatesToptal自由移动应用开发者 Since June 7, 2023

Diego是一位经验丰富的软件工程师,专门从事移动应用程序和嵌入式项目, 能让陷入困境的项目起死回生. 他有很好的沟通能力, 重要的客户体验, and top-notch programming, debugging, and technical skills. 具有亲力亲为的领导能力和创造伟大产品和团队的热情, Diego拥有20年为消费电子产品构建软件解决方案的经验, medical, scientific, and enterprise communities.

Show More

Paul E Dawson

Freelance Mobile App Developer

United StatesToptal自由移动应用开发者 Since October 7, 2022

Paul是一名软件架构师,曾为财富100强公司和初创公司构建平台和解决方案. 他在这三种云环境中都工作过,并不一定要依赖于技术栈,但他会使用最好的工具来完成这项工作. 在不同的高节奏环境中工作过, Paul can adapt, learn, 并在高水平上应用新技术.

Show More

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

Join the Toptal community.

Learn more