作为一名ios开发者,你可以在XCode中使用Swift编写应用程序。当然,你也可以用Object-C,不过现在大部分开发者都已经全面转变为使用Swift编程了,毕竟这是苹果官方大力支持的编程语言。那么,作为一名ios开发人员,大概薪资是多少呢?
如果你加入了王者荣耀的开发团队,那可以直接忽略本文了,毕竟你们已经走向人生巅峰,如果只是一般公司的iOS开发者,根据年初发布的薪资调查报告显示,大部分人的基本薪资在5k以上,包括1年经验都不到的毕业生。
分享之前我还是要推荐下我自己建的iOS开发学习群:680565220,群里都是学ios开发的,如果你正在学习ios ,小编欢迎你加入,今天分享的这个案例已经上传到群文件,大家都是软件开发党,不定期分享干货(只有iOS软件开发相关的),包括我自己整理的一份2018最新的iOS进阶资料和高级开发教程,欢迎进阶中和进想深入iOS的小伙伴。
拿到这些薪资的第一步就是成功通过面试,以下这些是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例子
网友评论