總結一下在金山面試ios開發(fā)時問到的問題

前幾天去了金山的wps部門面試ios的開發(fā)實習生,雖然好像是勉強過了二面,但好像還是gg了,總結一下面試時問到的問題

1.如何在不改動項目原有的代碼前提下,使項目中每個Controller的viewDidLoad方法都輸出一句話?(不能在原有的文件添加刪除或改掉代碼,但可以新建文件寫代碼)

2.除了使用view.layer.cornerRadius來設置圓角以外,還有什么其它方法設置圓角,使用view.layer.cornerRadius有什么壞處?

3.view和layer有什么區(qū)別?

4.block有幾種類型?分別是?

5.block中如何防止循環(huán)引用?為什么在block中要加入__strong __typeof?

6.利用cocoapods管理第三方庫,是如何實現(xiàn)讀取pod工程中的文件的?

7.說說arc的工作原理,他是如何管理對象或變量的釋放?

8.說說ios中多線程有哪幾種實現(xiàn)方法?談談對gcd的理解?

我就記得這么多了,有些問題忘了,還有些是我的項目中具體的問題。

答案:

1.先創(chuàng)建一個新的文件實現(xiàn)一個方法輸出一句話,然后利用runtime機制把uiview中的viewDidLoad方法與新建的方法進行交換,具體實現(xiàn)看這篇文章

2.總共3種方法

    1.通過設置layer.cornerRadius
    2.使用貝塞爾曲線UIBezierPath和Core Graphics框架畫出一個圓角
    3.使用CAShapeLayer和UIBezierPath設置圓角

具體實現(xiàn)看這篇文章

3.主要這幾點

   1.每個 UIView 內部都有一個 CALayer 在背后提供內容的繪制和顯示,并且 UIView 的尺寸樣式都由內部的 Layer 所提供。兩者都有樹狀層級結構,layer 內部有 SubLayers,View 內部有 SubViews.但是 Layer 比 View 多了個AnchorPoint
   2.在 View顯示的時候,UIView 做為 Layer 的 CALayerDelegate,View 的顯示內容由內部的 CALayer 的 display
   3.CALayer 是默認修改屬性支持隱式動畫的,在給 UIView 的 Layer 做動畫的時候,View 作為 Layer 的代理,Layer 通過 actionForLayer:forKey:向 View請求相應的 action(動畫行為)
   4.layer 內部維護著三分 layer tree,分別是 presentLayer Tree(動畫樹),modeLayer Tree(模型樹), Render Tree (渲染樹),在做 iOS動畫的時候,我們修改動畫的屬性,在動畫的其實是 Layer 的 presentLayer的屬性值,而最終展示在界面上的其實是提供 View的modelLayer
   5.兩者最明顯的區(qū)別是 View可以接受并處理事件,而 Layer 不可以

(最重點)兩者最明顯的區(qū)別是 View可以接受并處理事件,而 Layer 不可以

具體看這里

4. 三種

 1._NSConcreteGlobalBlock 全局靜態(tài)
 2._NSConcreteStackBlock 保存在棧中,出函數(shù)作用域就銷毀
 3._NSConcreteMallocBlock 保存在堆中,retainCount == 0銷毀

5.

在調用block前使用__weak typeof (self) weakSelf = self;即可(即用一個弱指針指向self,這樣的話在block中調用完weakSelf這個弱指針就會自動釋放)
當block涉及多線程中調用self時就使用 __strong __typeof(weakself)strongSelf = weakself;(即再用一個強指針指向weakself這個弱指針,防止在block調用過程中self被釋放)
建議在block中都加上__strong __typeof(weakself)strongSelf = weakself; 不會有任何壞處

6.利用workspace,具體看這篇文章

7.Cocoa采用了引用計數(shù)(retain count)機制,當一個對象的retain count=0時,在Mrc(即非arc)中時需要手動添加 [xxx release] ; 這樣一句代碼釋放對象,但arc中這個系統(tǒng)已經默認幫你加上了,只要retain count=0就自動調用,當然過程還要復雜點,具體體看這篇文章

8. 四種(當時答了三種orz)

1.Pthreads
2.NSThread
3.GCD
4.NSOperation & NSOperationQueue

關于gcd的話我當時大概講了一下隊列同步異步這些,當時也講得并不完整,畢竟有些東西緊張起來還是忘了…………
具體的話看這里

雖然這次面試并不成功,但至少吸取了點經驗吧~
另外…………二本的我求一份ios或unity的實習orz……謝謝orz

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容