因为一些缘由,最近打算换一份工做,主要目标是大型的互联网公司。在经历了上周三天小公司试水后,昨天终于开始正式的面试之旅了(其实接到面试通知的就几家公司😰)。ios
试水结果:问的问题都不深,收获了几个本身没准备到的问题,以及面试的状态。感受本身把本身坑了,不该该去面创业公司的,而后就获得2家创业公司offer,出师不利😪。git
这是一次面基之旅。github
这是微博好友 移动开发小冉 他们公司。收获不少,小冉问的问题也很深刻,而后我就被虐了- -。一些知识点没有准备到:好比 “运行时改变方法实现的方法名”😂,没记住- -。面试
而后中午吃饭的时候又赶忙看了一遍(方法名),还有上午没准备到的点。objective-c
附一张小冉公司等电梯图算法
好多人啊😂😂😂设计模式
16号中午被HR通知 晚上7-7.30 二面,说是CEO面试。数组
到了以后跟CEO聊了互联网金融,我问了下公司产品方向,风控等一些问题。聊得很愉快,而后CEO说给offer😁😁😁浏览器
百度是咱们老大内推的,上周约的面试。缓存
大部分是基础,并且问的比较细,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号楼(面完走时拍的)
惋惜没有拍到百度的办公室,表示很喜欢一我的一个桌子的布局😍😍😍
腾讯是微博上 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。表示开始刷算法题。。。😭😭😭
还有就是感受此次百度和腾讯的面试题都不是太难,对比 不会开机的男孩 的百度面试,感受不是一个级别的。
附一张图记念
由于上午腾讯的面试经历,中午在麦当劳吃完午餐后直奔车库咖啡去刷算法题(由于麦当劳的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又打电话过来讲,笔试题三天时间能够吗?我算了下时间,日后推了下,说周一给她回邮件。
笔试题
每道题都不简单啊😭😭😭,准备周末试着写写。
最后若是您以为我分享的面试题、回答有问题或者个人回答不是最优解,欢迎你们评论,一块儿讨论哈~😄😄😄