iOS面試題8
來源:互聯網
上載者:User
iOS面試題8
1.多線程中棧與堆,分別是公有還是私人的(C)
A.棧公有,堆私人
B.棧公有,堆公有
C.棧私人,堆公有
A.棧公有,堆私人
【解釋】
一般來說棧是私人的,堆是公有的;但是可以為特定的線程建立私人的堆
在多線程環境下,每個線程擁有一個棧和一個程式計數器。棧和程式計數器用來儲存線程的執行曆史和線程的運行狀態,是線程私人的資源。其他的資源(比如堆,地址空間,全域變數)是由同一個進程內的多個線程共用。
堆:是大家共有的空間,分全域堆和局部堆。
全域堆就是所有沒有分配的空間,局部堆就是使用者指派的空間。堆在作業系統對進程初始化的時候分配,運行過程中也可以向系統要額外的堆,但是記得用完了要還給作業系統,要不然就是記憶體泄露。
棧:是線程專屬的,儲存其運行狀態和局部自動變數的。棧線上程開始的時候初始化,每個線程的棧互相獨立,因此,棧是安全執行緒的。作業系統在切換線程的時候會自動的切換棧,就是切換SS/ESP寄存器。棧空間不需要在進階語言裡面顯式的分配和釋放。
2.單例類NSNotificationCenter提供資訊廣播通知,它採用的是觀察者模式的通知機制(A)
A.對 B.錯
3.判斷是否為iPad裝置的語句是。()
A.if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
{}
B.if([[UIDevice currentDevice] userInterfaceIdiom] != UIUserInterfaceIdiomPhone)
{}
C.if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
{}
4.以下哪個演算法不是對稱式加密演算法()
A.DES B.RC5 C.AES D.RSA
對稱式加密:(也叫私密金鑰加密)
指機密和解密使用相同秘鑰的密碼編譯演算法。有時又叫傳統密碼演算法,就是加密金鑰能夠從解密密鑰中推算出來,同時解密密鑰也可以從加密金鑰中推算出來。
DES演算法把64位的明文輸入塊變為64位的密文輸出塊,它所使用的密鑰也是64位,其演算法主要分成兩步
1)初始置換
其功能是把輸入的64位元據塊按位重新組合,並把輸出分為L0和R0兩部分,每部分各長32位,其置換規則為將輸入的第58位換到第1位,第50位換到第2位……,依次類推,最後一位是原來的第7位。
其置換規則見下表:
58,50,42,34,26,18,10,02
60,52,44,36,28,20,12,04
62,54,46,38,30,22,14,06
64,56,48,40,32,24,16,08
57,49,41,33,25,17,09,01
59,51,43,35,27,19,11,03
61,53,45,37,29,21,13,05
63,55,47,39,31,23,15,07
2)逆置換
經過16次迭代運算後,得到L0,R0,將此作為輸入,進行逆置換,逆置換正好是初始置換的逆運算,由此即得到密文輸出。
此演算法是對稱式加密演算法體系中的代表,在電腦網路系統中廣泛使用。
AES:進階密碼編譯演算法(Advanced Encryption Standard)在密碼學中又叫Rijndael加密法,是美國聯邦政府採用的一種區塊加密標準。這個標準用來替代原先的DES,已經被多方分析且廣為全世界所使用。
5.已知有序序列b c d e f g q r s t,則在二分尋找關鍵字b的過程中,先後進行比較的關鍵字依次是()
A.f d b
B.f c b
C.g c b
D.g d b
【解釋】
使用折半尋找的序列必須是有序的
二分尋找的重點在於記錄尋找區間
第一次尋找 區間是[0,9]
first =0;
last =9;
中間位置middle=(first+last)/2 = 4(捨去小數點)
4對應的元素是f
我們要尋找的是b而不是f,但是我們發現b比f小,序列是有序的,那麼我們要找的b應該在f左邊(不包括f)
第二次尋找
尋找區間[0 3]
middle = 1
1對應的元素是c,比b大
第三次尋找
尋找區間[0,0]
middle=0;
找到元素b
所以依次是f-c-b
著作權聲明:本文由http://www.bestnathan.com/原創,歡迎轉載分享。請尊重作者勞動,轉載時保留該聲明和作者部落格連結,謝謝