iOS面試知識點(一)

現在進入本篇的正題。本篇的面試題是我認為比較好的iOS開發基礎知識點,希望大家看過這后在理解的基礎上掌握而不是死記硬背。死記硬背很快也會忘記的。


1 iOS基礎

1.1 父類實現深拷貝時,子類如何實現深度拷貝。父類沒有實現深拷貝時,子類如何實現深度拷貝。

  • 1 深拷貝和淺拷貝的區別:淺拷貝是指針的拷貝,對一個對象的淺拷貝,相當于對一個指針的復制,即兩個指針同時指向一個內存地址,對象銷毀后兩個指針應該同時滯空。深拷貝是對一個對象進行拷貝,相當于對對象進行復制,產生一個新的對象,那么就有兩個指針分別指向兩個對象。當一個對象改變或者被銷毀后拷貝出來的新的對象不受影響。
  • 2 實現深拷貝需要實現NSCoying協議,實現- (id)copyWithZone:(NSZone *)zone 方法。當對一個property屬性含有copy修飾符的時候,在進行賦值操作的時候實際上就是調用這個方法。父類實現深拷貝之后,子類只要重寫copyWithZone方法,在方法內部調用父類的copyWithZone方法,之后實現自己的屬性的處理。父類沒有實現深拷貝,子類除了需要對自己的屬性進行處理,還要對父類的屬性進行處理。
    1.2 KVO,NSNotification,delegate及block區別
  • 1 KVO就是cocoa框架實現的觀察者模式,一般同KVC搭配使用,通過KVO可以監測一個值的變化,比如View的高度變化。是一對多的關系,一個值的變化會通知所有的觀察者。
  • 2 NSNotification是通知,也是一對多的使用場景。在某些情況下,KVO和NSNotification是一樣的,都是狀態變化之后告知對方。NSNotification的特點,就是需要被觀察者先主動發出通知,然后觀察者注冊監聽后再來進行響應,比KVO多了發送通知的一步,但是其優點是監聽不局限于屬性的變化,還可以對多種多樣的狀態變化進行監聽,監聽范圍廣,使用也更靈活。
  • 3 delegate 是代理,就是我不想做的事情交給別人做。比如狗需要吃飯,就通過delegate通知主人,主人就會給他做飯、盛飯、倒水,這些操作,這些狗都不需要關心,只需要調用delegate(代理人)就可以了,由其他類完成所需要的操作。所以delegate是一對一關系。
  • 4 block是delegate的另一種形式,是函數式編程的一種形式。使用場景跟delegate一樣,相比delegate更靈活,而且代理的實現更直觀。
    KVO一般的使用場景是數據,需求是數據變化,比如股票價格變化,我們一般使用KVO(觀察者模式)。delegate一般的使用場景是行為,需求是需要別人幫我做一件事情,比如買賣股票,我們一般使用delegate。
    Notification一般是進行全局通知,比如利好消息一出,通知大家去買入。delegate是強關聯,就是委托和代理雙方互相知道,你委托別人買股票你就需要知道經紀人,經紀人也不要知道自己的顧客。Notification是弱關聯,利好消息發出,你不需要知道是誰發的也可以做出相應的反應,同理發消息的人也不需要知道接收的人也可以正常發出消息。
    1.3 將一個函數在主線程執行的4種方法
    EB9B160A-713A-40DC-917E-74AFAF3DA160.png

    1.4 如何讓計時器調用一個類方法
    計時器只能調用實例方法,但是可以在這個實例方法里面調用靜態方法。
    使用計時器需要注意,計時器一定要加入RunLoop中,并且選好model才能運行。scheduledTimerWithTimeInterval方法創建一個計時器并加入到RunLoop中所以可以直接使用。
    如果計時器的repeats選擇YES說明這個計時器會重復執行,一定要在合適的時機調用計時器的invalid。不能在dealloc中調用,因為一旦設置為repeats 為yes,計時器會強持有self,導致dealloc永遠不會被調用,這個類就永遠無法被釋放。比如可以在viewDidDisappear中調用,這樣當類需要被回收的時候就可以正常進入dealloc中了。
    1.5 如何重寫類方法
  • 1 在子類中實現一個同基類名字一樣的靜態方法
  • 2 在調用的時候不要使用類名調用,而是使用[self class]的方式調用。原理,用類名調用是早綁定,在編譯期綁定,用[self class]是晚綁定,在運行時決定調用哪個方法。
    1.6、多線程在實際現實中有哪些應用?(網絡操作和大量圖片處理不算)
  • 1 通常耗時的操作都會放在子線程里處理,然后再回到主線程來顯示。下面舉幾個例子:
  • 2 我們要從數據庫提取數據還要將數據分組后顯示,那么就會開個子線程來處理,處理完成后才去刷新UI顯示。
  • 3 拍照后,會在子線程處理圖片,完成后才回到主線程來顯示圖片。拍照出來的圖片太大了,因此要做處理。
  • 4 音頻、視頻處理會在子線程來操作
  • 5 文件較大時,文件操作會在子線程中處理
  • 6 做客戶端與服務端數據同步時,會在后臺閑時自動同步
    **1.7readwrite,readonly,assign,retain,copy,nonatomic屬性的作用 **
    @property是一個屬性訪問聲明,擴號內支持以下幾個屬性:
  • 1 getter=getterName,setter=setterName,設置setter與getter的方法名
  • 2 readwrite,readonly,設置可供訪問級別
  • 3 assign,setter方法直接賦值,不進行任何retain操作,為了解決原類型與環循引用問題
  • 4 retain,setter方法對參數進行release舊值再retain新值,所有實現都是這個順序
  • 5 copy,setter方法進行Copy操作,與retain處理流程一樣,先舊值release,再Copy出新的對象,retainCount為1。這是為了減少對上下文的依賴而引入的機制。
    copy是在你不希望a和b共享一塊內存時會使用到。a和b各自有自己的內存.
    1.7、什么是UDP和TCP的區別是什么?
    TCP 的全稱是傳輸控制協議,這種協議可以提供面向連接的、可靠的、點到點的通信。
    UDP 的全稱是用戶數據包協議。他可以提供非連接的不可靠的點懂啊多點的通信,是osi參考模型中一種無連接的傳輸層協議,提供面向事務的簡單的不可靠信息傳輸,_IETF RFC 768 是UDP 的正式規范;
    選擇何種協議,看程序注重那個方面,可靠抑或快速。
    TCP/IP 建立連接的過程?
    在TCP/IP 協議中,TCP協議提供可靠的連接服務,采用三次握手建立連接;
    第一次握手:建立連接時,客戶端發送連接請求到服務器,并進入SYN_SEND狀態,等待服務器確認;
    第二次握手:服務器收到客戶端連接請求,向客戶端發送允許連接應答,此時服務器進入SYN_RECV狀態;
    第三次握手:客戶端收到服務器的允許連接應答,向服務器發送確認,客戶端和服務器進入通信狀態,完成三次握手。
    (所謂的三次握手,就是要有三次連接信息的發送、接收過程。TCP連的建立需要進行三次連接信息的發送、接收。)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,963評論 6 542
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,348評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,083評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,706評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,442評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,802評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,795評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,983評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,542評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,287評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,486評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,030評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,710評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,116評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,412評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,224評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,462評論 2 378

推薦閱讀更多精彩內容

  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結起來就是把...
    Dove_iOS閱讀 27,197評論 30 471
  • 1.OC的類可以多重繼承嗎?可以實現多個接口嗎?要想實現類似多重繼承如何實現?答:OC不可以實現多重繼承。可以實現...
    歐辰_OSR閱讀 2,008評論 0 30
  • 父類實現深拷貝時,子類如何實現深度拷貝。父類沒有實現深拷貝時,子類如何實現深度拷貝。? 深拷貝同淺拷貝的區別:淺拷...
    JonesCxy閱讀 1,040評論 1 7
  • ? 深拷貝同淺拷貝的區別:淺拷貝是指針拷貝,對一個對象進行淺拷貝,相當于對指向對象的指針進行復制,產生一個新的指向...
    WSGNSLog閱讀 1,282評論 0 1
  • 淀粉攢肉。油,中溫,辣椒。 雞蛋糕 中高火6分鐘。微波爐專用的塑料小盒,蓋蓋漏眼。放點蔥花和鹽,油。 疙瘩湯 涼水...
    歷奇閱讀 283評論 0 0