iOS 2019年招人面試題以及答案

看到一篇文章蜕便,里邊木有面試題答案卸亮,就小總結(jié)了一下。傳送門

初次編寫玩裙,如有不對之處請下方留言共同學(xué)習兼贸,拜謝了~!3越Α溶诞!

希望對大家有所幫助,對我自己有所幫助

話不多說直接正題:

1决侈、我們說的Objective-C是動態(tài)運行時語言是什么意思螺垢?
      首先,這個問題涉及到兩個概念赖歌,運行時和多態(tài)枉圃。
      簡單來說,運行時機制使我們直到運行時才去決定一個對象的類別庐冯,以及調(diào)用該類別對象指定方法孽亲。 
      好吧,上邊是我復(fù)制的展父。我認為就是OC的動態(tài)特性返劲。主要是:動態(tài)類型(如id)玲昧,動態(tài)綁定,動態(tài)加載篮绿。之所以叫動態(tài)孵延,
就是必須運行到時(run time)才會去做一些事情。

2亲配、講一下MVC和MVVM尘应,MVP?
   好吧這個就是沒吃過豬肉還沒見過豬跑嘛吼虎?我最常用的是MVC菩收。^^.
   簡單來說MVC(Model View Controller)就是模型(Model)- 視圖(View)-控制器(Controller)的縮寫,
Model是用來處理數(shù)據(jù)鲸睛,View是用來展示界面娜饵,Cotroller是用來調(diào)節(jié)他們兩者之間的交互。
這個是最常用的官辈。但是View和Model之間的直接交互箱舞,就導(dǎo)致了View和Model之間的耦合性比較大。
   MVP (Model View Presenter)是MVC模式的變種拳亿,使用Presenter代替了Controller晴股,而且改變了數(shù)據(jù)流向
View和Model之間不再直接進行交互,而是通過Presenter來進行的肺魁〉缦妫總體來說Presenter同時持有View和Model。
優(yōu)點:整體框架分層清晰鹅经,降低了耦合度寂呛。
缺點:需要加入Presenter來作為協(xié)調(diào)Model和View的橋梁,同時也導(dǎo)致了Presenter的臃腫瘾晃。在維護起來不方便贷痪。
   MVVM(Model View View-Model ViewModel)其實是對MVP的一種改進,他將Presenter替換成ViewModel蹦误,
并通過雙向數(shù)據(jù)綁定來實現(xiàn)視圖和數(shù)據(jù)的交互劫拢。
優(yōu)點:使其數(shù)據(jù)流向更加清晰(腦補一下就是云對雨,x對風强胰,大陸對長空)舱沧。一一對應(yīng)起來。
缺點:這種架構(gòu)沒有統(tǒng)一的實現(xiàn)方式偶洋,每個人各有特色熟吏。我接觸過得各有不同。而且有一定的學(xué)習成本涡真。(不懂得人去學(xué)習也得一周左右吧分俯,不抬杠肾筐,學(xué)過之后再來回話哆料。"大牛請忽略")

3缸剪、為什么代理要用weak?代理的delegate和dataSource有什么區(qū)別东亦?block和代理的區(qū)別?
  3.1 因為用weak修飾的對象引用計數(shù)不會+1.好吧杏节。說白了就是不會造成循環(huán)引用。0.0~典阵!
  3.2 delegate偏重于用戶交互的回調(diào)奋渔。dataSource偏重于數(shù)據(jù)的回調(diào)。
  3.3 首先共同點都是實現(xiàn)回調(diào)的方式壮啊。算了直白點說就是一個一對一嫉鲸,一個一對多。一個編寫簡單歹啼,一個實現(xiàn)繁復(fù)玄渗。
對于什么時候用block什么時候用代理簡單來說就是公共接口,方法較多狸眼,回調(diào)類型較多可以選擇用代理藤树。對于異步和簡單的回調(diào)用block好一點。

4拓萌、屬性的實質(zhì)是什么岁钓?包括哪幾個部分?屬性默認的關(guān)鍵字都有哪些微王?@dynamic關(guān)鍵字和@synthesize關(guān)鍵字是用來做什么的屡限?
  好吧。這個題很low炕倘,但是很考驗人囚霸。不關(guān)心這些一般不知道
4.1 屬性的實質(zhì),包含哪些:
  @property = ivar + getter + setter;
??利用class_copyPropertyList 查看類的所有屬性
??利用class_copyIvarList查看類的所有成員變量
??利用class_copyMethodList查看類的所有方法
4.2 屬性默認的關(guān)鍵字有哪些   (好吧激才,我也不知道拓型。本體底部會有傳送門)
  @dynamic告訴編譯器,屬性的setter與getter方法由用戶自己實現(xiàn)。
  @synthesize的語義是如果你沒有手動實現(xiàn)setter方法和getter方法瘸恼,那么編譯器會自動為你加上這兩個方法劣挫。

4.2請看這里 屬性的默認關(guān)鍵字有哪些


5、NSString為什么要用copy關(guān)鍵字东帅,如果用strong會有什么問題压固?
  copy修飾的是深拷貝,改變源字符串靠闭,不影響copy的屬性內(nèi)容帐我。
  strong修飾的屬性就隨著源字符串改變而改變了坎炼。
  這些都是說修飾可變類型字符串。當然不可變的就隨意發(fā)揮了拦键。盡量還是用copy谣光。因為什么呢?因為如果你來回轉(zhuǎn)換呢芬为?哈哈


7萄金、如何令自己所寫的對象具有拷貝功能?
  實現(xiàn)NSCoping協(xié)議。如果自定義的對象分為可變版本與不可變版本媚朦,那么就要同時實現(xiàn) NSCopying與 NSMutableCopying協(xié)議氧敢。

8、簡述kvo询张、kvc孙乖、Delegate、通知份氧,他們之間的區(qū)別唯袄?
  1、代理的效率比通知要高半火。
  2越妈、代理比通知更加直接。
  3钮糖、kvo和通知梅掠,代理一樣,都是負責通信的店归。kvo和通知沒有返回值阎抒,而代理有返回值。
  4消痛、代理是一對一且叁,通知,kvo是一對多秩伞。

9逞带、include與#import的區(qū)別?#import與@class的區(qū)別纱新?
  怎么說呢展氓, include 是C預(yù)言中用來引用的關(guān)鍵字。反正我是沒用過
  #import 是OC中用來代替 include的關(guān)鍵字脸爱。#import確保了同一個文件只能被導(dǎo)入一次遇汞,從而別面了使用 #include容易引起的重復(fù)導(dǎo)入問題。
  @class只是告訴編譯器,后邊遇到的這名稱是類名空入,至于這個類是如何實現(xiàn)的暫時不考慮络它,用來解決線程鎖死的問題。
  就相當于一個軍隊遇見了另外一個軍對歪赢,打不打不無所謂化戳,然后兩軍衣服不一樣」焯剩縱橫過去迂烁。

10看尼、nonatomic和atomic的區(qū)別递鹉?atomic是絕對的線程安全么?為什么藏斩?如果不是躏结,那應(yīng)該如何實現(xiàn)?
  nonatomic和atomic用來決定編譯器生成的getter和setter操作是否為原子狰域。
  atomic不是絕對的線程安全媳拴。因為什么呢,因為atomic的本意是指屬性的存取方法是線程安全的兆览,不是保證整個對象是線程安全的屈溉。

如果不是,那應(yīng)該如何實現(xiàn)抬探?傳送門

是不是很枯燥無味子巾?嗯,你被辭職了嘛小压?工作找好了嘛线梗?


11、Objective-C與C怠益、C+++之間的聯(lián)系和區(qū)別仪搔?
  OC與C的區(qū)別:OC中兼容C兩者可以混合編程。OC是面向?qū)ο蟮尿呃危蓄惪具郑瑢ο蟮母拍睿珻卻木有抢呆。
  C是面向過程的語言煮嫌。
  OC與C++的區(qū)別:
  1、繼承镀娶。OC不可以多重繼承立膛,C++卻可以
  2、函數(shù)調(diào)用。OC需要通過消息傳遞機制調(diào)用函數(shù)宝泵,C++卻可以直接調(diào)用
  3好啰、定型。OC是動態(tài)定型儿奶。C++是等著你去找他框往。是靜態(tài)類型。
  4闯捎、接口椰弊。OC采用的是protocol協(xié)議。C++采用虛函數(shù)的形式瓤鼻。
  5秉版、方法重載。OC不允許有同一個類中出現(xiàn)兩個相同的方法名茬祷。C++中允許兩個方法名相同清焕。
  好吧。其實我也不知道祭犯,我百度的秸妥。 -_-!

12、UICollectionView自定義layout如何實現(xiàn)沃粗?
  額粥惧。這個問題,不知道怎么說好最盅。如何自定義突雪。不就是繼承UICollectionViewFlowLayout類實現(xiàn)字節(jié)想要實現(xiàn)的東西嗎?

13檩禾、進程和線程的區(qū)別二庵?同步異步的區(qū)別尖滚?并行和并發(fā)的區(qū)別?
  這個問題怎么說呢,一步一步說
  進程和線程的區(qū)別:進程是資源分配和調(diào)度的一個獨立單元馁害。就相當于是公交車調(diào)度站芽死。一個進程里邊可以有多個線程霸旗,
一個進程里邊至少有一個線程圣絮,就相當于一個公交車調(diào)度站里最少有一輛公交車,也可以有多個公交車灌灾。
  同步異步的區(qū)別:同步是進程之間的關(guān)系不是相互排斥臨界資源的關(guān)系搓译,而是相互依賴的關(guān)系。
  異步是和同步相互對立的锋喜,同步是順序執(zhí)行些己,而異步是相互獨立的豌鸡。
  并行:并行是同是發(fā)生多個并發(fā)事件,具有并發(fā)的含義段标,但并發(fā)不一定并行涯冠。
這個并行并發(fā)我也不太懂,應(yīng)該是這樣的逼庞。不對的話請自行百度蛇更。

14、線程間通信赛糟?
  比如說派任,一個線程傳遞數(shù)據(jù)給另一個線程。
        一個線程執(zhí)行完特定的任務(wù)后璧南,轉(zhuǎn)到另一個線程繼續(xù)執(zhí)行掌逛。
  比如最常見的sd圖片加載。(腦補畫面)好了穆咐,完成颤诀。


15字旭、GCD的一些常用的函數(shù)对湃?(group,barrier遗淳,信號量拍柒,線程同步)
  下邊有傳送門,我常用的就是定時器屈暗,回到主線程拆讯,開一個分線程。搞一個runLoop养叛。等等

出現(xiàn)吧种呐,皮卡丘

16、如何訪問并修改一個類的私有屬性弃甥?
  1爽室、通過KVC訪問并修改。
  2淆攻、通過runtime訪問并修改阔墩。

通過kvc訪問并修改 通過runtime訪問并修改


17、數(shù)據(jù)持久化的幾個方案瓶珊?
  1啸箫、plist文件 2、preference 3伞芹、歸檔 4忘苛、SQLite3(fmdb) 5、CoreData 

18、說一下AppDelegate的幾個方法扎唾?從后臺到前臺調(diào)用了哪些方法蜀肘?第一次啟動調(diào)用了哪些方法?從前臺到后臺調(diào)用了哪些方法稽屏?
  這個問題沒什么說的扮宠,全靠自己平時積累。其實這個問題問了無非就是考驗一下你有沒有看過appDelegate而已狐榔。有沒有做過啟動頁坛增,有沒有處理過其他事件。
  自行回去學(xué)習薄腻。

19收捣、NSCache優(yōu)于NSDictionary的幾點?
 1庵楷、 NSCache是線程安全的罢艾。
 2、當內(nèi)存不足時NSCach會自動釋放內(nèi)存尽纽。
 3咐蚯、NSCache可以指定緩存的限額,當緩存超出限額自動釋放內(nèi)存

20弄贿、知不知道Designated Initializer春锋?使用它的時候有什么需要注意的問題?
這個問題可能好多人都不知道差凹,也不理解他是啥意思期奔,其實這個就是(指定初始化器)如果不懂,不知道危尿,不清楚呐萌。
而你又很想知道是撒,請讀下文谊娇。

耐心讀完吧肺孤。親


21、實現(xiàn)description方法能取到什么效果邮绿?
  布吉島渠旁。知道的請留言告知。謝謝船逮。我理解的是用NSLog輸出的時候會調(diào)用description的方法顾腊。具體能得到什么效果,自己試驗一下吧挖胃。
22杂靶、OC使用什么機制管理對象內(nèi)存梆惯?
  這題應(yīng)該考的是OC的內(nèi)存管理,ARC和MRC吗垮。經(jīng)過排查我看到了說是通過retainCount來管理的垛吗。布吉島,我感覺這兩點答上來應(yīng)該不會差烁登。

OKG犹搿!饵沧!這個初級面試題基本就是這樣锨络。后續(xù)會有中級,高級的狼牺。如果有不同意見羡儿,或見解,請?zhí)岢鍪窃浚」餐M步掠归。謝謝!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末悄泥,一起剝皮案震驚了整個濱河市虏冻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌码泞,老刑警劉巖兄旬,帶你破解...
    沈念sama閱讀 223,002評論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異余寥,居然都是意外死亡,警方通過查閱死者的電腦和手機悯森,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評論 3 400
  • 文/潘曉璐 我一進店門宋舷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人瓢姻,你說我怎么就攤上這事祝蝠。” “怎么了幻碱?”我有些...
    開封第一講書人閱讀 169,787評論 0 365
  • 文/不壞的土叔 我叫張陵绎狭,是天一觀的道長。 經(jīng)常有香客問我褥傍,道長儡嘶,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,237評論 1 300
  • 正文 為了忘掉前任恍风,我火速辦了婚禮蹦狂,結(jié)果婚禮上誓篱,老公的妹妹穿的比我還像新娘。我一直安慰自己凯楔,他們只是感情好窜骄,可當我...
    茶點故事閱讀 69,237評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著摆屯,像睡著了一般邻遏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上虐骑,一...
    開封第一講書人閱讀 52,821評論 1 314
  • 那天党远,我揣著相機與錄音,去河邊找鬼富弦。 笑死沟娱,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的腕柜。 我是一名探鬼主播济似,決...
    沈念sama閱讀 41,236評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼盏缤!你這毒婦竟也來了砰蠢?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,196評論 0 277
  • 序言:老撾萬榮一對情侶失蹤唉铜,失蹤者是張志新(化名)和其女友劉穎台舱,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體潭流,經(jīng)...
    沈念sama閱讀 46,716評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡竞惋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,794評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了灰嫉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拆宛。...
    茶點故事閱讀 40,928評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖讼撒,靈堂內(nèi)的尸體忽然破棺而出浑厚,到底是詐尸還是另有隱情,我是刑警寧澤根盒,帶...
    沈念sama閱讀 36,583評論 5 351
  • 正文 年R本政府宣布钳幅,位于F島的核電站,受9級特大地震影響炎滞,放射性物質(zhì)發(fā)生泄漏敢艰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,264評論 3 336
  • 文/蒙蒙 一厂榛、第九天 我趴在偏房一處隱蔽的房頂上張望盖矫。 院中可真熱鬧丽惭,春花似錦、人聲如沸辈双。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,755評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽湃望。三九已至换衬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間证芭,已是汗流浹背瞳浦。 一陣腳步聲響...
    開封第一講書人閱讀 33,869評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留废士,地道東北人叫潦。 一個月前我還...
    沈念sama閱讀 49,378評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像官硝,于是被迫代替她去往敵國和親矗蕊。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,937評論 2 361

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

  • 最全的iOS面試題及答案 iOS面試小貼士 ———————————————回答好下面的足夠了-----------...
    zweic閱讀 2,708評論 0 73
  • 1.寫一個NSString類的實現(xiàn) +(id)initWithCString:(c*****t char *)nu...
    韓七夏閱讀 3,778評論 2 37
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,113評論 1 32
  • 感賞彩羽能夠堅持到校學(xué)習氢架。 感賞彩羽能夠認真完成老師布置的作業(yè)傻咖,寫的字越來越端正。 感賞彩祺能夠天天堅持讀英語岖研。 ...
    無心言歡閱讀 171評論 0 0
  • 最近感覺發(fā)現(xiàn)了一個秘密卿操,有一群生活在安排中的人,比如讓你看鋼琴孙援,然后真的只是看鋼琴害淤。 然后工作在這群人眼里也就是件...
    夢行動物閱讀 347評論 0 0