80. 死鎖的4個必要條件
java
答:互斥、請求保持、不可剝奪、環路ios
81. 死鎖的處理程序員
答:鴕鳥策略、預防策略、避免策略、檢測與解除死鎖web
82. cocoa touch框架sql
答:iPhone OS 應用程序的基礎 Cocoa Touch 框架重用了許多 Mac 系統的成熟模式,可是它更多地專一於觸摸的接口和優化。數據庫
UIKit 爲您提供了在 iPhone OS 上實現圖形,事件驅動程序的基本工具,其創建在和 Mac OS X 中同樣的 Foundation 框架上,包括文件處理,網絡,字符串操做等。編程
Cocoa Touch 具備和 iPhone 用戶接口一致的特殊設計。有了 UIKit,您可使用 iPhone OS 上的獨特的圖形接口控件,按鈕,以及全屏視圖的功能,您還可使用加速儀和多點觸摸手勢來控制您的應用。api
各色俱全的框架 除了UIKit 外,Cocoa Touch 包含了建立世界一流 iPhone 應用程序須要的全部框架,從三維圖形,到專業音效,甚至提供設備訪問 API 以控制攝像頭,或經過 GPS 獲知當前位置。xcode
Cocoa Touch 既包含只須要幾行代碼就能夠完成所有任務的強大的 Objective-C 框架,也在須要時提供基礎的 C 語言 API 來直接訪問系統。這些框架包括:安全
Core Animation:經過 Core Animation,您就能夠經過一個基於組合獨立圖層的簡單的編程模型來建立豐富的用戶體驗。
Core Audio:Core Audio 是播放,處理和錄製音頻的專業技術,可以輕鬆爲您的應用程序添增強大的音頻功能。
Core Data:提供了一個面向對象的數據管理解決方案,它易於使用和理解,甚至可處理任何應用或大或小的數據模型。
功能列表:框架分類
下面是 Cocoa Touch 中一小部分可用的框架:
音頻和視頻:Core Audio ,OpenAL ,Media Library ,AV Foundation
數據管理 :Core Data ,SQLite
圖形和動畫 :Core Animation ,OpenGL ES ,Quartz 2D
網絡:Bonjour ,WebKit ,BSD Sockets
用戶應用:Address Book ,Core Location ,Map Kit ,Store Kit
83. 自動釋放池是什麼,如何工做
答:當您向一個對象發送一個autorelease消息時,Cocoa就會將該對象的一個引用放入到最新的自動釋放.它仍然是個正當的對象,所以自動釋放池定義的做用域內的其它對象能夠向它發送消息。當程序執行到做用域結束的位置時,自動釋放池就會被釋放,池中的全部對象也就被釋放。
84. Objective-C的優缺點。
答:objc優勢:
1). Cateogies
2). Posing
3). 動態識別
4).指標計算
5).彈性訊息傳遞
6).不是一個過分複雜的 C 衍生語言
7).Objective-C 與 C++ 可混合編程
objc缺點:
1).不支援命名空間
2).不支持運算符重載
3).不支持多重繼承
4).使用動態運行時類型,全部的方法都是函數調用,因此不少編譯時優化方法都用不到。(如內聯函數等),性能低劣。
85. sprintf,strcpy,memcpy使用上有什麼要注意的地方。
答:
1). sprintf是格式化函數。將一段數據經過特定的格式,格式化到一個字符串緩衝區中去。sprintf格式化的函數的長度不可控,有可能格式化後的字符串會超出緩衝區的大小,形成溢出。
2).strcpy是一個字符串拷貝的函數,它的函數原型爲strcpy(char *dst, const char *src
將src開始的一段字符串拷貝到dst開始的內存中去,結束的標誌符號爲 ‘\0',因爲拷貝的長度不是由咱們本身控制的,因此這個字符串拷貝很容易出錯。
3). memcpy是具有字符串拷貝功能的函數,這是一個內存拷貝函數,它的函數原型爲memcpy(char *dst, const char* src, unsigned int len);將長度爲len的一段內存,從src拷貝到dst中去,這個函數的長度可控。可是會有內存疊加的問題。
86. readwrite,readonly,assign,retain,copy,nonatomic 屬性的做用
答:@property是一個屬性訪問聲明,擴號內支持如下幾個屬性:
1).getter=getterName,setter=setterName,設置setter與 getter的方法名
2).readwrite,readonly,設置可供訪問級別
2).assign,setter方法直接賦值,不進行任何retain操做,爲了解決原類型與環循引用問題
3).retain,setter方法對參數進行release舊值再retain新值,全部實現都是這個順序(CC上有相關資料)
4).copy,setter方法進行Copy操做,與retain處理流程同樣,先舊值release,再 Copy出新的對象,retainCount爲1。這是爲了減小對上下文的依賴而引入的機制。
5).nonatomic,非原子性訪問,不加同步,多線程併發訪問會提升性能。注意,若是不加此屬性,則默認是兩個訪問方法都爲原子型事務訪問。鎖被加到所屬對象實例級。
87. http和scoket通訊的區別。
答: http是客戶端用http協議進行請求,發送請求時候須要封裝http請求頭,並綁定請求的數據,服務器通常有web服務器配合(固然也非絕對)。 http請求方式爲客戶端主動發起請求,服務器才能給響應,一次請求完畢後則斷開鏈接,以節省資源。服務器不能主動給客戶端響應(除非採起http長鏈接 技術)。iphone主要使用類是NSUrlConnection。
scoket是客戶端跟服務器直接使用socket「套接字」進行鏈接,並無規定鏈接後斷開,因此客戶端和服務器能夠保持鏈接通道,雙方 均可以主動發送數據。通常在遊戲開發或股票開發這種要求即時性很強而且保持發送數據量比較大的場合使用。主要使用類是CFSocketRef。
88. TCP和UDP的區別
答: TCP全稱是Transmission Control Protocol,中文名爲傳輸控制協議,它能夠提供可靠的、面向鏈接的網絡數據傳遞服務。傳輸控制協議主要包含下列任務和功能:
* 確保IP數據報的成功傳遞。
* 對程序發送的大塊數據進行分段和重組。
* 確保正確排序及按順序傳遞分段的數據。
* 經過計算校驗和,進行傳輸數據的完整性檢查。
TCP提供的是面向鏈接的、可靠的數據流傳輸,而UDP提供的是非面向鏈接的、不可靠的數據流傳輸。
簡單的說,TCP注重數據安全,而UDP數據傳輸快點,但安全性通常
89. 你瞭解svn,cvs等版本控制工具麼?
答: 版本控制 svn,cvs 是兩種版控制的器,須要配套相關的svn,cvs服務器。
scm是xcode裏配置版本控制的地方。版本控制的原理就是a和b同時開發一個項目,a寫完當天的代碼以後把代碼提交給服務器,b要作的時候先從服務器獲得最新版本,就能夠接着作。 若是a和b都要提交給服務器,而且同時修改了同一個方法,就會產生代碼衝突,若是a先提交,那麼b提交時,服務器能夠提示衝突的代碼,b能夠清晰的看到,並作出相應的修改或融合後再提交到服務器。
90. 什麼是push。
答: 客戶端程序留下後門端口,客戶端老是監聽針對這個後門的請求,因而 服務器能夠主動像這個端口推送消息。
91. 靜態連接庫
答:此爲.a文件,至關於java裏的jar包,把一些類編譯到一個包中,在不一樣的工程中若是導入此文件就可使用裏面的類,具體使用依然是#import 「 xx.h」。
92. fmmpeg框架
答: 音視頻編解碼框架,內部使用UDP協議針對流媒體開發,內部開闢了六個端口來接受流媒體數據,完成快速接受之目的。
93. fmdb框架
答:數據庫框架,對sqllite的數據操做進行了封裝,使用着可把精力都放在sql語句上面。
94. 320框架
答: ui框架,導入320工程做爲框架包如同添加一個普通框架同樣。cover(open) flower框架 (2d 仿射技術),內部核心類是CATransform3D.
94. 什麼是沙盒模型?哪些操做是屬於私有api範疇?
答:某個iphone工程進行文件操做有此工程對應的指定的位置,不能逾越。
iphone沙箱模型的有四個文件夾documents,tmp,app,Library,永久數據存儲通常放documents文件夾,獲得模擬器的路徑的可以使用NSHomeDirectory()方法。Nsuserdefaults保存的文件在tmp文件夾裏。
95. 在一個對象的方法裏面:self.name= 「object」;和 name =」object」 有什麼不一樣嗎?
答:self.name =」object」:會調用對象的setName()方法;
name = 「object」:會直接把object賦值給當前對象的name屬性。
96. 請簡要說明viewDidLoad和viewDidUnload什麼時候調用
答:viewDidLoad在view從nib文件初始化時調用,loadView在controller的view爲nil時調用。此方法在編程實現view時調用,view控制器默認會註冊memory warning notification,當view controller的任何view沒有用的時候,viewDidUnload會被調用,在這裏實現將retain的view release,若是是retain的IBOutlet view 屬性則不要在這裏release,IBOutlet會負責release 。
97. 簡述內存分區狀況
答:
1).代碼區:存放函數二進制代碼
2).數據區:系統運行時申請內存並初始化,系統退出時由系統釋放。存放全局變量、靜態變量、常量
3).堆區:經過malloc等函數或new等操做符動態申請獲得,需程序員手動申請和釋放
4).棧區:函數模塊內申請,函數結束時由系統自動釋放。存放局部變量、函數參數
98. 隊列和棧有什麼區別:
答:隊列和棧是兩種不一樣的數據容器。從」數據結構」的角度看,它們都是線性結構,即數據元素之間的關係相同。
隊列是一種先進先出的數據結構,它在兩端進行操做,一端進行入隊列操做,一端進行出列隊操做。
棧是一種先進後出的數據結構,它只能在棧頂進行操做,入棧和出棧都在棧頂操做。
99. HTTP協議中,POST和GET的區別是什麼?
答:
1).GET 方法
GET 方法提交數據不安全,數據置於請求行,客戶端地址欄可見;
GET 方法提交的數據大小有限
GET 方法不能夠設置書籤
2).POST 方法
POST 方法提交數據安全,數據置於消息主體內,客戶端不可見
POST 方法提交的數據大小沒有限制
POST 方法能夠設置書籤
100. iOS的系統架構
答: iOS的系統架構分爲( 核心操做系統層 theCore OS layer )、( 核心服務層theCore Services layer )、( 媒體層 theMedia layer )和( Cocoa 界面服務層 the Cocoa Touch layer )四個層次。
101. 控件主要響應3種事件
答:1). 基於觸摸的事件 ; 2). 基於值的事件 ; 3).基於編輯的事件。
102. xib文件的構成分爲哪3個圖標?都具備什麼功能。
答: File’s Owner 是全部 nib 文件中的每一個圖標,它表示從磁盤加載 nib 文件的對象;
First Responder 就是用戶當前正在與之交互的對象;
View 顯示用戶界面;完成用戶交互;是 UIView 類或其子類。
103. 簡述視圖控件器的生命週期。
答: loadView 儘管不直接調用該方法,如多手動建立本身的視圖,那麼應該覆蓋這個方法並將它們賦值給試圖控制器的 view 屬性。
viewDidLoad 只有在視圖控制器將其視圖載入到內存以後才調用該方法,這是執行任何其餘初始化操做的入口。
viewDidUnload 當試圖控制器從內存釋放本身的方法的時候調用,用於清楚那些可能已經在試圖控制器中建立的對象。
viewVillAppear 當試圖將要添加到窗口中而且還不可見的時候或者上層視圖移出圖層後本視圖變成頂級視圖時調用該方法,用於執行諸如改變視圖方向等的操做。實現該方法時確保調用 [super viewWillAppear:
viewDidAppear 當視圖添加到窗口中之後或者上層視圖移出圖層後本視圖變成頂級視圖時調用,用於放置那些須要在視圖顯示後執行的代碼。確保調用 [super viewDidAppear:] 。
104. 動畫有基本類型有哪幾種;表視圖有哪幾種基本樣式。
答:動畫有兩種基本類型:隱式動畫和顯式動畫。
105. 實現簡單的表格顯示須要設置UITableView的什麼屬性、實現什麼協議?
答:實現簡單的表格顯示須要設置 UITableView 的 dataSource 和 delegate 屬性,實現UITableViewDataSource 和 UITableViewDelegate 協議。
106. Cocoa Touch提供了哪幾種Core Animation過渡類型?
答: Cocoa Touch 提供了 4 種 Core Animation 過渡類型,分別爲:交叉淡化、推擠、顯示和覆蓋。
107. UIView與CLayer有什麼區別?
答:
1).UIView 是 iOS 系統中界面元素的基礎,全部的界面元素都是繼承自它。它自己徹底是由 CoreAnimation 來實現的。它真正的繪圖部分,是由一個 CALayer 類來管理。 UIView 自己更像是一個 CALayer 的管理器,訪問它的跟繪圖和跟座標有關的屬性。
2).UIView 有個重要屬性 layer ,能夠返回它的主 CALayer 實例。
3).UIView 的 CALayer 相似 UIView 的子 View 樹形結構,也能夠向它的 layer 上添加子layer ,來完成某些特殊的表示。即 CALayer 層是能夠嵌套的。
4).UIView 的 layer 樹形在系統內部,被維護着三份 copy 。分別是邏輯樹,這裏是代碼能夠操縱的;動畫樹,是一箇中間層,系統就在這一層上更改屬性,進行各類渲染操做;顯示樹,其內容就是當前正被顯示在屏幕上得內容。
5).動畫的運做:對 UIView 的 subLayer (非主 Layer )屬性進行更改,系統將自動進行動畫生成,動畫持續時間的缺省值彷佛是 0.5 秒。
6).座標系統: CALayer 的座標系統比 UIView 多了一個 anchorPoint 屬性,使用CGPoint 結構表示,值域是 0~1 ,是個比例值。這個點是各類圖形變換的座標原點,同時會更改 layer 的 position 的位置,它的缺省值是 {0.5,0.5} ,即在 layer 的中央。
7).渲染:當更新層,改變不能當即顯示在屏幕上。當全部的層都準備好時,能夠調用setNeedsDisplay 方法來重繪顯示。
8).變換:要在一個層中添加一個 3D 或仿射變換,能夠分別設置層的 transform 或affineTransform 屬性。
9).變形: Quartz Core 的渲染能力,使二維圖像能夠被自由操縱,就好像是三維的。圖像能夠在一個三維座標系中以任意角度被旋轉,縮放和傾斜。 CATransform3D 的一套方法提供了一些魔術般的變換效果。
108. Quatrz 2D的繪圖功能的三個核心概念是什麼並簡述其做用。
答:上下文:主要用於描述圖形寫入哪裏;
路徑:是在圖層上繪製的內容;
狀態:用於保存配置變換的值、填充和輪廓, alpha 值等。
109. iPhone OS主要提供了幾種播放音頻的方法?
答: SystemSound Services
AVAudioPlayer 類
Audio Queue Services
OpenAL
110. 使用AVAudioPlayer類調用哪一個框架、使用步驟?
答: AVFoundation.framework
步驟:配置 AVAudioPlayer 對象;
實現 AVAudioPlayer 類的委託方法;
控制 AVAudioPlayer 類的對象;
監控音量水平;
回放進度和拖拽播放。
111. 有哪幾種手勢通知方法、寫清楚方法名?
答:
-(void)touchesBegan:(NSSet*)touchedwithEvent:(UIEvent*)event;
-(void)touchesMoved:(NSSet*)touched withEvent:(UIEvent*)event;
-(void)touchesEnded:(NSSet*)touchedwithEvent:(UIEvent*)event;
-(void)touchesCanceled:(NSSet*)touchedwithEvent:(UIEvent*)event;
112. CFSocket使用有哪幾個步驟。
答:建立 Socket 的上下文;建立 Socket ;配置要訪問的服務器信息;封裝服務器信息;鏈接服務器;
113. Core Foundation中提供了哪幾種操做Socket的方法?
答: CFNetwork 、 CFSocket 和 BSD Socket 。
114. 解析XML文件有哪幾種方式?
答:以 DOM 方式解析 XML 文件;以 SAX 方式解析 XML 文件;
115. ios 平臺怎麼作數據的持久化?coredata 和sqlite有無必然聯繫?coredata是一個關係型數據庫嗎?
答:iOS 中能夠有四種持久化數據的方式:屬性列表(plist)、對象歸檔、 SQLite3 和 Core Data; core data 可使你以圖形界面的方式快速的定義 app 的數據模型,同時在你的代碼中容易獲取到它。 coredata 提供了基礎結構去處理經常使用的功能,例如保存,恢復,撤銷和重作,容許你在 app 中繼續建立新的任務。在使用 core data 的時候,你不用安裝額外的數據庫系統,由於 core data 使用內置的 sqlite 數據庫。 core data 將你 app 的模型層放入到一組定義在內存中的數據對象。 coredata 會追蹤這些對象的改變,同時能夠根據須要作相反的改變,例如用戶執行撤銷命令。當 core data 在對你 app 數據的改變進行保存的時候, core data 會把這些數據歸檔,並永久性保存。 mac os x 中sqlite 庫,它是一個輕量級功能強大的關係數據引擎,也很容易嵌入到應用程序。能夠在多個平臺使用, sqlite 是一個輕量級的嵌入式 sql 數據庫編程。與 core data 框架不一樣的是, sqlite 是使用程序式的, sql 的主要的 API 來直接操做數據表。 Core Data 不是一個關係型數據庫,也不是關係型數據庫管理系統 (RDBMS) 。雖然 Core Dta 支持SQLite 做爲一種存儲類型,但它不能使用任意的 SQLite 數據庫。 Core Data 在使用的過程種本身建立這個數據庫。 Core Data 支持對1、對多的關係。
116. tableView 的重用機制?
答:UITableView 經過重用單元格來達到節省內存的目的: 經過爲每一個單元格指定一個重用標識符(reuseIdentifier),即指定了單元格的種類,以及當單元格滾出屏幕時,容許恢復單元格以便重用.對於不一樣種類的單元格使用不一樣的ID,對於簡單的表格,一個標識符就夠了.