2019iOS面試總結

最近換工做,面試了好幾家公司,終於拿到了滿意的offer,惋惜進不了大廠,還需繼續努力。經過此次面試發現了太多的不足,基礎知識不夠紮實,只知道用,不知其原理,因此面試的時候都沒怎麼發揮好。之後將從新學習iOS知識,創建本身的知識體系,提高本身的iOS技術,經過寫文章來多總結本身的知識點,跟你們一塊兒交流。先來總結下此次面試中被問到的知識點,答案之後再慢慢補充。java

項目相關

  1. 你以爲本身作的最滿意的APP是哪個,亮點在哪裏。
  2. 你在項目中擔任的角色是什麼。
  3. 一個新的APP從0到1是怎麼架構的,爲何要這樣作,說下MVC與MVVM。
  4. 若是讓你封裝一個網絡框架,你會怎麼封裝,要考慮哪些方面。
  5. 怎麼重構一個項目。
  6. 對APP作過哪些性能優化,怎麼優化安裝包的大小。
  7. 什麼是冷啓動,什麼是熱啓動。
  8. 開發的時候碰到過什麼問題讓你印象最深入,你是怎麼解決的,是怎麼想到這解決文案的。
  9. APP比較耗電是因爲哪些因素引發的,怎麼進行優化。
  10. 對小組成員是怎麼分工的,怎麼能保證分配的任務在規定時間內完成。
  11. 你是經過什麼方式管理小組成員的,怎麼挖掘他們的優勢。
  12. 若是小組成員的技術比你好,而後又不太好管理,你該怎麼作。
  13. 你本身作過什麼好玩的APP。
  14. 怎麼收集crash信息,哪些狀況會出現crash,怎麼減小程序的崩潰率。
  15. 出現卡頓怎麼優化,有沒有作過卡頓監聽。
  16. APP中有沒有進行日誌收集。是怎麼進行收集的,收集後經過什麼規則來傳送的。
  17. APP中有不少操做點擊後須要判斷是否登陸,你是怎麼作的,有沒有什麼更好的方案。
  18. 有沒有作過組件化,實現組件化有哪些方式。
  19. 作了這麼久多年的開發,ios有哪些變化
  20. RN/weex/小程序這些有什麼區別。
  21. 有沒有學過flutter。他與RN又有什麼區別,你怎麼看待RN與flutter,若是讓你選擇其中一個進行開發,你會怎麼去選擇。
  22. 你當時爲何選騰訊雲的直播SDK,有沒有對比過其它廠家的,主要是經過哪方面進行對比。
  23. 你會那麼多語言,你是怎麼學習的,你以爲你的學習方法能夠嗎。
  24. 作直播的時候你碰到過哪些問題,是怎麼解決的。有沒有深刻了解過推流、拉流、編碼、解碼。碼率是什麼。
  25. IM實現原理,用的是什麼通訊協議,若是讓你本身實現即時聊天,你會怎麼作。
  26. 用過哪些開源框架,除了這些很經常使用的,還用過哪些。
  27. 看過哪些開源代碼,分別講下核心思想,SDWebImage框架實現原理是怎麼樣的,本地緩存的圖片到期後是怎麼自動清除的。
  28. 用過哪些設計模式,畫一個工廠模式的UML圖。
  29. 一個西瓜,只用3刀怎麼切成8塊。

基礎知識

  1. 若是讓本身實現一個weak怎麼實現
  2. 說下深拷貝淺拷貝
  3. NSString定義的屬性爲何要使用copy。
  4. OC跟C語言是什麼區別,說下你對面向對象與面向過程的理解
  5. C語言是一門動態的函數式語言,你以爲這話正確嗎
  6. OC能夠實現多繼承嗎。
  7. KVC與KVO用的多嗎,實現原理是怎樣的。
  8. Block實現原理。
  9. delegate實現原理。
  10. runloop實現原理,runloop能解決哪些問題。
  11. 分類有哪些用途,跟繼承有什麼區別。分類實現原理。若是方法名相同,會調用哪一個方法。
  12. 說一下你對CALayer的認識,他與UIView有什麼區別。
  13. 講一下事件響應的過程,重點描述下事件響應鏈。事件響應傳遞的順序。怎麼擴大一個按鈕的點擊範圍。
  14. self與super的區別
  15. 怎麼在block中修改一個變量的值,爲何要這麼作。
  16. UIWebView怎麼跟原生進行交互,cookie怎麼緩存,碰到過什麼難點
  17. WKWebView碰到過哪些坑,怎麼解決的,有沒有用過JS注入。
  18. UIWebView與OC進行交互是同步仍是異步的。
  19. 通知和代理有什麼區別。
  20. 用通知要注意什麼。
  21. block與delegate的區別。
  22. APP中經常使用的數據存儲方式有哪些。
  23. 數據庫存儲文案你用的是fmdb還coredata。有沒有看過FMDB的源碼,是怎麼進行多線程操做的。
  24. 你是怎麼設計表的。設計表的三範式是什麼。
  25. runtime實現原理,你有沒有看過runtime的源碼。
  26. 你用runtime實現過哪些功能。
  27. 什麼是元類。
  28. oc中調用方式是怎麼實現的,消息轉發機制是怎樣的流程。

數據結構與算法

  1. 數據結構的存儲通常經常使用的有幾種?各有什麼特色?
  2. 怎麼往鏈表的第N個結點添加一條數據。
  3. 數組與鏈表的區別。
  4. 什麼是堆,什麼是棧,什麼是隊列。
  5. 分別講下時間複雜度和空間複雜度。
  6. 經常使用的排序算法有哪些,你用過哪些算法。
  7. 給定一個整數數組和一個目標值,找出數組中和爲目標值的兩個數
  8. 怎麼快速寫入一個100M的文件。
  9. 怎麼查找兩個子視圖的共同父視圖

多線程

  1. ios中多線程實現方式有哪些,各有什麼優勢和缺點,你用哪一個用的多。
  2. ios中怎麼作線程同步。
  3. 分別講一下進程與線線程。
  4. 使用多線程有什麼優勢和缺點。
  5. 爲何只能在主線程中更新UI。
  6. 多線程的併發與並行有什麼區別,併發你用在哪些場景。
  7. GCD中的信號量有沒有用過,用在哪些場景。
  8. 產生死鎖的必要條件。
  9. 怎麼實現線程常駐。
  10. 如何實現一個線程安全的 NSMutableArray。
  11. 什麼是自旋鎖,什麼是互斥鎖。
  12. 使用多線程要注意哪些。
  13. runloop與多線程的關係。
  14. runloop實現原理及應用場景。

內存管理

  1. iOS的內存管理方式
  2. ARC與java中的垃圾回收有什麼區別
  3. 怎麼避免循環引用
  4. retain與release的實現機制
  5. 說一下iOS中的自動釋放池,自動釋放池實現原理。
  6. runloop中有用到自動釋放池嗎。
  7. ARC在運行時和編譯時分別作了什麼
  8. 什麼是野指針。
  9. 你是怎麼進行內存優化的。在 Obj-C 中,如何檢測內存泄漏?你知道哪些方式?
  10. autoReleasePool 何時釋放?
  11. 內存中的5大區分別是什麼。

網絡

  1. 從發送一個請求,到響應,中途經歷了什麼,是怎麼完成一個網絡請求流程的。
  2. 簡述 SSL 加密的過程用了哪些加密方法,爲什麼這麼做?
  3. 講一下三次握手與4次揮手,爲何握手是3次,揮手是4次。
  4. 網絡7層協議是哪幾層,每一次的用途。
  5. get與post的區別,put與post的區別
  6. TCP和UDP的區別
  7. 有沒有用過socket,說下實現原理。
  8. DNS是什麼,DNS解析過程是怎麼樣的。
  9. 你用什麼工具進行抓包,原理是什麼,若是讓你本身寫個抓包工具怎麼作。
  10. 怎麼對網絡數據進行緩存
  11. AFNetworking 底層原理分析
  12. 實際開發項目中,常常用到的網絡請求有哪些呢?
  13. 發起網絡請求後,怎麼取消。若是沒請求完就退出界面,要怎麼處理。
  14. http與https的區別,爲何https更安全
  15. 詳細描述一下你對ipv4與ipv6的理解
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息