筆試部分:html
解釋一下NSString這種對象, copy 和 strong 的區別是什麼?程序員
當對象屬於 NSString 時,打印 NSString 對象的內存地址會發現是同一個地址;MRC環境下, copy和 strong 都會使引用計數器+!,copy 只執行淺複製 , 因此修飾 NSString 類型對象時,copy與 strong 並無太大區別;面試
但當對象屬於 NSMutableString時,打印NSString對象的內存地址會發現是copy與strong不是同一個地址,strong屬性只是增長了源字符串的引用計數,而copy屬性則是對源字符串作了次深拷貝,產生一個新的對象,且copy屬性對象指向這個新的對象。設計模式
聲明NSString屬性時,究竟是選擇strong仍是copy,能夠根據實際狀況來定。緩存
請問 OC 中內存管理方式和過程?併發
Objective-C的內存管理主要有三種方式ARC(自動內存計數)、手動內存計數、內存池。app
1. (Garbage Collection)自動內存計數:當你不須要某個內存時,不用管它,垃圾回收機制會自動幫你回收,但須要消耗必定資源, IOS 中不提供使用; 過程: 經過alloc – initial方式建立的, 建立後引用計數+1, 此後每retain一次引用計數+1, 那麼在程序中作相應次數的release就行了;異步
(Reference Counted)手動內存計數:引用計數器的使用,由程序員手動釋放,當計數器爲0時候釋放內存; 過程:通常是由類的靜態方法建立的, 函數名中不會出現alloc或init字樣, 如[NSString string]和[NSArray arrayWithObject:], 建立後引用計數+0, 在函數出棧後釋放, 即至關於一個棧上的局部變量. 固然也能夠經過retain延長對象的生存期.socket
(NSAutoRealeasePool)內存池:能夠經過建立和釋放內存池控制內存申請和回收的時機; 過程: 是由autorelease加入系統內存池, 內存池是能夠嵌套的, 當釋放這個內存池時, 其中的對象都會被釋放.函數
Static 全局變量和普通全局變量有什麼區別? Static 局部變量和普通局部變量有什麼區別? Static函數與普通函數有什麼區別?
static全局變量與普通的全局變量有什麼區別在於做用域不一樣:普通的全局變量:做用域是整個源程序;static全局變量:做用域是定義該變量的當前源文件;
static局部變量和普通局部變量有什麼區別:static局部變量只被初始化一次,下一次依據上一次結果值;
static函數與普通函數有什麼區別:static函數做用域不一樣,僅在本文件使用,在內存中只有一份,普通函數在每一個被調用中維持一份拷貝
/*
按存儲區域分:全局變量、靜態全局變量和靜態局部變量都存放在內存的靜態存儲區域,局部變量存放在內存的棧區。
按做用域分:全局變量在整個工程文件內都有效;靜態全局變量只在定義它的文件內有效;靜態局部變量只在定義它的函數內有效,只是程序僅分配一次內存,函數返回後,該變量不會消失;局部變量在定義它的函數內有效,可是函數返回後失效。
把局部變量改變爲靜態變量後是改變了它的存儲方式即改變了它的生存期。把全局變量改變爲靜態變量後是改變了它的做用域, 限制了它的使用範圍。
更多詳情:http://www.cnblogs.com/Kane_zzt/archive/2009/05/18/1459697.html
*/
__block 與__ weak 的區別?
1.__block不論是ARC仍是MRC模式下均可以使用,能夠修飾對象,還能夠修飾基本數據類型。
2.__weak只能在ARC模式下使用,也只能修飾對象(NSString),不能修飾基本數據類型(int)。
3.__block對象能夠在block中被從新賦值,__weak不能夠。
如何解決 TableView卡頓問題?
cell 重用機制;
異步下載圖片並保存到本地緩存文件中;
減小沒必要要的視圖,cell 裏的控件或者視圖太多,會消耗較多資源,而且也影響渲染的性能;
使用主線程更新 UI 界面,子線程處理耗時操做;
淺拷貝與深拷貝的區別?
淺拷貝只複製對象的指針,不會拷貝對象自己,公用一塊內存地址;
深拷貝會複製對象自己,建立一個新的對象,使用新的內存地址;
有兩個功能要實現,請問是在一個線程裏按順序作效率高仍是兩個線程裏作效率高?爲何?
若是兩個功能是依賴關係,則同一個線程執行效率更搞;
若是兩個功能屬於併發事件,則使用兩個線程作的效率更高;
簡要說下 Http 通訊協議原理,與 socket 協議的區別有哪些?
與 socket 的區別:http://www.2cto.com/net/201211/166537.html
MVC 是什麼?有什麼特性?你還熟悉哪些設計模式?分別引用在什麼場景?
MVC分別指Model層, View層, Controller層,特性: 下降代碼的耦合度;
一種軟件設計典範,用一種業務邏輯、數據、界面顯示分離的方法組織代碼,將業務邏輯彙集到一個部件裏面,在改進和個性化定製界面及用戶交互的同時,不須要從新編寫業務邏輯。MVC被獨特的發展起來用於映射傳統的輸入、處理和輸出功能在一個邏輯的圖形化用戶界面的結構中。
代理模式,觀察者模式,單例模式,工廠模式等
應用場景:http://blog.csdn.net/liwei3gjob/article/details/8926862
OC 中堆和棧的區別?
詳情參照:http://blog.csdn.net/ocean0815/article/details/25748633
筆試就這麼多了,筆試其實沒什麼好怕的,多數都是學過的東西,先作會的東西,不會多百度;公司其餘人都要上班沒空搭理你;回頭來總結,發現讓我再去面試一次筆試仍是不太會,這是一個積累的過程;
敲門而入,一個三室一廳的格局的公司出如今我面前,幾臺電腦前隨意擺放着幾我的,或是在敲代碼,或者是在作其餘的,反正是:除了一個負責接待的妹子,沒一我的擡頭看我,而後被帶到一個廚房大小的會議室登記和筆試,筆試期間,除了接待的人來過一次就沒任何事情發生,我正對着們坐下,門對面的小妹兒翹着二郎腿在吃薯片(或許中午沒吃飯),還有一個在打呼嚕(又或許中午沒睡好?),筆試題,會得作完了, 不會的手機拿出來百度繼續作;大概四十分鐘後,接待的妹子就帶我去 boss 辦公室面試:
面試部分:
去面試了一個出創型的公司,整個公司也就十幾我的, boss 直接面試我;一進去 boss就讓我自我介紹,介紹到一半,他打斷我,而後開始問我問題;先是看着筆試題而後問了幾個上面的問題,前面幾個還能答出來,後面最薄弱的地方把我問到了,不過最終仍是回答出來了; 而後問我簡歷上的項目的一些問題;若是你對你簡歷上的項目的特別熟悉,本身寫了哪些功能,負責什麼都特別清楚,沒事兒讓他問,問什麼你答什麼,他若是滿意會接着和你談薪資,再而後會問你何時能上班,再而後你就能夠入職了,而後我能夠恭喜你了;
BUT~~~
無奈我今天就沒那麼幸運咯,被 boss 刁難了,他沒問我項目我負責什麼,而是問某某項目你是負責UI 搭建的嗎?當時一聽犯迷糊就說了是,而後他悠悠的回了句你這簡歷上寫的不是這個唉╮(╯▽╰)╭, 艹(請原諒我爆出口),給我挖坑。而後他問我作了幾個項目,整體算了下時間,把這幾個項目的時間加起來給我說,你不是有一年開發經驗嘛,這幾個項目加起來也才兩個月啊,你其餘時間作什麼的?(媽蛋,又把我問到了,難道我會告訴你我沒一年工做經驗?而後瞎扯一通);再而後給他將我最近想本身想帶團隊作個項目,卻不知, boss 又問:你這不能給你帶來任何經濟效益的項目作了爲了幹啥?我只是說了句歷練本身,而後他又回了句:這樣說你技術還不達標咯?(艹^2,這尼瑪什麼邏輯啊,我喜歡作不行麼,我愛鬧哪樣你管我?)最後我說想請教 boss 一個問題,我以爲他們公司的產品還不錯,有一個技術性的問題我想問他, boss 直接避開(好吧,公司機密,我理解),再而後我給他們公司的 app提出我發現的一個小bug, 而後 boss 回了句:特意哪樣作了(尼瑪,果斷不能再談了,當初我但是懷着一顆迫切要加入該公司的心得,而後就沒了),最後聊了會兒,boss 大意說在我指望的月薪中減小3k,縱慾該輪到我說No了,(工做氛圍讓我失望了)行,我回去考慮考慮...而後我就回來吐槽來了...
總結幾點:
1.面試簡歷上的項目本身必定要清楚,負責那個模塊,功能如何實現;
2.不要談本身的夢想;
3.作假的小朋友們,有幾個項目,項目開發週期加起來不要和工做經驗相差太遠哦;