2020年面向iOS開發人員的知識點總結(更新中)

来源:https://www.cnblogs.com/chengxyyh/archive/2020/06/30/13214022.html
-Advertisement-
Play Games

前言: 最近在整理自己的技術棧,收集了一些自己認為比較重要的知識點分享給大家。 Runloop 1. iOS中觸摸事件傳遞和響應原理 2. 為什麼只有主線程的runloop是開啟的 3. 為什麼只在主線程刷新UI 4. PerformSelector和runloop的關係 5.GCD 在Runloo ...


前言:

最近在整理自己的技術棧,收集了一些自己認為比較重要的知識點分享給大家。

Runloop

1. iOS中觸摸事件傳遞和響應原理

2. 為什麼只有主線程的runloop是開啟的

3. 為什麼只在主線程刷新UI

4. PerformSelectorrunloop的關係

5.GCD 在Runloop中的使用?

6.AFNetworking 中如何運用 Runloop?

Runtime

1.Category 的實現原理?

2.isa指針的理解,對象的isa指針指向哪裡?isa指針有哪兩種類型?

3.Objective-C 如何實現多重繼承?

4.runtime 如何實現 weak 屬性?

5.講一下 OC 的消息機制

6.runtime具體應用

7.runtime如何通過selector找到對應的IMP地址?

8.簡述下Objective-C中調用方法的過程

9.load和initialize的區別

10.怎麼理解Objective-C是動態運行時語言。

KVO

1. 實現原理

2. 通過KVC修改屬性會觸發KVO麽?KVC的賦值和取值過程是怎樣的?原理是什麼?

3. 哪些情況下使用kvo會崩潰,怎麼防護崩潰

4. kvo的優缺點

Block

  1. block的內部實現,結構體是什麼樣的
  2. block是類嗎,有哪些類型
  3. 一個int變數被 __block 修飾與否的區別?block的變數截獲
  4. block在修改NSMutableArray,需不需要添加__block
  5. 怎麼進行記憶體管理的
  6. block可以用strong修飾嗎
  7. 解決迴圈引用時為什麼要用__strong、__weak修飾
  8. block發生copy時機
  9. Block訪問對象類型的auto變數時,在ARC和MRC下有什麼區別

多線程

主要以GCD為主

  1. iOS開發中有多少類型的線程?分別對比
  2. GCD有哪些隊列,預設提供哪些隊列
  3. GCD有哪些方法api
  4. GCD主線程 & 主隊列的關係
  5. 如何實現同步,有多少方式就說多少
  6. dispatch_once實現原理
  7. 什麼情況下會死鎖
  8. 有哪些類型的線程鎖,分別介紹下作用和使用場景
  9. NSOperationQueue中的maxConcurrentOperationCount預設值
  10. NSTimer、CADisplayLink、dispatch_source_t 的優劣

架構設計

  1. 手動埋點、自動化埋點、可視化埋點
  2. MVC、MVP、MVVM設計模式
  3. 常見的設計模式
  4. 單例的弊端
  5. 常見的路由方案,以及優缺點對比
  6. 如果保證項目的穩定性
  7. 設計一個圖片緩存框架(LRU)
  8. 如何設計一個git diff
  9. 設計一個線程池?畫出你的架構圖
  10. 你的app架構是什麼,有什麼優缺點、為什麼這麼做、怎麼改進

數據結構

1.數據結構的存儲一般常用的有幾種?各有什麼特點?

2.集合結構 線性結構 樹形結構 圖形結構

3.單向鏈表 雙向鏈表 迴圈鏈表

4.數組和鏈表區別

5.堆、棧和隊列

6.輸入一棵二叉樹的根結點,求該樹的深度?

7.輸入一課二叉樹的根結點,判斷該樹是不是平衡二叉樹?

8.字元串處理

這是我的iOS開發交流群:519832104不管你是小白還是大牛歡迎入駐,可以一起分享經驗,討論技術,共同學習成長!
另附上一份各好友收集的大廠面試題,需要iOS開發學習資料、面試真題,進群即可自行下載!

點擊此處,立即與iOS大牛交流學習

演算法

1.時間複雜度

2.空間複雜度

3.常用的排序演算法

4.字元串反轉

5.鏈表反轉(頭差法)

6.有序數組合併

7.查找第一個只出現一次的字元(Hash查找)

8.查找兩個子視圖的共同父視圖

9.無序數組中的中位數(快排思想)

10.給定一個整數數組和一個目標值,找出數組中和為目標值的兩個數。

11.八大排序演算法

Foundation

1.nil、NIL、NSNULL 有什麼區別?

2.如何實現一個線程安全的 NSMutableArray?

3.atomic 修飾的屬性是絕對安全的嗎?為什麼?

4.實現 isEqual 和 hash 方法時要註意什麼?

5.id 和 instanceType 有什麼區別?

6.self和super的區別

7.@synthesize和@dynamic分別有什麼作用?

8.typeof 和 typeof,typeof 的區別?

9.類族

10.struct和class的區別

UIKit

1.UIView 和 CALayer 是什麼關係?

2.Bounds 和 Frame 的區別?

3.setNeedsDisplay 和 layoutIfNeeded 兩者是什麼關係?

4.談談對UIResponder的理解

5.loadView的作用?

6.使用 drawRect有什麼影響?

7.keyWindow 和 delegate的window有何區別

動畫

1.UIView動畫與核心動畫的區別?

2.當我們要做一些基於 CALayer 的動畫時,有時需要設置 layer的錨點來配合動畫,這時候我們需要註意什麼?

圖像處理

1.圖像的壓縮方式

2.如何計算圖片載入記憶體中所占的大小

數據安全及加密

1.對稱加密和非對稱加密的區別?

2.簡述 SSL 加密的過程用了哪些加密方法,為何這麼作?

3.iOS的簽名機制是怎麼樣的

WebView

  1. JS 和 OC 互相調用的幾種方式?

2.在使用 WKWedView 時遇到過哪些問題?

組件化

1.組件化有什麼好處?

2.你是如何組件化解耦的?

3.為什麼CTMediator方案優於基於Router的方案?

4.基於CTMediator的組件化方案,有哪些核心組成?

調試技巧

1.LLDB常用的調試命令?

2.斷點調試

3.iOS 常見的崩潰類型有哪些?

源碼理解

1.YYKit

2.SDWebImage載入圖片過程

3.YYWebImage和SDWebImage對比

4.AFNetworking 底層原理分析

代碼管理

1.SVN與Git優缺點比較

2.Git與SVN的區別

持續集成

1.你在項目中使用過什麼持續集成方式?

2.jenkins怎麼備份恢復

3.jenkins你都用了哪些插件?

查看更多: iOS面試題合集


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • DELETE FROM Persons WHERE Id NOT IN (SELECT MIN(Id)AS id FROM Persons GROUP BY Email) ; You can't specify target table 'Person' for update in FROM cla ...
  • MySQL補充——獲取自增主鍵的下一個自增值 摘要:本文主要學習瞭如何獲得自增主鍵的下一個值。 格式 1 select auto_increment from information_schema.tables where table_schema='資料庫名' and table_name='表名 ...
  • 文章前言 提到記憶體管理,我們就需要考慮Redis的記憶體過期策略和記憶體淘汰機制。該文章便從這兩方面入手,分享一些在Redis記憶體方面相關的基礎知識。 文章中使用的示例版本為Redis5.0版本。 記憶體過期策略 記憶體過期策略主要的作用就是,在緩存過期之後,能夠及時的將失效的緩存從記憶體中刪除,以減少記憶體的 ...
  • 本文更新於2019-06-16,使用MySQL 5.7,操作系統為Deepin 15.4。 常用字元集 字元集 定長 代碼寬度 說明 ASCII或ISO-646 是 1位元組7位 英文字母、數字、標點符號和33個控制符 ISO-8859系列 是 1位元組8位 各西歐字元集,相容ASCII GB2312 ...
  • 前一陣領導安排了一個任務:定時將集團資料庫某表的數據同步至我們公司伺服器的資料庫,感覺比寫增刪改查SQL有趣,特意記錄下來,希望能幫到有類似需求的小伙伴,如有錯誤也希望各位不吝指教 環境描述: 集團資料庫:Oracle 11g 部門資料庫:Oracle 11g 使用的軟體:PLSQL Develop ...
  • 教程 美團外賣Flutter動態化實踐 插件 native-draggable Native Drag and Drop for Flutter on iOS and MacOS flutter-mvvm Flutter plugin to rapidly create a Page with MV ...
  • 前言 上半年我定的OKR目標是幫助團隊將App切入Flutter,實現統一技術棧,變革成多端融合開發模式。Flutter目前是跨平臺方案中最有潛力實現我們這個目標的,不管是Hybird還是React Native,我們的項目都有落地應用,跨平臺一直是終端團隊所追求的技術,能夠快速研發和部署也是我們不 ...
  • 想要實現側邊欄,需要配合使用DrawerLayout。因為會用到嵌套佈局,所以根佈局不能是 ConstraintLayout,DrawerLayout 佈局下再嵌套兩個佈局,一個放置內容如 LinearLayout,一個放置側劃菜單,這裡使用 NavigationView 為了出現側邊欄點擊圖標和菜... ...
一周排行
    -Advertisement-
    Play Games
  • 概述:在C#中,++i和i++都是自增運算符,其中++i先增加值再返回,而i++先返回值再增加。應用場景根據需求選擇,首碼適合先增後用,尾碼適合先用後增。詳細示例提供清晰的代碼演示這兩者的操作時機和實際應用。 在C#中,++i 和 i++ 都是自增運算符,但它們在操作上有細微的差異,主要體現在操作的 ...
  • 上次發佈了:Taurus.MVC 性能壓力測試(ap 壓測 和 linux 下wrk 壓測):.NET Core 版本,今天計劃準備壓測一下 .NET 版本,來測試並記錄一下 Taurus.MVC 框架在 .NET 版本的性能,以便後續持續優化改進。 為了方便對比,本文章的電腦環境和測試思路,儘量和... ...
  • .NET WebAPI作為一種構建RESTful服務的強大工具,為開發者提供了便捷的方式來定義、處理HTTP請求並返迴響應。在設計API介面時,正確地接收和解析客戶端發送的數據至關重要。.NET WebAPI提供了一系列特性,如[FromRoute]、[FromQuery]和[FromBody],用 ...
  • 原因:我之所以想做這個項目,是因為在之前查找關於C#/WPF相關資料時,我發現講解圖像濾鏡的資源非常稀缺。此外,我註意到許多現有的開源庫主要基於CPU進行圖像渲染。這種方式在處理大量圖像時,會導致CPU的渲染負擔過重。因此,我將在下文中介紹如何通過GPU渲染來有效實現圖像的各種濾鏡效果。 生成的效果 ...
  • 引言 上一章我們介紹了在xUnit單元測試中用xUnit.DependencyInject來使用依賴註入,上一章我們的Sample.Repository倉儲層有一個批量註入的介面沒有做單元測試,今天用這個示例來演示一下如何用Bogus創建模擬數據 ,和 EFCore 的種子數據生成 Bogus 的優 ...
  • 一、前言 在自己的項目中,涉及到實時心率曲線的繪製,項目上的曲線繪製,一般很難找到能直接用的第三方庫,而且有些還是定製化的功能,所以還是自己繪製比較方便。很多人一聽到自己畫就害怕,感覺很難,今天就分享一個完整的實時心率數據繪製心率曲線圖的例子;之前的博客也分享給DrawingVisual繪製曲線的方 ...
  • 如果你在自定義的 Main 方法中直接使用 App 類並啟動應用程式,但發現 App.xaml 中定義的資源沒有被正確載入,那麼問題可能在於如何正確配置 App.xaml 與你的 App 類的交互。 確保 App.xaml 文件中的 x:Class 屬性正確指向你的 App 類。這樣,當你創建 Ap ...
  • 一:背景 1. 講故事 上個月有個朋友在微信上找到我,說他們的軟體在客戶那邊隔幾天就要崩潰一次,一直都沒有找到原因,讓我幫忙看下怎麼回事,確實工控類的軟體環境複雜難搞,朋友手上有一個崩潰的dump,剛好丟給我來分析一下。 二:WinDbg分析 1. 程式為什麼會崩潰 windbg 有一個厲害之處在於 ...
  • 前言 .NET生態中有許多依賴註入容器。在大多數情況下,微軟提供的內置容器在易用性和性能方面都非常優秀。外加ASP.NET Core預設使用內置容器,使用很方便。 但是筆者在使用中一直有一個頭疼的問題:服務工廠無法提供請求的服務類型相關的信息。這在一般情況下並沒有影響,但是內置容器支持註冊開放泛型服 ...
  • 一、前言 在項目開發過程中,DataGrid是經常使用到的一個數據展示控制項,而通常表格的最後一列是作為操作列存在,比如會有編輯、刪除等功能按鈕。但WPF的原始DataGrid中,預設只支持固定左側列,這跟大家習慣性操作列放最後不符,今天就來介紹一種簡單的方式實現固定右側列。(這裡的實現方式參考的大佬 ...