iOS 網路和多執行緒面試題01~[有答案]
//聯絡人:石虎 QQ: 1224614774 暱稱:嗡嘛呢叭咪哄
一.選擇題(前三題是多選 ,後面為單選題)
1. 以下對堆和棧的描述正確的是(多選ABD )
A.棧區[stack]由編譯器自動分配並釋放,一般存放函式的引數值,區域性變數
B.堆區[heap]由程式設計師分配和釋放,如果程式設計師不釋放,程式結束時,可能會由作業系統回收.
C.棧的記憶體大小是由程式設計師分配,記憶體地址是從高地址向低地址存(先進後出的原則)
D.堆是向高地址擴充套件的資料結構,是不連續的記憶體區域.
2. 以下對Block的描述正確的是( 多選 ABCD )
A. Block是一種資料型別,可以被當做引數傳遞
B. Block是一個能工作的程式碼單元,可以在任何需要的時候被執行
C. 預設情況下,不允許在塊程式碼內部修改外部變數的數值
D. 用Block傳值時要注意迴圈引用,當Block內引用區域性變數時要用__weak修飾此變數來解除迴圈引用
3. 以下對執行緒同步、非同步、併發、序列以下描述正確的是( ABCD
A. 同步和非同步決定了要不要開啟新的執行緒,同步:在當前執行緒中執行任務, 不具備開啟新的執行緒;
B. 非同步:在新的執行緒中執行任務,具備開啟新執行緒的能力;
C. 併發和序列決定了任務的的執行方式,併發:多個任務併發(同時)執行
D. 序列:
4. 對以下四種多執行緒的技術簡介錯誤的是( C)
A. pthread是一套通用的多執行緒API,適用於Unix\Linux\Windows等系統,跨平臺\可移植,使用難度大
B. NSThread 是使用更加面向物件,簡單易用,可直接操作執行緒物件
C. GCD是基於NSThread的,充分利用裝置的多核
D. NSOperation是基於GCD(底層是GCD)比GCD多了一些更簡單實用的功能,使用更加面向物件
5. 對於語句NSString *str =[NSData alloc] init];在編譯時和執行時分別是什麼型別( D )
A. 編譯時NSData,執行時NSData
B. 編譯時NSString,執行時NSString
C. 編譯時NSData,執行時NSString
D. 編譯時NSString,執行時NSData
6. POST對上傳的檔案大小限制一般為( C )
A. 512KB B. 1M C. 2M D.無限
7. 陣列中可以新增以下那種空值( B )
A. Nil 是類的空指標型別
B. NSNull 集合中的空值
C. nil 是物件的空指標型別
D. NULL 是其它型別(基本資料型別,C型別指標) 為空值
8. 下面那個不是本地伺服器的主機地址(D )
A. 127.0.0.1:每臺機器內建的IP地址,指的就是機器本身
B. localhost:等價於第1種情況的127.0.0.1
C. 交換機\路由器分配的IP地址:真機測試一定要用這個,且真機和伺服器得在同一個區域網內
D. 255.255.255.0
9.以下對copy和mutableCopy方法的描述錯誤的是( B )
A. copy或mutableCopy方法可以建立一個物件的副本
B. copy 需要實現NSCoding協議來建立不可以變的副本
C. mutableCopy需要先實現NSMutableCopying協議,建立的是可變副本
D. Copy的目的是建立副本,同時修改原始物件和副本不會互相干擾
10.請問下列哪個函式是用來播放帶震動音效的( D )
A、AudioServicesCreateSystemSoundID(CFURLRefinFileURL, SystemSoundID *outSystemSoundID)
B、AudioServicesDisposeSystemSoundID(SystemSoundIDinSystemSoundID)
C、AudioServicesPlaySystemSound(SystemSoundIDinSystemSoundID)
D、AudioServicesPlayAlertSound(SystemSoundIDinSystemSoundID)
簡答題
1. 什麼是執行緒,程序,他們有什麼關係,以及多執行緒的作用?
答:
執行緒:在應用程式當中執行的一段程式碼片段,每個執行緒都有自己執行的堆疊控制元件,
程序:在系統當中正在執行的應用程式;
執行緒與程序的關係:執行緒是程序的基本的執行單元,一個程序要執行的任務,必須要有執行緒
多執行緒的作用:把耗時的操作放在子執行緒,避免阻塞主執行緒更新UI,提高程式執行的效率。
2. 請說明同步請求與非同步請求的區別?
答:
同步請求:使用者通過單個執行緒呼叫服務,該執行緒傳送請求,在伺服器執行時發生阻塞,並且等待響應。
非同步請求:使用者通過兩個執行緒呼叫服務,一個執行緒傳送請求,而另一個單獨的執行緒響應
3. 請說明什麼是GET與POST 請求。
答:GCD的語義是獲取指定的URL的資源因為在傳輸過程中,資料被放在指定的URL中不安全,傳輸資料量小
POST的語句是指定的URL的資源新增資料放在資料體中,按照變數和值相對應的方式,傳到了action所指向的URL。
4. 優秀的移動應用程式必須具備那些特點?
答: 行動網路應用:良好的UI +良好的使用者體驗 +實時更新的資料
5. 傳送HTTP請求的方法有幾種方式,並簡介每種方式的作用?
答:GET:獲取指定的資源
POST:2M 向指定的資源提交資料處理請求,在RESTful風格用於新增資源
HEAD:獲取指定的資源頭部資訊
PUT:替換指定的資源
DELETE:刪除指定的資源
OPTIONS:允許客戶檢視伺服器的效能
TRACE:回顯伺服器收到的請求,主要用於測試或診斷
CONNECT:預留給能夠將連線改為管道方式的代理伺服器(HTTP代理實用)
6. 應用程式中有幾種不同的記憶體區域,分別儲存什麼資料?
答:(1).棧區[stack]由編譯器自動分配並釋放,一般存放函式的引數值,區域性變數等
(2).堆區[heap]由程式設計師分配和釋放,如果程式設計師不釋放,程式結束時可能會作業系統回收
(3)全域性區(靜態區)[static]全域性變數和靜態表變數的儲存是存放在一起的,初始化的全域性變數和靜態變數存放在一起的區域,未初始化的全域性變數和靜態變數在相鄰的另一塊區域,程式結束後由系統釋放
(4)文字常量區存放常量字串,程式結束後由系統釋放
(5)程式程式碼區存放函式的二進位制程式碼
7. 請說說多執行緒的優點和缺點?
答:
優點:1.能適當提高程式的執行效率
2.能適當提高資源利用率(CPU,記憶體利用率)
缺點:1.開啟執行緒需要一定的記憶體空間(預設請況下,主執行緒佔1M子執行緒佔用512KB)如果開啟大量的執行緒,會佔用大量的記憶體空間,會減低程式的效能
2.執行緒越多,CPU 在排程執行緒上的開銷就越大
3.程式設計更加的複雜:比如執行緒之間的通訊,多執行緒的資料共享