您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 招聘面试 > iOS面试笔记、面试题
页码:1/42面试题笔记注意事项:内存管理、多线程、核心动画、表重用,推送,数据持久化。前程无忧、智联招聘。1.编程题写一个View从屏幕顶端动画移动到底部@interfaceTimingCurveViewController:UIViewController{IBOutletUIImageView*basketBall;}-(void)touchesEnded:(NSSet*)toucheswithEvent:(UIEvent*)event{[UIViewbeginAnimations:@movementcontext:nil];[UIViewsetAnimationCurve:UIViewAnimationCurveEaseIn];//labelid=code.timingcurve.easeIn/[UIViewsetAnimationDuration:1.0f];[UIViewsetAnimationRepeatCount:3];[UIViewsetAnimationRepeatAutoreverses:YES];CGPointcenter=basketBall.center;if(center.y85.0f){center.y-=295.0f;basketBall.center=center;}else{center.y+=295.0f;basketBall.center=center;}[UIViewcommitAnimations];}2.写一个内联函数,将字符串@“#ff3344”换成相应的UIColor对象-(UIColor*)getColor:(NSString*)hexColor{unsignedintred,green,blue;NSRangerange;range.length=2;range.location=0;[[NSScannerscannerWithString:[hexColorsubstringWithRange:range]]scanHexInt:&red];range.location=2;[[NSScannerscannerWithString:[hexColorsubstringWithRange:range]]scanHexInt:&green];range.location=4;页码:2/42[[NSScannerscannerWithString:[hexColorsubstringWithRange:range]]scanHexInt:&blue];return[UIColorcolorWithRed:(float)(red/255.0f)green:(float)(green/255.0f)blue:(float)(blue/255.0f)alpha:1.0f];}[self.viewsetBackgroundColor:[selfgetColor:@FF0000]];3.将字符串@“abcdefghijklmn”中的efg截取出来替换攒成gfeNSString*str=@abcdefghij;[strreplace:@efg,@“gfe”];4.写一个取当前日期的方法,输入字符串,格式如下2010-02-19//获取当前时间NSDate*nowDate=[NSDatedate];//格式化日期,其实就是利用一个日期格式化对象把日期转换成字符串了//先定义一个NSDateFormatter对象,然后给这个格式对象定义成自己想要的格式,然后用它去转化其他日期即可NSDateFormatter*format1=[[NSDateFormatteralloc]init];[format1setDateFormat:@yyyy/MM/ddHH:mm:ss];NSString*str1=[format1stringFromDate:nowDate];NSLog(@“%@,str1);5.解释类、对象、实例方法和实例成员类:一类事物的抽象,有成员和方法。对象:类的实例化和具体化实例方法:主要和类方法区别,类方法声明时前面用加号,实例方法声明时用减号实例成员:主要和类成员区分,类成员加static,实例成员不需要。6.、类名、方法名、成员名、函数名、宏定义首字母哪些大写,哪些小写大写:类名,宏定义小写:方法名,成员名,函数名7.@public,@protected,@private区别@public:完全公开,在程序的任何地方都可以调用@private:和@public相反,只能在该类内部调用@protected:只有自己和自己的子类可以调用8.如何声明一个带两个参数的实例方法和如何调用(举例说明)声明:-(void)methodForParameter1:(NSString*)p1Parameter2:(NSString*)p2;调用:[selfmethodForParameter1:@Parameter2:@];页码:3/429.@property(nonatomic,retain)Example*example;写出其setter和getter方法getter-(Example*)example{return_example;}setter-(void)setExample:(Example*)aExample{if(example!=aExample){[examplerelease];example=[aExampleretain];}}10.static关键字的作用,extern关键字的作用static:定义全局变量;定义类成员;定义内部函数extern:声明外部变量和外部函数,所声明的变量和函数可能不在本文件内定义或实现11.、解释selfself就是实例本身,在类里用self来调用自身的方法12.什么时候使用继承?什么时候使用类别给一个类增加新的数据成员时用继承,只是想扩展类的方法或覆盖原来的方法时用类别13.如何声明一个类@classExample或者@interfaceExample@end14.写出1-2个与动态调用有关的方法respondsToSelector、performSelector、conformsToProtocol、isKindOfClass、isMemberOfClass15.写一个协议(举例),协议有什么用@protocolExampleProtocolNSObject-(void)exampleProtocol;@end@interfaceExampleClass:NSObject{idExampleProtocoldelegate;页码:4/42}@property(nonatomic,assign)idExampleProtocoldelegate;@end一个通过协议对外提供接口。16.存放数字用哪个类,存放CGRect用什么类型存放数字用NSNumber存放CGRect用NSValue17.快速枚举(举例)NSArray*array=[NSArrayarray];for(idobjectinarray){[objecttest];}18.有哪些集合类可存放二进制数据类NSArray/NSMutableArray,NSDictionary/NSMutableDictionary,NSSet/NSMutableSet/NSCountedSet,NSData存放二进制数据19.文件处理用哪些类(写1-2个)NSFileManager\NSUserDefaultsopen,fopen20.解释retain、copy、assgin、autoreleaseretain,copy:计数器加一,区别是retain是原对象计数器加一,copy是创建一个新对象后,新对象计数器加一assgin:简单复制,计数器不变autorelease:内存延迟释放,计数器延迟减一21.写出归档相关类NSKeyedArchiver、NSKeyedUnarchiver22.写出xml解析和网络相关类xml解析:NSXMLParser,kissXMLGDATA网络:NSConnection23.常用的xml/json解析和http请求第三方包各写出一个xml:kissxmljson:SBJSonhttp请求:ASIHttpRequestSDWebImage,异步图片加载器(界面流畅)异步mp3异步video24.代理和通知的区别页码:5/42代理是垂直的,通知可以平行的25.写出几个常用的设计模式(两个以上)MVC设计模式单例模式代理模式通知模式工厂模式26.新的关键字:@class类名;——解决循环引用问题,提高性能@class仅仅告诉编译器,在进行编译的时候把后面的名字作为一个类来处理。(1)@class的作用:声明一个类,告诉编译器某个名称是一个类(2)开发中引用一个类的规范27.http和scoket通信的区别。http是客户端用http协议进行请求,发送请求时候需要封装http请求头,并绑定请求的数据,服务器一般有web服务器配合(当然也非绝对)。http请求方式为客户端主动发起请求,服务器才能给响应,一次请求完毕后则断开连接,以节省资源。服务器不能主动给客户端响应(除非采取http长连接技术)。iphone主要使用类是NSUrlConnectionscoket是客户端跟服务器直接使用socket“套接字”进行连接,并没有规定连接后断开,所以客户端和服务器可以保持连接通道,双方都可以主动发送数据。一般在游戏开发或股票开发这种要求即时性很强并且保持发送数据量比较大的场合使用。主要使用类是CFSocketRef28.问,mvc设计模式是什么?你还熟悉什么设计模式?设计模式:并不是一种新技术,而是一种编码经验,使用比如java中的接口,iphone中的协议,继承关系等基本手段,用比较成熟的逻辑去处理某一种类型的事情,总结为所谓设计模式。面向对象编程中,java已经归纳了23中设计模式。mvc设计模式,可以将整个应用程序在思想上分成三大块,模型,视图,控制器,对应是的数据的存储或处理,前台的显示,业务逻辑的控制。Iphone本身的设计思想就是遵循mvc设计模式。代理模式:代理模式给某一个对象提供一个代理对象,并由代理对象控制对源对象的引用.比如一个工厂生产了产品,并不想直接卖给用户,而是搞了很多代理商,用户可以直接找代理商买东西,代理商从工厂进货.常见的如QQ的自动回复就属于代理拦截代理模式在iphone中得到广泛应用.单例模式,说白了就是一个类不通过alloc方式创建对象,而是用一个静态方法返回这个类的对象。系统只需要拥有一个全局对象,这样有利于我们协调系统整体的行页码:6/42为,比如想获得[UIApplicationsharedApplication];任何地方调用都可以得到UIApplication的对象,这个对象是全局唯一的。观察者模式。当一个物体发生变化时,会通知所有观察这个物体的观察者让其做出反应。实现起来无非就是把所有观察者的对象给这个物体,当这个物体的发生改变,就会调用遍历所有观察者的对象调用观察者的方法从而达到通知观察者的目的。工厂模式publicclassFactory{publicstaticSamplecreator(intwhich){if(which==1)returnnewSampleA();elseif(which==2)returnnewSampleB();}}29.代理模式和观察者模式有什么区别?代理模式为两个对象协同完成一个请求,代理模式常用于代理拦截,比如qq的自动回复。观察者模式则是一个对象发生变化,可以调用所有的观察者对象的方法完成通知观察者的目的30.你在开发项目中时,用到了哪些数据存储方式,iphone中常见的方式有哪些,各有什么区别?页码:7/42数据存储五种形式的应用范围和性能区别(coredata,sqllite,对象序列化,文件直接读写,NSUserDefault(保存数据到temp
本文标题:iOS面试笔记、面试题
链接地址:https://www.777doc.com/doc-6123056 .html