龙空技术网

独家分享:TOP 20道iOS开发工程师面试题秘籍(附答案)

IT168企业级 847

前言:

此刻同学们对“ios算法面试题及答案”大致比较珍视,兄弟们都想要剖析一些“ios算法面试题及答案”的相关资讯。那么小编同时在网上汇集了一些对于“ios算法面试题及答案””的相关内容,希望各位老铁们能喜欢,我们快快来了解一下吧!

作为一名ios开发者,你可以在XCode中使用Swift编写应用程序。当然,你也可以用Object-C,不过现在大部分开发者都已经全面转变为使用Swift编程了,毕竟这是苹果官方大力支持的编程语言。那么,作为一名ios开发人员,大概薪资是多少呢?

如果你加入了王者荣耀的开发团队,那可以直接忽略本文了,毕竟你们已经走向人生巅峰,如果只是一般公司的iOS开发者,根据年初发布的薪资调查报告显示,大部分人的基本薪资在5k以上,包括1年经验都不到的毕业生。

拿到这些薪资的第一步就是成功通过面试,以下这些是iOS开发人员面试中的常见问题,你会多少呢?

1、“autorelease” 嵌套, 系统是怎么处理的?

2、解释如何在Xcode项目中添加框架?

在Xcode项目中添加框架:

从项目导航器的窗口左侧选择项目文件

在项目设置中选择要添加框架的目标

选择“Build Phases”选项卡,然后选择“Link Binary With Libraries”旁边的小三角,以查看应用程序中的所有框架

要添加框架,请单击框架列表下方的“+”号

要选择多个框架,请在选择框架时按住 command键

3、WebView突然弹出广告或者垃圾信息?是什么原因造成的?如何解决?

WebView突然弹出广告肯定是H的错!当然可以进行避免,通过WebView的delegate进行URL截取,然后拿关键词与常出现的广告注入标识库进行匹配,从而达到拦截的作用。

4、bound和frame有什么区别?

frame:视图的frame是矩形的,表示为与其包含的视图对应的位置(X,Y)和大小(宽度,高度)

Bound:视图的Bound也是矩形的,表示为与其自己的坐标系(0,0)、相对应的位置(X,Y)和大小(宽度,高度)

5、ASI和AFNetWorking区别?核心实现上有什么不同?

ASI是基于底层CSNetworking框架进行开发,注重于网络数据的缓存,ASI太重,已经无人维护。AFNetworking是基于NSURLConnection框架进行开发的,注重于网络数据的处理,快速请求的过程,使用很方便。

6、ARC 原理是什么?

ARC (Automatic Reference Counting), 在对象被创建时,ARC会保存一大堆关于该对象的信息:对象类型,所有的属性等等,当我们不再需要该对象的时候,ARC会帮助我们销毁该对象。

当我们`alloc``init`一个对象实例时,编译器会在该实例使用完后插入`objc_release`去销毁该对象。如果我们是在使用properties的时候,该property的getter会被写成:

```objective-c

- (Test *)test {

return objc_retainAutoreleaseReturnValue(_test);

}

```

可以看到,所有properties都被retain/autorelease了, 当引用properties时,编译器还会将caller改写为:`objc_retainAutoreleaseReturnValue([self test])`. 这里出现了两次的retain/autorelease,而编译器会优化的只使用一次。

7、请简单说明多线程技术的优点和缺点?

8、Xcode中PO命令的用法是什么?

PO命令在调试期间很有用。在正常情况下,要打印变量的值,必须将鼠标指针移到那里,然后选择打印输出打印值。使用PO命令,只需在输出窗口中输入“PO变量名称”即可打印数值,然后按下Enter键。

9、Xcode中两个不同的smart groups是什么?

smart groups大致分为两类:

简单过滤smart groups:它基于shell中使用的文件名“globbing”匹配文件

简单表达smart groups:它使用正则表达式匹配文件

10、解释如何删除在Xcode中创建的smart groups?

无法单独删除smart groups,因此可以通过以下两种方式删除Xcode中的smart groups:

删除保存在单个项目中的所有smart groups

或删除项目中可用的所有全局smart groups

11、__block和__weak修饰符的区别是什么?

12、iOS本地数据存储都有哪几种方式?iOS如何实现复杂对象的存储?

13、在Xcode中打开“Code Snippet Library”的捷径是什么?

(CMD + OPT + Cntrl + 2)是在Xcode中打开“Code Snippet Library”的捷径。

14、怎样实现一个singleton?

15、提到Xcode中可用的构建阶段有什么?

Xcode中有三个构建阶段,默认情况下是可用的:

编译源代码

链接二进制库

复制包资源

16、简述应用程序按Home键进入后台时的生命周期,以及从后台回到前台时的生命周期?

进入后台生命周期走:

- (void)applicationWillResignActive:(UIApplication*)application;

- (void)applicationDidEnterBackground:(UIApplication*)application;

回到前台生命周期走:

- (void)applicationWillEnterForeground:(UIApplication*)application;

- (void)applicationDidBecomActive:(UIApplication*)application;

17、为什么写代理的属性都是assign而不是retain?请举例说明。

防止循环引用:

18、超出父视图部分无法响应事件的解决方案?

原因:从下往上依次传递遇到其中一个无法传递,那么便跳过它,传递给下一个能传递的或者能响应的

解决:重写方法

19、dispatch_group_async的使用?

dispatch_group_async可以实现监听一组任务是否完成,完成后得到通知执行其他的操作。这个方法很有用,比如你执行三个下载任务,当三个任务都下载完成后你才通知界面说完成的了。下面是一段例子代码:

20、描述一个你遇到过的retain cycle例子

标签: #ios算法面试题及答案