1. 程式人生 > >iOS 網路和多執行緒面試題01~[有答案]

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.程式設計更加的複雜:比如執行緒之間的通訊,多執行緒的資料共享