標籤:物件類型 機制 archive nsthread 電腦網路 ios photo -o cocos2d
題
必須先吐槽一下,找工作面試確實是個累人的活呀,所以—>跳槽有風險,選擇需謹慎.LZ我為什麼要換工作呢?就不在這裡說明了…直接進入正題,這周的面試基本每天從早面到晚,面試表都填吐了…大小公司都有,列舉下這段時間常見的面試題和一些個人理解.PS:LZ我水平有限,不好的地方,大家輕噴^_^!(由於全然是靠記憶,列舉順序純憑感覺0.0)
@property中的assign,retain,copy,nonatomic的意思各自是什麼? (解釋略…你懂的)
weak和assign的差別,strong和retain的差別,copy和retain的差別?
assign適用於非物件類型,weak弱引用在引用計數為0的時候會將對象置為nil.
事實上從這個也能夠引申到記憶體管理的一系列問題.面試官會讓你講講MRC和ARC的理解,隨即也引申出Block的記憶體機制,為啥推薦Block用copy,Block會存在哪些記憶體問題?
循環參考?
推薦一個文章,講的蠻不錯的,裡面也有對Block的連結引用->傳送門,請點擊我
- 依然是記憶體管理,
release和autorelease的含義?這裡尤其要強調下autorelease,它引申出自己主動釋放池,也能引申出Run loop!
參考下這兩個連結:參考1號@參考2號(PS:有的連結可能須要FQ,可是作為一個開發人員來說, 擁有VPN進行google還是必備的吧!)
- OC語言的動態性指什麼?有沒有瞭解過
objective-c runtime的相關問題?它包含那些含義?
依然給出一些不錯的文章連結:Number1@Number2@Number3
- 使用過
Core Graphic Core Animation Quartz Core等經常使用架構嗎?在什麼條件下會用到?能夠實現什麼功能?一般這樣的問題,都是涉及到你自己定義UI控制項的能力,以及能夠實現炫麗動畫效果的能力.(含義非常廣,大家自行找資料,還是推薦個0.0->講Core Animation的)
- iOS中多線程有哪幾種?
各自之間有什麼差別?這個問題,毋庸置疑,必問!!!
NSThread:貌似基本沒到過…囧….能夠去瞭解下….
NSOperation:據說是用在處理複雜的情況下…經常被問到與GCD的不同,LZ略糾結每次都不知道怎麼回答,僅僅能說一個處理複雜情況一個處理簡單情況…也沒用到過…只是你研究下AFNetworking的原始碼,能夠發現,它的核心類是繼承NSOperation的…
GCD:經常使用…這個能夠看看我的部落格,裡面非常多它的介紹! 點這裡
- 資料存放區這一塊,你經常使用哪一種?什麼是
序列化?sqlite是直接用它還是用封裝了它的第三方庫?sqlite和core data的差別?
LZ碰到的基本都是問sqlite和core data的差別…從什麼方面來決定一個項目採用哪種方式來做儲存…個人認為沒有必要區分誰好誰壞…都去瞭解掌握肯定是有優點的…網上有非常多講兩個之間的差別,可是就算你知道差別,假設兩個都用不好也是白搭.唯有一解->學!學!學
代理和通知…分別在什麼情況下使用?差別?
各自優點?
(略,略,略,自行Google)
- 你經常使用一些第三方庫嗎?比方
AFNetworking SDWebimage JsonModel等,有沒有去瞭解過裡面的實現原理?
強烈推薦大家,最好都去看看原始碼,不要僅僅知其而不知其所以然,能夠學習到非常多知識.也算是一次總體知識架構的溫習,也能學習到一些優秀庫的設計模式等.
KVC和KVO是什麼?
- 是否瞭解
Socket網路編程?是否明確TCP/IP HTTP UDP等協議知識?
參考1號@參考2號…非常多,自己去找吧
- 你知道哪些
設計模式?實際項目中運用到了嗎?(LZ我僅僅回答了,單例-策略-觀察者-工廠-代理(事實上我認為代理不能算進去))
MVC是什麼?你能畫出它們之間的關係圖嗎?(對的,繪圖)
- 你的
C++怎樣?演算法和資料結構呢?(這個都是淚呀)->依然是補!補!補!
Autolayout的理解…使用的怎麼樣?能夠看看我的這篇…儘管沒具體講Autolayout…大家能夠多搜搜…這就是涉及到你寫代碼是純程式碼還是storyboard了…建立兩種都必須掌握.
- 有沒有學習
Swift?這個,LZ建議,畢竟蘋果給你開發的架構庫沒變,能夠拿它寫寫Demo保持認識度,要不然,你僅僅看不寫,過一段時間又把它忘記了,就白看了…親身體會…起碼我如今能用swift來寫寫一些Demo就用它來寫寫….工作肯定還是用OC啦,只是也有的公司說已經全然用swift來開發了,僅僅能說,畢竟還僅僅是非常少數的…
- 眼下臨時想到這些…假設還有,再更新!0.0
想
說以下試的感想吧:
+ 並非會寫OC,會調用API,你就是一個iOS開發project師了…你必須擴充你知識的廣度和深度,對於非常多招聘要求你會C++的時候,不要老想著自己是來應聘iOSproject師而不是C++project師…語言僅僅是一種工具,當你功力OK的時候,你會發現去學習一門語言沒有你想象的那麼難,僅僅能說要精通是略難的…非常多時候須要的是你有那麼一種概念,比方你項目中須要去調用一個庫,那個庫是C++寫的,假設你全然看不懂,咋辦…這也就是說並非要你自己全然的去寫一個出來…我們開發的非常多時候,都是要善於運用第三方的架構…再舉個範例,音頻視頻…解碼轉碼或者什麼什麼的,具體的東西可能不須要你去瞭解,你僅僅須要會使用一種工具(如:ffmpeg)來完畢它.
+ LZ我就像我上面說的那樣…羞愧呀…只是算是從學swift後,換了一種思想,不再那樣的去排斥語言間的不同了,認為自己也要在平時有空暇的時候,認真的學習下c++(事實上我曾經是想做遊戲的…還說自學cocos2dx),也能夠把大學裡面有關電腦網路的書籍再次看下,多瞭解下網路編程…TCP/IP…HTTP協議等.
+ 開發應用,不要僅僅停留在一個方向…多橫向發展,接觸下其它類型的應用.比方,我找工作就有意於IM 音頻視頻等,畢竟沒接觸過…可是這僅僅是個人意願,前提別人肯要我,0.0哭0.0
+ 切記好高騖遠,一步登天…技術須要沉澱,心態須要淡定,什麼時候都要虛心學習.前面我說的都是建立在你做好基本事情的基礎上…想想,啥都不精,沒有一技之長,怎麼能脫穎而出?怎麼能夠完畢你所在崗位的任務?iOS開發這一塊的知識也要保持不斷的學習…UI布局-動畫效果-邏輯控制-資料存放區-和各端的對接-總體架構.
+ 公司的項目應該全部的都是結果導向性,假設你完畢不了任務,那麼你完畢任務過程中全部的出彩點都會變得一無是處.
+ 依然臨時想到這些…再想到別的,再更新…待續.~O(∩_∩)O~
iOS面試題總結與感想