代码改变生活

<转>2015-7-14面试题

由于一些原因,最近打算换一份工作,主要目标是大型的互联网公司。在经历了上周三天小公司试水后,昨天终于开始正式的面试之旅了(其实接到面试通知的就几家公司😰)。

试水结果:问的问题都不深,收获了几个自己没准备到的问题,以及面试的状态。感觉自己把自己坑了,不应该去面创业公司的,然后就得到2家创业公司offer,出师不利😪。

勃勃科技有限公司 - 7.14 上午

这是一次面基之旅。

这是微博好友 移动开发小冉 他们公司。收获很多,小冉问的问题也很深入,然后我就被虐了- -。一些知识点没有准备到:比如 “运行时改变方法实现的方法名”😂,没记住- -。

然后中午吃饭的时候又赶紧看了一遍(方法名),还有上午没准备到的点。

附一张小冉公司等电梯图

好多人啊😂😂😂

二面

16号中午被HR通知 晚上7-7.30 二面,说是CEO面试。

到了之后跟CEO聊了互联网金融,我问了下公司产品方向,风控等一些问题。聊得很愉快,然后CEO说给offer😁😁😁

百度 - 7.14 下午

百度是我们老大内推的,上周约的面试。

一面

大部分是基础,而且问的比较细,Runtime也问到一些,最后问到一个设计问题,一个算法问题😂。

问题大概有这些:

1.static关键字作用

2.ARC下 NSString 属性用 copy 和 strong 修饰的区别

3.对上面字符串的追问,问直接定义一个字符串的变量的,会有默认的修饰符,问是什么? 这,表示没有想过😭。然后说自己不知道,说了一个

4.手写MRC下一个NSString *a 的setter 方法

5.+load 和 +initialize 两个方法的用法

6.loadView方法的作用

7.通知,代理,KVO的区别,以及通知的多线程问题。通知的多线程问题,之前微博引起过讨论,然后 南峰子_老驴 大神写过一篇博客Notification与多线程, 自己印象比较深刻。

8.怎么调试EXC_BAD_ACCESS错误

9.block的用法,以及怎么防止循环引用

10.Runtime 项目用到没。说用到了,把上午没说出来的三个方法名说了一遍😁

11.SEL 和 IMP 的区别,SEL没记清…😭

12.JSON 转对象的时候,一个NSString的属性,如果后台返回对应这个属性的类型不是NSString,而是其他的数据类型,怎么办。回答说加判断,随即又被追问到,如果所有的字符串都可能会出现这个问题,怎么办。PS:(怎么办?如果真是这样,就把后台打一顿,问他还能不能愉快的玩耍了啊!!!😂,开玩笑~(≧▽≦)/~啦啦啦)。

13.设计一个图片缓存机制。具体问到怎么存储,用什么当key值,回答说用图片的url,然后追问如果会有cookie,怎么办,表示回答的很瞎…😢。然后又问一个展示图片的tableView,如果其中一个cell对应的图片下载很慢,这时对cell是删除操作,怎么处理。

14.算法题:仿照浏览器的收藏网页功能(一个书签可能对应一个文件夹,子文件夹中书签可能也是对应一个文件夹)。用OC在手机上实现:收藏、快速查找、移动功能(移动前顺序是1,2,3,4,5,6 。移动 6 到2 ,顺序变成 1,6,2,3,4,5)。

二面

大多数是项目问题,还有一个网络问题,一个算法问题😂。

网络问题:在网络差的情况下,特定的一个网络请求可能会耗时2-4秒,此时怎么做提高用户体验。

算法题:说 预约会议室,会有n个团队预约当天会议室,时间各不相同,求最少需要几个会议室。比如:1预约的时间是[9-11], 2预约的时间是[10-12], 3预约的时间是[12-14], 此时会议最小个数是2个。

最后

二面面完之后,说让回去等通知。

总结:面试官很nice,会引导你去回答问题。然后就是自己一些深层的理解还是不够,算法题答得很瞎…😭😭😭,自己准备的也没用上…😭😭😭

附三张图纪念

百度大厦

百度科技园1号楼 Hello World IT咖啡

百度科技园1号楼(面完走时拍的)

可惜没有拍到百度的办公室,表示很喜欢一个人一个桌子的布局😍😍😍

腾讯 - 7.15 上午

腾讯是微博上 FreeSelfishSoul 童鞋帮忙内推的😘😘,是地图事业部。这里打个小广告,想去腾讯工作的小伙伴都可以找 FreeSelfishSoul 内推,各个城市各个岗位都可以,详情请查看 “她” 的置顶微博。

一面

大部分是基础以及项目问题,还有一些引申出来的比较有意思的点,最后是2个算法题😭😭😭。

例举一些比较好的问题

1.frame 与 center bounds的关系,frame 和 bounds 的宽高一直相等吗?

2.数据持有化的方法,以及它们的使用场景(结合项目)。然后说到对象归档的时候,被问到如果被归档的对象所在的类在之后的版本添加了新的属性,版本更新时,怎么做处理。当时项目用到对象归档的时候没有考虑过这个问题,因为我们项目是每次版本更新时,主动把归档所存储的对象置为nil,然后让用户重新登录,再重新归档对象。面试完又思考了下这个问题,感觉还是很好做的,个人感觉如果在这种情况下,App主动发一次请求然后更新归档的对象 或者 重新创建一个新对象然后把归档的老对象的属性赋值给新对象,再归档新对象。不知道对不对,欢迎大家指正。

3.App的内存和性能优化。说到了tableView的卡帧,然后被问到遇到的和了解的卡帧的原因以及解决的办法。

4.MVC 和 MVVM 的区别

5.问到项目中的动画效果实现,然后追问到怎么中途停止动画?表示答错了,我回答用- (void)removeAllAnimations; 和 - (void)removeAnimationForKey:(NSString *)key;方法😭😭😭

6.算法题:都是用C和OC手写代码的。1.反转链表 2.二分查找法。😭😭😭2个很基础的算法题,反转链表不会写= =,二分查找法没写完。这2个算法题答完之后,自己就知道结果了,应该是没戏了,感觉好可惜。

最后

被通知没有2面后,和面试官在门口交流了一会,大体聊的是我司,以及互联网金融,最后说有事再电话联系。

总结

基础算法题没有准备,挂的很可惜。然后内推的童鞋告诉我面试官的评价:代码实现能力比较差,二分查找和反转链表基本数据结构都写不出来。

我想毕竟不问算法的可能只有 我就叫Sunny怎么了 了把——招聘一个靠谱的 iOS。表示开始刷算法题。。。😭😭😭

还有就是感觉这次百度和腾讯的面试题都不是太难,对比 不会开机的男孩 的百度面试,感觉不是一个级别的。

附一张图纪念 

36氪 - 7.15 下午

前序

因为上午腾讯的面试经历,中午在麦当劳吃完午饭后直奔车库咖啡去刷算法题(因为麦当劳的wifi实在是太慢了)。刷了的算法题有:各种排序、二分查找法、由数组创建一个链表、反转链表、链表排序、求两个集合的交际、给定n个整数(可能为负数)组成的序列a[1],a[2],…,a[n],求该序列某个字段a[i]+a[i+1]+…+a[j]的和的最大值。希望自己运气好,下午面36氪时能碰到一个😂😂😂

车库咖啡会有一个午间半小时的分享活动,今天是第一次听到(因为之前就去过一次车库咖啡),然后其中有一个人上去讲他的项目,他首先问大家有木有信仰😂,等一系列精神的话题,然后主持人就打断他说“打断一下,咱们这个午间分享是的项目,经历等”,然后他说“这就是我的项目”,主持人说“您的项目是做关于精神方面的啊。。。”(估计主持人也头一次见),那个人就开始介绍他的项目,说是一个关于精神的游戏,在游戏里面可以提升人物的精神。。。 个人感觉很有意思(其实我没听懂- -😂)。还有一个在校大学生的分享= = ,说是做学校跟企业对接招聘的项目,现在每个月营业额有3w,感觉好厉害。

附图

中关村创业大街

车库咖啡

回到正题上来。

36氪不是内推的,是HR在智联上筛选到我的简历,然后先打电话跟我沟通是否有意愿去36氪,再说把简历给技术过,之后再打电话约我面试。

一面

一面的时候,来了三个人,尼玛,当时我就有点吓尿了😨,这是干啥的节奏。后来那个主面介绍说其他两人是过来跟“高手”交流一下的,表示不是“高手”啊😭😭😭。然后他们拿出手机打开我司的App(很赞- -),问我一些App里面的动画实现,以及还谈到我的Github上面的库,以及我对 iOS-Core-Animation-Advanced-Techniques 翻译 的贡献等。感觉能来36氪面试,Github启到了一定作用。

问的问题也是基础的,以及项目的,不过也有自己没有准备到的问题。

列举一些问题:

1.通知中心的实现原理(或者问 自己创建一个通知中心)

2.Size Classes 具体使用(没有深入准备)

3.SDWebImage 下载图片的逻辑

4.问我算法和数据结构都还记得吗?我说不记得了。。。大家就随便扯了会面试时考算法到底有木有用,我谈到了对 BAT为什么面试都会问到算法 的理解。虽然自己感觉有些算法题并没有什么卵用😂😂,不问算法和数据结构,什么都好说😭😭

二面

二面的面试官是团队的技术负责人,聊的技术点还是蛮多的,有一些问题还是很不错的。

问到的一些知识点:

1.项目架构

2.@property 后面跟的修饰符。nonatomic 和 atomic 的区别,这个凭记忆回答的,答的不好。weak的作用说完之后,问到苹果是怎么做的,让weak修饰的变量在释放时置为nil,大概猜了一下实现原理。最后幸好没有被追问到 为什么对一个nil 对象发消息 不会 crash?😂😂 。表示自己才知道这篇文章 Objective-C: Logging Messages to Nil ,还没有看。

3.数据持有化的几种方式。其中说到对象归档时被问到 如果归档的类 会频繁的增加属性,这时怎么做。因为之前用到过,回答说用Runtime 获取类的属性列表,然后for循环进行归档和解档。然后问到为什么可以这样做,谈到了OC的Class类机制,随后又谈到Category为什么可以添加方法,不可以添加实例变量。

4.blcok 怎么修改 block外的变量。追问到static 修饰的变量 和 全局变量 的区别。又问到 __block 修饰的变量 block 为什么可以修改。随后谈到了block的底层实现,说到MRC 和ARC 下block的类型。最后问到MRC下 怎么主动创建_NSConcreteGlobalBlock,_NSConcreteStackBlock,_NSConcreteMallocBlock 三个类型的block。

5.问用到的设计模式。回答:单例,观察者,工厂,享元。然后就开始问工厂模式在项目中用到的具体地方。然后在纸上画了一个大概,类似于网易新闻的新闻界面,被问到如果有很多元素时怎么办?回答说用类似tablViewCell的重用机制来解决。具体可以参考 Glow 技术团队博客 的第一篇文章 UIScrollView 实践经验

6.问到 iOS项目的持续集成 ,说项目没有用到过,但是看到过有关持续集成的文章Sam_Lau_Dev 简书中的 iOS项目的持续集成与管理[译]

7.提问阶段,我问了他为什么从腾讯离职之后选择了36氪,以及36氪iOS团队的情况和业务发展等

三面

三面的CTO出去了,不知道什么时候回来,所以没有三面了😂😂😂。

告诉我等通知。

总结

感觉一面和二面都很愉快,可能是面试官跟我年纪相仿的原因把,还有一个更重要的原因是没有问到算法和数据结构 😂😂😂。个人感觉36氪的办公环境和技术氛围很好,是一个很互联网的公司。

附图两张 

最后

今天(7.17)HR发邮件说,有些方面跟公司需求不太匹配。挂了。

知乎 - 待定

知乎通过朋友的朋友内推的。

当时还在36氪面试收到知乎HR的电话和邮件。邮件中附带笔试题,后来HR又打电话过来说,笔试题三天时间可以吗?我算了下时间,往后推了下,说周一给她回邮件。

笔试题

每道题都不简单啊😭😭😭,准备周末试着写写。

后续

最后如果您觉得我分享的面试题、回答有问题或者我的回答不是最优解,欢迎大家评论,一起讨论哈~😄😄😄

posted on 2015-07-19 12:13  张大少。  阅读(510)  评论(0编辑  收藏  举报

导航

繁星纵变 智慧永恒