iOS面試題總結與感想

來源:互聯網
上載者:User

標籤:ios   面試   

必須先吐槽一下,找工作面試確實是個累人的活呀,所以—>跳槽有風險,選擇需謹慎.LZ我為什麼要換工作呢?就不在這裡說明了…直接進入正題,這周的面試基本每天從早面到晚,面試表都填吐了…大小公司都有,列舉下這段時間常見的面試題和一些個人理解.PS:LZ我水平有限,不好的地方,大家輕噴^_^!(因為完全是靠記憶,列舉順序純憑感覺0.0)

  1. @property中的assign,retain,copy,nonatomic的意思分別是什麼? (解釋略…你懂的)
  2. weakassign的區別,strongretain的區別,copyretain的區別?
    assign適用於非物件類型,weak弱引用在引用計數為0的時候會將對象置為nil.
    其實從這個也可以引申到記憶體管理的一系列問題.面試官會讓你講講MRCARC的理解,隨即也引申出Block的記憶體機制,為啥推薦Blockcopy,Block會存在哪些記憶體問題?循環參考?
    推薦一個文章,講的蠻不錯的,裡面也有對Block的連結引用->傳送門,請點擊我
  3. 依舊是記憶體管理,releaseautorelease的含義?這裡尤其要強調下autorelease,它引申出自動釋放池,也能引申出Run loop!
    參考下這兩個連結:參考1號@參考2號(PS:有的連結可能需要翻牆,但是作為一個開發人員來說, 擁有VPN進行google還是必備的吧!)
  4. OC語言的動態性指什麼?有沒有瞭解過objective-c runtime的相關問題?它包括那些含義?
    依舊給出一些不錯的文章連結:Number1@Number2@Number3
  5. 使用過Core Graphic Core Animation Quartz Core等常用架構嗎?在什麼條件下會用到?能夠實現什麼功能?一般這種問題,都是涉及到你自訂UI控制項的能力,以及能夠實現炫麗動畫效果的能力.(含義很廣,大家自行找資料,還是推薦個0.0->講Core Animation的)
  6. iOS中多線程有哪幾種?各自之間有什麼區別?這個問題,毋庸置疑,必問!!!
    NSThread:貌似基本沒到過…囧….可以去瞭解下….
    NSOperation:據說是用在處理複雜的情況下…經常被問到與GCD的不同,LZ略糾結每次都不知道怎麼回答,只能說一個處理複雜情況一個處理簡單情況…也沒用到過…不過你研究下AFNetworking的源碼,可以發現,它的核心類是繼承NSOperation的…
    GCD:常用…這個可以看看我的部落格,裡面很多它的介紹! 點這裡
  7. 資料存放區這一塊,你常用哪一種?什麼是序列化?sqlite是直接用它還是用封裝了它的第三方庫?sqlitecore data的區別?
    LZ碰到的基本都是問sqlitecore data的區別…從什麼方面來決定一個項目採用哪種方式來做儲存…個人覺得沒有必要區分誰好誰壞…都去瞭解掌握肯定是有好處的…網上有很多講兩個之間的區別,但是就算你知道區別,如果兩個都用不好也是白搭.唯有一解->學!學!學
  8. 代理通知…分別在什麼情況下使用?區別?各自優點?(略,略,略,自行Google)
  9. 你經常使用一些第三方庫嗎?比如AFNetworking SDWebimage JsonModel等,有沒有去瞭解過裡面的實現原理?
    強烈推薦大家,最好都去看看原始碼,不要只知其而不知其所以然,能夠學習到很多知識.也算是一次整體知識架構的溫習,也能學習到一些優秀庫的設計模式等.
  10. KVCKVO是什麼?
  11. 是否瞭解Socket網路編程?是否明白TCP/IP HTTP UDP等協議知識?
    參考1號@參考2號…很多,自己去找吧
  12. 你知道哪些設計模式?實際項目中運用到了嗎?(LZ我只回答了,單例-策略-觀察者-工廠-代理(其實我覺得代理不能算進去))
  13. MVC是什麼?你能畫出它們之間的關係圖嗎?(對的,畫圖)
  14. 你的C++如何?演算法和資料結構呢?(這個都是淚呀)->依舊是補!補!補!
  15. Autolayout的理解…使用的怎麼樣?可以看看我的這篇…雖然沒詳細講Autolayout…大家可以多搜搜…這就是涉及到你寫代碼是純程式碼還是storyboard了…建立兩種都必須掌握.
  16. 有沒有學習Swift?這個,LZ建議,畢竟蘋果給你開發的架構庫沒變,可以拿它寫寫Demo保持認識度,要不然,你只看不寫,過一段時間又把它忘記了,就白看了…親身體會…起碼我現在能用swift來寫寫一些Demo就用它來寫寫….工作肯定還是用OC啦,不過也有的公司說已經完全用swift來開發了,只能說,畢竟還只是很少數的…
  17. 目前暫時想到這些…如果還有,再更新!0.0

說下面試的感想吧:
+ 並不是會寫OC,會調用API,你就是一個iOS開發工程師了…你必須擴充你知識的廣度和深度,對於很多招聘要求你會C++的時候,不要老想著自己是來應聘iOS工程師而不是C++工程師…語言只是一種工具,當你功力OK的時候,你會發現去學習一門語言沒有你想象的那麼難,只能說要精通是略難的…很多時候需要的是你有那麼一種概念,比如你項目中需要去調用一個庫,那個庫是C++寫的,如果你完全看不懂,咋辦…這也就是說並不是要你自己完全的去寫一個出來…我們開發的很多時候,都是要善於運用第三方的架構…再舉個例子,音頻視頻…解碼轉碼或者什麼什麼的,具體的東西可能不需要你去瞭解,你只需要會使用一種工具(如:ffmpeg)來完成它.
+ LZ我就像我上面說的那樣…慚愧呀…不過算是從學swift後,換了一種思想,不再那樣的去排斥語言間的不同了,覺得自己也要在平時有閒置時候,認真的學習下c++(其實我以前是想做遊戲的…還說自學cocos2dx),也可以把大學裡面有關電腦網路的書籍再次看下,多瞭解下網路編程…TCP/IP…HTTP協議等.
+ 開發應用,不要只停留在一個方向…多橫向發展,接觸下其他類型的應用.比如,我找工作就有意於IM 音頻視頻等,畢竟沒接觸過…但是這隻是個人意願,前提別人肯要我,0.0哭0.0
+ 切記好高騖遠,一步登天…技術需要沉澱,心態需要淡定,什麼時候都要虛心學習.前面我說的都是建立在你做好基本事情的基礎上…想想,啥都不精,沒有一技之長,怎麼能脫穎而出?怎麼能夠完成你所在崗位的任務?iOS開發這一塊的知識也要保持不斷的學習…UI布局-動畫效果-邏輯控制-資料存放區-和各端的對接-整體架構.
+ 公司的項目應該所有的都是結果導向性,如果你完成不了任務,那麼你完成任務過程中所有的出彩點都會變得一無是處.
+ 依舊暫時想到這些…再想到別的,再更新…待續.~O(∩_∩)O~

iOS面試題總結與感想

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.