iOS面試題<一>

1.iOS和iPhone做了哪些設(shè)計來降低功耗睦疫、延長續(xù)航時間害驹?作為應(yīng)用的開發(fā)者,又如何避免費(fèi)電蛤育?
答:iOS和iPhone對續(xù)航時間做的設(shè)計:推送宛官、偽后臺

iOS的省電機(jī)制主要有以下幾種:
強(qiáng)化的后臺機(jī)制
1.墓碑式:偽多任務(wù),應(yīng)用推至后臺后瓦糕,雖然沒有被關(guān)閉底洗,但是所有活動都被凍結(jié),只能通過蘋果服務(wù)器轉(zhuǎn)發(fā)的推送來與用戶交互
2.智能調(diào)度后臺:在一些指定類別的APP咕娄,比如社交亥揖、新聞類的應(yīng)用中,iOS系統(tǒng)會根據(jù)應(yīng)用啟動頻率、時間和當(dāng)前網(wǎng)絡(luò)和電量的狀況來智能分配每個應(yīng)用的后臺數(shù)據(jù)獲取頻率和啟動時長费变,開發(fā)者自己不能設(shè)置數(shù)據(jù)具體什么時候更新
3.真后臺:蘋果也提供一些有諸多限制的接口來保證真后臺摧扇,只供特定應(yīng)用行為調(diào)用,比如后臺音頻挚歧,定位扛稽,上傳下載等。
作為開發(fā)者如何省電:

首先當(dāng)然優(yōu)化代碼滑负,積極合理地使用runloop在张,多線程等技術(shù)。
其次是盡量少地調(diào)用一些費(fèi)電的接口矮慕,比如頻繁的定位帮匾,頻繁的后臺更新數(shù)據(jù),如無必要凡傅,盡量不用辟狈。
2.TCP為什么要設(shè)計三次握手膀捷?如果要解決三次握手來的延遲問題而去掉三次握手鳍征,如何解決三次握手所解決的問題鹤耍?
答:TCP三次握手:(建立連接)
1.第一次握手:建立連接時舔株,客戶端發(fā)送消息到服務(wù)器广凸,并進(jìn)入消息發(fā)送狀態(tài)亿柑,等待服務(wù)器確認(rèn)匠襟;
2.第二次握手:服務(wù)器收到消息祟敛,必須確認(rèn)客戶的發(fā)送過來的消息猫态,同時自己也發(fā)送消息反饋給客戶佣蓉,此時服務(wù)器 進(jìn)入消息待接收狀態(tài)
3.第三次握手:客戶端收到服務(wù)器的反饋消息,向服務(wù)器發(fā)送確認(rèn)消息反饋亲雪,此消息發(fā)送完畢勇凭,客戶端和服務(wù)器進(jìn)入等待狀態(tài),完成三次握手义辕。

為什么要設(shè)計三次握手呢虾标?
為了保證服務(wù)端能收接受到客戶端的信息并能做出正確的應(yīng)答而進(jìn)行前兩次(第一次和第二次)握手,為了保證客戶端能夠接收到服務(wù)端的信息并能做出正確的應(yīng)答而進(jìn)行后兩次(第二次和第三次)握手灌砖。
簡單來說:TCP的三次連接是雙工的璧函,為了保證雙工,必需保證服務(wù)器端和客戶端都能進(jìn)行發(fā)送和接收信息基显,實際是為了讓雙方的請求都能識別的到蘸吓,所以邏輯上至少執(zhí)行三次。
3.C語言的函數(shù)調(diào)用編譯成匯編代碼是怎樣的撩幽?可用X86或ARM匯編代碼回答库继。
 http://www.cnblogs.com/mqmelon/p/4763913.html
4.block對外層函數(shù)的local變量的引用是如何工作的?
1.在MRC環(huán)境下,__block根本不會對指針?biāo)赶虻膶ο髨?zhí)行copy操作宪萄,而只是把指針進(jìn)行的復(fù)制
2.在ARC環(huán)境下舅桩,對于聲明為__block的外部對象,在block內(nèi)部會進(jìn)行retain雨膨,以至于在block環(huán)境內(nèi)能安全的引用外部對象,所以要謹(jǐn)防循環(huán)引用的問題
5.編譯器如何實現(xiàn)weak的读串?
weak 屬性特點(diǎn):weak 此特質(zhì)表明該屬性定義了一種“非擁有關(guān)系” (nonowning relationship)。為這種屬性設(shè)置新值時恢暖,設(shè)置方法既不保留新值排监,也不釋放舊值。此特質(zhì)同 assign 類似杰捂, 然而在屬性所指的對象遭到摧毀時舆床,屬性值也會清空(nil out)。

那么 runtime 如何實現(xiàn) weak 變量的自動置nil嫁佳?
runtime 對注冊的類挨队, 會進(jìn)行布局,對于 weak 對象會放入一個 hash 表中蒿往。 用 weak 指向的對象內(nèi)存地址作為 key盛垦,當(dāng)此對象的引用計數(shù)為0的時候會 dealloc,假如 weak 指向的對象內(nèi)存地址是a瓤漏,那么就會以a為鍵腾夯, 在這個 weak 表中搜索,找到所有以a為鍵的 weak 對象蔬充,從而設(shè)置為 nil蝶俱。
6.LLVM和GCC有哪些不同?可從多個角度來說。
含義解釋:
LLVM:LLVM最初是[Low Level Virtual Machine](http://en.wikipedia.org/wiki/Llvm)的縮寫饥漫,定位是一個虛擬機(jī)榨呆,但是是比較底層的虛擬機(jī)。它的出現(xiàn)正是為了解決編譯器代碼重用的問題趾浅,LLVM一上來就站在比較高的角度愕提,制定了LLVM IR這一中間代碼表示語言。LLVM IR充分考慮了各種應(yīng)用場景皿哨,例如在IDE中調(diào)用LLVM進(jìn)行實時的代碼語法檢查浅侨,對靜態(tài)語言、動態(tài)語言的編譯证膨、優(yōu)化等如输。

就現(xiàn)在來看,gcc大體等同于llvm+clang所提供的功能。很多人特別羨慕clang那強(qiáng)大的錯誤診斷信息不见,其實gcc4.8部分信息診斷能力已經(jīng)超過它了澳化。

不同點(diǎn):
1.所需要的寄存器不同:
llvm-gcc值用到了eax這一個寄存器,而gcc用到了eax稳吮, edx兩個寄存器
2.編寫的語言的不同
llvm-gcc:llvm默認(rèn)的前端是clang缎谷,當(dāng)然也可以用gcc做前端。llvm用c++寫的灶似,模塊化做的很好列林,因此可以很好的和clang,gcc等等更多的東西合作酪惭,能為ide提供更全的有用信息希痴。
gcc則包含的比較全面,整一個是一個宏結(jié)構(gòu)春感,沒有模塊化設(shè)計砌创,用c寫的,對ide也不太友好(實際上linux社區(qū)里似乎對ide一直不感冒)鲫懒。不過c++版的gcc正在重寫中嫩实,為了與llvm/clang更好的競爭,而且gcc從5.0開始打算進(jìn)行模塊化設(shè)計刀疙,所以舶赔,以后gcc內(nèi)部可能會分出很多部分。
3.內(nèi)存和性能
freebsd不用gcc是因為gpl協(xié)議谦秧,llvm/clang的協(xié)議更加自由竟纳,但llvm/clang目前的兼容性和參數(shù)優(yōu)化等等方面和gcc還有不小差距,雖然編譯后的體積更小了(架構(gòu)領(lǐng)先優(yōu)勢)疚鲤,但在性能優(yōu)化方面相比gcc還有很多事情要
4.缺點(diǎn)
gcc目前的問題就是缺乏模塊化設(shè)計锥累,這是暫時落后于llvm的地方
7.設(shè)計第三方分享模塊(即分享到微博,微信,QQ等)集歇,簡述主要的類桶略,要求對第三方庫做較好的封裝。
1.友盟
2.shareSDk :http://www.reibang.com/p/e374732f54f0
8.iOS/SDK存在或曾經(jīng)存在的bug
http://blog.csdn.net/andypan1314/article/details/8797216
9.微信是如何檢測用戶把手機(jī)放到耳朵旁邊的
使用近距離傳感器
[UIDevice](https://developer.apple.com/library/ios/#documentation/uikit/reference/UIDevice_Class/Reference/UIDevice.html) 中有兩個近距離傳感器的屬性:proximityMonitoringEnabled 和 proximityState诲宇。這兩個屬性都是 iOS 3.0 及以上才支持的际歼。

proximityMonitoringEnabled 屬性
要確定近距離傳感器是否可用,可以嘗試啟用它姑蓝,即 proximityMonitoringEnabled = YES鹅心,如果設(shè)置的屬性值仍然為NO,說明傳感器不可用纺荧。
proximityState 屬性
傳感器已啟動前提條件下旭愧,如果用戶接近 近距離傳感器颅筋,此時屬性值為YES,并且屏幕已關(guān)閉(非休眠)输枯。And vice versa议泵。

代碼:http://www.cnblogs.com/daguo/p/3567791.html
10.假如最近收到很多用戶反饋說應(yīng)用很慢或者打不開,如何著手分析和解決這個問題桃熄?
慢的原因:用戶的電腦先口、手機(jī)的運(yùn)行環(huán)境、內(nèi)存大小瞳收、系統(tǒng)甚至程序間的兼容問題可能讓應(yīng)用“慢”下來池充;國內(nèi)復(fù)雜的網(wǎng)絡(luò)環(huán)境和參差不齊的上網(wǎng)方式會拖累應(yīng)用查詢的響應(yīng)速度;至于服務(wù)器缎讼、數(shù)據(jù)庫更是運(yùn)維人員照顧的重點(diǎn)。此外還有代碼坑匠,一條有問題的語句血崭,可能會損耗掉應(yīng)用數(shù)百毫秒響應(yīng)時間。

1.優(yōu)化簡化代碼
2.關(guān)掉不必要的推送
3.減少耗損程序的代碼:比如過多的動畫效果等
11.簡述方案厘灼,搭建一個自動化構(gòu)建系統(tǒng)夹纫,如果可能,一同搭建一個自動化測試系統(tǒng)设凹。
其實我也看不懂舰讹,放鏈接你們自己去看吧~
http://www.reibang.com/p/53b17f2c275e

版權(quán)歸屬于離離離離。
版權(quán)所有闪朱,翻版必究月匣,如若轉(zhuǎn)載,請注明出處奋姿。謝謝 ~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末锄开,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子称诗,更是在濱河造成了極大的恐慌萍悴,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寓免,死亡現(xiàn)場離奇詭異癣诱,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)袜香,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門撕予,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人困鸥,你說我怎么就攤上這事嗅蔬〗0矗” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵澜术,是天一觀的道長艺蝴。 經(jīng)常有香客問我,道長鸟废,這世上最難降的妖魔是什么猜敢? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮盒延,結(jié)果婚禮上缩擂,老公的妹妹穿的比我還像新娘。我一直安慰自己添寺,他們只是感情好胯盯,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著计露,像睡著了一般博脑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上票罐,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天叉趣,我揣著相機(jī)與錄音,去河邊找鬼该押。 笑死疗杉,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蚕礼。 我是一名探鬼主播烟具,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼奠蹬!你這毒婦竟也來了净赴?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤罩润,失蹤者是張志新(化名)和其女友劉穎玖翅,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體割以,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡金度,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了严沥。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片猜极。...
    茶點(diǎn)故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖消玄,靈堂內(nèi)的尸體忽然破棺而出跟伏,到底是詐尸還是另有隱情丢胚,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布受扳,位于F島的核電站携龟,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏勘高。R本人自食惡果不足惜峡蟋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望华望。 院中可真熱鬧蕊蝗,春花似錦、人聲如沸赖舟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宾抓。三九已至碌更,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間洞慎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工嘿棘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留劲腿,地道東北人。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓鸟妙,卻偏偏與公主長得像焦人,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子重父,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容