富士软件时划科技iOS面试题
感谢您能抽出几分钟时间来参加本次面试,现在我们就马上开始吧!
:本题目答题时间30分钟,答完提交后请原地等待技术人员面试
Q2:delegate中的property使用以下哪个属性( )
A.assign
B.retain
C.copy
D.Strong
Q3:NSString *name = [[NSString alloc]initWithString:@张三];NSLog(@%d,[name retainCount]);上述代码打印结果是:( )
A.-1
B.0
C.1
D.2
Q4:声明一个方法:提供Student对象数组按照学号升序排列的判断条件:( )
A.- (BOOL))compareWithNumberForAscendSort:(Student*)otherStudent
B.-(NSInteger)compareWithNumberForAscendSort:(Student*)otherStudent
C.-(NSComparisonResult)compareWithNumberForAscendSort:(Student*)otherStudent
D.+(int)compareWithNumberForAscendSort:(Student*)otherStudent
Q5:(2018)10 + (43)16的结果是( )
A.(2085)16
B.(2085)10
C.(2061)10
D.(100000001101)2
Q6:内存管理的关键字描述错误的是:( )
A.retaincount是指对象的引用计数。
B.retain关键字可以增大对象的引用计数。
C.release可以减小对象的引用计数,但autorelease不可以
D.dealloc方法不能直接调用
Q7:下面哪些属于UITableViewDelegate协议的方法( )
A.tableView:cellForRowAtIndexPath
B.tableView:numberOfRowsInSection
C.tableView:didSelectRowAtIndexPath
D.numberOfSectionsInTableView
Q8:下面关于线程管理错误的是( )
A. GCD所用的开销要比NSThread大
B. 可以在子线程中修改UI元素
C. NSOperationQueue是比NSthread更高层的封装
D. GCD可以根据不同优先级分配线程
Q9:下面代码的作用是让doSomeThing函数每隔1秒被调用1次。请问哪里有错误( )NSTimer *myTimer=[NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(doSomeThing:) userInfo:nil repeats:YES]; [myTimer fire]
A. 没有将timer加入runloop
B. doSomeThing缺少参数
C. 忘记传递数据给userInfo
D. myTimer对象未通过[[myTimer alloc] init]方法初始化
Q10:什么是key window?( )
A. App中唯一的那个UIWindow对象
B. 可以指定一个key的UIWindow
C. 可接收到键盘输入等事件的UIWindow
D. 不可以隐藏的那个UIWindow对象
Q11:下面关于Objective-C内存管理的描述错误的是 ( )
A. 在使用ARC的项目中不能使用NSZone
B. autoreleasepool 在 drain 的时候会释放在其中分配的对象
C. 当使用ARC来管理内存时,在线程中大量分配对象而不用autoreleasepool则可能会造成内存泄露
D.当使用ARC来管理内存时,代码中不可以出现autorelease
Q12:堆和栈的区别正确的是( )
A.对于栈来讲,我们需要手工控制,容易产生memory leak。
B.对于堆来说,释放工作由编译器自动管理,无需我们手工控制
C.在Windows下,栈是向高地址扩展的数据结构,是连续的内存区域,栈顶的地址和栈的最大容量是系统预先规定好的。
D.对于堆来讲,频繁的new/delete势必会造成内存空间的不连续,从而造成大量的碎片,使程序效率降低
Q13:下面那个方法不属于NSObject的内省(Introspection)方法 ( )
A. init
B. isKindOfClass
C. responseToSelector
D. isMemberOfClass
Q14:求以下程序段的输出 ( )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;}
A.1
B. 5
C. 8
D. 9
Q15:对NSOperationQueue理解不正确的是( )
A. 存放NSOperation的集合类
B. 可以设置最大并发数
C. 放进去的线程会自动执行
D. 用户需要管理放进去的线程执行顺序
Q16:NSArray *array = [NSArrayarrayWithObjects:@1,@2,@3,@4,@2, nil];NSMutableSet *set = [[NSMutableSetalloc]init];for(NSString *str in array) { [set addObject:str];} NSLog(@%lu,[set count]); [set release]; 控制台打印的结果是:( )
A.4
B.5
C.6
D.7
Q17:下面关于类概念的描述中,错误的是:( )
A.类是抽象数据类型的实现
B.类是具有共同行为的若干对象的统一描述体
C.类是创建对象的模板
D.类就是C语言中的结构体类型
Q18:以下关于socket的描述错误的是 ( )
A. 是一种文件描述符
B. 是一个编程接口
C.仅限于TCP/IP
D.可用于一台主机内部不同进程间的通信。
Q19:NSDictionary *dict = [NSDictionarydictionaryWithObject:@a value forKey:@aKey]; NSLog(@%@,[dictobjectForKey:@aKey]);[dict release];控制台中打印的最后一条信息会是:(
A.a value
B.aKey : a value
C.崩溃信息
D.a value : aKey
Q20:Objective C中的线程下面描述不正确的是 ( )
A. 使用NSThread创建,使用GCD的dispatch
B. 直接使用NSOperation,然后将其加入NSOperationQueue
C. 在主线程执行代码,方法是performSelectorOnMainThread
D. 如果想延时执行代码可以用performSelector:onThread:withObject:waitUntilDone
Q21:使用imageNamed方法创建UIImage对象时,与普通的init方法有什么区别?( )
A. 没有区别,只是为了方便
B. imageNamed方法只是创建了一个指针,没有分配其他内存
C. imageNamed方法将图片加载到内存中后不再释放
D. imageNamed方法将使用完图片后立即释放
Q23:谈谈你对Socket的理解?思考Socket连接是如何维持实时通信的?TCP和UDP协议有什么区别
选项1
Q24:设有三个关系: S(SNO, SNAME, AGE, SEX,LESSON) SC(SNO, LESSONNO,SCORE) C(LESSONNO, LESSONNAME, TEACHER)试用关系代数表达式表示下列查询:(1).查询学号为10001的学生的所有姓名,年龄,性别。(2).查询WANG同学所有课程分数。(3).查询LI同学生物课的老师姓名。
选项1