面试题分享【不断更新】
問題1:求以下程序段的輸出
int test(int x, int y) {x = x + y;return x * y; }int main(int argc, const char * argv[]) {@autoreleasepool {int x = 3, y = 10, z = test(x, y);NSLog(@"%d%d", x++, ++z);}return 0; }答案:3131
問題2:求以下程序段的輸出
int func(int x) {int countx = 0;while (x) {countx++;x = x&(x-1);}return countx; }int main(int argc, const char * argv[]) {@autoreleasepool {NSLog(@"%d", func(2013));}return 0; }答案:9
?
問題3:簡述兩個for循環(huán)的優(yōu)缺點
for (i = 0; i < N; i++) {if (condition) {doSomeThing();} else {doOtherThing();} }if (condition) {for (i = 0; i < N; i++) {doSomeThing();} } else {for (i = 0; i < N; i++) {doOtherThing();} }答案:無
?
問題4:請指出下面代碼的問題
UIView *tmpView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; [self.view addSubview:tmpView];答案:無
?
問題5:你所了解的單例有哪些?請寫了一個單例的示例代碼。
答案:
@interface Manager : NSObject + (id)sharedManager; @end static Manager *instance = nil;@implementation Manager+ (id)sharedManager {if (!instance) {instance = [[super allocWithZone:NULL] init];}return instance; }// 復(fù)寫allocWithZone和copyWithZone的目的是在外部多次調(diào)用alloc的時候,內(nèi)部能夠確保對象只創(chuàng)建了一次+ (id)allocWithZone:(NSZone *)zone {return [[self sharedManager] retain]; }- (id)copyWithZone:(NSZone *)zone {return self; }// 復(fù)寫retain、retainCount、release、autorelease避免單件對象被外部釋放 - (id)retain {return self; }- (NSUInteger)retainCount {return NSUIntegerMax; }- (void)release {}- (id)autorelease {return self; }?
問題6:在你的日常開發(fā)過程中,是否遇到過崩潰問題?怎么解決?
答案:無
問題7:請寫出使用委托(代理)的示例代碼。
答案:
A委托B
A.h
@protocol ADelegate; @interface A : NSObject@property (nonatomic, assign) id<ADelegate> delegate;- (void)go;@end@protocol ADelegate <NSObject>- (void)doSomeThing;@endA.m
@implementation A- (void)go {if ([_delegate respondsToSelector:@selector(doSomeThing)]) {[_delegate doSomeThing];} }@endB.h
#import "A.h"@interface B : NSObject<ADelegate>@endB.m
@implementation B- (void)doSomeThing {NSLog(@"do something..."); }@endman.m
#import "A.h" #import "B.h"int main(int argc, const char * argv[]) {@autoreleasepool {A *a = [[A alloc] init];B *b = [[B alloc] init];a.delegate = b;[a go];[a release];[b release];return 0;} }// 輸出
do something...
問題8:寫出控制器加載視圖的常規(guī)調(diào)用方法流程。
答案:
loadView
viewDidLoad
viewWillAppear
viewWillLayoutSubviews
viewDidLayoutSubviews
viewDidAppear
問題9:Objective-C有多重繼承么?不是的話,請以示例代碼說明。
答案:無
問題10:請寫出下面代碼的打印結(jié)果(默認(rèn)在32位機(jī)器下運(yùn)行)。
char a[] = "hello world"; char *p = a;NSLog(@"%ld", sizeof(a)); NSLog(@"%ld", sizeof(p));
答案:
12
4
如果在64位機(jī)器上運(yùn)行
12
8
問題11: 請完成下面的函數(shù)
@interface NSCustomArray : NSArray @property (nonatomic, retain) NSArray *targets; - (void)updateTargetsByArray:(NSArray *)newArray; // 將newArray賦值給targets @end @implementation NSCustomArray- (void)updateTargetsByArray:(NSArray *)newArray {NSArray *tmpArray = [[NSArray alloc] initWithArray:newArray];// 將tmpArray賦值給targets } @end答案:無
?
問題12:檢查如下代碼是否有問題,如果有問題,正確的寫法是?
- (void)setTarget:(NSObject *)target {self.target = target; }答案:無
?
問題13:指出下面代碼的問題
- (void)willEndStepOne:(NSObject *)userInfo {[NSThread detachNewThreadSelector:@selector(doSomeThing:) toTarget:self withObject:userInfo]; }- (void)doSomeThing:(NSObject *)userInfo {int max_loop_times = 999999;for (int i=0; i<max_loop_times; i++) {int randNum = rand();NSString *tmpString = [NSString stringWithFormat:@"%d", randNum];NSLog(@"%@", tmpString);} }答案:無?
轉(zhuǎn)載于:https://www.cnblogs.com/and_he/archive/2013/02/20/2919235.html
總結(jié)
以上是生活随笔為你收集整理的面试题分享【不断更新】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c#中无法将类型“int”隐式转换为“S
- 下一篇: D3D中的混合