• 一份自己iOS 面试题,拿到15K35K,分享出来


    前言

    在严峻的iOS市场中竞争, 没有掌握和了解一些具有优势的技术性知识,你怎么与别人进行PK,又怎么征服你的面试官............进入正题

    百度移动云可穿戴部门的面试经历

    面试官都非常热情友好,一上来反倒弄的我挺不好意思的。下面记录一下自己的面试过程,因为我真的没啥面试经验,需要总结下。

    **一面**

    * Objective C runtime library:Objective C的对象模型,block的底层实现结构,消息发送,消息转发,这些都需要背后C一层的描述,内存管理。

    * Core Data:中多线程中处理大量数据同步时的操作。

    * Multithreading:什么时候处理多线程,几种方式,优缺点。
    * Delegate, Notification,KVO, other 优缺点

    * runtime有一点追问,category,method 的实现机制,class的载入过程。

    >1面整体感觉不错,40分钟不到,感觉回答的还可以。被通知一会儿二面。

    二面

    面试流程:
    >二面的时间非常长,差不多将近3个小时,直接面到快下班了。1面问的主要是知识点。2面问主要考察的是设计解决方案的能力,另外辅助追问的方式,考察深度和广度,回答过程中需要列出适合的具体例子,方案还需要细致到具体的关键的函数名称,方法。另外考察设计模式的理解,最后还考了算法。因为时间太长,这里记录一些重要的问题。

    * 设计一个progress bar解决方案,追问到 Core Graphic、CGPath、maskLayer。

    * 设计一个popup view被追问到 keyWindow、UIWindow的layer、UIView hierarchy。

    * 从设计模式的角度分析Delegate、Notification、KVO的区别。被追问到自己写的library和开源的项目中用到哪些设计模式,为什么使用,有哪些好处和坏处,现在能否改进。

    * 算是问题3的追问,设计一个方案来检测KVO的同步异步问题。willChange和 didChange的不同点,然后被追问到有没有其他地方也有类似情况,被追问到Core Data 中falut object。

    * 这个是问题4的追问,设计一个KVO系统。

    * Multithreading,什么时候采用Multithreading方案,以及理由。追问到系统还有哪些在后台运行的thread,被追问到view life cycle、iOS6之后的不同以及内存管理。

    * Multithreading中常常遇到的问题,追问到死锁,优先级翻转,线程池等。

    * 百度有一个亿级别的APP需要统计用户行为的日志系统。不使用数据库,只是使用普通文件,设计一个系统。被追问到内存映射文件。这个问题本来是服务器的问题,我表示从来没做过,回答很瞎。

    * 算法考了2个。一个是如何求2个集合的交集。另一个是百亿数据中查找相同的数字以及出现的次数。

    三面

    * 3面的时间和1面差不多40分钟,问了几个问题,主要是考察精神层面的东西。

    * 为什么做Windows Mobile

    * 为什么改iOS

    * 为什么来百度

    * 为什么iPhone 可以成功,那些吸引你

    * 如何看待AppStore 现在的生态圈

    * 后面就是他说的多一些,介绍团队遇到的困难以及14年团队的打算。最后他给了我2句话的评价,我觉得还是蛮对的。

    * 选择的时候都是经过深思熟虑的

    * 有野心,wanna make a difference

    * 有意思的是,他说他也wanna make a difference。
    ***

    **整个面试收获很大,发现了很多不足。另外面试题目个人觉得也不错。这里分享给大家↓↓↓↓↓↓↓↓**

    建议大家花点时间学习下:

    1、如何令自己所写的对象具有拷贝功能?

    2、说说你理解weak属性?

    3、题目:Swift mutating关键字的使用?

    4、UIView和CALayer是什么关系?

    5、下面的代码输出什么?

    6、@synthesize 和 @dynamic 分别有什么作用?

    7、动态绑定

    8、Category(类别)、 Extension(扩展)和继承的区别

    9、为什么代理要用weak?代理的delegate和dataSource有什么区别?block和代理的区别?

    10、id和NSObject*的区别

    11、如何令自己所写的对象具有拷贝功能?

    12、使用系统的某些block api(如UIView的block版本写动画时),是否也考虑引用循环问题?

    13、用@property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?如果改用strong关键字,可能造成什么问题?

    14、UIView和 CALayer是什么关系?

    15、static有什么作用?

    底层:

    16、main()之前的过程有哪些?

    17、KVO基本原理?

    18、Swift 下的如何使用 KVC?

    19、:Swift有哪些模式匹配?

    20、objc在向一个对象发送消息时,发生了什么?

    21、静态库的原理是什么?你有没有自己写过静态编译库,遇到了哪些问题?

    22、runloop是来做什么的?runloop和线程有什么关系?主线程默认开启了runloop么?子线程呢?

    23、不手动指定autoreleasepool的前提下,一个autorealese对象在什么时刻释放?(比如在一个vc的viewDidLoad中创建

    24、不手动指定autoreleasepool的前提下,一个autorealese对象在什么时刻释放?(比如在一个vc的viewDidLoad中创建)

    25、OC完整的消息转发机制+代码实现【暴击】

    **答案:**

    由于答案太多,我做了一个PDF文档,由于简书不能上传文件,,由于文章有限,需要这些文档的,

    **点击[腾讯文档](https://docs.qq.com/doc/DVWlQam9Qd3B1cEF2)自取吧**

    ![](https://upload-images.jianshu.io/upload_images/18671920-429f6f890d37b6c4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

  • 相关阅读:
    日志处理
    md5加密
    os 模块
    time模块
    函数的进阶
    参数 返回值
    文件操作
    集合 拷贝
    linux如何更快的远程拷贝?scp,tar,rsync?
    修改内核临时端口范围
  • 原文地址:https://www.cnblogs.com/IOSkf/p/15715765.html
Copyright © 2020-2023  润新知