iOS 面試記(一)

來源:互聯網
上載者:User

周四去面試了XX公司iOS程式員,費了半天勁才找到地方,居然在一個破賓館裡面,一間小房子,3對辦公桌拼起來的辦公室,

一看到此情此景,我心頓時都涼了半截。房子裡面熱得要命,我坐那才一會,後背都濕了。

管事的拿了份面試題給我做,我做的時候感覺挺簡單,不過後來查資料,好像有些地方還是不太對。題目如下:

1:Object-c有多重繼承嗎?沒有的話有什麼替代?

我的回答:沒有。用protocol代替

網上答案:cocoa中的所有類都是NSObject的子類。多繼承在這裡是用protocol委託代理來實現的

2:static作用?

我的答案:靜態聲明。聲明一個變數或方法為靜態。靜態變數在類的第一次執行個體化時,即分配儲存空間。靜態方法不需要類的執行個體即可訪問。

網上答案:
(1)函數體內static變數的作用範圍為該函數體,不同於auto變數,該變數的記憶體只被分配一次,因此此值在下次調用時扔維持上次的值。

(2)在模組內的static全域變數可以被模組內所用的函數訪問,但不能被模組外其他函數訪問

(3)在模組內的static函數只可被這一模組內的其他函數調用,這個函數的使用範圍被限制在聲明它的模組內

(4)在類中的static成員變數屬於整個類所擁有,對類的所有對象只有一份拷貝

(5)在類中的static成員函數屬於整個類所擁有,這個函數不接收this指標,因而只能訪問類的static成員變數

3:#import和#include的區別。@class代表什嗎?

我的答案:區別在於#include可以避免循環參考的問題。@class代表的是其標識的是一個類,它在.m檔案中#import。

網上答案:@class一般用於標頭檔中需要聲明該類的某個執行個體變數的時候用到,在m檔案中還是需要#import。

而#import比#include的好處就是不會引起交叉編譯

4:Object-c的記憶體管理是如何管理的?

我的答案:
引用計數:當使用alloc建立新執行個體或賦值retain、copy(或ARC中的strong)標識的變數時,執行個體或變數的引用計數即加一,當它們的引用計數為0時,則由GC回收

網上答案:如果你通過分配和初始化,(比如[[MyClass alloc] init])的方式類建立對象,你就擁有這個對象,需要負責該對象的釋放。這個規則在使用NSObject的便利方法new時也同樣適用。如果你拷貝一個對象,你也擁有拷貝得到的對象,需要負責該對象的釋放。如果你保持一個對象,你就部分擁有這個對象,需要在不再需要時釋放

5:view中的frame和bounds有什麼不同?

我的答案:view的frame代表的是父類中的view的位置。view的bounds代表的是view自己的座標及長寬

網上答案:

frame指的是:該view在父view座標系統中的位置和大小。(參照點是父親的座標系統)

bounds指的是:該view在本身座標系統中 的位置和大小。(參照點是本身座標系統)

6:如何在ios4.1以上使用ios3的代碼(這個問題不太明白具體什麼意思,按我的理解回答了)?

我的答案:在ARC項目中使用非ARC的代碼,需要在編譯設定裡設定:-fno-objc-arc

7:請寫一個委託代理的例子

.h檔案

@protocol delegate;@required- (void)dosomething;@end@interface DelegateSimple<delegate>@end

.m檔案

#import "DelegateSimple.h"@implementation DelegateSimple- (void)dosomething{    NSLog(@"%@","This is implementation of the protocol");}@end

 

8:請用block寫出一個Singleton執行個體

+(Class *)sharedInstance{    static Class  *__singleton;    static dispatch_once_t onceToken;    dispatch_once(&onceToken, ^{        __singleton = [[Class alloc] init];    });    return __singleton;}

9:請寫出你常用的多線程調用的方法

-(void)downloadStringFromURL{      NSURL *url = [NSURL URLWithString:[NSString stringWithFormart:@"%@", "www.xxxx.com"]];    ASIHTTPRequest * request = [ASIHTTPRequest requestWithURL:url];    [request setDelegate:self];    [request startAsynchronous];}#pragma mark - ASIHTTPRequest非同步請求回調方法- (void)requestFinished:(ASIHTTPRequest *)request{    NSString *responseString = [request responseString];    NSLog(@"%@", responseString);}- (void)requestFailed{    NSError *error = [request error];    NSLog(@"%@", error);}

 

做完之後,辦公室裡又沒有能做主的人,然後打電話給某某在正南京出差的汪總,跟他又聊了半天,看他好像聊得挺來勁,因為他在地鐵裡,訊號不好,中途還斷過一次電話。最後他問我薪資,我覺得這辦公環境太差了點,就故意說高了點,他沉默了一會,讓我回去等訊息。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.