iOS面试3

转:http://studentdeng.github.io/blog/2014/02/11/baidu-interview/

百度面试

FEB 11TH, 2014 | COMMENTS

百度移动云可穿戴部门的面试经历,面试官都非常热情友好,一上来到弄的我挺不好意思的。下面记录一下自己的面试过程,因为我真的没啥面试经验,需要总结下。

1面

  • Objective C runtime library:Objective C的对象模型,block的底层实现结构,消息发送,消息转发,这些都需要背后C一层的描述,内存管理。
  • Core Data:中多线程中处理大量数据同步时的操作。
  • Multithreading:什么时候处理多线程,几种方式,优缺点。
  • Delegate, Notification,KVO, other 优缺点

runtime有一点追问,category,method 的实现机制,class的载入过程。 1面整体感觉不错,40分钟不到,感觉回答的还可以。被通知一会儿二面。

2面

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

  1. 设计一个progress bar解决方案,追问到 Core Graphic、CGPath、maskLayer。
  2. 设计一个popup view被追问到 keyWindow、UIWindow的layer、UIView hierarchy。
  3. 从设计模式的角度分析Delegate、Notification、KVO的区别。被追问到自己写的library和开源的项目中用到哪些设计模式,为什么使用,有哪些好处和坏处,现在能否改进。
  4. 算是问题3的追问,设计一个方案来检测KVO的同步异步问题。willChange和 didChange的不同点,然后被追问到有没有其他地方也有类似情况,被追问到Core Data 中falut object。
  5. 这个是问题4的追问,设计一个KVO系统。
  6. Multithreading,什么时候采用Multithreading方案,以及理由。追问到系统还有哪些在后台运行的thread,被追问到view life cycle、iOS6之后的不同以及内存管理。
  7. Multithreading中常常遇到的问题,追问到死锁,优先级翻转,线程池等。
  8. 百度有一个亿级别的APP需要统计用户行为的日志系统。不使用数据库,只是使用普通文件,设计一个系统。被追问到内存映射文件。这个问题本来是服务器的问题,我表示从来没做过,回答很瞎。

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

最后还补充了几个小问题

  • 自己对可穿戴设备的感受
  • 自己如果进入这个team,自己准备做那方面的事情
  • 为什么创业,自己未来规划

一会被告知3面,但是因为太晚,约到次日下午3面。

3面

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

  • 为什么做Windows Mobile
  • 为什么改iOS
  • 为什么来百度
  • 为什么iPhone 可以成功,那些吸引你
  • 如何看待AppStore 现在的生态圈

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

  • 选择的时候都是经过深思熟虑的
  • 有野心,wanna make a difference

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

总结

整体还是挺尴尬的,几乎所有的知识点都是1,2年前积累的,13年积累的东西基本上没有,都是一些虚的东西。 2面挺好的,暴露了自己不少问题,设计模式那部分几乎没有概念了。

最后

面试通过,我个人觉得2面我的问题在思考设计模式上面少,另外在window hierarchy 上面有不足。设计 KVO 上面在 didChange上面考虑不足。这些都是被当场戳穿的。 有一点疑虑的是整个面试中并没有问到Core Animation。这个还是我蛮喜欢的部分。Anyway 个人很喜欢追问的方式,很容易考察出来理解的深度和广度。

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

时间: 2024-10-15 10:08:20

iOS面试3的相关文章

iOS面试

高德iOS面试整理(顺序有些乱,一面跪了) 1.简单自我介绍 2.聊c语言 3.两个数比较大小不用if和三目运算符 4.int转化为bit数组 5.多态和隐藏 6.const 和define区别 7.String类实现拷贝构造函数注意事项,是否有必要重写 数据结构 1.树层次遍历 2.链表删除 iOS 1.通知和delegate 2.ViewController 生命周期,  手动代码View添加 3.iOS 的click事件的响应过程 4.通知和KVO比较 5.ARC和非ARC (问到静态分析

iOS 面试问题的解答

关于一些 iOS 面试问题的解答 2015年04月26日 这篇 post 主要是对知乎上 iOS程序员的问题列表 的回答, 也算是对自己已有的知识进行整理. 如果你对本篇 post 中的回答有所疑问, 可以在下面留言. 如果有问题, 我一定会修改的 :-) 问题以及回答 1. 什么是 ARC? (ARC 是为了解决什么问题而诞生的?) ARC 是 Automatic Reference Counting 的缩写, 即自动引用计数. 这是苹果在 iOS5 中引入的内存管理机制. Objective

C C++ OC iOS面试重点问题(一)

C C++ OC iOS面试重点问题(一) 1.字符串常量需要加\0 2.逻辑运算 位操作(经典:实现两个数的交换) 3.关键字 4.引用和指针的区别和联系 5.如何引用一个已经定义过的全局变量?  答:可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变变量,假定你将那个变量写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错. 5.extern关键字的用法? 答:ext

[转] 上级向的十个iOS面试问题

上级向的十个iOS面试问题 转自 http://onevcat.com/2013/04/ios-interview/ 不管对于招聘和应聘来说,面试都是很重要的一个环节,特别对于开发者来说,面试中的技术问题环节不仅是企业对应聘者技能和积累的考察,也是一个开发者自我检验的好机会.对于iOS和Mac开发来说,因为本事还算比较新,企业对于这方面的开发者需求也比较大,所以面试时的要求可能并不是很高,一般能知道一些Cocoa和OC的基本知识也就认为可以了.但是对于一个希望拥有技术力基础的企业的iOS或者Ma

李洪强iOS面试一般性问题

iOS面试一般性问题,学会这些拿offer几率提升90%! 面试题中有一些一般性的问题,通常是会问到的.面试iOS应聘者时,切入点很重要,不同的切入点会导致不同的结果,没有找到合适的切入点也无法对应聘者有一个全面的了解.所以下面的面试问题更多的是提供方向,没有固定的答案,而且可以根据应聘者的回应引出更多有意思深层次的讨论. 注意:以下问题的参考答案均为笔者所答,不代表正确,问题答案因人而异,请根据自己的实际情况回答,若认为不合理,请在评论中指出.下面所有的参考答案,都是笔者站在面试官的角度来分析

iOS面试宝典

前言 本篇文章总结多年来iOS开发人员面试常问到的问题,也希望能够带领刚入门的同志们走入职场.在准备去面试之前,你觉得自己到底有几斤几两呢?看看下面的问题吧!!! 新手必看 下面的文章是笔者推荐大家阅读的: iOS学习路线 iOS开发必懂 做好面试的准备 在收到通知到xxxx公司面试前,我们应该好好阅读下面的文章,做好充分的准备,不打无准备之仗. 我也面试过不少同学,在与他们的交谈中可以看出准备不足,面对一个个简单的问题,答非所问或者说了半天没有说到点上,于是给面试官一种菜鸟的形象. 本人只是本

ios面试技术要点

iOS面试 技术总结点(可参考):多线程 运行时 runloop app框架 几种动画编程 jsonmodel原理 sdwebimage原理 masonry怎么应用及原理 应用框架有哪些 说一下Facebook的flux框架 混合app原理 怎么优化内存 怎么用instruments优化动画效果  KVC/KVO的理解及运用 本地存储的几种方式CoreData问的最多https://www.zhihu.com/question/19604641 这里面很多问题都问过了https://www.zh

ios 面试基础问题

转自http://www.jianshu.com/p/9c83145bb4ba iOS面试 字数2396 阅读2097 评论4 喜欢93 1.#import和#include的区别,@class代表什么? @class一般用于头文件中需要声明该类的某个实例变量的时候用到,在m文件中还是需要使用#import 而#import比起#include的好处就是不会引起重复包含 2.谈谈Object-C的内存管理方式及过程? 1.当你使用new,alloc和copy方法创建一个对象时,该对象的保留计数器

iOS 面试集锦2

4.写一个setter方法用于完成@property (nonatomic,retain)NSString *name,写一个setter方法用于完成@property(nonatomic,copy)NSString *name - (void) setName:(NSString*) str { [str retain]; [name release]; name = str; } - (void)setName:(NSString *)str { id t = [str copy]; [na

iOS 面试(高德)

高德iOS面试整理(顺序有些乱) 确实挺对不住面试官的,视频面试,我的这边始终没声音. 1. - (void)testFun { CGRect a ; //-.. } a的内存在堆上,还是栈上? 2.. 如何把一个 CGRect类型的数据放在堆上去? 你能够想到多少种方法? 3.  CGRect a ; [a retain]; 是否能通过编译 4.autorelease pool有用过吗? 对于auto release pool,同一个thread 可以存在多个auto release pool