国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS 筆試題

2019-11-06 09:43:35
字體:
來源:轉載
供稿:網友
面向過程、面向對象 的區別?面向過程:就是分析出解決問題所需要的步驟,然后用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就可以了。 

面向對象:是把構成問題事務分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。

類別的作用?繼承和類別在實現中有何區別?答案:category:可以在不獲悉,不改變原來代碼的情況下往里面添加新的方法,只能添加,不能刪除或者修改。并且如果類別和原來類中的方法產生名稱沖突,則類別將覆蓋原來的方法,因為類別具有更高的優先級。類別主要有3個作用:(1)將類的實現分散到多個不同文件或多個不同框架中。(2)創建對私有方法的前向引用。(3)向對象添加非正式協議。 繼承:可以增加,修改或者刪除方法,并且可以增加屬性。類別和類擴展的區別 答案:category和extensions的不同在于后者可以添加屬性。另外后者添加的方法是必須要實現的。  extensions可以認為是一個私有的Category。類別的作用類別主要有3個作用:(1)將類的實現分散到多個不同文件或多個不同框架中。(2)創建對私有方法的前向引用。(3)向對象添加非正式協議。類別有兩方面的局限性:(1)無法向類中添加新的實例變量,類別沒有位置容納實例變量。( 無法添加實例變量的局限,可以使用字典對象解決 )(2)名稱沖突,即當類別中的方法與原始類方法名稱沖突時,類別具有更高的優先級。類別方法將完全取代初始方法從而無法再使用初始方法。代理的作用?What is purpose of delegates?答案:代理的目的是改變或傳遞控制鏈。允許一個類在某些特定時刻通知到其他類,而不需要獲取到那些類的指針。  可以減少框架復雜度。另外一點,代理可以理解為java中的回調監聽機制的一種類似。什么時候用delegate,什么時候用Notification? 答:delegate針對one-to-one關系,并且reciever可以返回值給sender,notification可以針對one-to-one/many/none,reciever無法返回值給sender.所以,delegate用于sender希望接受到reciever的某個功能反饋值,notification用于通知多個object某個事件。協議有控制鏈(has-a)的關系,通知沒有。因此控制鏈(has-a從英語單詞大致可以看出,單一擁有和可控制的對應關系。

我們說的oc是動態運行時語言是什么意思?When we call objective c is runtime language what does it mean?答案:這個問題其實淺涉及到兩個概念,運行時和多態。簡單來說。運行時機制:使我們直到運行時才去決定一個對象的類別,以及調用該類別對象指定方法。(有點像工廠方法)多態:主要是將數據類型的確定由編譯時,推遲到了運行時,不同對象以自己的方式響應相同的消息的能力叫做多態。意思就是假設生物類(life)都用有一個相同的方法-eat;那人類屬于生物,豬也屬于生物,都繼承了life后,實現各自的eat,但是調用是我們只需調用各自的eat方法。也就是不同的對象以自己的方式響應了相同的消息(響應了eat這個選擇器)。因此也可以說,運行時機制是多態的基礎?關于多態性:Polymorphism?答案:多態,子類指針可以賦值給父類。說說響應鏈 What is responder chain?答案:事件響應鏈。包括點擊事件,畫面刷新事件等。在視圖棧內從上至下,或者從下之上傳播。可以說點事件的分發,傳遞以及處理。具體可以去看下touch事件這塊。因為問的太抽象化了嚴重懷疑題目出到越后面就越笼統。frame和bounds有什么不同?Difference between frame and bounds?答案:frame指的是:該view在父view坐標系統中的位置和大小。(參照點是父親的坐標系統)bounds指的是:該view在本身坐標系統中的位置和大小。(參照點是本身坐標系統)方法和選擇器有何不同?Difference between method and selector?答案:selector是一個方法的名稱,method是一個組合體,包含了方法的名稱和實現.NSOperation queue?答案:存放NSOperation的集合類。操作和操作隊列,基本可以看成java中的線程和線程池的概念。用于處理ios多線程開發的問題。網上部分資料提到一點是,雖然是queue,但是卻并不是帶有隊列的概念,放入的操作并非是按照嚴格的先進現出。這邊又有個疑點是,對于隊列來說,先進先出的概念是Afunc添加進隊列,Bfunc緊跟著也進入隊列,Afunc先執行這個是必然的,但是Bfunc是等Afunc完全操作完以后,B才開始啟動并且執行(有多個窗口、或多個MAT機),因此隊列的概念離亂上有點違背了多線程處理這個概念。但是轉念一想其實可以參考銀行的取票和叫號系統。因此對于A比B先排隊取票但是B率先執行完操作,我們亦然可以感性認為這還是一個隊列。但是后來看到一票關于這操作隊列話題的文章,其中有一句提到“因為兩個操作提交的時間間隔很近,線程池中的線程,誰先啟動是不定的。”(這句話是錯誤的,先來先啟動,但是誰先執行完是不一定的)瞬間覺得這個queue名字有點忽悠人了,還不如pool~綜合一點,我們知道他可以比較大的用處在于可以幫組多線程編程就好了。id、nil代表什么?id和void *并非完全一樣。在上面的代碼中,id是指向struct objc_object的一個指針,這個意思基本上是說,id是一個指向任何一個繼承了Object(或者NSObject)類的對象。需要注意的是id是一個指針,所以你在使用id的時候不需要加星號。比如id foo=nil定義了一個nil指針,這個指針指向NSObject的一個任意子類。而id *foo=nil則定義了一個指針,這個指針指向另一個指針,被指向的這個指針指向NSObject的一個子類。nil和C語言的NULL相同,在objc/objc.h中定義。nil表示一個Objctive-C對象,這個對象的指針指向空(沒有東西就是空)。首字母大寫的Nil和nil有一點不一樣,Nil定義一個指向空的類(是Class,而不是對象)。nil用來給對象賦值(Objective-C中的任何對象都屬于id類型),NULL則給任何指針賦值,NULL和nil不能互換,Nil用于類指針賦值(在Objective-C中類是一個類),而NSNull則用于集合操作,雖然它們表示的都是空值,但使用的場合完全不同。nil: (空對象:對象指針為空)  表示一個對象的指針指向空 NSURL *url = nil;Nil:(空類:類指針為空)       Class  class =Nil;NULL:(空指針)則給任何指針賦值 int *pointerInt =NULL;NSString* str =NULL;NSNull (空集合)則用于集合操作// nil是一個對象指針為空,Nil是一個類指針為空,NULL是基本數據類型為空。NSNull 對于像NSArray這樣的類型,nil或NULL不能做為加到其中的Object,如果定義了一個NSArray,為其分配了內存,又想設置其中的內容為空,則可以用[NSNULL null】返回的對象來初始化NSArray中的內容PRovider是指某個iphone軟件的Push服務器,這篇文章我將使用.net作為Provider。 APNS是Apple Push Notification Service(Apple Push服務器)的縮寫,是蘋果的服務器。上圖可以分為三個階段。第一階段:.net應用程序把要發送的消息、目的iPhone的標識打包,發給APNS。 第二階段:APNS在自身的已注冊Push服務的iPhone列表中,查找有相應標識的iPhone,并把消息發到iPhone。 第三階段:iPhone把發來的消息傳遞給相應的應用程序,并且按照設定彈出Push通知。http://blog.csdn.net/zhuqilin0/article/details/6527113    //消息推送機制看內存泄露時候:在搜索中搜索run找到Run Static Snalyzer .20.一個objc對象的isa的指針指向什么?有什么作用?指向他的類對象:從而可以找到對象上的方法24. objc中的類方法和實例方法有什么本質區別和聯系?類方法:1.是屬于類對象的2.只能通過類對象調用3.類方法中的self是類對象4.可以調用其他的類方法5.不能訪問成員變量6.不定直接調用對象方法實例方法:1.是屬于實例對象的2只能通.過實例對象調用3.實例方法中的self是實例對象4.可以訪問成員變量5.可以直接調用實例方法6.也可以調用類方法(通過類名) 華為1、局部變量能否和全局變量重名?           答:能,局部會屏蔽全局。要用全局變量,需要使用"::"           局部變量可以與全局變量同名,在函數內引用這個變量時,會用到同名的局部變量,而           不會用到全局變量。對于有些編譯器而言,在同一個函數內可以定義多個同名的局部變           量,比如在兩個循環體內都定義一個同名的局部變量,而那個局部變量的作用域就在那           個循環體內 2、如何引用一個已經定義過的全局變量?           答:extern           可以用引用頭文件的方式,也可以用extern關鍵字,如果用引用頭文件方式來引用某個           在頭文件中聲明的全局變量,假定你將那個變量寫錯了,那么在編譯期間會報錯,如果你           用extern方式引用時,假定你犯了同樣的錯誤,那么在編譯期間不會報錯,而在連接期間報錯3、全局變量可不可以定義在可被多個.C文件包含的頭文件中?為什么?           答:可以在不同的C文件中聲明同名的全局變量,以static形式來聲明,前提是其中只能有一個C文件中對此變量賦初值,此時連接不會出錯4、語句for(;1;)有什么問題?它是什么意思?           答:和while(1)相同。5、do……while和while……do有什么區別?           答:前一個循環一遍再判斷,后一個判斷以后再循環試題2:以下為Windows NT下的32位C++程序,請計算sizeof的值void Func ( char str[100] ){ sizeof( str ) = ?}void *p = malloc( 100 );sizeof ( p ) = ?  解答:sizeof( str ) = 4sizeof ( p ) = 4  剖析:  Func ( char str[100] )函數中數組名作為函數形參時,在函數體內,數組名失去了本身的內涵,僅僅只是一個指針;在失去其內涵的同時,它還失去了其常量特性,可以作自增、自減等操作,可以被修改。數組名的本質如下:(1)數組名指代一種數據結構,這種數據結構就是數組;  例如:char str[10];cout<<sizeof(str)<<endl;  輸出結果為10,str指代數據結構char[10](2)數組名可以轉換為:指向其指代實體的指針,而且是一個指針常量,不能作自增、自減等操作,不能被修改;char str[10];str++; //編譯出錯,提示str不是左值 (3)數組名作為函數形參時,淪為普通指針。  Windows NT 32位平臺下,指針的長度(占用內存的大小)為4字節,故sizeof( str )、sizeof ( p )都為4。 試題3:寫一個“標準”宏MIN,這個宏輸入兩個參數并返回較小的一個。另外,當你寫下面的代碼時會發生什么事?least = MIN(*p++, b); 解答:#define MIN(A,B) ((A) <= (B) ? (A) : (B))MIN(*p++, b)會產生宏的副作用對MIN(*p++, b)的作用結果是:((*p++) <= (b) ? (*p++) : (*p++))  這個表達式會產生副作用,指針p會作三次++自增操作。可擴展標記語言extensible markup language;xml2.用于標記電子文件使其具有結構性的標記語言,可以用來標記數據、定義數據類型,是一種允許用戶對自己的標記語言進行定義的源語言。3,數據庫提供了更強有力的數據存儲和分析能力,例如:數據索引、排序、查找、相關一致性等,XML僅僅是存儲數據。4.XML與HTML的設計區別是:XML的核心是數據,其重點是數據的內容。而HTML被設計用來顯示數據,其重點是數據的顯示。5.XML和HTML語法區別:HTML的標記不是所有的都需要成對出現,XML則要求所有的標記必須成對出現;HTML標記不區分大小寫,XML則大小敏感,即區分大小寫。 結合  XML的簡單使其易于在任何應用程序中讀寫數據,這使XML很快成為數據交換的唯一公共語言,雖然不同的應用軟件也支持其它的數據交換格式,但不久之后他們都將支持XML,那就意味著程序可以更容易的與Windows,Mac OS,linux以及其他平臺下產生的信息結合,然后可以很容易加載XML數據到程序中并分析他,并以XML格式輸出結果。  XML去掉了之前令許多開發人員頭疼的SGML(標準通用標記語言)的隨意語法。在XML中,采用了如下的語法:  1任何的起始標簽都必須有一個結束標簽。  2可以采用另一種簡化語法,可以在一個標簽中同時表示起始和結束標簽。這種語法是在大于符號之前緊跟一個斜線(/),例如<tag/ >。XML解析器會將其翻譯成<tag></tag>。  3標簽必須按合適的順序進行嵌套,所以結束標簽必須按鏡像順序匹配起始標簽,例如this is asamplestring。這好比是將起始和結束標簽看作是數學中的左右括號:在沒有關閉所有的內部括號之前,是不能關閉外面的括號的。  4所有的特性都必須有值。  5所有的特性都必須在值的周圍加上雙引號。

HTTP協議詳解HTT:P是一個屬于應用層的面向對象的協議,由于其簡捷、快速的方式,適用于分布式超媒體信息系統。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的規范化工作正在進行之中。 http(超文本傳輸協議)是一個基于請求與響應模式的、無狀態的、應用層的協議,常基于TCP的連接方式,HTTP1.1版本中給出一種持續連接的機制,絕大多數的Web開發,都是構建在HTTP協議之上的Web應用。HTTP協議的主要特點可概括如下:1.支持客戶/服務器模式。2.簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。    每種方法規定了客戶與服務器聯系的類型不同。由于HTTP協議簡單,使得HTTP服務器的程序規模小,因而通信速度很快。3.靈活:HTTP允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。4.無連接:無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,并收到客戶的應答后,即斷開連接。    采用這種方式可以節省傳輸時間。5.無狀態:HTTP協議是無狀態協議。無狀態是指協議對于事務處理沒有記憶能力。缺少狀態意味著如果后續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在服務器不需要先前信息時它的應答就較快。TCP/UDP區別聯系TCP---傳輸控制協議,提供的是面向連接、可靠的字節流服務。當客戶和服務器彼此交換數據前,必須先在雙方之間建立一個TCP連接,之后才能傳輸數據。TCP提供超時重發,丟棄重復數據,檢驗數據,流量控制等功能,保證數據能從一端傳到另一端。 UDP---用戶數據報協議,是一個簡單的面向數據報的運輸層協議。UDP不提供可靠性,它只是把應用程序傳給IP層的數據報發送出去,但是并不能保證它們能到達目的地。由于UDP在傳輸數據報前不用在客戶和服務器之間建立一個連接,且沒有超時重發等機制,故而傳輸速度很快 

TCP(Transmission Control Protocol,傳輸控制協議)是基于連接的協議,也就是說,在正式收發數據前,必須和對方建立可靠的連接。一個TCP連接必須要經過三次“對話”才能建立起來,我們來看看這三次對話的簡單過程:1.主機A向主機B發出連接請求數據包;2.主機B向主機A發送同意連接和要求同步(同步就是兩臺主機一個在發送,一個在接收,協調工作)的數據包;3.主機A再發出一個數據包確認主機B的要求同步:“我現在就發,你接著吧!”,這是第三次對話。三次“對話”的目的是使數據包的發送和接收同步,經過三次“對話”之后,主機A才向主機B正式發送數據。 UDP(User Data Protocol,用戶數據報協議)是與TCP相對應的協議。它是面向非連接的協議,它不與對方建立連接,而是直接就把數據包發送過去!  UDP適用于一次只傳送少量數據、對可靠性要求不高的應用環境。 tcp協議和udp協議的差別 是否連接面向連接面向非連接 傳輸可靠性可靠不可靠 應用場合傳輸大量數據少量數據 速度慢快socket連接、http連接的區別簡單說,你瀏覽的網頁(網址以http://開頭)都是http協議傳輸到你的瀏覽器的,而http是基于socket之上的。socket是一套完成tcp,udp協議的接口。HTTP協議:簡單對象訪問協議,對應于應用層  ,HTTP協議是基于TCP連接的tcp協議:   對應于傳輸層ip協議:    對應于網絡層TCP/IP是傳輸層協議,主要解決數據如何在網絡中傳輸;而HTTP是應用層協議,主要解決如何包裝數據。Socket:是對TCP/IP協議的封裝,Socket本身并不是協議,而是一個調用接口(API),通過Socket,我們才能使用TCP/IP協議。http連接:http連接就是所謂的短連接,即客戶端向服務器端發送一次請求,服務器端響應后連接即會斷掉;socket連接:socket連接就是所謂的長連接,理論上客戶端和服務器端一旦建立起連接將不會主動斷掉;但是由于各種環境因素可能會是連接斷開,比如說:服務器端或客戶端主機down了,網絡故障,或者兩者之間長時間沒有數據傳輸,網絡防火墻可能會斷開該連接以釋放網絡資源。所以當一個socket連接中沒有數據的傳輸,那么為了維持連接需要發送心跳消息~~具體心跳消息格式是開發者自己定義的我們已經知道網絡中的進程是通過socket來通信的,那什么是socket呢?socket起源于Unix,而Unix/Linux基本哲學之一就是“一切皆文件”,都可以用“打開open –>讀寫write/read –>關閉close”模式來操作。我的理解就是Socket就是該模式的一個實現,socket即是一種特殊的文件,一些socket函數就是對其進行的操作(讀/寫IO、打開、關閉),這些函數我們在后面進行介紹。我們在傳輸數據時,可以只使用(傳輸層)TCP/IP協議,但是那樣的話,如果沒有應用層,便無法識別數據內容,如果想要使傳輸的數據有意義,則必須使用到應用層協議,應用層協議有很多,比如HTTP、FTP、TELNET等,也可以自己定義應用層協議。WEB使用HTTP協議作應用層協議,以封裝HTTP文本信息,然后使用TCP/IP做傳輸層協議將它發到網絡上。1)Socket是一個針對TCP和UDP編程的接口,你可以借助它建立TCP連接等等。而TCP和UDP協議屬于傳輸層 。 而http是個應用層的協議,它實際上也建立在TCP協議之上。  (HTTP是轎車,提供了封裝或者顯示數據的具體形式;Socket是發動機,提供了網絡通信的能力。) 2)Socket是對TCP/IP協議的封裝,Socket本身并不是協議,而是一個調用接口(API),通過Socket,我們才能使用TCP/IP協議。Socket的出現只是使得程序員更方便地使用TCP/IP協議棧而已,是對TCP/IP協議的抽象,從而形成了我們知道的一些最基本的函數接口。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 灌南县| 长汀县| 那坡县| 巍山| 齐齐哈尔市| 鹤庆县| 宁阳县| 桐乡市| 韩城市| 海淀区| 巴中市| 盐源县| 永丰县| 孝昌县| 玉树县| 洛浦县| 阿克苏市| 沙坪坝区| 彩票| 贡嘎县| 诸暨市| 浙江省| 信丰县| 安化县| 盖州市| 道孚县| 东乌珠穆沁旗| 德令哈市| 黔江区| 黄骅市| 虎林市| 中卫市| 东台市| 石城县| 荆门市| 交城县| 威宁| 乌兰县| 蓝山县| 贵阳市| 黎川县|