1启涯、http的post與get區(qū)別與聯(lián)系整陌,實踐中如何選擇它們?
(1)get是從服務(wù)器上獲取數(shù)據(jù)脆侮,post是向服務(wù)器傳送數(shù)據(jù)锌畸。
(2)在客戶端,Get方式在通過URL提交數(shù)據(jù)靖避,數(shù)據(jù)在URL中可以看到蹋绽;POST方式,數(shù)據(jù)放置在HTML HEADER內(nèi)提交筋蓖。
(3)對于get方式,服務(wù)器端用Request.QueryString獲取變量的值退敦,對于post方式粘咖,服務(wù)器端用Request.Form獲取提交的數(shù)據(jù)。
(4)GET方式提交的數(shù)據(jù)最多只能有1024字節(jié)侈百,而POST則沒有此限制瓮下。
(5)安全性問題。正如在(1)中提到钝域,使用Get的時候讽坏,參數(shù)會顯示在地址欄上,而Post不會例证。所以路呜,如果這些數(shù)據(jù)是中文數(shù)據(jù)而且是非敏感數(shù)據(jù),那么使用get;如果用戶輸入的數(shù)據(jù)不是中文字符而且包含敏感數(shù)據(jù)胀葱,那么還是使用post為好漠秋。
Http定義了與服務(wù)器交互的不同方法,最基本的方法有4種抵屿,分別是GET庆锦,POST,PUT轧葛,DELETE搂抒。URL全稱是資源描述符,我們可以這樣認為:一個URL地址尿扯,它用于描述一個網(wǎng)絡(luò)上的資源求晶,而HTTP中的GET,POST姜胖,PUT誉帅,DELETE就對應(yīng)著對這個資源的查,改右莱,增蚜锨,刪4個操作。GET一般用于獲取/查詢資源信息慢蜓,而POST一般用于更新資源信息亚再。
2、談?wù)刼bj-c的優(yōu)缺點晨抡?
1) Cateogies
2) Posing
3)動態(tài)識別
4)指標計算
5)彈性訊息傳遞
6)不是一個過度復(fù)雜的C衍生語言
7) Objective-C與C++可混合編程
缺點:
1)不支援命名空間機制:須在其類別名稱加上前綴氛悬,時常引致沖突。
2)不支持運算符重載
3)不支持多重繼承:只容許對象繼承一個類別
4)使用動態(tài)運行時類型耘柱,所有的方法都是函數(shù)調(diào)用如捅,很多常見的編譯時性能優(yōu)化方法都不能應(yīng)用于Obj-C(如內(nèi)聯(lián)函數(shù)、常數(shù)傳播调煎、交互式優(yōu)化镜遣、純量取代與聚集等),性能劣于類似的對象抽象語言(如C++)士袄。
3悲关、obj-c有多重繼承么?不是的話有什么替代方法?
cocoa中所有的類都是NSObject的子類,多繼承在這里是用protocol委托代理來實現(xiàn)的娄柳。你不用去考慮繁瑣的多繼承寓辱,虛基類的概念。多態(tài)特性在obj-c中通過委托來實現(xiàn)赤拒。
4秫筏、談?wù)劙沧颗c蘋果的優(yōu)缺點诱鞠?
參考答案:蘋果系統(tǒng)優(yōu)點是左右流暢,軟件多跳昼,界面華麗般甲,圖標統(tǒng)一,很美觀鹅颊;缺點是系統(tǒng)封閉敷存,不允許用戶過多的個性化設(shè)置,而且只能在蘋果手機上用堪伍。安卓系統(tǒng)優(yōu)點是開放锚烦,可以自己擴展的東西很多,支持的硬件也多帝雇,各個價位的手機都有涮俄;缺點就是軟件太雜亂,兼容性有問題尸闸,圖標混亂不美觀彻亲。iOS的確比android流暢,這僅僅體現(xiàn)在較大軟件切換時吮廉,其他差不多流暢苞尝,iOS并不能做到完全后臺,如果它完全后臺估計也不會比安卓流暢多少宦芦。反之宙址,如果安卓只是注重單個運行,流暢度也會大大提升调卑,iOS系統(tǒng)更新沒有android那么頻繁抡砂,愛體驗的人會選安卓,那些怕煩的會選iOS恬涧。iOS的硬件需求選不及android注益,以至于android機會相對iOS較熱,較費電額溯捆。
android機優(yōu)缺點
優(yōu)點
1.可以自定義桌面以及各類插件
2.部分手機支持FM收音機
3.各種ROM刷機正所謂蘿卜白菜各有所愛眾多ROM里總有適合你的
4.實體按鍵比iphone多有些操作會很方便例子“我看電子書的時候有一個按鍵可以設(shè)置為翻頁按一下翻一頁”
5.隨意換電池聊浅,也可以用大容量電池【換特殊背殼才行】
6.機型多,1000左右的也有现使,四五千的也有選擇多
缺點
1.機型眾多導(dǎo)致的應(yīng)用不通用,每個機器都要找自己專用的
2.機型升級過快導(dǎo)致【拼硬件】的現(xiàn)象旷痕,用戶體驗較差
3.各種ROM良莠不齊碳锈,有的狂吃電量之類的缺陷
4.機型多導(dǎo)致的某種機器零件稀缺,維修困難例
5.一些老機器被Google拋棄沒有官方升級
關(guān)于后臺的問題每人都有自己的看法欺抗,我就說下【自己的看法】我比較新歡ios的偽后臺因為偽后臺不影響機子的使用售碳,而我用過的android機總需要關(guān)后臺要不然就會很卡,經(jīng)常有因為后臺程序過多導(dǎo)致來電話無法接聽因為內(nèi)存不夠
下面說iphone的優(yōu)缺點
優(yōu)點
1.簡單易懂,容易操作
2.應(yīng)用程序多贸人,質(zhì)量好间景,種類齊全
3.硬件和軟件高度匹配,硬件能很好地運轉(zhuǎn)軟件艺智,軟件能很好地發(fā)揮硬件的機能
4.配件多各種殼子鏡頭
5.用戶體驗好
6.手機質(zhì)感好【不知道算不算】
缺點
1.貴【不過可以買3Gs】
2.【中國區(qū)】售后服務(wù)不完善導(dǎo)致維修一下就好好幾百
3.易遭小偷關(guān)顧
4.軟件收費
5.易造成攀比現(xiàn)象
6.實體按鍵少
5倘要、代理通知kvo在不使用的時候怎么做?
通知中心NotificationCenter十拣,它是一個單例對象封拧,允許當事件發(fā)生時通知一些對象。它允許我們在低程度耦合的情況下夭问,滿足控制器與一個任意的對象進行通信的目的泽西。這種模式的基本特征是為了讓其他的對象能夠接收到在該controller中發(fā)生某種事件而產(chǎn)生的消息,controller用一個key(通知名稱)缰趋。這樣對于controller來說是匿名的捧杉,其他的使用同樣的key來注冊了該通知的對象(即觀察者)能夠?qū)νㄖ氖录鞒龇磻?yīng)。
6秘血、你單例怎么理解怎么用的?
Singleton Pattern單例設(shè)計模式味抖,通過單例模式可以保證系統(tǒng)中一個類只有一個實例而且該實例易于外界訪問,從而方便對實例個數(shù)的控制并節(jié)約系統(tǒng)資源直撤。如果希望在系統(tǒng)中某個類的對象只能存在一個非竿,單例模式是最好的解決方案。類只能有一個實例谋竖,而且必須從一個為人熟知的訪問點對其進行訪問红柱,比如工廠方法。這個唯一的實例只能通過子類化進行擴展蓖乘,而且擴展的對象不會破壞客戶端代碼锤悄。例如,UIApplication的sharedApplication方法嘉抒,任何時候都會返回一個當前應(yīng)用程序的UIApplication實例零聚。在程序中,我需要一系列的對象些侍,他們每一個內(nèi)部都包含有一組變量和功能隶症,是靜態(tài)的,而且整個程序都只需要擁有一個該類的對象岗宣。例如:1.控制程序執(zhí)行的命令器蚂会;2.管理數(shù)據(jù)庫;3.音效控制耗式;4.文件處理
7胁住、sdwebimage緩存圖片怎么實現(xiàn)的趁猴,在內(nèi)存中有緩存嗎?
SDWebImage托管在github上。這個類庫提供一個UIImageView類別以支持加載來自網(wǎng)絡(luò)的遠程圖片彪见。具有緩存管理儡司、異步下載、同一個URL下載次數(shù)控制和優(yōu)化等特征余指。SDWebImage提供了如下三個category來進行緩存捕犬。MKAnnotationView(WebCache)、UIButton(WebCache)浪规、UIImageView(WebCache)或听。
SDImageCache類提供一個創(chuàng)建空緩存的實例,并用方法imageForKey:來尋找當前緩存笋婿。UIImage *myCachedImage = [[SDImageCache sharedImageCache] imageFromKey:myCacheKey];存儲一個圖像到緩存是使用方法storeImage: forKey:默認情況下誉裆,圖像將被存儲在內(nèi)存緩存和磁盤緩存中。如果僅僅是想內(nèi)存緩存中缸濒,要使用storeImage:forKey:toDisk:方法的第三個參數(shù)帶一負值來替代足丢。
8、來說說oc這門語言吧庇配,和c c++比斩跌,你覺得哪個效率高,高到哪里了?
object_c比C++稍慢捞慌,是因為object_c的一些語言特性耀鸦,比如反射,影響了執(zhí)行效率啸澡。區(qū)別主要有以下一些方面袖订。單一繼承:Objective-C不支持多重繼承,(同Java和Smalltalk)嗅虏,而C++語言支持多重繼承洛姑。動態(tài):Objective-C是動態(tài)定型(dynamicaly typed)所以它的類庫比C++要容易操作。Objective-C在運行時可以允許根據(jù)字符串名字來訪問方法和類皮服,還可以動態(tài)連接和添加類楞艾。C++跟從面向?qū)ο缶幊汤锏腟imula67(一種早期OO語言)學派,而Objecive-C屬于Smalltalk學派龄广。 在C++里硫眯,對象的靜態(tài)類型決定你是否可以發(fā)送消息給它,而對Objecive-C來說择同,由動態(tài)類型來決定舟铜。Simula 67學派更安全,因為大部分錯誤可以在編譯時查出奠衔。而Smalltalk學派更靈活谆刨,比如一些Smalltalk看來無誤的程序拿到Simualr 67那里就無法通過。從很多方面來看归斤,C++和Objective-C的差別痊夭,與其說時技術(shù)上的,不如說是思維方式上的脏里。
9她我、還有GCD用的那些api,怎么處理線程間依賴, GCD的group操作有什么?
GCD是底層的C語言構(gòu)成的API,提供了一種新的方法來進行并發(fā)程序編寫迫横。從基本功能上講番舆,GCD有點像NSOperationQueue,他們都允許程序?qū)⑷蝿?wù)切分為多個單一任務(wù)然后提交至工作隊列來并發(fā)地或者串行地執(zhí)行矾踱。GCD比之NSOpertionQueue更底層更高效恨狈,并且它不是Cocoa框架的一部分。GCD的API很大程度上基于block呛讲,當然禾怠,GCD也可以脫離block來使用,比如使用傳統(tǒng)c機制提供函數(shù)指針和上下文指針贝搁。實踐證明吗氏,當配合block使用時,GCD非常簡單易用且能發(fā)揮其最大能力雷逆。如果NSOperation對象有執(zhí)行順利要求的話弦讽,比如operationB需要在operationA執(zhí)行完畢后才可以 執(zhí)行,那就可以通過設(shè)置NSOperation之間的依賴關(guān)系來實現(xiàn):[operationB addDependency:operationA]膀哲。
10往产、分析json、xml的區(qū)別?json等太、xml解析方式的底層是如何處理的?
區(qū)別:(1)可讀性方面:基本相同,xml的可讀性比較好
(2)可擴展性方面:都具有很好的擴展性
(3)編碼難度方面:相對而言:JSON的編碼比較容易
(4)解碼難度:json的解碼難度基本為零,xml需要考慮子節(jié)點和父節(jié)點(5)數(shù)據(jù)體積方面:json相對于xml來講,數(shù)據(jù)體積小,傳遞的速度跟快些(6)數(shù)據(jù)交互方面:json與JavaScript的交互更加方面,更容易解析處理,更好的數(shù)據(jù)交互
(7)數(shù)據(jù)描述方面:xml對數(shù)據(jù)描述性比較好
(8)傳輸速度方面:json的速度遠遠快于xml
JSON底層原理:遍歷字符串中的字符,最終根據(jù)格式規(guī)定的特殊字符,比如{}號,[]號, :號等進行區(qū)分,{}號是一個字典的開始,[]號是一個數(shù)組的開始, :號是字典的鍵和值的分水嶺,最終乃是將json數(shù)據(jù)轉(zhuǎn)化為字典,字典中值可能是字典,數(shù)組,或字符串而已捂齐。
XML底層原理:XML解析常用的解析方法有兩種:DOM解析和SAX解析。DOM采用建立樹形結(jié)構(gòu)的方式訪問XML文檔,而SAX采用的事件模型缩抡。奠宜。DOM解析把XML文檔轉(zhuǎn)化為一個包含其內(nèi)容的樹,并可以對樹進行遍歷。使用DOM解析器的時候需要處理整個XML文檔,所以對性能和內(nèi)存的要求比較高瞻想。SAX在解析XML文檔的時候可以觸發(fā)一系列的事件,當發(fā)現(xiàn)給定的tag的時候,它可以激活一個回調(diào)方法,告訴該方法制定的標簽已經(jīng)找到压真。SAX對內(nèi)存的要求通常會比較低,因為它讓開發(fā)人員自己來決定所要處理的tag。特別是當開發(fā)人員只需要處理文檔中所包含的部分數(shù)據(jù)時,SAX這種擴展能力得到了更好的體現(xiàn)蘑险。
11滴肿、面向?qū)ο蟮娜筇卣?并作簡單的介紹?
面向?qū)ο蟮娜齻€基本特征是:封裝佃迄、繼承泼差、多態(tài)贵少。封裝是面向?qū)ο蟮奶卣髦?是對象和類概念的主要特性。 封裝,也就是把客觀事物封裝成抽象的類,并且類可以把自己的 數(shù)據(jù)和方法只讓可信的類或者對象操作,對不可信的進行信息隱藏堆缘。隱藏對象的屬性和實現(xiàn)細節(jié),僅對外公開接口,提高代 碼安全性,封轉(zhuǎn)程度越高,獨立性越強,使用越方便滔灶。 繼承是指這樣一種能力:它可以使用現(xiàn)有類的所有功能,并在無需重新編寫原來的類的情況下對這些功能進行擴展。 通過 繼承創(chuàng)建的新類稱為“子類”或“派生類”吼肥。 被繼承的類稱為“基類”录平、“父類”或“超類” 多態(tài)性:允許你將父對象設(shè)置成為和一個或更多的他的子對象相等的技術(shù),賦值之后,父對象就可以根據(jù)當前賦值給它的子 對象的特性以不同的方式運作。簡單的說,就是一句話:允許將子類類型的指針賦值給父類類型的指針 12缀皱、我們說的obc是動態(tài)運行時語言是什么意思? 多態(tài)斗这。主要是將數(shù)據(jù)類型的確定由編譯時,推遲到了運行時。這個問題其實淺涉及到兩個概念,運行時和多態(tài)啤斗。簡單來說, 運行時機制使我們直到運行時才去決定一個對象的類別,以及調(diào)用該類別對象指定方法表箭。多態(tài):不同對象以自己的方式響應(yīng) 相同的消息的能力叫做多態(tài)。意思就是假設(shè)生物類(life)都用有一個相同的方法-eat;那人類屬于生物,豬也屬于生物,都 繼承了life后,實現(xiàn)各自的eat,但是調(diào)用是我們只需調(diào)用各自的eat方法争占。也就是不同的對象以自己的方式響應(yīng)了相同的消 息(響應(yīng)了eat這個選擇器)燃逻。因此也可以說,運行時機制是多態(tài)的基礎(chǔ) 。
12臂痕、簡述NotificationCenter伯襟、KVC、KVO握童、Delegate?并說明它們之間的區(qū)別?
Notification是觀察者模式的實現(xiàn),KVO是觀察者模式的OB-C底層實現(xiàn)姆怪。NOtification通過Notifydcation addobserver和remove observer工作。KVO是鍵值監(jiān)聽,鍵值觀察機制,提供了觀察某一屬性變化的方法KVC是鍵值編碼,是一種間接訪問對象的屬性,使用字符串來標示屬性(例如:setValue:forKey:) Delegate:把某個對象要做的事情委托給別的對象去做澡绩。那么別的對象就是這個對象的代理,代替它來打理要做的事稽揭。反映到程序中,首先要明確一個對象的委托方是哪個對象,委托所做的內(nèi)容是什么。
13肥卡、線程與進程的區(qū)別和聯(lián)系?
線程是進程的基本單位 進程和線程都是由操作系統(tǒng)所體會的程序運行的基本單元,系統(tǒng)利用該基本單元實現(xiàn)系統(tǒng)對應(yīng)用的并發(fā)性溪掀。 進程和線程的主要差別在于它們是不同的操作系統(tǒng)資源管理方式。進程有獨立的地址空間,一個進程崩潰后,在保護模式下 不會對其它進程產(chǎn)生影響,而線程只是一個進程中的不同執(zhí)行路徑步鉴。線程有自己的堆棧和局部變量,但線程之間沒有單獨的 地址空間,一個線程死掉就等于整個進程死掉,所以多進程的程序要比多線程的程序健壯,但在進程切換時,耗費資源較 大,效率要差一些揪胃。但對于一些要求同時進行并且又要共享某些變量的并發(fā)操作,只能用線程,不能用進程。
14氛琢、什么是Protocol?什么是代理?寫一個委托的interface?委托的property聲明用什么屬性?為什么?
Protocol:一個方法簽名的列表,在其中可以定義若干個方法喊递。根據(jù)配置,遵守協(xié)議的類,會實現(xiàn)這個協(xié)議中的若干個方法。
代理:實現(xiàn)這個協(xié)議中的方法的類委托的interface:聲明一個某協(xié)議的屬性delagate用assgin屬性,原因是,為了避免循環(huán)引用阳似。
15骚勘、iphone app為什么會被打回來,如何制止?
app的設(shè)置界面、按鈕使用了類似iphone的操作方式以及icon的圓角設(shè)計->重新設(shè)計?app的年齡設(shè)置太低->改了年齡?app里有實物獎勵->免責聲明,和蘋果無關(guān)?app描述里提了后續(xù)版本的功能的字樣->刪除?app有打分的功能->有reject的,也有通過的?app需要使用location,沒有提示用戶->加了提示,允許用戶拒絕?app沒提供測試賬號->提供
app里有私有api ->修改?應(yīng)用內(nèi)含有有某公司LOGO的圖片,沒有該公司授權(quán)文件,被拒->修改