美文网首页iOS开发技术iOS DevelopmentiOS Developer
独家分享:TOP 20道iOS开发工程师面试题秘籍

独家分享:TOP 20道iOS开发工程师面试题秘籍

作者: iOS大咖 | 来源:发表于2018-01-19 20:07 被阅读98次

    作为一名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例子

    相关文章

      网友评论

        本文标题:独家分享:TOP 20道iOS开发工程师面试题秘籍

        本文链接:https://www.haomeiwen.com/subject/ndyaoxtx.html