17.07月面試問題

1.封裝網(wǎng)絡(luò)請求
好處:可以降低網(wǎng)絡(luò)請求方法與控制器的耦合度,即使網(wǎng)絡(luò)使用第三方框架發(fā)生不兼容端朵,錯誤等問題從而想換框架時好芭,也不用到每個控制器里面改代碼;建立單例工具類冲呢,方便管理舍败。優(yōu)化代碼結(jié)構(gòu)。

1.有沒有用過多線程敬拓,解釋下多線程瓤湘?
多線程的作用是:可以解決負載均衡問題,充分利用cpu資源恩尾,為了提高CPU的使用率弛说,采用多線程的方式去同時完成幾件事情而互不干擾。
大多情況下翰意,要用到多線程的主要是需要大量的io操作時木人,或處理的情況需要花大量的時間等等,比如讀寫文件冀偶、視頻圖像的采集醒第、處理、顯示进鸠、保存等稠曼。

缺點:大量的線程降低代碼的可讀性、更多的線程需要更多的內(nèi)存空間客年。當多線程對一個資源出現(xiàn)爭奪的時候要注意線程安全的問題霞幅。

iOS有三種方法:1.NSThead漠吻,2.NSOperation、GCD
1.NSThead:相比其他兩個要輕量級司恳,但是需要手動管理線程的生命周期途乃,線程同步。
2.NSOperation:
2.線程同步的方法
1.@synthsize 3.并行
2.NSLock :同步代碼塊 上鎖

AVPlayer來實現(xiàn)播放
AVPlayerItem負責提供視頻信息扔傅,AVPlayer負責管理和調(diào)控耍共,AVPlayerLayer顯示視頻,
首先:得到視頻的URL
根據(jù)URL創(chuàng)建AVPlayerItem猎塞。
把AVPlayer提供個AVPlayer
AVPlayerLayer顯示視頻试读。AVPlayer控制視頻,播放荠耽,暫停鹏往,跳轉(zhuǎn)等。

1.assign可以修飾OC對象么骇塘?

答案:assign是指針賦值,不對引用計數(shù)操作韩容,使用之后如果沒有置為nil款违,可能就會產(chǎn)生野指針。

2.delegate的生命周期
3.A跳轉(zhuǎn)BB跳轉(zhuǎn)C 他們之間的傳值你用什么方法傳群凶?屬性還是代理
4.關(guān)于TableView的內(nèi)存優(yōu)化

1.正確地使用Cell的重用機制
2.提前計算好cell的高度和布局
UITableView的回調(diào)順序是先多次調(diào)用tableView:heightForRowAtIndexPath:用來確定contentsize及cell的位置插爹,然后才會調(diào)用tableView:cellForRowAtIndexPath:,從而來顯示當前屏幕的cell请梢。
iOS9會更厲害赠尾,還會華東邊調(diào)用tableView:heightForRowIndexPath:,可見這個方法里一定不會重復進行大量的計算毅弧。我們應(yīng)該提前計算好車cell的高度并且緩存起來气嫁,在回調(diào)時直接把高度值直接返回。
3.避免阻塞主線程
很多時候我們需要從網(wǎng)絡(luò)請求圖片等够坐,把這些操作放在后臺操作寸宵,并且緩存起來
4.按需加載
5.減少subviews的數(shù)量
6.盡可能重用開銷比較大的對象
NSDateFormatterNSCalendar等對象初始化非常慢,我們可以把它加入類的屬性中元咙,或者創(chuàng)建單例來使用
7.圓角梯影、陰影之類的全部bitmap化,或者放到后臺draw好了再拿出來(離屏渲染)
解決方法:
1.開啟CALayer.shouldRasterize 庶香,轉(zhuǎn)嫁到CPU上甲棍;
2.粗暴畫圖/截圖實現(xiàn)border和圓角;
8.不要動態(tài)的添加或者移除子控件

如果是較大或者不常用的圖片資源赶掖,采用imageWithContentsOfFile:感猛。

5.ARC下關(guān)于內(nèi)存泄露都有哪些七扰?

1.block的循環(huán)引用
2.NSTimer
在使用NSTimer addtarget,為了防止target被釋放而導致的程序異常唱遭,timer會持有target戳寸。
解決方法:使用invalidate方法消掉timer。
3performSelector系列

6.A push b b push c為了防止內(nèi)存泄露可以做哪些拷泽?
7.單例模式是什么疫鹊?優(yōu)缺點

單例模式就是只有一個實例,確保某一個類只有一個實例司致,而且自行實例化并向整個系統(tǒng)提供這個實例拆吆。并提供一個全局訪問點去訪問它。
優(yōu)點:
1.提供了對唯一實例的受控訪問脂矫;
2.由于系統(tǒng)內(nèi)存中只存在一個對象枣耀,因此可以節(jié)約系統(tǒng)資源,對于一些需要憑和銷毀的對象單例模式無疑可以系統(tǒng)的性能
缺點:
1.不可以擴展
2庭再,濫用單例將帶來一些負面問題捞奕,如為了節(jié)省資源將數(shù)據(jù)庫連接池對象設(shè)計為的單例類,可能會導致共享連接池對象的程序過多而出現(xiàn)連接池溢出拄轻,如果實例化的對象長時間不被利用颅围,系統(tǒng)會認為是垃圾而被回收,這將導致對象狀態(tài)丟失恨搓。

8.屬性跟成員變量的區(qū)別

1.屬性對成員變量擴充了存取方法
2.屬性默認會生帶下劃線的成員變量

9.imageNamed和imageWithContentsOfFile

這個知道的人比較多院促,因為緩存圖片的消耗通常是肉眼可見的多。
常用的元素例如icon之類的斧抱,采用imageNamed:常拓,系統(tǒng)會有緩存。

10.歸檔有哪些方法辉浦?

1.plist
2.NSUsererDefaults

NSUsererDefaults可以保持個nil么弄抬?可以

12

上拉刷新下拉加載的實現(xiàn)原理

1.下拉刷新實際上是監(jiān)測UIScrollView的contentOffset的Y值,當他往下拉動時宪郊,UIScrollView的contentOffset是一個減小的眉睹,然后把通過動畫把它的contentInset值控制成一個定值,然后通過設(shè)置延時把UIScrollView的contentInset的值恢復到原點废膘。
2.上拉加載其實原理和下拉刷新基本是一樣的竹海,只不過判斷的contentOffset的值不同,如果scrollView.bounds.size.height+scrollView.contentOffset.y>scrollView.contentSize.height,說明你執(zhí)行了上拉操作丐黄。

block的實現(xiàn)一個帶參數(shù)的
獲取2個數(shù)的最大公約數(shù)斋配。或者最小公倍數(shù)

最大公約數(shù)的兩個算法

有兩整數(shù)a和b:

① a%b得余數(shù)c

② 若c=0,則b即為兩數(shù)的最大公約數(shù)

③ 若c≠0艰争,則a=b坏瞄,b=c,再回去執(zhí)行①
OC

//相除法
-(NSInteger)commonNumber{
    NSInteger fenzi = a>b ? a: b;
    for (NSInteger i = fenzi; i>=0; i--) {
        if (a%i==0&b%i==0) {
            return i;
        }
    }
    
    return 1;
}

swift(不會用swift的for循環(huán)從大到小甩卓,怪折騰的...)

   func ssCommonNumber()->NSInteger
    {
        var a = NSInteger()
        
        var b = NSInteger()
        a = 12
        b = 18
        var fenzi = NSInteger()
        fenzi = a > b ? a : b
        
        for i in ((0 + 1)...fenzi).reversed() {
            
            let c = a % i
            let d = b % i
            if (c == 0) && (d == 0){
                return i
            }
        }
        
        return 1
    }

有兩整數(shù)a和b:

① 若a>b鸠匀,則a=a-b

② 若a<b,則b=b-a

③ 若a=b逾柿,則a(或b)即為兩數(shù)的最大公約數(shù)

④ 若a≠b缀棍,則再回去執(zhí)行①
OC

//相減法
-(void)addWithCommonNumber{
    
    while (a!=b) {
        if (a>b) {
            a = a-b;
        }else{
            b = b- a;
        }
    }
    NSLog(@"相減法得到最大公約數(shù)是:%ld",a);
    
}

swift

    func CommonNumber()->NSInteger
    {
        var a = NSInteger()
        
        var b = NSInteger()
        a = 12
        b = 18
        while a != b {
            if a>b {
                a=a - b
                
            }else{
                b = b - a;
            }
        }
        return a;
    }

最小公倍數(shù)

兩個數(shù)相乘除以最大公約數(shù)就是最小公倍數(shù)

MVC、MVVM机错、MVP的區(qū)別

models-負責主要的數(shù)據(jù)或者操作數(shù)據(jù)的數(shù)據(jù)訪問層
views-負責展示層
contorller爬范、presenter、ViewModel-負責協(xié)調(diào)model和view弱匪,通常會根據(jù)用戶在view上的動作在model上作出對應(yīng)的更改青瀑,同時將更改的信息返回到view上。
MVC優(yōu)缺點
蘋果官方給出的優(yōu)缺點
優(yōu)點:
1.同時開發(fā)-多個開發(fā)人員可以在模型萧诫,控制器和視圖上同時工作斥难。
2.高凝聚力-MVC可以在控制器上進行相關(guān)的動作的邏輯分組。特定模型的視圖也會分組在一起
3.低耦合-MVC框架的本質(zhì)就是模型帘饶、視圖或控制器之間的耦合度較低
4.易于修改-由于責任分離哑诊,未來的開發(fā)或修改更容易
5.模型的多個視圖-模型可以有多個視圖

缺點:
1.代碼導航-框架導航可能是復雜的,因為它引入了新的抽象層尖奔,并要求用戶適應(yīng)MVC的分解標準。
2.多工件一致性-將一個特性分解為三個工件導致散射穷当,因此提茁,要求開放人員一次維護多個表示的一致性。
3.顯著的學習曲線-多種技術(shù)的支持成為標準馁菜。使用mvc的開發(fā)人員需要精通多種技術(shù)茴扁。

工廠模式

其實就是創(chuàng)建對象

UIButton到NSObject的類

UIButton->UIControl->UIView->UIReponder->NSObject

category為什么不能添加屬性?

一個類中用@property聲明屬性汪疮。編譯器會自動幫我們生成成員變量和setter/getter峭火,單分類的指針結(jié)構(gòu)體中,根本沒有屬性列表智嚷,所以分類中用@property聲明屬性卖丸,既無法生產(chǎn)成員變量也無法生成setter/getter。
因為OC是動態(tài)語言盏道,方法真正的實現(xiàn)是通過runtime完成的稍浆,我們可以通過runtime手動添加setter/getter方法。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市衅枫,隨后出現(xiàn)的幾起案子嫁艇,更是在濱河造成了極大的恐慌,老刑警劉巖弦撩,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件步咪,死亡現(xiàn)場離奇詭異,居然都是意外死亡益楼,警方通過查閱死者的電腦和手機猾漫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來偏形,“玉大人静袖,你說我怎么就攤上這事】∨ぃ” “怎么了队橙?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長萨惑。 經(jīng)常有香客問我捐康,道長,這世上最難降的妖魔是什么庸蔼? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任解总,我火速辦了婚禮,結(jié)果婚禮上姐仅,老公的妹妹穿的比我還像新娘花枫。我一直安慰自己,他們只是感情好掏膏,可當我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布劳翰。 她就那樣靜靜地躺著,像睡著了一般馒疹。 火紅的嫁衣襯著肌膚如雪佳簸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天颖变,我揣著相機與錄音生均,去河邊找鬼。 笑死腥刹,一個胖子當著我的面吹牛马胧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播衔峰,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼漓雅,長吁一口氣:“原來是場噩夢啊……” “哼录别!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起邻吞,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤组题,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后抱冷,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體崔列,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年旺遮,在試婚紗的時候發(fā)現(xiàn)自己被綠了赵讯。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡耿眉,死狀恐怖边翼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鸣剪,我是刑警寧澤组底,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站筐骇,受9級特大地震影響债鸡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜铛纬,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一厌均、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧告唆,春花似錦棺弊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至茄螃,卻和暖如春缝驳,著一層夾襖步出監(jiān)牢的瞬間连锯,已是汗流浹背归苍。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留运怖,地道東北人滔岳。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓湿硝,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子宦芦,可洞房花燭夜當晚...
    茶點故事閱讀 43,612評論 2 350

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

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法微渠,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法鲁森,異常的語法,線程的語...
    子非魚_t_閱讀 31,599評論 18 399
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理振惰,服務(wù)發(fā)現(xiàn)歌溉,斷路器,智...
    卡卡羅2017閱讀 134,637評論 18 139
  • 設(shè)計模式是什么骑晶? 你知道哪些設(shè)計模式痛垛,并簡要敘述? 設(shè)計模式是一種編碼經(jīng)驗桶蛔,就是用比較成熟的邏輯去處理某一種類型的...
    不懂后悔閱讀 824評論 0 53
  • 從三月份找實習到現(xiàn)在匙头,面了一些公司,掛了不少仔雷,但最終還是拿到小米蹂析、百度、阿里朽寞、京東识窿、新浪、CVTE脑融、樂視家的研發(fā)崗...
    時芥藍閱讀 42,218評論 11 349
  • 記得很久以前QQ盛行的時候肘迎,我很喜歡發(fā)空間文章轉(zhuǎn)載甥温,過不了了多久文章下方會有點贊或者評論,再后來說說用的多了妓布,我就...
    日槿閱讀 244評論 1 0