《iOS開發(fā)一起來做面試題》- 每日十道- 打卡第一天

每天十道面試題

對您有幫助或者您喜歡的話 希望能點(diǎn)個贊或者添加一下關(guān)注

一. CALayer和UIView的區(qū)別聯(lián)系
1 UIView是UIKIt的只能在iOS使用, CALayer是QuartzCore的 iOS和mac os通用
2 CALayer比UIView更加輕量級,但是可以實(shí)現(xiàn)同樣的效果
3 UIView的CALayer類似UIView的子View樹形結(jié)構(gòu)
4 UIView比CALayer多了一個事件處理功能,也就是說UIView能處理用戶觸摸
5 UIView有個重要的屬性layer,可以返回它的主CALayer實(shí)例.CALayer *layer = myView.layer
6 坐標(biāo)系統(tǒng): CALayer的坐標(biāo)系統(tǒng)比UIView多了一個anchorPoint屬性
7 UIView是iOS系統(tǒng)中界面的基本元素,所有的界面元素都是繼承自它.它本身完全是由CoreAnimation來實(shí)現(xiàn)的.它真正的繪圖部分,是由一個CALayer類來管理的.UIView本身更像是一個CALayer的管理權(quán),訪問它的跟繪圖和跟坐標(biāo)有關(guān)的屬性,如frame,bounds等,實(shí)際上內(nèi)部都是在訪問它所包含的CALayer的相關(guān)屬性.
layer可以設(shè)置圓角顯示 cornerRadius 也可以設(shè)置陰影 shadowColor 但是如果layer??中某個layer設(shè)置了圓角 ??中所有l(wèi)ayer的陰影效果將都不顯示.因此要死設(shè)置有圓角還要陰影,可以做兩個UIView重疊,一個layer顯示圓角一個layer顯示陰影
8 渲染 當(dāng)更新層 改變不能立即顯示在屏幕上.當(dāng)所有的層都準(zhǔn)備好時,可以調(diào)用setNeedsDisplay方法來重繪顯示.
9 變換 要在一個層中添加一個3D或仿射變換,可以分別設(shè)置層的transform或者affineTransform屬性
10 變形Quartz Core的渲染能力 使二維圖像可以被自由的操縱,就像是三維的.圖像可以在一個三維坐標(biāo)系中以任意的角度被旋轉(zhuǎn) 縮放 和傾斜.CATransform3D的一套方法提供了一些魔術(shù)般的效果
二. 簡述同步和異步
同步:串行的執(zhí)行任務(wù) 異步:并行的執(zhí)行任務(wù).同步函數(shù)不具備開啟線程的能力,而異步函數(shù)具備
所謂同步,就是在發(fā)出一個調(diào)用時,在沒有得到結(jié)果之前,該調(diào)用就不返回.但是一旦調(diào)用返回,就得到返回值了.也就是 由調(diào)用者主動等待這個調(diào)用結(jié)果
而異步則是相反,調(diào)用在發(fā)出之后,這個調(diào)用就直接返回了,所以沒有返回結(jié)果.換句話說就是當(dāng)一個異步過程調(diào)用發(fā)出后,調(diào)用者不會立刻得到結(jié)果。而是在調(diào)用發(fā)出后,被調(diào)用者通過狀態(tài)、通知來通知調(diào)用者,或通過回調(diào)函數(shù)處理這個調(diào)用.

三. 多線程安全怎么控制?
用互斥鎖,隊(duì)列組,柵欄函數(shù),依賴

四. 簡要說明什么時候使用繼承,什么時候使用類別
在OC中,一個類繼承另一個類,就是繼承了父類所有的屬性和方法,并且可以擴(kuò)充自己的屬性:而類別是在不改變原有類的基礎(chǔ)上進(jìn)行方法擴(kuò)充;
因此,根據(jù)開發(fā)需求,如果這個類需要擴(kuò)充屬性,或者需要重寫系統(tǒng)的類的某些方法,用繼承;如果只是對一個類擴(kuò)充接口和模塊,使用類別更加方便.

五. 簡述蘋果的安全機(jī)制
數(shù)字簽名機(jī)制:在iOS中運(yùn)行的App必須 擁有自己的數(shù)字簽名,而數(shù)字簽名來與開發(fā)者的數(shù)字證書;開發(fā)者需要加入"iOS開發(fā)者計(jì)劃"才能獲取證書 而且其開發(fā)的App還要經(jīng)過嚴(yán)格的審查才能在AppStore上架,保證了App的安全;杜絕了第三方和未簽名App的運(yùn)行;
沙盒保護(hù)機(jī)制:這種機(jī)制使得設(shè)備內(nèi)的各個App之間無法直接進(jìn)行交流,只能通過iOS來進(jìn)行數(shù)據(jù)傳遞;雖然降低了系統(tǒng)的擴(kuò)展性但是卻保證了安全性;
不要使用越獄,否則蘋果的安全機(jī)制就功虧一簣;
只從AppStore獲取App;
第一次連接計(jì)算機(jī),不要隨意點(diǎn)"信任";
不要隨意給某個App設(shè)置隱私讀取權(quán)限;
六 關(guān)鍵字const有什么含意?修飾類呢?static的作用,用于類呢?還有extern c的作用?
當(dāng)使用 const修飾基數(shù)數(shù)據(jù)類型變量時,該變量就變?yōu)槌A?進(jìn)入靜態(tài)區(qū)

當(dāng)使用const修飾指針類型變量時:

當(dāng)使用const在指針類型兩邊,那么該指針變量指向的內(nèi)存空間的內(nèi)容就不能改變了,但指針的指向可以改變.
如果const在變量的左邊,那么該指針的指向不能改變了,而指向內(nèi)存空間的內(nèi)容可以改變

當(dāng)使用const修飾符時,const NSSting *str,相當(dāng)于修飾該對象,表示對象是不可更改的.

static修飾變量,表示這個內(nèi)部全局變量,只能在本文件中訪問.系統(tǒng)會將該變量放進(jìn)靜態(tài)區(qū),它的生命周期被延長到了程序結(jié)束

static修飾類, 表示這個內(nèi)部的方法, 只能在本文件中訪問.

extern c表示聲明了一外部變量, 多個外部變量如果同名,實(shí)際指向的是同一塊存儲空間.

七. 類工廠方法是什么?
類工廠方法的實(shí)現(xiàn)是為了向客戶提供方便,它們將分配和初始化合在一個步驟中,返回被創(chuàng)建的對象,并進(jìn)行自動釋放處理.這些方法的形式是+(type)className..其中className不包括任何前綴. 工廠方法可能不僅僅為了方便使用,它們不但可以將分配和初始化合在一起,還可以為初始化過程提供對象的分配信息.類工廠方法的另一個目的是使類提供單間實(shí)例.
八 UIView從出現(xiàn)到銷毀的過程?
-> loadView
-> viewDidLoad
-> viewWillAppear
-> viewWillLayoutSubviews
-> viewDidLayoutSubviews
-> viewDidAppear
-> viewWillDisappear
-> viewDidDisappear

九. 什么情況下回發(fā)生內(nèi)存泄漏和內(nèi)存溢出?
內(nèi)存溢出就是你要求分配的內(nèi)存超出了系統(tǒng)能給你的,系統(tǒng)不能滿足需求,于是就產(chǎn)生溢出.
內(nèi)存泄漏就是指你向系統(tǒng)申請分配內(nèi)存進(jìn)行使用,可以說使用完后沒有驚喜釋放,結(jié)果這塊內(nèi)存也無法分配給其他程序,稱之為內(nèi)存泄漏
內(nèi)存泄漏的累計(jì)危害非常大 最后會導(dǎo)致內(nèi)存溢出 程序閃退;
內(nèi)存泄漏分為四大類;

常發(fā)生內(nèi)存泄漏:發(fā)生內(nèi)存泄漏的代碼會被多次執(zhí)行到,每次被執(zhí)行的時候都會導(dǎo)致一塊內(nèi)存泄漏.
偶發(fā)生內(nèi)存泄漏.發(fā)生內(nèi)存泄漏的代碼只有在某些特定的壞境或者操作過程下才會發(fā)生;
一次性內(nèi)存泄漏.發(fā)生內(nèi)存泄漏的代碼只會被執(zhí)行一次,或者由于算法上的缺陷,導(dǎo)致總會有一塊僅且一塊內(nèi)存發(fā)生泄漏;
隱式內(nèi)存泄漏 程序在運(yùn)行的過程中不停的分配內(nèi)存, 但是直到結(jié)束的時候才釋放內(nèi)存,對于運(yùn)行周期很長的服務(wù)器,不及時釋放會耗盡內(nèi)存;
十 說說響應(yīng)者鏈條?
響應(yīng)者鏈條是一條由UIResponder的子類組成的鏈條,它們都能夠響應(yīng)時間,由事件的最佳相應(yīng)者起,如果它是控制器的view的話,它的上一級響應(yīng)者就是這個控制器,否則就是它的父控件;控制器的上一級響應(yīng)者是它父控制器的view,最終一直到window.

純手打 有錯誤或者不對的地方希望大家能給指出
喜歡的小伙伴希望能給個贊 或者添加個關(guān)注

交流圈子:

作為一個開發(fā)者,有一個學(xué)習(xí)的氛圍跟一個交流圈子特別重要,這是一個我的iOS交流群:1001906160 ,密碼‘000‘’提供一個更大的平臺,不管你是小白還是大牛歡迎入駐 ,分享BAT,阿里面試題、面試經(jīng)驗(yàn),討論技術(shù), 大家一起交流學(xué)習(xí)成長!

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

友情鏈接更多精彩內(nèi)容