IOS面试题--001
1、????????簡述OC中內存管理機制。與retain配對使用的方法是dealloc還是release,為什么?需要與alloc配對使用的方法是dealloc還是release,為什么?readwrite,readonly,assign,retain,copy,nonatomic、atomic、strong、weak屬性的作用?
?
Release -----,alloc 開辟空間 deaclloc銷毀空間 .手動調用dealloc的時候會強制將引用計數置為0
?
readwrite,可讀可寫,讓系統生成setter和getter???readonly,只可讀,只生成getter
?
assign引用計數不會+1,適用于基本數據類型.常用于指向儲存于靜態區的變量以及delegate,直接賦值
?
retain引用計數+1,獲得對象的所有權
?
copy 復制一個對象,并且儲存在不同的內存區.原對象的引用計數不變.遵循NSCoping協議的可以深拷貝
?
Nonatomic非原子性的,不保證多線程下保護安全?atomic原子性,保證多線程下安全.有一個屬性需要多個線程同時訪問一個變量,使用atomic能夠自動加鎖解鎖.
?
Strong,用于ARC模式下,表明對象屬于強引用.類似于retain,但是比retain更加安全,只要對象存在擁有者,就可以引用,不會被釋放.只要對象失去了擁有者,立即被拋棄.不必再將已經指向已經釋放的對象的指針指向空.避免了野指針.
?
Weak類似assign,弱引用.應用計數不會增加.釋放指針自動置為nil;
?
?
?
2、????????類變量的@protected,@private,@public,@package,聲明各有什么含義?
通過->的方式訪問成員變量
@protected受保護的.該類和所有子類中的方法可以直接訪問這樣的變量。
@private 變量是私有的,該類的方法可以直接訪問變量。
@public 所有類都可以訪問
@package 表示框架內訪問,外部無法訪問
?
?
3、????????線程是什么?進程是什么?二者有什么區別和聯系?
線程,是進程的一個具體實例.程序運行的最小單位,是被系統獨立調度和CPU的基本運行單元.
進程是操作系統中可以并行工作的基本單元,
一個應用程序有一個進程,一個進程中至少有一個線程.
?
進程和線程的主要差別在于它們是不同的操作系統資源管理方式。進程有獨立的地址空間,一個進程崩潰后,在保護模式下不會對其它進程產生影響,而線程只是一個進程中的不同執行路徑。線程有自己的堆棧和局部變量,但線程之間沒有單獨的地址空間,一個線程死掉就等于整個進程死掉,所以多進程的程序要比多線程的程序健壯,但在進程切換時,耗費資源較大,效率要差一些。但對于一些要求同時進行并且又要共享某些變量的并發操作,只能用線程,不能用進程
?
?
4、????????談談你對多線程開發的理解?ios中有幾種實現多線程的方法?
在一個進程中有多個線程共同存在,每個線程執行各自的任務,相互之間不會干擾,一個線程可以創建或者撤銷其他的線程.讓一個進程可以同時執行很多任務.這就減少了等待時間,提高了進程的運行效率.但是多線程會耗費資源,并且由于一個線程死掉會造成整個進程死掉.多線程也容易造成安全性問題.
?
Thread
?
使用GCD
?
使用NSOperationQueue
?
POSX
?
異步方法
?
5、????????線程同步和異步的區別?IOS中如何實現多線程的同步?
線程同步是多個線程同時訪問同一資源,等待資源訪問結束,浪費時間,效率低?,串行執行任務??線程異步:訪問資源時在空閑等待時同時訪問其他資源,實現多線程機制,并行執行任務
?
使用GCD的主隊列.使用NSOperationQueue,把最大線程數設為1
GCD使用障礙
6、????????假設有一個字符串aabcad,請寫一段程序,去掉字符串中不相鄰的重復字符,即上述字符串處理之后的輸出結果為:aabcd
?
?
?
?
7、????????獲取一臺設備唯一標識的方法有哪些?
UDID
OPENUDID
廣告標識符
Vindor標識符
推送token+bundle_id
UUID
?
8、????????ios類是否可以多繼承?如果沒有,那可以用其他方法實現嗎?簡述實現過程。
沒有.通過協議可以調用.
?
?
?
9、????????堆和棧的區別?
棧:由編譯器自動分配釋放,存放函數的參數值,局部變量的值等
堆:一般由程序員分配釋放,若程序員不釋放,程序結束時可能由系統回收
?
10、???? ios本地數據存儲都有哪幾種方式?
plist
數據庫
歸檔和反歸檔
文件讀寫
?
轉載于:https://www.cnblogs.com/xukunhenwuliao/p/3576191.html
總結
以上是生活随笔為你收集整理的IOS面试题--001的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IBM powerVM VIOS
- 下一篇: 【学习笔记】C#中HashTable和快