IOS客户端面试总结
1.面向對象和面向過程的區別
2.面向對象的三大特性
封裝:
繼承:
多態:
3.多態在C#中的表現
1.多態:指不同的對象收到相同的消息產生不同的行為
2.三種形式:1)虛方法virtual
虛方法的子類可以不改寫
class Program {static void Main(string[] args){ Employee employee = new Employee();employee.Daka();Employee manager = new Manager();manager.Daka();Employee programer = new Programer();programer.Daka();} }class Employee {public virtual void Daka(){Console.WriteLine("Daka!");} }class Manager: Employee {public override void Daka(){Console.WriteLine("Employee Daka!");} }2)抽象類abstract?
abstract class Employee {public abstract void Daka(); }class manager: employee {public override void Daka(){Console.WriteLine("manager Daka!");} }3)接口interface?
interface employee {void Daka(); }class manager:employee {public void Daka(){Console.WriteLine("manager Daka!");} }4.操作系統對進程如何進行內存分配
1. 進程的三種基本狀態:
???a> 就緒狀態:進程已獲得除處理器外的所需資源,等待分配處理器資源;只要分配了處理器進程就可執行。就緒進程可以按多個優先級來劃分隊列。例如,當一個進程由于時間片用完而進入就緒狀態時,排入低優先級隊列;當進程由I/O操作完成而進入就緒狀態時,排入高優先級隊列。?
???b> 運行狀態:進程占用處理器資源;處于此狀態的進程的數目小于等于處理器的數目。在沒有其他進程可以 執行時(如所有進程都在阻塞狀態),通常會自動執行系統的空閑進程。?
???c> 阻塞狀態:由于進程等待某種條件(如I/O操作或進程同步),在條件滿足之前無法繼續執行。該事件發生 前即使把處理機分配給該進程,也無法運行。
2.進程的內存分配
| 操作系統內核區 | - | 用戶不可見 |
| 操作系統用戶區 | 用戶棧 | 從上往下,先進后出,局部變量, 中斷中保留現場 |
| - | 動態堆 | 從下往上,先進先出,動態分配 |
| - | 靜態區(data/bss) | 存儲全局變量和靜態變量存放在data, 未初始化的存放在相鄰的bss區域 |
| - | 文字常量區(只讀數據) | 常量字符串 |
| - | 代碼區 | 函數體的二進制代碼 |
| - | 保留 | - |
?
5.計算機為什么要用線程?
線程是線程中執行運算的最小單位,線程不擁有資源,線程共享進程的堆和方法區資源
1)易于調度
2)提高并發性:進程可以創建多個線程來并發執行同一程序的不同步驟,在沒有線程的傳統機制中只能進程間并發
3)開銷少:線程是輕量級進程,切換環境時不用切換進程的堆和方法區資源,所以切換線程比進程開銷少,
多線程:單核CPU中線程實行并發,多核CPU中線程實行并行
協程:通過自主調度實現支持并發的多(用戶態)對多(內核態)的模型
6.講述了解的頁面置換算法
1.調度:按某種算法來決定處理任務的順序
2.CPU調度算法的評價指標:
3.進程調度(低級調度):從就緒隊列中選取一個進程,將處理機分配給進程。
進程切換:一個進程讓出處理機,另一個進程占用處理機
進程調度可以是調度剛剛被暫停執行的進程
進程調度方式:非搶占式方式,搶占式方法
4.內存調度(中級調度):決定將哪個處于掛起狀態的進程重新調入內存。
引入虛擬存儲技術后。可以將暫時不能運行的進程調至外存等待,等它具備了運行條件且內存空閑,再調入內存。
掛起:進程將暫時調到外存等待處理機的狀態;
掛起時PCB不會調回外存而是常駐內存,操作系統還需要管理進程的信息
掛起和阻塞的區別:都不能獲得CPU,但掛起狀態進程被調到外存,而阻塞時進程還在內存
5.作業調度(高級調度):從外存處于后備隊列的作業挑選一個,分配資源,建立進程(PCB),以使它們獲得競爭處理機的權利。
調入的時機需要操作系統確定,調出的時機是作業運行結束
6.CPU調度算法:
1)先來先服務:作業調度/進程調度
2)
6.頁面置換算法:
7.虛擬內存的原理是什么
1.解決的問題:傳統存儲中作業一次性裝入內存后才能運行,導致內存利用率不高。
2.特性:多次性(允許一個作業多次調入內存),對換性(作業運行時可進行調換),虛擬性
3.虛擬內存:在程序執行過程中,當訪問的信息不在內存時。由操作系統負責將所需信息從外存調入內存。(請求調頁功能)
? ?若內存空間不夠,由操作系統負責將內存中暫時用不到的信息換出外存,在用戶看來內存會比實際內存大的多。(頁面置換功能)
4.虛擬內存需要建立在離散分配的內存管理方式基礎上:
5.虛擬內存的最大容量是由計算機的地址結構(CPU尋址范圍)決定的
? ?虛擬內存的實際容量是由內存和外存容量之和,CPU尋址范圍最小值決定
6.分頁和分段:
1)頁是出于內存利用率提出的離散分配機制
2)段是出于用戶考慮,用于數據保護、數據隔離等用途的管理機制
3)頁的大小固定,由操作系統決定
? ? ? 段的大小不確定,由用戶程序決定
7.講述計算機網絡中的TCP/IP層次結構
8.TCP和UDP的區別;TCP用什么保證安全
·TCP和UDP都是傳輸層的協議,傳輸層提供進程到進程之間的邏輯通信
·傳輸層對收到的報文進行差錯檢測
·分用和復用
·套接字:在網絡中采用發送方和接收方的套接字組合來識別端口,套接字唯一標識了網絡中的一個主機和他的一個進程
TCP面向連接的傳輸控制協議:
1)面向連接
2)點對點的傳輸,不能廣播
3)可靠的
4)全雙工通信
?·序號:序號是本報文段發送的第一個字節的編號,TCP堆每個傳輸的字節都進行了編號,序號是可靠傳輸的關鍵
·確認號:TCP的接收方每成功接收到一個報文段就返回一個ACK,每個ACK對應指明下一個期待收到的字節序號,并表示該序號之前的數據都正確收到
·數據偏移:首部長度
·校驗和:檢驗首部+數據
·偽首部:在發送端和接收端校驗差錯時添加,傳輸過程中不存在
·TCP實現可靠傳輸:
1)校驗(和UDP一致:檢驗首部+數據)
2)序號
3)確認(超時重傳)
4)重傳(超時重傳、冗余ACK快速重傳)
·TCP流量控制:發送速率過快會使接收方來不及接收
接收方根據接收緩存大小,動態地調整發送方的發送窗口大小
發送窗口=Min{接收窗口,擁塞窗口}
接收窗口:接收方根據自身緩存量設置,發送給發送方(接收能力)
擁塞窗口:發送方根據估算的網絡擁塞程度設定的窗口值 (網絡情況)
·TCP擁塞控制:
擁塞控制是網絡中避免網絡各個客戶端發送數據擁塞?流量控制是避免發送端發送速率過快
UDP無連接的用戶數據報協議:?
1)無連接:提供接收端IP+port就可以發送
2)不可靠:沒有確認、重傳機制,如果校驗和出錯,直接丟棄該報文
·校驗值:檢查整個UDP數據報文是否有錯,有錯就丟棄??
·偽首部
| TCP | UDP |
| 傳輸前建立連接,傳輸后釋放連接 | 傳輸前不需要建立連接,傳輸后也不需要確認 |
| 開銷大:確認、流量控制、計時器及連接管理,適用大文件 | 開銷小:不可靠,適用小文件 |
| 時延大 | 無擁塞控制:時延小,適合實時應用 |
| 面向字節流: | 面向報文:不拆分應用層報文直接傳輸,適合傳輸少量數據的進程 |
9.TCP的三次握手?沒有第三次握手會發生什么?
客戶端和服務端可以同時作為數據的發送方和接收方,即TCP是全雙工連接,如果沒有第三次握手即服務端無法保證發送到客戶端的數據是正常的,需要第三次握手客戶端的ACK確認。
第三次握手可以攜帶數據
9.鏈路層是可靠的嗎
是的
10.你認為哪兩種是最基本的數據結構?數據和鏈表的區別
11.創建一個變量被分配在內存哪個位置?動態創建呢?創建static變量呢?
1.堆和棧的區別
| 棧 | 堆 | |
| 內存 | 由操作系統自動分配和釋放 例:int a; | 由程序員分配和釋放(若程序原不釋放則程序結束后操作系統根據垃圾回收算法釋放) 例:int *a=malloc(sizeof(int)); ? ? ? ?object obj =new Object(); |
| 存放參數值、局部變量 | 存放對象(包括數組) | |
| 數據結構 | 先進后出的線性表 | 是特殊的完全二叉樹(所有節點不小于或不大于其父節點) |
| 優缺點 | 1.自動分配,速度較快 2.是連續的內存區域,空間有限 | 1.空間由開發者指明大小,速度較慢 2.若開發者不釋放會導致內存泄漏 3.不連續的內存空間,空間很大,比較靈活 4.頻繁分配會導致不同大小的堆空間產生內存碎片 |
2.內存分配的三種方式:
1)靜態存儲區:(static)數據在程序編譯時已經被分配,包括全局變量和靜態數據
2)棧:(int...)函數執行時局部變量被分配,當函數調用完成后,變量被釋放
3)堆:(malloc/new)由程序員手動申請內存并手動釋放
3.值類型和引用類型
?
12.講述一下快速排序以及時間復雜度
13.開放題:七個質量相同的球和一個質量較重的放在一起,用一個天平如何最快找出質量重的
總結
以上是生活随笔為你收集整理的IOS客户端面试总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ios android耳机,硬件 篇三:
- 下一篇: 计算机在中药材的应用,计算机在中医药中的