相關面試題2

1、git add 和 git commit 的區別
git add   # 從工作區被提交到暫存區,但此時文件并沒有真正進入到版本庫當中,文件目前只處于一個中間狀態。
git commit  # 這個命令將處于中間狀態的文件(暫存區的文件)提交到版本庫中,這時才算真正完成了一次提交過程。
2、JS交互的原理是什么
# native直接調用js的方法:
- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;

# JS直接調用native的方法
其實,UIWebView并沒有提供JS調用native的方法,但是我們卻可以通過間接的方法來實現這樣的操作。總結看來,間接實現的方式有三種: 
1. 在代理方法攔截Url,識別判斷 
2. Block傳值,實現JS調用OC 
3. 模型實現,JS直接用oc方法名來調用oc方法 
4. 使用第三方工具類:WebViewJavascriptBridge

鏈接:http://www.lxweimin.com/p/bdd340b46076
3、為什么說HTTP請求是短連接,怎樣才能實現HTTP長連接
# 短連接
在HTTP/1.0中,默認使用的是短連接。
也就是說,瀏覽器和服務器每進行一次HTTP操作,就建立一次連接,但任務結束就中斷連接。
如果客戶端瀏覽器訪問的某個HTML或其他類型的 Web頁中包含有其他的Web資源,如JavaScript文件、圖像文件、CSS文件等;當瀏覽器每遇到這樣一個Web資源,就會建立一個HTTP會話。
# 長連接
但從 HTTP/1.1起,默認使用長連接,用以保持連接特性。使用長連接的HTTP協議,會在響應頭有加入這行代碼:
Connection:keep-alive
客戶端的長連接不可能無限期的拿著,會有一個超時時間,服務器有時候會告訴客戶端超時時間,譬如:
Keep-Alive: timeout=20,表示這個TCP通道可以保持20秒。
另外還可能有max=XXX,表示這個長連接最多接收XXX次請求就斷開。
對于客戶端來說,如果服務器沒有告訴客戶端超時時間也沒關系,
服務端可能主動發起四次握手斷開TCP連接,
客戶端能夠知道該TCP連接已經無效;
另外TCP還有心跳包來檢測當前連接是否還活著,方法很多,避免浪費資源。
在使用長連接的情況下,當一個網頁打開完成后,客戶端和服務器之間用于傳輸HTTP數據的 TCP連接不會關閉,
如果客戶端再次訪問這個服務器上的網頁,會繼續使用這一條已經建立的連接。
Keep-Alive不會永久保持連接,它有一個保持時間,可以在不同的服務器軟件(如Apache)中設定這個時間。實現長連接要客戶端和服務端都支持長連接。
# HTTP協議的長連接和短連接,實質上是TCP協議的長連接和短連接。
容易混淆的概念——TCP的keep alive和HTTP的Keep-alive
TCP的keep alive是檢查當前TCP連接是否活著;HTTP的Keep-alive是要讓一個TCP連接活久點。它們是不同層次的概念。
TCP keep alive的表現:當一個連接“一段時間”沒有數據通訊時,一方會發出一個心跳包(Keep Alive包),如果對方有回包則表明當前連接有效,繼續監控。
這個“一段時間”可以設置。
# 長連接和短連接的優點和缺點
長連接:長連接可以省去較多的TCP建立和關閉的操作,減少浪費,節約時間。對于頻繁請求資源的客戶來說,較適用長連接。
Client 與 server 之間的連接如果一直不關閉的話,會存在一個問題,隨著客戶端連接越來越多,server早晚有扛不住的時候
短連接:短連接對于服務器來說管理較為簡單,存在的連接都是有用的連接,不需要額外的控制手段。
但如果客戶請求頻繁,將在 TCP 的建立和關閉操作上浪費時間和帶寬。
4、Object-C Category和Extension的區別
# Category
用于給class及其subclass添加新的方法
有自己單獨的 .h 和 .m 文件
用于添加新方法,而不能添加新屬性(property)
#  Extension
Extension常被稱為是匿名的Category
用于給類添加新方法,但只作用于原始類,不作用于subclass
只能對有implementation源代碼的類寫Extension,對于沒有implementation源代碼的類,比如framework class,是不可以的
Extension可以給原始類添加新方法,以及新屬性

5、swift中Class和結構體的區別
* 類是引用類型,結構體是值類型,不能使用===/!== 判斷地址
* 類可以繼承,結構體不能繼承
* 結構體沒有deinit 方法
* 創建結構體要比創建對象速度快
* 創建相同屬性的結構體比類更加節省內存
* 在數據量比較大的排序中,結構體排序的速度比較慢,因為結構體是值類型,排序的時候,需要大量的賦值運算。而對象只需要交換地址即可。
4、多線程處理都具體用在了什么地方
* 多圖片上傳使用到了 NSOperationQueue + NSBlockOperation
* dispatch_async(dispatch_get_main_queue(), ^{});用在了下載視頻、音樂下載、直播IM等功能上更新UI
* NSThread用在了JS交互上,用來判斷是否是主線程 if ([[NSThread currentThread] isMainThread])
5、DB-ORM框架設計
* 所謂ORM,即對象-關系映射(Object/Relation Mapping),方便我們以操作對象的方式去操作關系型數據庫。
* 將一個SQL語句以面向對象方式進行設計,構建者模式動態構建表。
* 共包括五個模塊,分別是數據庫連接對象、構建SQL語句、構建創建表、操作表、附加功能(排序、修改重命名、條件篩選、增加字段、刪除字段等)
* 整個框架設計基于構建者模式,迭代器模式遍歷表字段

6、響應式編程框架設計
* 響應式編程可以加深你代碼抽象的程度,讓你可以更專注于定義與事件相互依賴的業務邏輯,而不是把大量精力放在實現細節上,同時,使用響應式編程還能讓你的代碼變得更加簡潔。
* 特別對于現在流行的webapps和mobile apps,它們的 UI 事件與數據頻繁地產生交互,在開發這些應用時使用響應式編程的優點將更加明顯。
7、MVP框架設計
* MVP分為Model、View、Presenter三層:
* Model作為模型層,在MVP中更偏向于功能的模型,負責對數據的存取操作,例如對數據庫的讀寫,網絡的數據的請求等;
* View作為視圖層,代表著布局和控件;
* Presenter作為主持層,也就是主持著View與Model之間的交互。
* MVP框架中,斷絕了View與Model之間的直接交互,成功的減少了controller中的臃腫代碼,使得controller能夠保持整潔清晰。
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,763評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,238評論 3 428
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,823評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,604評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,339評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,713評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,712評論 3 445
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,893評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,448評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,201評論 3 357
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,397評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,944評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,631評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,033評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,321評論 1 293
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,128評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,347評論 2 377

推薦閱讀更多精彩內容