無論是身處于職場的我們還是處于苦逼學(xué)習(xí)儲備知識的孩子們都明白一個道理,我們都知道進一家公司難,但進去一切又都簡單了,面試無疑是最重要的一個環(huán)節(jié),那么我們該如何優(yōu)雅簡潔的針對面試題去做出突出重點性的回答呢,我舉出下列的面試題例子
- +load和+initialize的區(qū)別是什么拜姿?
1.調(diào)用時刻:
load:類加載進內(nèi)存調(diào)用
initialize:當(dāng)?shù)谝淮问褂妙惢蛘咦宇惥蜁{(diào)用
2.調(diào)用次數(shù):
load只會調(diào)用一次
initialize:不確定,具體根據(jù)子類和具體調(diào)用情況
比如有個類,它有一個子類,第一次使用子類,父類的initialize調(diào)用2次
這樣的回答算是很全面的了,且言簡意賅,如果面試官還想問你深入一點他會接著問題繼續(xù)深問下去,又或者你非常了解這個面試題,那么你可以之后再補充深入說一點,但一定要有把握才行,盡量不要出錯,出錯是非常嚴重的事情,之前的美好印象會瞬間消失->之前的美好印象會瞬間消失->之前的美好印象會瞬間消失(我說了三遍)
- UITabBarController控制器中view的內(nèi)部結(jié)構(gòu)
1.存放子控制器的view:
2.UITabBar(標簽欄): 49
->補充:與導(dǎo)航控制器結(jié)構(gòu)大同小異,都有自己的一個View
這個View里面有兩個View(專門存放子控制器的view和導(dǎo)航欄(NavgationBar))
1.為什么使用協(xié)議: 思想:當(dāng)有些事情,自己不想做,交給別人,就搞個協(xié)議.實例:Appdelegate
2.什么時候使用協(xié)議: 高級:延展到封裝自己框架(自定義類),常常通過協(xié)議給外界提供接口(協(xié)議)
->補充:協(xié)議不是代理者,代理者也不是協(xié)議的一部分,他們是有區(qū)別的
(初學(xué)者很多都把協(xié)議和代理者混為一談,代理者只是類的一個屬性屬性屬性)
1.一定要初始化布局
2.設(shè)置數(shù)據(jù)源,展示 代理.處理cell點擊
3.cell必須通過注冊
4.cell必須要自定義
- category和extension的區(qū)別
1.是什么?
category:分類,可以取名
extension:擴展,類目,匿名
2.作用?
category:可以擴展方法,不能添加屬性
extension:可以添加屬性,也可以聲明方法
3.用法(區(qū)別)?
category通常用于給系統(tǒng)類 擴充方法
extension通常用于自定義類
- runtime實現(xiàn)的機制是什么,有哪些用法? 一般用于干嘛?
->運行時機制(注意不要答消息機制!!!運行時包括了消息機制),有調(diào)用方法,
->一開始不確定哪個對象去調(diào)用,等運行的時候才會找到相應(yīng)對象去調(diào)用方法.
1.遍歷類中所有屬性和方法,可以自己寫一套字典轉(zhuǎn)模型工具類(比如MJExtention)
2.動態(tài)給分類添加屬性,需求:當(dāng)想把一個屬性保存系統(tǒng)的類中
3.交換方法,系統(tǒng)方法達不到我們需求,想給系統(tǒng)的方法擴充一些功能
4.動態(tài)添加方法
- 什么時候會發(fā)生EXC BAD ACCESS異常湃交?
1.解釋EXC BAD ACCESS:野指針錯誤
2.怎么才會導(dǎo)致這個錯誤:訪問不該訪問的對象
3.避免這種:當(dāng)一個對象被銷毀,記得清空指針
1.百度 iOS10API
2.WWDC和蘋果官方文檔 英文能力很好 毅力
3.在新xcode中創(chuàng)建項目,在舊的xcode去打開,發(fā)現(xiàn)很多錯誤,碰見一些感興趣 查一查
4.查看別人blog,關(guān)注一些牛人微博,貓神,新的技術(shù) 及時更新 關(guān)注: 簡書
1.frame: 控件可視范圍 相當(dāng)于 父控件
2.bounds: 也是指的是范圍 指的是 控件可視范圍 在 內(nèi)容中 區(qū)域 . 控件可視范圍相對于內(nèi)容
3.內(nèi)容:每個控件都有自己內(nèi)容,而且是無限大,而且這個控件的所有子控件都是相對于內(nèi)容
4.bounds:以自己內(nèi)容為原點 可視層原點(0,0)與內(nèi)容層原點(0,0)重疊
1.順傳:直接定義屬性傳值
2.逆?zhèn)?代理,block (大神是懂block的,所以,親們...想裝逼就去研究block)
3.通知傳值:當(dāng)誰也拿不到誰的事情,可以采取使用通知傳值
1.根據(jù)key轉(zhuǎn)換成對應(yīng)set方法,去對象中找到有沒有對應(yīng)的set方法
2.根據(jù)key去查找有沒有對應(yīng)成員屬性,不帶下劃線
3.根據(jù)key去查找有沒有帶下劃線的成員屬性
4.直接報找不到對應(yīng)key錯誤
->補充: 所以在通常開發(fā)中,一般會保證模型的屬性名根字典一一對應(yīng),
當(dāng)然我們一種解決方式,可以重寫報錯的方法,目的,把報錯方法實現(xiàn)給干掉,
就不會報錯,這樣就可以不用藍模型中屬性與字典一一對應(yīng).
- KVO底層怎么實現(xiàn)的 監(jiān)聽某個對象的屬性改變
->比如Person的name屬性改變
1.生成Person一個派生類(子類) Person_KVO
2.在這個子類中重寫setName方法 1.給成員屬性賦值 2.通知觀察者調(diào)用observeValueForKeyPath
3.改變person對象isa 改成Person_KVO
->獨立開發(fā)
1.需求文檔:描述下應(yīng)用功能
2.查看原型圖:描述app每個界面 和 怎么與用戶交互
3.根據(jù)原型圖搭建基本項目結(jié)構(gòu),開始按模塊去開發(fā)
4.界面搭建完,再去查看接口文檔,請求數(shù)據(jù),然后展示
->補充: 當(dāng)你做項目的時候,碰見一些什么問題. 簡歷中有一些項目,每個項目列舉兩個比較難題
獲取全局導(dǎo)航條的時候,最好不要使用appearance,應(yīng)該去使用appearanceWhenInContain
->迭代開發(fā)
1.根據(jù)組長,項目經(jīng)理提供excel去做,這里就有每月的任務(wù)
2.需要去尋找找到對應(yīng)的類做事情,1.根據(jù)類名,去猜 2.通過斷點去調(diào)試,一層一層去尋找
1.根據(jù)原型圖,劃分結(jié)構(gòu)
2.搭建界面
3.參照接口文檔,請求數(shù)據(jù),展示數(shù)據(jù)
4.調(diào)整界面細節(jié),提高用戶體驗
5.處理界面業(yè)務(wù)邏輯(功能)