近一年內(nèi)陸續(xù)面試了不少人了,從面試者到面試官的轉(zhuǎn)變讓我對(duì) iOS 招聘有了更多的感受。經(jīng)過(guò)了前段時(shí)間的一大波面試,我們終于找到了志同道合的小伙伴,面試也暫時(shí)告一段落了。總結(jié)下面試人過(guò)程中的感受,你也可以讀到我們對(duì)簡(jiǎn)歷、算法、性格、iOS 基礎(chǔ)、底層知識(shí)的看法和一些常問(wèn)的面試題。
一個(gè)靠譜的簡(jiǎn)歷
簡(jiǎn)歷非常能反映一個(gè)人的性格和水平,相比于你在學(xué)校獲得多少獎(jiǎng)項(xiàng),工作經(jīng)歷、項(xiàng)目經(jīng)歷、熟悉的技術(shù)等更加關(guān)鍵,如果還有博客和一些 github 上的項(xiàng)目,好感度++,但記得在去面試前收拾下,我們真的會(huì)挨個(gè)文件 review 你的開源代碼的。我們還喜歡關(guān)注一些細(xì)節(jié),比如簡(jiǎn)歷里關(guān)鍵字的拼寫,看似無(wú)關(guān)緊要但很能反映出對(duì)自己的要求,經(jīng)常見(jiàn)一個(gè)簡(jiǎn)歷中 iOS 這三個(gè)字母的拼寫就出現(xiàn) IOS、iOS、ios 三種的,非常不能忍,再列舉幾個(gè)常見(jiàn)問(wèn)題:
iPhone -> IPHONE
Xcode -> XCode xcode
Objective-C -> Object-C
JSON -> Json
HTTP -> Http
還有,注意中英文間用一個(gè)半角空格隔開,排版會(huì)漂亮很多,簡(jiǎn)歷承載的不僅是內(nèi)容,還有細(xì)節(jié)和態(tài)度,上面這些點(diǎn)往往都反映著面試者的代碼風(fēng)格、做事的認(rèn)真程度。當(dāng)然,簡(jiǎn)歷寫的很漂亮但面聊之后發(fā)現(xiàn)啥都不會(huì)的也有,甚至見(jiàn)過(guò)來(lái)面試上來(lái)就跟我說(shuō)簡(jiǎn)歷是假的,就想求個(gè)面試機(jī)會(huì)這種 - -
面試
別遲到,別遲到,別遲到,重要的事說(shuō)三遍。有變動(dòng)提前通知 HR,碰到過(guò)臨時(shí)有事沒(méi)來(lái),和誰(shuí)都不說(shuō)一聲,打電話過(guò)去還要求改個(gè)時(shí)間的,這種直接拜拜。
面試時(shí)最好準(zhǔn)備紙、筆、簡(jiǎn)歷,可能用不上,但很能體現(xiàn)認(rèn)真程度。有條件的話帶著 Mac 和源碼,手機(jī)中裝好所有在簡(jiǎn)歷中出現(xiàn)的 App。
關(guān)于算法
我們是實(shí)用主義,iOS 開發(fā)中很少需要自己寫復(fù)雜的算法,所以不在面試考核標(biāo)準(zhǔn)中。
代碼規(guī)范
這是一個(gè)重點(diǎn)考察項(xiàng),曾經(jīng)在微博上發(fā)過(guò)一個(gè)風(fēng)格糾錯(cuò)題:
也曾在面試時(shí)讓人當(dāng)場(chǎng)改過(guò),槽點(diǎn)不少,能夠有 10 處以上修改的就基本達(dá)到標(biāo)準(zhǔn)了(處女座的人在這方面表現(xiàn)都很優(yōu)秀
一個(gè)區(qū)分度很大的面試題
考察一個(gè)面試者基礎(chǔ)咋樣,基本上問(wèn)一個(gè) @property 就夠了:
@property 后面可以有哪些修飾符?
什么情況使用 weak 關(guān)鍵字,相比 assign 有什么不同?
怎么用 copy 關(guān)鍵字?
這個(gè)寫法會(huì)出什么問(wèn)題:@property (copy) NSMutableArray *array;
如何讓自己的類用 copy 修飾符?如何重寫帶 copy 關(guān)鍵字的 setter?
這一套問(wèn)題區(qū)分度比較大,如果上面的問(wèn)題都能回答正確,可以延伸問(wèn)更深入點(diǎn)的:
@property 的本質(zhì)是什么?ivar、getter、setter 是如何生成并添加到這個(gè)類中的
@protocol 和 category 中如何使用 @property
runtime 如何實(shí)現(xiàn) weak 屬性
每個(gè)人擅長(zhǎng)的領(lǐng)域不一樣,我們一般會(huì)從簡(jiǎn)歷上找自己寫擅長(zhǎng)的技術(shù)聊,假如自己并不是很熟,最好別寫出來(lái)或扯出來(lái),萬(wàn)一面試官剛好非常精通這里就露餡了。
Checklist
總結(jié)過(guò)些面試題,沒(méi)堅(jiān)持下去,后來(lái)把這些當(dāng) checklist,面試的時(shí)候?qū)嵲跊](méi)話聊的時(shí)候做個(gè)提醒:
【※】@property中有哪些屬性關(guān)鍵字?
【※】weak屬性需要在dealloc中置nil么?
【※※】@synthesize和@dynamic分別有什么作用?
【※※※】ARC下,不顯示指定任何屬性關(guān)鍵字時(shí),默認(rèn)的關(guān)鍵字都有哪些?
【※※※】用@property聲明的NSString(或NSArray,NSDictionary)經(jīng)常使用copy關(guān)鍵字,為什么?如果改用strong關(guān)鍵字,可能造成什么問(wèn)題?
【※※※】@synthesize合成實(shí)例變量的規(guī)則是什么?假如property名為foo,存在一個(gè)名為_foo的實(shí)例變量,那么還會(huì)自動(dòng)合成新變量么?
【※※※※※】在有了自動(dòng)合成屬性實(shí)例變量之后,@synthesize還有哪些使用場(chǎng)景?
【※※】objc中向一個(gè)nil對(duì)象發(fā)送消息將會(huì)發(fā)生什么?
【※※※】objc中向一個(gè)對(duì)象發(fā)送消息[obj foo]和objc_msgSend()函數(shù)之間有什么關(guān)系?
【※※※】什么時(shí)候會(huì)報(bào)unrecognized selector的異常?
【※※※※】一個(gè)objc對(duì)象如何進(jìn)行內(nèi)存布局?(考慮有父類的情況)
【※※※※】一個(gè)objc對(duì)象的isa的指針指向什么?有什么作用?
【※※※※】下面的代碼輸出什么?
@implementation Son : Father
- (id)init
{
? ?self = [super init];
? ?if (self) {
? ? ? ?NSLog(@"%@", NSStringFromClass([self class]));
? ? ? ?NSLog(@"%@", NSStringFromClass([super class]));
? ?}
? ?return self;
}
@end
【※※※※】runtime如何通過(guò)selector找到對(duì)應(yīng)的IMP地址?(分別考慮類方法和實(shí)例方法)
【※※※※】使用runtime Associate方法關(guān)聯(lián)的對(duì)象,需要在主對(duì)象dealloc的時(shí)候釋放么?
【※※※※※】objc中的類方法和實(shí)例方法有什么本質(zhì)區(qū)別和聯(lián)系?
【※※※※※】_objc_msgForward函數(shù)是做什么的,直接調(diào)用它將會(huì)發(fā)生什么?
【※※※※※】runtime如何實(shí)現(xiàn)weak變量的自動(dòng)置nil?
【※※※※※】能否向編譯后得到的類中增加實(shí)例變量?能否向運(yùn)行時(shí)創(chuàng)建的類中添加實(shí)例變量?為什么?
【※※※】runloop和線程有什么關(guān)系?
【※※※】runloop的mode作用是什么?
【※※※※】以+ scheduledTimerWithTimeInterval...的方式觸發(fā)的timer,在滑動(dòng)頁(yè)面上的列表時(shí),timer會(huì)暫定回調(diào),為什么?如何解決?
【※※※※※】猜想runloop內(nèi)部是如何實(shí)現(xiàn)的?
【※】objc使用什么機(jī)制管理對(duì)象內(nèi)存?
【※※※※】ARC通過(guò)什么方式幫助開發(fā)者管理內(nèi)存?
【※※※※】不手動(dòng)指定autoreleasepool的前提下,一個(gè)autorealese對(duì)象在什么時(shí)刻釋放?(比如在一個(gè)vc的viewDidLoad中創(chuàng)建)
【※※※※】BAD_ACCESS在什么情況下出現(xiàn)?
【※※※※※】蘋果是如何實(shí)現(xiàn)autoreleasepool的?
【※※】使用block時(shí)什么情況會(huì)發(fā)生引用循環(huán),如何解決?
【※※】在block內(nèi)如何修改block外部變量?
【※※※】使用系統(tǒng)的某些block api(如UIView的block版本寫動(dòng)畫時(shí)),是否也考慮引用循環(huán)問(wèn)題?
【※※】GCD的隊(duì)列(dispatch_queue_t)分哪兩種類型?
【※※※※】如何用GCD同步若干個(gè)異步調(diào)用?(如根據(jù)若干個(gè)url異步加載多張圖片,然后在都下載完成后合成一張整圖)
【※※※※】dispatch_barrier_async的作用是什么?
【※※※※※】蘋果為什么要廢棄dispatch_get_current_queue?
【※※※※※】以下代碼運(yùn)行結(jié)果如何?
- (void)viewDidLoad
{
? ?[super viewDidLoad];
? ?NSLog(@"1");
? ?dispatch_sync(dispatch_get_main_queue(), ^{
? ? ? ?NSLog(@"2");
? ?});
? ?NSLog(@"3");
}
【※※】addObserver:forKeyPath:options:context:各個(gè)參數(shù)的作用分別是什么,observer中需要實(shí)現(xiàn)哪個(gè)方法才能獲得KVO回調(diào)?
【※※※】如何手動(dòng)觸發(fā)一個(gè)value的KVO
【※※※】若一個(gè)類有實(shí)例變量NSString *_foo,調(diào)用setValue:forKey:時(shí),可以以foo還是_foo作為key?
【※※※※】KVC的keyPath中的集合運(yùn)算符如何使用?
【※※※※】KVC和KVO的keyPath一定是屬性么?
【※※※※※】如何關(guān)閉默認(rèn)的KVO的默認(rèn)實(shí)現(xiàn),并進(jìn)入自定義的KVO實(shí)現(xiàn)?
【※※※※※】apple用什么方式實(shí)現(xiàn)對(duì)一個(gè)對(duì)象的KVO?
【※※】IBOutlet連出來(lái)的視圖屬性為什么可以被設(shè)置成weak?
【※※※※※】IB中User Defined Runtime Attributes如何使用?
【※※※】如何調(diào)試BAD_ACCESS錯(cuò)誤
【※※※】lldb(gdb)常用的調(diào)試命令?
這些小題可以做為討論的入口,根據(jù)面試者的回答再繼續(xù)聊下去。
性格
大家都是寫程序的,沒(méi)啥必要用奇怪的、很難的問(wèn)題難為對(duì)方,更關(guān)鍵的還是性格,和 Team 的風(fēng)格是不是和的來(lái)。一個(gè)心態(tài)良好的面試者需要有個(gè)平常心,不傲嬌也不跪舔,表達(dá)要正常,經(jīng)常遇到問(wèn)一個(gè)問(wèn)題后一兩分鐘一直處于沉思狀態(tài),一句話不說(shuō),交流像擠牙膏一樣,很是憋屈;還有非常屌屌的,明明不懂仍然強(qiáng)行據(jù)理力爭(zhēng),鎮(zhèn)得住面試官也罷,撞槍口上就別怪不客氣了- - 。決定要不要一個(gè)人基本上聊 5 分鐘就可以確定了,喜歡水到渠成的感覺(jué),看對(duì)眼了擋都擋不住。
招聘告一段落,后面將會(huì)有更精彩的事情發(fā)生。最后,再次感謝大家的支持和對(duì)我的信任。
sunxx大神招聘的建議 (轉(zhuǎn))
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 給時(shí)間一點(diǎn)留白,停住腳步,暫且思量??砷L(zhǎng)可短,可柔可剛。 穿越過(guò)去,看看自己,顧盼生離。腳踩蓮花,心深是海。 給身...
- 今天周日,上午渾渾噩噩睡了大半個(gè)上午,決定下午不能在家里耗著了。在家附近找到個(gè)甜品店,環(huán)境甚佳基本沒(méi)人??戳艘幌挛?..
- 經(jīng)常有讀者讓我推薦電影,思前想后,今天先推薦這十部。 我們每個(gè)人的一生,都會(huì)經(jīng)歷青春、愛(ài)情、奮斗、孤獨(dú)……生命有限...