登录 / 注册
IT168技术开发频道
IT168首页 > 技术开发 > 技术开发评论 > 正文

北上广深iOS开发薪资曝光,跳槽必看面试题!

2017-12-04 14:49    it168网站原创  作者: 钰莹 编辑: 赵钰莹

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

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

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

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

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

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

  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、请简单说明多线程技术的优点和缺点?

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

  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修饰符的区别是什么?

北上广深iOS开发薪资曝光,必看面试题!

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

北上广深iOS开发薪资曝光,必看面试题!

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

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

  14、怎样实现一个singleton?

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

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

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

  编译源代码

  链接二进制库

  复制包资源

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

  进入后台生命周期走:

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

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

  回到前台生命周期走:

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

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

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

  防止循环引用:

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

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

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

  解决:重写方法

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

  19、dispatch_group_async的使用?

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

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

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

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

标签: 程序员 , 游戏开发 , iOS
  • IT168企业级IT168企业级
  • IT168文库IT168文库

扫码送文库金币

编辑推荐
系统架构师大会
系统架构师大会
点击或扫描关注
IT168企业级微信关注送礼
IT168企业级微信关注送礼
扫描关注
首页 评论 返回顶部