目前大三,准备暑假去腾讯做 iOS 开发实习,昨天接到了电话面试,(应该是那个部门的 iOS 开发组组长打来的,我也不确定),来分享一下他问的那些题目。
感觉他提问是按照我写的简历来问的,而且考虑到我是准备去做实习生,也可能问的相对简单,我根据回忆写一下,大家就凑合着看吧。
1.我看你也上线了几个项目,说一下你做过的这些东西,工程体量大概都是多大,代码有多少行? (我说多的有五六千行,少的就一千行)
2.你那个五六千行的项目是干嘛的? (一个招聘会信息聚合应用)
3.这个项目用户量有多少? (我说这个项目没多少用户,我个人用户最多是项目是 Gif Master,然后提到了用户量)
4.你怎么知道你这个 App 有多少活跃用户的?用的友盟吗? (我说我用 Flurry,通过 App 更新情况也能看出来)
5.那你跟我说说你这个 Gif Master 是干嘛的? (……说了一堆,其中重点是提到了,可以把某一条微博作为网页提出来,然后抓取这个网页中的 Gif 图,再分享到微信)
6.你是怎么把这个 Gif 图从微博上抓下来的? (因为是用的从 Github 上找到的一个现成的方法,所以我并不清楚具体的技术细节,就只说了是把整个图片作为 NSData 提取出来的)
7.你是怎么把图片分享到微信的? (用的是 mob 的 SDK,不只是分享到微信,还能分享到 QQ 和微博。因为微信原生不支持 Gif,所以是做为表情分享过去的)
8.你统计过你这个 App 的 Crash 情况吗? (我说我在用雅虎的 Flurry 平台,这里面有非常详细的数据。但是实话实话,我并没有详细地监测用户如何触发了 crash,而更多地是自己不断地试用,然后解决问题。)
9.你是如何监测这个 App 的内存情况的,以及如何处理内容泄露?
10.平时用过 WebView 吗,你在用的时候除了单纯地用它加载网页,还用过其他的吗? (我说用过 JS 交互)
11.(这里忘了他问了啥了,但是我觉得总要说点东西,而且我确实经常用 WebView,就说了下 UIWebView 和 WKWebView 在 JS 交互上的区别)
12.说一下你自己理解的 RunTime
13.知道 RunLoop 吗? (我只在 NSTimer 里面用过,所以知道这个东西,但不是很了解,就实话实说了,然后他继续问细节,我算是说出来了一半,就下一个问题了)
14.Objective-C 里面 property 写成 assign 和 weak 的区别? (这里还说了一下 weak 解决循环引用的问题)
15.知道 STL 吗(问了 List 和 Vector)
16.用过 TableView 吗,平时怎么解决 TableView 滑动卡顿问题的?
17.懂网络方面的问题吗?TCP/IP 三次握手? (我说不知道,就仅仅是平时与服务器交互用过 get post)
18.说一下 get post 的区别? (我说出来了,这时候已经开始感觉到这个人什么都会,就算他问的问题你不知道,也要随便说点相关的自己知道的,因为他一定可以把这个问题无限延伸下去)
19.你写过这么多代码了,知道设计模式吗? (我说知道 MVC 和 MVVM,然后他让我说一下单例模式 - 显然仅仅会用是不够的,这题我算答出来一半)
20.知道观察者吗? (监听事件那个 observer 嘛,这个我还是非常熟悉)
21.知道本地存储吗? (这个我也非常熟悉,巴拉巴拉说了一堆 NSUserDefaults、Plist,还有如何存储自定义类型的问题,然后他说你知道 NSUserDefaults 本质上也是用 Plist 存储的吗,我诚实地说不知道,他又说除此之外其实还有 keychain 存储的方法,我也诚实的说我知道这种方法,但我自己没用过)
22.你发布的那些 App 都是自己独立完成的吗? (我说是,但是他可能怕我撒谎,还要继续问一下)
23.说一下你平时发布 App 的流程
24.是你自己买的开发者账号吗?有 iPhone 吗? (of course~)
25.是怎么想到要做 iOS 或者 Android 开发这个行当的? (我说了我的心路历程 = = )
26.会用 C 吗? (我说我学了,但是没在实际项目中用过)
27.C 里面传递一个引用和传递一个指针有什么区别? (其实我是知道的,但是当时懵逼了,瞎说了一通,大概是说错了)
28.问了多线程、主线程阻塞、UI 更新、异步这一块的问题
29.全剧终,他说过两天还要再有人给我打电话,所以我感觉应该第一关是过了,据说下一面是总监面,如果顺利通过的话,再来写第二篇