北上广深iOS开发者薪资曝光,想炒老板的务必收好这份面试题!

 

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



点击蓝字关注这个神奇的公众号~
作为一名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例子
投稿邮箱:qinli@it168.com

合作微信:zhaoyuyingycq


IT168文库APP

最专业的IT技术交流分享平台!扫码安装,与众多技术同好交流!


IT168文库|中国最专业的IT文档分享平台,拥有百万活跃的IT技术精英!我们致力于有效帮助IT人士提升职业素养。


    关注 IT168文库


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册