非科班iOS程序員面試題參考答案

前幾天看到一篇文章非科班iOS開(kāi)發(fā)者的面試總結(jié)锡搜,記錄了一個(gè)非科班iOS程序員面試時(shí)候的困惑,從側(cè)面反映出當(dāng)前行業(yè)的現(xiàn)狀瞧掺。

iOS行業(yè)在經(jīng)歷了過(guò)去幾年的爆發(fā)期后耕餐,現(xiàn)在到了一個(gè)相對(duì)冷靜的時(shí)期,一個(gè)良幣驅(qū)逐劣幣辟狈、去偽存真的階段肠缔。只有持續(xù)的專注和付出,才能夠在激烈的競(jìng)爭(zhēng)中脫穎而出上陕,成為強(qiáng)者桩砰。正如狄更斯所言,“這是一個(gè)最壞的時(shí)代释簿,也是最好的時(shí)代” 亚隅。

對(duì)于這些面試題,不要死記硬背庶溶,應(yīng)該舉一反三煮纵,深刻理解實(shí)現(xiàn)機(jī)制(這也是科班和非科班的區(qū)別之一)。面試題答案只是參考偏螺,如有錯(cuò)誤請(qǐng)指正行疏。

如果讓你實(shí)現(xiàn)屬性的weak,如何實(shí)現(xiàn)的套像?

runtime對(duì)注冊(cè)的類會(huì)進(jìn)行布局酿联,對(duì)于weak修飾的對(duì)象會(huì)放入一個(gè)hash表中。用weak指向的對(duì)象內(nèi)存地址作為key,當(dāng)此對(duì)象的引用計(jì)數(shù)為0的時(shí)候會(huì)dealloc贞让,假如weak指向的對(duì)象內(nèi)存地址是a周崭,那么就會(huì)以a為鍵在這個(gè)weak表中搜索,找到所有以a為鍵的weak對(duì)象喳张,從而設(shè)置為nil续镇。

如果讓你來(lái)實(shí)現(xiàn)屬性的atomic,如何實(shí)現(xiàn)销部?

- (void)setCurrentImage:(UIImage *)currentImage
{
    @synchronized(self) {
        if (_currentImage != currentImage) {
            [_currentImage release];
            _currentImage = [currentImage retain];
            // do something
        }
    }
}
- (UIImage *)currentImage
{
    @synchronized(self) {
        return _currentImage;
    }
}

KVO為什么要?jiǎng)?chuàng)建一個(gè)子類來(lái)實(shí)現(xiàn)摸航?

Runtime動(dòng)態(tài)生成一個(gè)NSKVONotifying_Class子類,可以動(dòng)態(tài)地添加willChangeValueForKeydidChangeValueForKey觀察所有屬性的變化

類結(jié)構(gòu)體的組成舅桩,isa指針指向了什么酱虎?(這里應(yīng)該將元類和根元類也說(shuō)一下)

isa:是一個(gè)Class 類型的指針. 每個(gè)實(shí)例對(duì)象有個(gè)isa的指針,他指向?qū)ο蟮念悾鳦lass里也有個(gè)isa的指針, 指向meteClass(元類)江咳。元類保存了類方法的列表逢净。當(dāng)類方法被調(diào)用時(shí),先會(huì)從本身查找類方法的實(shí)現(xiàn)歼指,如果沒(méi)有爹土,元類會(huì)向他父類查找該方法。同時(shí)注意的是:元類(meteClass)也是類踩身,它也是對(duì)象胀茵。元類也有isa指針,它的isa指針最終指向的是一個(gè)根元類(root meteClass).根元類的isa指針指向本身,這樣形成了一個(gè)封閉的內(nèi)循環(huán)挟阻。


image.png

RunLoop有幾種事件源琼娘?有幾種模式?

Runloop(消息循環(huán))的目的:

 1.    基本作用:保持程序的持續(xù)運(yùn)行,保證程序不退出
 2.    處理App中的各種事件(比如觸摸事件,定時(shí)器事件,Selector事件)
 3.    節(jié)省CPU資源,提高程序性能:該做事時(shí)做事,該休息是休息
  • 事件源:輸入源和定時(shí)源
  • 模式:有4種模式 第一種就是默認(rèn)模式: 也就是一般的方法調(diào)用使用的模式附鸽。第二種就是跟蹤模式: 用于scrollview追蹤觸摸滑動(dòng), 使其不受其他模式的影響, 可以共存脱拼。 第三種就是當(dāng)程序啟動(dòng)時(shí)第一次開(kāi)啟的運(yùn)行循環(huán)模式。第四種的話一般開(kāi)發(fā)中沒(méi)聽(tīng)到過(guò)坷备。沒(méi)有去研究過(guò)熄浓。其實(shí)還有一種占位模式。不過(guò)沒(méi)什么太大用處省撑。

方法列表的數(shù)據(jù)結(jié)構(gòu)是什么赌蔑?

struct objc_method_list
{
  struct objc_method_list*  method_next; /* 這個(gè)變量用來(lái)鏈接另一個(gè)單獨(dú)的方法鏈表 */
  int            method_count;            /* 結(jié)構(gòu)中定義的方法數(shù)量 */
  struct objc_method method_list[1];      /* 可變長(zhǎng)度的結(jié)構(gòu) */
};

分類是如何實(shí)現(xiàn)的?它為什么會(huì)覆蓋掉原來(lái)的方法竟秫?

因?yàn)榉诸惙椒尤腩愔羞@一操作是在運(yùn)行期系統(tǒng)加載分類時(shí)完成的娃惯,運(yùn)行期系統(tǒng)會(huì)把分類中所實(shí)現(xiàn)的每一個(gè)方法都加入類的方法列表中

  • category的實(shí)例方法、協(xié)議以及屬性添加到類上
  • category的類方法和協(xié)議添加到類的metaclass上

category的方法被放到了新方法列表的前面肥败,而原來(lái)類的方法被放到了新方法列表的后面趾浅,所以category的方法會(huì)“覆蓋”掉原來(lái)類的同名方法愕提。

參考文章


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市潮孽,隨后出現(xiàn)的幾起案子揪荣,更是在濱河造成了極大的恐慌筷黔,老刑警劉巖往史,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異佛舱,居然都是意外死亡椎例,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門请祖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)订歪,“玉大人,你說(shuō)我怎么就攤上這事肆捕∷⒔” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵慎陵,是天一觀的道長(zhǎng)眼虱。 經(jīng)常有香客問(wèn)我,道長(zhǎng)席纽,這世上最難降的妖魔是什么捏悬? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮润梯,結(jié)果婚禮上过牙,老公的妹妹穿的比我還像新娘。我一直安慰自己纺铭,他們只是感情好寇钉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著舶赔,像睡著了一般扫倡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上顿痪,一...
    開(kāi)封第一講書(shū)人閱讀 51,554評(píng)論 1 305
  • 那天镊辕,我揣著相機(jī)與錄音,去河邊找鬼蚁袭。 笑死征懈,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的揩悄。 我是一名探鬼主播卖哎,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了亏娜?” 一聲冷哼從身側(cè)響起焕窝,我...
    開(kāi)封第一講書(shū)人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎维贺,沒(méi)想到半個(gè)月后它掂,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡溯泣,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年虐秋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片垃沦。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡客给,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出肢簿,到底是詐尸還是另有隱情靶剑,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布池充,位于F島的核電站桩引,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏纵菌。R本人自食惡果不足惜阐污,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望咱圆。 院中可真熱鬧笛辟,春花似錦、人聲如沸序苏。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)忱详。三九已至围来,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間匈睁,已是汗流浹背监透。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留航唆,地道東北人胀蛮。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像糯钙,于是被迫代替她去往敵國(guó)和親粪狼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子退腥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

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

  • 出題者簡(jiǎn)介: 孫源(sunnyxx),目前就職于百度再榄,負(fù)責(zé)百度知道 iOS 客戶端的開(kāi)發(fā)工作狡刘,對(duì)技術(shù)喜歡刨根問(wèn)底和...
    戈多_于勒閱讀 1,798評(píng)論 0 5
  • 還差幾分鐘十一點(diǎn),晨妞的燈亮著困鸥,美其名曰復(fù)習(xí)政治嗅蔬。作為一個(gè)在學(xué)生時(shí)代,各個(gè)場(chǎng)合偷看過(guò)小說(shuō)的老手窝革,我知道她在偷偷看小...
    我是張老師閱讀 226評(píng)論 0 0
  • 一直想找機(jī)會(huì)寫(xiě)一些什么虐译,特別是在經(jīng)歷了這些那些的事情之后,我也可以腆著臉說(shuō)我也是一個(gè)有故事的人了吴趴,其實(shí)誰(shuí)沒(méi)有故事呢...
    依然丶恣意閱讀 251評(píng)論 0 0
  • 總是這樣錯(cuò)過(guò) 遇見(jiàn) 離開(kāi) 而后不再見(jiàn) 最后徒留想念 山呢 為何還未看見(jiàn) 見(jiàn)到 停下 喔 原來(lái)早有人家 累啊 不...
    我的早安閱讀 345評(píng)論 0 0