轉(zhuǎn)載:招聘一個靠譜的 iOS

文章來源:blog.sunnyxx.com

近一年內(nèi)陸續(xù)面試了不少人了洒忧,從面試者到面試官的轉(zhuǎn)變讓我對 iOS 招聘有了更多的感受拴泌。經(jīng)過了前段時間的一大波面試担钮,我們終于找到了志同道合的小伙伴你雌,面試也暫時告一段落了】局妫總結(jié)下面試人過程中的感受焚刺,你也可以讀到我們對簡歷、算法门烂、性格乳愉、iOS 基礎(chǔ)、底層知識的看法和一些常問的面試題屯远。
一個靠譜的簡歷
簡歷非常能反映一個人的性格和水平蔓姚,相比于你在學(xué)校獲得多少獎項,工作經(jīng)歷慨丐、項目經(jīng)歷坡脐、熟悉的技術(shù)等更加關(guān)鍵,如果還有博客和一些 Github 上的項目房揭,好感度++备闲,但記得在去面試前收拾下晌端,我們真的會挨個文件 review 你的開源代碼的。我們還喜歡關(guān)注一些細(xì)節(jié)恬砂,比如簡歷里關(guān)鍵字的拼寫咧纠,看似無關(guān)緊要但很能反映出對自己的要求,經(jīng)常見一個簡歷中iOS這三個字母的拼寫就出現(xiàn) IOS泻骤、iOS漆羔、ios 三種的,非常不能忍狱掂,再列舉幾個常見問題:
iPhone -> IPHONE IPhone
Xcode -> XCode xcode
Objective-C -> Object-C
JSON -> Json
HTTP -> Http
還有演痒,注意中英文間用一個半角空格隔開,排版會漂亮很多趋惨,簡歷承載的不僅是內(nèi)容鸟顺,還有細(xì)節(jié)和態(tài)度,上面這些點往往都反映著面試者的代碼風(fēng)格器虾、做事的認(rèn)真程度讯嫂。當(dāng)然渠欺,簡歷寫的很漂亮但面聊之后發(fā)現(xiàn)啥都不會的也有盟迟,甚至見過來面試上來就跟我說簡歷是假的,就想求個面試機會這種 - -
面試
別遲到,別遲到挤悉,別遲到,重要的事說三遍巫湘。有變動提前通知 HR装悲,碰到過臨時有事沒來,和誰都不說一聲尚氛,打電話過去還要求改個時間的诀诊,這種直接拜拜。
面試時最好準(zhǔn)備紙阅嘶、筆属瓣、簡歷,可能用不上讯柔,但很能體現(xiàn)認(rèn)真程度抡蛙。有條件的話帶著 Mac 和源碼,手機中裝好所有在簡歷中出現(xiàn)的 App魂迄。
關(guān)于算法
我們是實用主義粗截,iOS 開發(fā)中很少需要自己寫復(fù)雜的算法,所以不在面試考核標(biāo)準(zhǔn)中捣炬。
代碼規(guī)范
這是一個重點考察項熊昌,曾經(jīng)在微博上發(fā)過一個風(fēng)格糾錯題:

51530583jw1eqo0v3zgr8j20qc0f2dja.jpg

也曾在面試時讓人當(dāng)場改過绽榛,槽點不少,能夠有 10 處以上修改的就基本達(dá)到標(biāo)準(zhǔn)了(處女座的人在這方面表現(xiàn)都很優(yōu)秀
一個區(qū)分度很大的面試題
考察一個面試者基礎(chǔ)咋樣婿屹,基本上問一個 @property 就夠了:
@property 后面可以有哪些修飾符灭美?
什么情況使用 weak 關(guān)鍵字,相比 assign 有什么不同选泻?
怎么用 copy 關(guān)鍵字冲粤?
這個寫法會出什么問題:@property (copy) NSMutableArray *array;
如何讓自己的類用 copy 修飾符?如何重寫帶 copy 關(guān)鍵字的 setter页眯?
這一套問題區(qū)分度比較大梯捕,如果上面的問題都能回答正確,可以延伸問更深入點的:
@property 的本質(zhì)是什么窝撵?ivar傀顾、getter、setter 是如何生成并添加到這個類中的
@protocol 和 category 中如何使用 @property
runtime 如何實現(xiàn) weak 屬性
每個人擅長的領(lǐng)域不一樣碌奉,我們一般會從簡歷上找自己寫擅長的技術(shù)聊短曾,假如自己并不是很熟,最好別寫出來或扯出來赐劣,萬一面試官剛好非常精通這里就露餡了嫉拐。
Checklist
總結(jié)過些面試題,沒堅持下去魁兼,后來把這些當(dāng) checklist婉徘,面試的時候?qū)嵲跊]話聊的時候做個提醒,語言咐汞、框架盖呼、運行機制性質(zhì)的:
[※]@property中有哪些屬性關(guān)鍵字?
[※]weak屬性需要在dealloc中置nil么化撕?
[※※]@synthesize和@dynamic分別有什么作用几晤?
[※※※]ARC下,不顯式指定任何屬性關(guān)鍵字時植阴,默認(rèn)的關(guān)鍵字都有哪些蟹瘾?
[※※※]用@property聲明的NSString(或NSArray,NSDictionary)經(jīng)常使用copy關(guān)鍵字掠手,為什么憾朴?如果改用strong關(guān)鍵字,可能造成什么問題惨撇?
[※※※]@synthesize合成實例變量的規(guī)則是什么伊脓?假如property名為foo,存在一個名為_foo的實例變量,那么還會自動合成新變量么报腔?
[※※※※※]在有了自動合成屬性實例變量之后株搔,@synthesize還有哪些使用場景?
[※※]objc中向一個nil對象發(fā)送消息將會發(fā)生什么纯蛾?
[※※※]objc中向一個對象發(fā)送消息[obj foo]和objc_msgSend()函數(shù)之間有什么關(guān)系纤房?
[※※※]什么時候會報unrecognized selector的異常?
[※※※※]一個objc對象如何進(jìn)行內(nèi)存布局翻诉?(考慮有父類的情況)
[※※※※]一個objc對象的isa的指針指向什么炮姨?有什么作用?
[※※※※]下面的代碼輸出什么碰煌?
@implementation Son : Father
{
self = [super init];
if (self) {
NSLog(@"%@", NSStringFromClass([self class]));
NSLog(@"%@", NSStringFromClass([super class]));
}
return self;
}
@end
[※※※※]runtime如何通過selector找到對應(yīng)的IMP地址舒岸?(分別考慮類方法和實例方法)
[※※※※]使用runtime Associate方法關(guān)聯(lián)的對象,需要在主對象dealloc的時候釋放么芦圾?
[※※※※※]objc中的類方法和實例方法有什么本質(zhì)區(qū)別和聯(lián)系蛾派?
[※※※※※]_objc_msgForward函數(shù)是做什么的,直接調(diào)用它將會發(fā)生什么个少?
[※※※※※]runtime如何實現(xiàn)weak變量的自動置nil洪乍?
[※※※※※]能否向編譯后得到的類中增加實例變量?能否向運行時創(chuàng)建的類中添加實例變量夜焦?為什么壳澳?
[※※※]runloop和線程有什么關(guān)系?
[※※※]runloop的mode作用是什么茫经?
[※※※※]以+ scheduledTimerWithTimeInterval...的方式觸發(fā)的timer巷波,在滑動頁面上的列表時,timer會暫定回調(diào)科平,為什么褥紫?如何解決姜性?
[※※※※※]猜想runloop內(nèi)部是如何實現(xiàn)的瞪慧?
[※]objc使用什么機制管理對象內(nèi)存?
[※※※※]ARC通過什么方式幫助開發(fā)者管理內(nèi)存部念?
[※※※※]不手動指定autoreleasepool的前提下弃酌,一個autorealese對象在什么時刻釋放?(比如在一個vc的viewDidLoad中創(chuàng)建)
[※※※※]BAD_ACCESS在什么情況下出現(xiàn)儡炼?
[※※※※※]蘋果是如何實現(xiàn)autoreleasepool的妓湘?
[※※]使用block時什么情況會發(fā)生引用循環(huán),如何解決乌询?
[※※]在block內(nèi)如何修改block外部變量榜贴?
[※※※]使用系統(tǒng)的某些block api(如UIView的block版本寫動畫時),是否也考慮引用循環(huán)問題妹田?
[※※]GCD的隊列(dispatch_queue_t)分哪兩種類型唬党?
[※※※※]如何用GCD同步若干個異步調(diào)用鹃共?(如根據(jù)若干個url異步加載多張圖片,然后在都下載完成后合成一張整圖)
[※※※※]dispatch_barrier_async的作用是什么驶拱?
[※※※※※]蘋果為什么要廢棄dispatch_get_current_queue霜浴?
[※※※※※]以下代碼運行結(jié)果如何?
- (void)viewDidLoad { [super viewDidLoad]; NSLog(@"1"); dispatch_sync(dispatch_get_main_queue(), ^{ NSLog(@"2"); }); NSLog(@"3"); }
[※※]addObserver:forKeyPath:options:context:各個參數(shù)的作用分別是什么蓝纲,observer中需要實現(xiàn)哪個方法才能獲得KVO回調(diào)阴孟?
[※※※]如何手動觸發(fā)一個value的KVO
[※※※]若一個類有實例變量NSString *_foo,調(diào)用setValue:forKey:時税迷,可以以foo還是_foo作為key永丝?
[※※※※]KVC的keyPath中的集合運算符如何使用?
[※※※※]KVC和KVO的keyPath一定是屬性么箭养?
[※※※※※]如何關(guān)閉默認(rèn)的KVO的默認(rèn)實現(xiàn)类溢,并進(jìn)入自定義的KVO實現(xiàn)?
[※※※※※]apple用什么方式實現(xiàn)對一個對象的KVO露懒?
[※※]IBOutlet連出來的視圖屬性為什么可以被設(shè)置成weak?
[※※※※※]IB中User Defined Runtime Attributes如何使用闯冷?
[※※※]如何調(diào)試BAD_ACCESS錯誤
[※※※]lldb(gdb)常用的調(diào)試命令?
這些小題可以做為討論的入口懈词,根據(jù)面試者的回答再繼續(xù)聊下去蛇耀。其中一些題比較底層,是留給屌屌的面試者或者試探評級用的坎弯,一般情況并不是重點的考察內(nèi)容纺涤。
業(yè)務(wù)能力
畢竟平常的工作內(nèi)容不是 runtime、runloop抠忘,不怎么會用到底層的黑魔法撩炊,80% 的時間都是和搭建頁面、寫業(yè)務(wù)邏輯崎脉、網(wǎng)絡(luò)請求打交道拧咳。
要求面試者能夠熟練構(gòu)建 UI,我會找一個面試者做過的頁面讓他分析下頁面結(jié)構(gòu)囚灼、約束或者 frame 布局的連法和計算方法骆膝;有時也會讓面試者說說 UITableView 常用的幾個 delegate 和 data source 代理方法,動態(tài) Cell 高度計算什么的灶体;接下來阅签,在手機里隨便找一個 App 的頁面,讓面試者當(dāng)場說說如果是他寫應(yīng)該用哪些 UI 組件和布局方式等蝎抽。問幾個問題后就能大概了解業(yè)務(wù)能力了政钟,我們這邊重度使用 IB 和 AutoLayout,假如面試者依然使用代碼碼 UI 也到?jīng)]關(guān)系,有“從良”意愿就很好~
程序架構(gòu)和一些設(shè)計模式如果面試者自己覺得還不錯的話也會聊聊养交,但跪求別說 Singleton 了衷戈,用的越多對水平就越表示懷疑。對設(shè)計模式自信的我一般問一個問題层坠,抽象工廠模式在 Cocoa SDK 中哪些類中體現(xiàn)殖妇?
架構(gòu)上 MVC 還是 MVVM 還是 MVP 神馬的到是可以聊聊各自的見解,反正也沒有正確答案破花,只要別搞的太離譜就行谦趣,比如有的人說網(wǎng)絡(luò)請求和數(shù)據(jù)庫的操作最好放到 UIView 的子類里面干。
網(wǎng)絡(luò)請求座每、數(shù)據(jù)庫等各家都有成熟的封裝前鹅,基本知道咋用就行。除此之外峭梳,我們還會順帶的問下除了 iOS 開發(fā)外舰绘,還會什么其他編程語言、或者熟悉哪種腳本語言和 Terminal 操作等葱椭,甚至還問問是如何翻墻- -捂寿,相信這些技能都是很重要的。
性格
大家都是寫程序的孵运,沒啥必要用奇怪的秦陋、很難的問題難為對方,更關(guān)鍵的還是性格治笨,和 Team 的風(fēng)格是不是和的來驳概。一個心態(tài)良好的面試者需要有個平常心,不傲嬌也不跪舔旷赖,表達(dá)要正常顺又,經(jīng)常遇到問一個問題后一兩分鐘一直處于沉思狀態(tài),一句話不說等孵,交流像擠牙膏一樣稚照,很是憋屈;還有非常屌屌的流济,明明不懂仍然強行據(jù)理力爭锐锣,鎮(zhèn)得住面試官也罷腌闯,撞槍口上就別怪不客氣了- - 绳瘟。決定要不要一個人基本上聊 5 分鐘就可以確定了,喜歡水到渠成的感覺姿骏,看對眼了擋都擋不住糖声。
招聘告一段落,后面將會有更精彩的事情發(fā)生。最后蘸泻,再次感謝大家的支持和對我的信任琉苇。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市悦施,隨后出現(xiàn)的幾起案子并扇,更是在濱河造成了極大的恐慌,老刑警劉巖抡诞,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件穷蛹,死亡現(xiàn)場離奇詭異,居然都是意外死亡昼汗,警方通過查閱死者的電腦和手機肴熏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來顷窒,“玉大人蛙吏,你說我怎么就攤上這事⌒” “怎么了鸦做?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長谓着。 經(jīng)常有香客問我馁龟,道長,這世上最難降的妖魔是什么漆魔? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任坷檩,我火速辦了婚禮,結(jié)果婚禮上改抡,老公的妹妹穿的比我還像新娘矢炼。我一直安慰自己,他們只是感情好阿纤,可當(dāng)我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布句灌。 她就那樣靜靜地躺著,像睡著了一般欠拾。 火紅的嫁衣襯著肌膚如雪胰锌。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天藐窄,我揣著相機與錄音资昧,去河邊找鬼。 笑死荆忍,一個胖子當(dāng)著我的面吹牛格带,可吹牛的內(nèi)容都是我干的撤缴。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼叽唱,長吁一口氣:“原來是場噩夢啊……” “哼屈呕!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起棺亭,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤虎眨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后镶摘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體专甩,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年钉稍,在試婚紗的時候發(fā)現(xiàn)自己被綠了涤躲。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡贡未,死狀恐怖种樱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情俊卤,我是刑警寧澤嫩挤,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站消恍,受9級特大地震影響岂昭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜狠怨,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一约啊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧佣赖,春花似錦恰矩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至俩檬,卻和暖如春萎胰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背棚辽。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工技竟, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人晚胡。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓灵奖,卻偏偏與公主長得像嚼沿,于是被迫代替她去往敵國和親估盘。 傳聞我的和親對象是個殘疾皇子瓷患,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容