iOS求職面試總結(jié)

出于事業(yè)的發(fā)展筒繁,3月中旬離職了噩凹,離職后,一直在找工作毡咏,這里做一下面試的總結(jié)驮宴。

一、問:任何開發(fā)語言寫一種排序呕缭,并寫出其時間復(fù)雜度

答:建議看看下面這篇文章堵泽,我當(dāng)時寫了個冒泡排序,時間復(fù)雜度為O(n^2)
http://blog.sina.com.cn/s/blog_77795cad01011txt.html

二恢总、問:atomic和nonatomic的區(qū)別迎罗,默認(rèn)是哪個?

答:atomic:默認(rèn)是有該屬性的片仿,這個屬性是為了保證程序在多線程情況下纹安,編譯器會自動生成一些互斥加鎖代碼,避免該變量的讀寫不同步問題砂豌。
nonatomic:如果該對象無需考慮多線程的情況厢岂,請加入這個屬性,這樣會讓編譯器少生成一些互斥加鎖代碼阳距,可以提高效率塔粒。
默認(rèn)是atomic的。

三筐摘、問:修改下列代碼中的錯誤之處

// .h中
@interface Teacher : NSObject
@property (nonatomic, strong) NSMutableArray *students;
@end

@interface Student : NSObject
@property (nonatomic, strong) Teacher *teacher;
@end
// viewDidLoad中
Teacher *teacher = [[Teacher alloc] init];
    teacher.students = [[NSMutableArray alloc] init];
    for (int i=0; i<10; i++) {
        Student *student = [[Student alloc] init];
        student.teacher = teacher;
        [teacher.students addObject:student];
    }

答:這里面主要考的是互相引用的問題卒茬,可以通過兩種方式進(jìn)行修改
第一種:

Teacher *teacher = [[Teacher alloc] init];
    teacher.students = [[NSMutableArray alloc] init];
    for (int i=0; i<10; i++) {
        Student *student = [[Student alloc] init];
        // 弱引用
        __weak Teacher *weakTeacher = teacher;
        student.teacher = weakTeacher;
        [teacher.students addObject:student];
    }

第二種:

// 修改Student對象的teacher屬性為weak引用
@property (nonatomic, weak) Teacher *teacher;

四、問:如下代碼的輸出

NSString *str1 = @"nick";
    NSString *str2 = @"nick";
    if (str1 == str2) {
        NSLog(@"相等");
    } else {
        NSLog(@"不相等");
    }

答:輸出"相等"咖熟,==比較的是指針指向的地址是否相同扬虚,這里相同字符串的地址是相同的

五、問:Application的幾種狀態(tài)

答:1球恤、應(yīng)用程序的狀態(tài)
狀態(tài)如下:
Not running 未運(yùn)行 程序沒啟動
Inactive 未激活 程序在前臺運(yùn)行,不過沒有接收到事件荸镊。在沒有事件處理情況下程序通常停留在這個狀態(tài)
Active 激活 程序在前臺運(yùn)行而且接收到了事件咽斧。這也是前臺的一個正常的模式
Backgroud 后臺 程序在后臺而且能執(zhí)行代碼,大多數(shù)程序進(jìn)入這個狀態(tài)后會在在這個狀態(tài)上停留一會躬存。時間到之后會進(jìn)入掛起狀態(tài)(Suspended)张惹。有的程序經(jīng)過特殊的請求后可以長期處于Backgroud狀態(tài)
Suspended 掛起 程序在后臺不能執(zhí)行代碼。系統(tǒng)會自動把程序變成這個狀態(tài)而且不會發(fā)出通知岭洲。當(dāng)掛起時宛逗,程序還是停留在內(nèi)存中的,當(dāng)系統(tǒng)內(nèi)存低時盾剩,系統(tǒng)就把掛起的程序清除掉雷激,為前臺程序提供更多的內(nèi)存替蔬。
下圖是程序狀態(tài)變化圖:



各個程序運(yùn)行狀態(tài)時代理的回調(diào):

  • (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions 告訴代理進(jìn)程啟動但還沒進(jìn)入狀態(tài)保存
  • (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 告訴代理啟動基本完成程序準(zhǔn)備開始運(yùn)行
  • (void)applicationWillResignActive:(UIApplication *)application 當(dāng)應(yīng)用程序?qū)⒁敕腔顒訝顟B(tài)執(zhí)行,在此期間屎暇,應(yīng)用程序不接收消息或事件承桥,比如來電話了
  • (void)applicationDidBecomeActive:(UIApplication *)application 當(dāng)應(yīng)用程序入活動狀態(tài)執(zhí)行,這個剛好跟上面那個方法相反
  • (void)applicationDidEnterBackground:(UIApplication *)application 當(dāng)程序被推送到后臺的時候調(diào)用根悼。所以要設(shè)置后臺繼續(xù)運(yùn)行凶异,則在這個函數(shù)里面設(shè)置即可
  • (void)applicationWillEnterForeground:(UIApplication *)application 當(dāng)程序從后臺將要重新回到前臺時候調(diào)用,這個剛好跟上面的那個方法相反挤巡。
  • (void)applicationWillTerminate:(UIApplication *)application 當(dāng)程序?qū)⒁顺鍪潜徽{(diào)用剩彬,通常是用來保存數(shù)據(jù)和一些退出前的清理工作。這個需要要設(shè)置UIApplicationExitsOnSuspend的鍵值矿卑。
  • (void)applicationDidFinishLaunching:(UIApplication*)application 當(dāng)程序載入后執(zhí)行

六喉恋、問:__block__weak的區(qū)別

答:API Reference對__block變量修飾符有如下幾處解釋:

//A powerful feature of blocks is that they can modify variables in the same lexical scope. You signal that a block can modify a variable using the __block storage type modifier.
//At function level are __block variables. These are mutable within the block (and the enclosing scope) and are preserved if any referencing block is copied to the heap.

大概意思?xì)w結(jié)出來就是兩點(diǎn):
1.__block對象在block中是可以被修改、重新賦值的粪摘。
2.__block對象在block中不會被block強(qiáng)引用一次瀑晒,從而不會出現(xiàn)循環(huán)引用問題。
API Reference對__weak變量修飾符有如下幾處解釋:

__weak specifies a reference that does not keep the referenced object alive. A weak reference is set to nil whenthere are no strong references to the object.

使用了__weak修飾符的對象徘意,作用等同于定義為weak的property苔悦。自然不會導(dǎo)致循環(huán)引用問題,因?yàn)樘O果文檔已經(jīng)說的很清楚椎咧,當(dāng)原對象沒有任何強(qiáng)引用的時候玖详,弱引用指針也會被設(shè)置為nil。
因此勤讽,__block__weak修飾符的區(qū)別其實(shí)是挺明顯的:

  1. __block不管是ARC還是MRC模式下都可以使用蟋座,可以修飾對象,還可以修飾基本數(shù)據(jù)類型脚牍。
  2. __weak只能在ARC模式下使用向臀,也只能修飾對象(NSString),不能修飾基本數(shù)據(jù)類型(int)诸狭。
  3. __block對象可以在block中被重新賦值券膀,__weak不可以。
    PS:__unsafe_unretained修飾符可以被視為iOS SDK 4.3以前版本的__weak的替代品驯遇,不過不會被自動置空為nil芹彬。所以盡可能不要使用這個修飾符。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末叉庐,一起剝皮案震驚了整個濱河市舒帮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖玩郊,帶你破解...
    沈念sama閱讀 222,464評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肢执,死亡現(xiàn)場離奇詭異,居然都是意外死亡瓦宜,警方通過查閱死者的電腦和手機(jī)蔚万,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來临庇,“玉大人反璃,你說我怎么就攤上這事〖俣幔” “怎么了淮蜈?”我有些...
    開封第一講書人閱讀 169,078評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長已卷。 經(jīng)常有香客問我梧田,道長,這世上最難降的妖魔是什么侧蘸? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任裁眯,我火速辦了婚禮,結(jié)果婚禮上讳癌,老公的妹妹穿的比我還像新娘穿稳。我一直安慰自己,他們只是感情好晌坤,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布逢艘。 她就那樣靜靜地躺著,像睡著了一般骤菠。 火紅的嫁衣襯著肌膚如雪它改。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天商乎,我揣著相機(jī)與錄音央拖,去河邊找鬼。 笑死鹉戚,一個胖子當(dāng)著我的面吹牛鲜戒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播崩瓤,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼踩官!你這毒婦竟也來了却桶?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎颖系,沒想到半個月后嗅剖,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嘁扼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年信粮,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片趁啸。...
    茶點(diǎn)故事閱讀 40,769評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡强缘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出不傅,到底是詐尸還是另有隱情旅掂,我是刑警寧澤,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布访娶,位于F島的核電站商虐,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏崖疤。R本人自食惡果不足惜秘车,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望劫哼。 院中可真熱鬧叮趴,春花似錦、人聲如沸沦偎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽豪嚎。三九已至搔驼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間侈询,已是汗流浹背舌涨。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留扔字,地道東北人囊嘉。 一個月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像革为,于是被迫代替她去往敵國和親扭粱。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評論 2 361

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

  • 基礎(chǔ) 1. 為什么說Objective-C是一門動態(tài)的語言震檩? 2. 講一下MVC和MVVM琢蛤,MVP蜓堕? 3. 為...
    波妞和醬豆子閱讀 3,333評論 0 46
  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,166評論 30 470
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)博其,斷路器套才,智...
    卡卡羅2017閱讀 134,715評論 18 139
  • 一、深復(fù)制和淺復(fù)制的區(qū)別慕淡? 1背伴、淺復(fù)制:只是復(fù)制了指向?qū)ο蟮闹羔槪磧蓚€指針指向同一塊內(nèi)存單元峰髓!而不復(fù)制指向?qū)ο蟮?..
    iOS_Alex閱讀 1,393評論 1 27
  • 聽完這堂課儿普,感觸特別深崎逃! 對蒙臺梭利教育理念又有了更進(jìn)一步的認(rèn)識和了解,很慶幸自己能夠從孩子一出生就一直全職陪伴在...
    劉懿凡閱讀 356評論 0 0