iOS开发工程师笔试题

合集下载

iOS开发工程师招聘笔试题与参考答案(某大型央企)

iOS开发工程师招聘笔试题与参考答案(某大型央企)

招聘iOS开发工程师笔试题与参考答案(某大型央企)(答案在后面)一、单项选择题(本大题有10小题,每小题2分,共20分)1、以下哪个选项是iOS开发中常用的UI框架?A. UIKitB. AppKitC. CocoaD. Swift2、在Swift中,以下哪个关键字用于定义一个不可变的常量?A. varB. letC. constD. readonly3、题干:在iOS开发中,以下哪个框架是用来处理网络请求的?A. UIKitB. FoundationC. CoreGraphicsD. AFNetworking4、题干:在Swift中,以下哪个关键字用于定义一个可选类型?A. maybeB. maybe?C. optionalD. ?5、题干:在Swift中,以下哪个选项是用于创建单例模式的最佳实践?A. 使用静态变量B. 使用全局变量C. 使用static letD. 使用singleton关键字6、题干:在iOS开发中,以下哪种布局方式可以保证子视图始终位于父视图的中心?A. AutoLayoutB. Absolute LayoutC. Spring FrameworkD. Storyboard7、题干:在iOS开发中,以下哪个框架主要用于处理网络请求?A. UIKitB. Core GraphicsC. Core DataD. AFNetworking8、题干:在iOS开发中,以下哪个类用于处理文本的输入和显示?A. UITextFieldB. UITextViewC. UILabelD. UIButton9、以下哪个框架是用于iOS开发中的网络请求?A. UIKitB. Core DataC. AFNetworkingD. Core Graphics二、多项选择题(本大题有10小题,每小题4分,共40分)1、以下哪些技术是iOS开发中常用的UI组件?()A、UITableViewB、UICollectionViewC、UIWebViewD、UIImagePickerController2、以下关于iOS开发中多线程的说法,正确的是哪些?()A、iOS中可以使用GCD(Grand Central Dispatch)进行线程管理。

ios工程师笔试题及答案,ios工程师面试题及答案

ios工程师笔试题及答案,ios工程师面试题及答案

ios工程师笔试题及答案,ios工程师面试题及答案不少小伙伴们对ios工程师这个职位都十分感兴趣,本期乔布简历小编就将为大家带来一些ios工程师笔试题及答案以及ios工程师面试题及答案方面的内容。

关键词:ios工程师笔试题及答案,ios工程师面试题及答案1、#import和#include的区别?参考答案:#import是Objective-C导入头文件的语法,可保证不会重复导入。

#include是C/C++导入头文件的语法,如果是Objective-C与C/C++混编码,对于C/C++类型的文件,还是使用#include来引入,这种写法需要添加防重复导入的语法。

2、@class的作用参考答案:@class一般用于头文件中通过前向声明,就可以声明了,但是在.m文件中还是需要使用#import进来的。

它的作用只是前向声明。

3、用NSLog函数输出一个浮点类型,结果四舍五入,并保留一位小数参考答案:float money = 1.011;NSLog(@"%.1f", money);使用%f来格式化,其中要保留一位小数,因此再用%.1f就是保留一位。

4、viewDidLoad、loadView和viewDidUnload何时调用参考答案:viewDidLoad在view加载完成时调用,loadView在controller的view为nil时调用。

对于viewDidUnload现在已经不能直接调用了。

5、objective-c中的可变与不可变词典参考答案:可变字典就是可以增、删、改操作的字典,对应于NSMutableDictionary类型。

不可变字典就是不能执行增、删、改操作的字典,对应于NSDictionary类型。

6、Objective-C的内存管理参考答案:现在内存管理几乎都采用ARC,也就是Automatic Reference Counting,意思是自动引用计数。

由编译器在编译时自动为添加retain、release等代码。

iOS笔试题01

iOS笔试题01

1>#import和#include都能完整地包含某个文件的内容,#import能防止同一个文件被包含多次2>@class仅仅是声明一个类名,并不会包含类的完整声明;@class还能解决循环包含的问题3>#import <> 用来包含系统自带的文件,#import “”用来包含自定义的文件1>readwrite:同时生成get方法和set方法的声明和实现2>readonly:只生成get方法的声明和实现3>assign:set方法的实现是直接赋值,用于基本数据类型4>retain:set方法的实现是release旧值,retain新值,用于OC对象类型5>copy:set方法的实现是release旧值,copy新值,用于NSString、block等类型6>nonatomic:非原子性,set方法的实现不加锁(比atomic性能高)1>@property (nonatomic, retain) NSString *name;- (void)setName:(NSString *)name{if (_name != name) {[_name release];_name = [name retain];}}2>@property(nonatomic, copy) NSString *name;- (void)setName:(NSString *)name{if (_name != name) {[_name release];_name = [name copy];}}1>编译时是NSString类型2>运行时是NSData类型1>常用OC类型:NSString、NSArray、NSDictionary、NSData、NSNumber等2>OC对象需要手动管理内存,C的基本数据类型不需要管理内存id声明的变量能指向任何OC对象1>每个对象都有一个引用计数器,每个新对象的计数器是1,当对象的计数器减为0时,就会被销毁2>通过retain可以让对象的计数器+1、release可以让对象的计数器-13>还可以通过autorelease pool管理内存4>如果用ARC,编译器会自动生成管理内存的代码1>只要调用了alloc、copy、new方法产生了一个新对象,都必须在最后调用一次release或者autorelease2>只要调用了retain,都必须在最后调用一次release或者autorelease3>@property如果用了copy或者retian,就需要对不再使用的属性做一次release操作4>如果用了ARC,另外讨论NSMutableArray* ary = [[NSMutableArray array] retain];NSString *str = [NSString stringWithFormat:@"test"]; // 1[str retain]; // 2[ary addObject:str]; // 3NSLog(@"%d", [str retainCount]);[str retain]; // 4[str release]; // 3[str release]; // 2NSLog(@"%d", [str retainCount]);[ary removeAllObjects]; // 1NSLog(@"%d", [str retainCount]);结果:3、2、11>创建线程的方法NSThreadNSOperationQueue和NSOperationGCD2>主线程中执行代码[self performSelectorOnMainThread: withObject: waitUntilDone:];[self performSelector: onThread:[NSThread mainThread] withObject: waitUntilDone:];dispatch_async(dispatch_get_main_queue(), ^{});3>延时执行double delayInSeconds = 2.0;dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW,(int64_t)(delayInSeconds * NSEC_PER_SEC));dispatch_after(popTime, dispatch_get_main_queue(), ^(void){});[self performSelector: withObject: afterDelay:];[NSTimer scheduledTimerWithTimeInterval: target: selector: userInfo: repeats:];。

ios开发工程师笔试题及答案

ios开发工程师笔试题及答案

ios开发工程师笔试题及答案xxios开发工程师笔试题及答案1 iOS中传值的方式属性代理通知单例 block2 写一个单例代理类别单例+(id)allocWithZone:(struct _NSZone *)zonestatic Person *person;static dispatch_once_t onceToken;dispatch_once(&onceToken, ^{person = [super allocWithZone:zone];});return person;+(Person *)sharePersonreturn [[self alloc] init];3 info.plist 和Prefix.pch的用处info.plist项目的配置属性Prefix.pch1.存放一些全局的宏(整个项目中都用得上的宏)2.用来包含一些全部的头文件(整个项目中都用得上的头文件)3.能自动打开或者关闭日志输出功能4iOS中是否有多线程?怎么实现多态?没有分类和协议5 多线程有哪些?主线程和次线程有什么区别?怎么通信?NSThread GCD NSOperation主线程不需要创建就存在,子线程需要创建,初始时候不存在更新UI必须在主线程而进行延时操作一般都在子线程-(void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)waitdispatch_async(dispatch_get_main_queue(),<#^(void)block#>)6 数据存储的方式1 plist2 归档3 SOLite4CoreData7jason解析遇到大量数据解析过程时,在内存上的`优化办法利用json的反序列话的几个代理方法,实现大数据的分割,解析,拼接,保存,从而降低内存的消耗。

IOS笔试题题目

IOS笔试题题目

1. delegate中的property使用以下哪个属性()A. assignB. retainC. copyD. Strong2. 关于Objective-C中属性的说明,以下错误的是()A.readwrite是可读可写特性,需要生成getter方法和setter方法B.readonly是只读特性,只有getter方法,没有setter方法C.assign是赋值属性,setter方法将传入参数赋值给实例变量D.retain表示持有特性,copy属性表示拷贝属性,都会建立一个相同的对象3. 下面对category描述不正确的是()A.category可以添加新的方法B.category可以删除修改之前的方法C.将类的实现分散到多个不同文件或多个不同框架中D.创建对私有方法的前向引用4. NSRunLoop的以下描述错误的是()A.Runloop并不是由系统自动控制的B.有3类对象可以被run loop监控:sources,timers,observersC.线程是默认启动run loop的D.NSTimer可手动添加到新建的NSRunLoop中5. 单例类NSNotificationCenter提供信息广播通知,它采用的是观察者模式的通知机制。

()A. 对B. 错6. 判断:从通讯录数据库查询联系人数据,可通过ABAddressBookCopyArrayOfAllPeople和ABAddressBookCopyPeopleWithName函数获得。

()A. 对B. 错7. NSURLConnection类的同步请求方法是()A.+ sendSynchronousRequest:returningResponse:error:B.–initWithRequest:delegate:C.–initWithRequest:delegate:startImmediately:8. genstrings命名的基本语法:genstrings [-a] [-q] [-o] sourcefile()A.对B.错9. 面哪些属于UITableViewDelegate协议的方法()A.tableView:cellForRowAtIndexPath:B.tableView:numberOfRowsInSection:C.tableView:didSelectRowAtIndexPath:D.numberOfSectionsInTableView:10. 平铺导航模式是在内容组织上没有层次关系,展示的内容都放置在一个主屏幕上,采用分屏或分页控制器进行导航,可以左右或者上下滑动屏幕查看内容()A.对B.错多选:1. UIPopoverController控制器的常用方法和属性()A.presentPopoverFromBarButtonItem:permittedArrowDirections:animated:呈现Popover视图方法B.dismissPopoverAnimated: 关闭Popover视图方法C.popoverVisible,判断Popover视图是否可见D.popoverArrowDirection,判断Popover视图箭头的方向2. 模态视图专用属性有哪些()A.UIModalPresentationFullScreen,全屏状态,是默认呈现样式,iPhone只能全屏呈现。

ios开发工程师笔试题

ios开发工程师笔试题

ios开发工程师笔试题
预览说明:预览图片所展示的格式为文档的源格式展示,下载源文件没有水印,内容可编辑和复制
1.沙盒是什么,你理解的沙盒的作用是干什么?
2.浅克隆和深克隆区别是什么,阐述一个你在项目开发中遇到深拷贝的场景。

3. 谈谈你对IOS的推送机制原理的理解。

4.数据库现有三张表,分别为:
Goods(商品表): ID商品编号、NAME商品名称、MANUFACTURER生产商、SID规格编号
Spec(规格表):ID规格编号、COLOR颜色、SIZE尺寸
Sales_record(销售记录表):ID销售记录流水号、GID销售商品编号、COUNT销售量
(1)请设计查询语句查出规格编号为1销售量最多的商品编号、商品名称、颜色、尺寸;
(2)请设计查询语句查出生产商在上海(以上海开头)的商品的销售量总和;
5.谈谈你对KVO和KVC的理解,项目有没有应用到,如果应用到,请说下应用场景。

6.阐述项目中如何使用HTTP请求
7.谈谈你对约束的理解,有没有用过,如果有,请说明应用场景。

8.简单阐述你的应用使用多线程的理解。

9.现在一个班上有10个每个高低不同的人,先把10个人打乱排队,如何用程序排序的算法,把10个人按照高低或者低高的顺序排序。

10.谈谈你对工厂方法设计模式的理解及写个简单伪代码。

iOS笔试题及答案

iOS笔试题及答案

1. 什么是ARC/MRC,ARC无法管理内存的情况?答案1.ARC: 自动引用计数。

OC自动内存管理机制,2.区别于MRC需要手动管理引用计数retain或release 对引用计数+1 -1操作。

这种操作耗费精力容易出错,比如在多线程操作有时不确定哪个线程最后使用完毕,在模块化时对象被多个模块创建和使用,不能确定最后由谁去释放。

无法管理内存的情况?**1***Block或Delegate的循环引用解决的方法:掐断其中的一条强引用,使之变成弱引用,变成这样,就打破了循环引用:__weaktypeof (self) weakSelf =self;Delegate 要用weak修饰***2**NSTimer未释放在使用NSTimer addtarget 时,为了防止target 被释放而导致的程序异常,timer 会强引用target,所以这也是一处内存泄露的隐患。

解决方法是使用线程安全的MSWeakTimer,然后在dealloc中主动调用invalidate**3***非OC对象2.如何理解retain/copy/assign/release/autor release/dealloc 关键字?答案copy:建立一个索引计数为1的对象,然后释放旧对象,主要用于nsstring;retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1对其他NSObject和其子类assign: 简单赋值,不更改索引计数release:手动释放对象;dealloc:它的作用是,当对象的引用计数为0,系统会自动调用dealloc方法,回收内存。

autorelease 原理:a.先建立一个autorelease poolb.对象从这个autorelease pool里面生成。

c.对象生成之后调用autorelease函数,这个函数的作用仅仅是在autorelease pool中做个标记,让pool记得将来release一下这个对象。

IOS开发工程师模拟试题(20道)

IOS开发工程师模拟试题(20道)

IOS开发工程师模拟试题(20道)一.单选题(每题2分)1.执行以下语句后int imageWidth = -256; imageWidth <<=1;imageWidth的值为()A、-512B、512C、-128D、1282. 逻辑判断为真值正确的叙述是( )A、1B、非0值C、大于0的值D、非0的整型值3. 执行for( int index= 0; index < 10; ++index);后index的值为()A、10B、11C、0D、94. 关于property的说法,正确的是()A、property会给类的实例引入新的实例变量B、property的存取方法只能由编译器自动合成C、property必须有与之同名的实例变量D、property可以作为类的方法调用5. 以下函数中正确的入口点函数声明为()A、int main()B、int main(…)C、void main(int, const char*[])D、int main( int, const char*[])6. Objective-C语言程序的语句必须以()结束A、换行符B、:C、.D、;7. 以下常量中,默认类型为char的是()A、’\n’B、0xffC、128LD、1e28. 以下类型中,不是有效的Objective-C类型的是()A、signed charB、shortC、long doubleD、unsigned float9. 关于Objective-C数组的下标的说法,正确的是()A、可以使用任意类型作用下标B、数组的下标从0开始C、可以指定下标的起始范围D、在访问数组时,下标不能为负数10. 以下命名中,正确的是()A、_windowB、selectorC、1stElementD、name&address二. 多选题(每题2分)1.若length是某个类的非readonly属性,object为该类的对象,正确的使用length的方法有()A、object.length = 100;B、length = object.length;C、length = [object length]D、[object setLength:100];2. 正确使用id类型的语句是()A、id string = [NSString stringWi thString:@”A string constant.”];B、id *object = [NSNumber numberWithInt:100];C、id number = (id)100;D、id array = [[NSMutableArray alloc] init];3. 以下属于Objective-C关键字的是()A、selectorB、nilC、categoryD、class4. 关于继承的描述正确的是()A、派生类会继承基类的所有实例变量和方法B、对派生类的修改不会对基类造成任何影响C、在派生类中可以任意访问基类的实例变量D、派生类只能增加实例变量或方法5. 以下方法的定义中,正确的有()A、(id) init;B、-(id*)copy(id object);C、-(id)init:(id) objectD、+(id)objectFrom:(id) array :(int)index三. 判断(每题1分)1. 在IOS开发中,可以使用Objective-C语言的垃圾回收机制来减少内存管理的代码。

ios笔试题及答案

ios笔试题及答案

ios笔试题及答案一、题目描述:1. 请简述iOS的MVC架构是什么?答案:iOS的MVC架构即Model-View-Controller架构,用于分离应用程序的数据模型、用户界面和控制逻辑。

Model负责处理数据的存储、检索和修改,View负责显示用户界面,Controller负责管理用户交互并根据用户操作更新Model和View。

2. 什么是iOS的Autolayout?答案:Autolayout是iOS中的一种界面布局方式,用于实现适配不同屏幕尺寸和方向的界面。

通过使用约束关系来描述视图之间的关系,Autolayout可以自动调整和计算视图的位置和大小。

3. 请简要介绍iOS中的多线程编程方式。

答案:iOS中的多线程编程方式包括:- NSThread:通过创建和管理自己的线程对象来实现多线程。

- GCD(Grand Central Dispatch):使用队列(dispatch queue)来管理任务的执行,自动进行线程的调度。

- NSOperation:基于GCD之上的高层抽象,通过将任务封装成操作(operation)来实现多线程。

二、题目解答:1. iOS的MVC架构是一种经典的软件设计架构,它将应用程序分为三个部分:Model、View和Controller。

下面分别介绍这三个部分的作用:- Model:代表应用程序的数据模型,负责处理数据的存储、检索和修改。

它通常包含数据结构、数据库操作和网络请求等功能。

- View:代表用户界面,负责显示数据和用户交互。

它包含了屏幕上显示的各种元素,如按钮、标签、文本框等。

- Controller:作为Model和View之间的连接器,负责处理用户输入、更新Model和View之间的关系。

它接收用户交互事件,调用Model的方法进行数据处理,更新View的显示。

MVC架构的优点是分离了应用程序的不同功能部分,使得各部分可以独立开发和测试,易于维护和扩展。

ios笔试题及答案

ios笔试题及答案

ios笔试题及答案1. 什么是iOS?A. 苹果公司的移动操作系统B. 苹果公司的桌面操作系统C. 微软公司的移动操作系统D. 谷歌公司的移动操作系统答案:A2. iOS系统支持的设备类型包括哪些?A. iPhoneB. iPadC. iPod TouchD. 所有以上选项答案:D3. 在iOS中,用于开发应用程序的主要编程语言是什么?A. SwiftB. JavaC. PythonD. C++答案:A4. iOS应用程序的扩展名是什么?A. .appB. .exeC. .ipaD. .apk答案:C5. 在iOS开发中,哪个框架用于创建用户界面?A. UIKitB. SwiftUIC. React NativeD. Flutter答案:A6. iOS应用程序的生命周期包括哪些阶段?A. 启动、运行、暂停、恢复、退出B. 启动、运行、暂停、终止C. 启动、运行、暂停、恢复、终止D. 启动、运行、暂停、恢复、退出、终止答案:C7. 在iOS中,哪个工具用于测试应用程序的性能?A. XcodeB. InstrumentsC. SimulatorD. TestFlight答案:B8. iOS应用程序的图标尺寸是多少?A. 180x180 pixelsB. 1024x1024 pixelsC. 120x120 pixelsD. 57x57 pixels答案:A9. iOS应用程序的最小支持版本是什么?A. iOS 7B. iOS 8C. iOS 9D. iOS 10答案:A10. iOS应用程序的发布平台是什么?A. App StoreB. Google PlayC. Microsoft StoreD. Amazon Appstore答案:A。

iOS 笔试题【90%的选中率】

iOS  笔试题【90%的选中率】

8.ViewController 的 viewDidLoad,viewWillAppear,viewDidUnload,dealloc 分别是在什么时候调用,在自定义 ViewController 的时候这几个函数里面应该做什么工作?
9.简述 objective-c 内存管理的实现机制,并简述什么时候由你负责释放对象,什么时候不由 你释放 10.类的定义及声明文件以什么为后缀名? 11.怎样自动生成属性的获取方法和设置方法 12.声明一个静态方法和一个实例方法 13.写一个发送同步 http 请求,并获得返回结果的方法 14.怎样启动一个新线程,子线程怎样刷新主 UI 15.什么是 MVC,你工作时怎样运用它
NSString *documentsDirectory = [paths objectAtIndex:];
// 创建文件系统管理器
NSFileManager *fileManager = [[NSFileManager alloc] init];
// 判断 userData 目录是否存在
if(![fileManager
malloc (LEN_NODE);
void fun( NODE *p ){NODE *pCur, //curten node of old
list*pNewCur; //curten node of new list pCur = pHead->pNext;pHead->pNext = NULL;
1,表示变量是静态存储变量
表示变量存放在静态存储区. 2,表示该变量是内部连接 (这种情况是指该变量不在任何{}之内,就象全局变量那样,这时候加上 static) ,也就是说在其它的.cpp 文件中,该变量是不可见的(你不能用).

A-IOS工程师面试笔试题

A-IOS工程师面试笔试题

A-IOS工程师面试笔试题请仔细填写,祝您面试顺利!您的姓名: [填空题] *_________________________________1.下面的http状态码中哪一个是状态码是标注请求不正确地: [单选题] *A.302 是请求链接错误或者找不到服务器。

(正确答案)B.500以上是服务器错误。

C.200以上是正确。

D.100以上是请求接受成功。

2、使用imageNamed方法创建UIImage对象时,与普通的init方法有什么区别?[单选题] *A. 没有区别,只是为了方便B. imageNamed方法只是创建了一个指针,没有分配其他内存C. imageNamed方法将图片加载到内存中后不再释放(正确答案)D. imageNamed方法将使用完图片后立即释放3、判断是否为iPad设备语句是? [单选题] *A.if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {...}B.if ([[UIDevice currentDevice] userInterfaceIdiom] != UIUserInterfaceIdiomPhone) {...}C.if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {…}(正确答案)4、使用Xcode创建工程时,支持同时创建的版本管理库是 [单选题] *A. SubversionB. MercurialC. Git(正确答案)D. Concurrent Versions System5、添加子视图的方法中,是下列哪个面向对象特性的体现? [单选题] *A. 封装B. 继承C. 多态(正确答案)D. 协议6、以下是定义cell重用标识符的语句:static NSString * const reuseIdentifier = @"Cell"; 关于以上代码说法正确的是? [单选题] *A. static是为了修饰变量是全局区域的B. static是为了修饰变量是可以被其它类引用为全局变量的C. const是为了修饰 reuseIdentifier指针本身不可以改变(正确答案)D. const是为了修饰 reuseIdentifier指针指向的内容不可以改变7、下列哪项不属于数据持久化? [单选题] *A. 属性列表(正确答案)B. Core DataC. NSUserDefaultsD. 归档和反归档8、下面哪个类可以创建可变对象 [单选题] *A.NSStringB. NSArrayC. NSMutableDictionary(正确答案)D.NSSet9、使用protocol时,声明一组可选择实现与否的函数,需要在声明的前一行加上: [单选题] *A. @requiredB. @optional(正确答案)C. @interfaceD. @protocol10、下面关于#import和#include的描述正确的是 [单选题] *A. #import 是 #include 的替代指令,防止重复引用(正确答案)B. #import 和 #include 不可以混合使用C. #import 只用于引用 Objective-C的文件, #include 只用于引用C和C++的文件D. #import 和 #include 的使用效果完全相同11、下面那个方法可以比较两个NSString *str1, *str2 的异同 [单选题] *A. if(str1 = str2) xxx ;B. if([str1 isEqualToString:str2]) xxx ;(正确答案)C. if(str1 && str2) xxx ;D. if([str1 length] == [str2 length]) xxx;12、下面关于线程管理错误的是 [单选题] *A. GCD所用的开销要比NSThread大B. 可以在子线程中修改UI元素(正确答案)C. NSOperationQueue是比NSthread更高层的封装D. GCD可以根据不同优先级分配线程13、UIViewController在显示过程中,各个方法的调用顺序是 [单选题] *A. init -> viewDidLoad -> viewDidAppear -> viewDidUnload(正确答案)B. init -> viewDidAppear -> viewDidLoad -> viewDidUnloadC. init -> viewDidLoad -> viewDidUnload -> viewDidAppearD. init -> viewDidAppear -> viewDidUnload -> viewDidLoad14、一个类的delegate(代理)的作用不正确的是 [单选题] *A. delegate中的函数在其他类中实现B. 主要用于不同类型的对象之间一对一传递消息C. 没有指派则不会触发D. 可以一个对象的delegate指派给多个其他类型的对象(正确答案)15、什么是key window? [单选题] *A. App中唯一的那个UIWindow对象B. 可以指定一个key的UIWindowC. 可接收到键盘输入等事件的UIWindow(正确答案)D. 不可以隐藏的那个UIWindow对象16.下列技术不属于多线程的是 [单选题] *A Block(正确答案)B NSThreadC NSOperationD GCD17. 堆和栈的区别正确的是 [单选题] *A 对于栈来讲,我们需要手工控制,容易产生memory leak。

IOS软件工程师笔考试试题(全选择题)【0-1年经验】

IOS软件工程师笔考试试题(全选择题)【0-1年经验】

单选题(共25题)1.OC中包含一个自定义的头文件应该使用:A.#include ""B.#include<>C.#import ""D.#import<>2.必须实现的协议方法使用:关键字声明.A.@propertyB.@interfaceC.@requiredD.@protocol3.NSArray *array = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"2", nil]; NSMutableSet *set = [[NSMutableSet alloc]init];for(NSString *str in array){[set addObject:str];}NSLog(@"%lu",[set count]);[set release];控制台打印的结果是:A.4B.5C.6D.74.声明一个方法:提供Student对象数组按照学号升序排列的判断条件:A.-(NSComparisonResult)compareWithNumberForAscendSort:(Student*)otherStudentB.-(NSInteger)compareWithNumberForAscendSort:(Student*)otherStudentC.- (BOOL))compareWithNumberForAscendSort:(Student*)otherStudentD.+(int)compareWithNumberForAscendSort:(Student5.OC语言中类的实例变量如果只可以被本类和其子类访问,需要下列哪个修饰符:A.@publicB.@privateC.@protectedD.@friendly6.关于集合描述不正确的是:A.所有的集合都可以添加元素。

IOS笔试题

IOS笔试题

IOS笔试题卷一:技术题部分一、不定项选择题:基础理论知识,(10题某4分,合计40分)1、以下线性表中能使用二分查找的有()A.链接方式存储,元素无序B.链接方式存储,元素有序C.顺序方式存储,元素无序D.顺序方式存储,元素有序2、贪婪法是一种()的算法。

A.不求最优,只求满意B.只求最优C.求取全部可行解D.求取全部最优解3、下列是散列(哈希)算法的有()A.MD5B.DESC.SHA-1D.RSAE.RC44、下列四个不同数制表示的数中,数值最大的是()A.二进制数01111011B.八进制数175C.十进制数123D.十六进制数7B5、0某12345678在采用BigEndian字节序时在内存中的排列顺序是(),在采用LittleEndian字节序时在内存中的排列顺序是()A.12345678B.34127856C.78563412D.567812346、在提供虚拟存储的系统中,用户的逻辑地址空间主要受()的限制。

A.内存空闲块的大小B.外存的大小C.计算机编址范围D.页表大小7、虚存页面调度算法有多种,()调度算法不是页面调度算法。

A.后进先出B.先进先出C.最近最少使用D.随机选择8、在LINU某某个目录下执行命令l-l后,得到关于某个文件(假设文件名为a)权限的字符串为“-rw某r-某r--”,则与此用户在同一组的用户对该文件a所拥有的操作权限有()A.读B.写C.执行D.没有任何操作权限9、当出现()情况时,系统可能产生死锁。

A.进程释放资源B.一个进程进入死循环C.多个进程竞争,资源出现了循环等待D.多个进程竞争共享型设备10、FTP默认的数据端口号是(),HTTP默认的端口号是()A.20B.21C.22D.23E.25F.80G.1024H.8080二、不定项选择题:语言知识。

(5题某4分,合计20分)请注意:C语言类和JAVA语言类选做其中一类即可C语言部分1、有变量charbuf[]=”SH_600570_”;想把其内容修改为”SH__600570”,下列哪些语句是正确的()A.trcpy(buf+3,buf+2);B.trncpy(buf+3,buf+2,7);C.memcpy(buf+3,buf+2,7);D.memmove(buf+3,buf+2,7);2、有变量truct{chartype;intnum;charname[10];}rec;char是1字节,int是4字节,若按4字节对齐,那么izeof(rec)等于()A.15B.16C.18D.203、int是4字节,函数voidfoo(){unignedinta=4;intb=-5;intc=-1;(a+b>4)(c=0):(c=1);printf(\}4294967295,0的输出是()A.-1,0B.-1,1C.4294967295,0D.4294967295,14、下列关于类的继承描述中,错误的有()A.派生类可以访问基类的所有数据成员,调用基类的所有成员函数B.派生类继承了基类的全部属性C.可以在派生类中把基类的虚函数重写(override)为非虚函数D.一个基类可以有多个派生类,一个派生类可以有多个基类5、用gcc/v在link时报告未定义符号/无法解析外部符号,可能的原因有()A.源代码语法错误B.链接参数缺少库文件C.链接参数缺少obj文件D.变量声明了但没有定义JAVA语言部分1、定义一个类名为\的类,并且该类可被一个工程中的所有类访问,那么该类的正确声明应为()A.privateclaMyClae某tendObjectB.claMyClae某tendObjectC.publicclaMyClaD.publicclaMyClae某tendObject2、在Java中,当在类中定义两个或更多方法,它们有相同的名称而参数项不同时,这称为()A.方法重写B.多态性C.构造方法D.方法重载3、以下说法正确的是()A.一个源程序文件中,能有多于一个的Public类B.类的构造方法名必须和类名相同C.构造函数可以重载D.类的私有属性和私有方法能被其子类直接访问4、方法代码如下,其返回值是()publicintcount(){try{return5/0;}catch(E某ceptione){return2某3;}finally{return3;}}A.6B.3C.编译失败D.以上都不对5、属于java.ql包中接口的有()A.ReultSetB.ConnectionC.PreparedStatementD.Seion三、数据库(5题某3分,合计15分)有一个银行客户资金数据库,包括客户信息、资金流水,表结构结构如下:客户信息表Cutomer,客户号为主键资金流水Current,每发生一次业务(资金存取),就记录一条记录注:业务日期2022年1月10日用字符串“20220110”表示写出完成下列要求的SQL语句:1)找出资金余额大于1000万的客户,并按资金余额排序从大到小排序2)找出2022年没有发生任何业务的客户号、客户姓名3)对于业务类型为支取的,把发生金额改成用负数表示4)找出平均发生金额大于等于1000元的客户号5)资金流水表中建立客户号的索引四、编程题(1题某15分,合计15分。

iOS面试+笔试题

iOS面试+笔试题

iOS面试+笔试题1.#import和#include的区别 @class?@class一般用于头文件中需要声明该类的某个实例变量的时候用到,在m文件中还是需要使用#import而#import比起#include的好处就是不会引起交叉编译2. readwrite,readonly,assign,retain,copy,nonatomic 属性的作用@property是一个属性访问声明,扩号内支持以下几个属性:1,getter=getName,setter=setName,设置setter与 getter 的方法名2,readwrite,readonly,设置可供访问级别2,assign,setter方法直接赋值,不进行任何retain操作,为了解决原类型与环循引用问题3,retain,setter方法对参数进行release旧值再retain新值,所有实现都是这个顺序(CC上有相关资料)4,copy,setter方法进行Copy操作,与retain处理流程一样,先旧值release,再Copy出新的对象,retainCount为1。

这是为了减少对上下文的依赖而引入的机制。

5,nonatomic,非原子性访问,不加同步,多线程并发访问会提高性能。

注意,如果不加此属性,则默认是两个访问方法都为原子型事务访问。

锁被加到所属对象实例级(我是这么理解的…)。

3.在一个对象的方法里面:= “object”;和name =”object” 有什么不同吗?答: =”object”:会调用对象的setName()方法;name = “object”:会直接把object赋值给当前对象的name 属性。

4.请简述= nil的机制,以及与[namerelease]的区别? =nil; //使用nil参数调用setName:方法[name release]生成的访问器将自动释放以前的name对象5.请简要说明viewDidLoad和viewDidUnload何时调用答:viewDidLoad在view从nib文件初始化时调用,loadView在controller的view为nil时调用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
11.[aryremoveAllObjects];
12.NSLog(@"%@%d",str,[str retainCount]);
13.=======================================================
str的retainCount创建+1,retain+1,加入数组自动+1
04.[strretain];
05.[aryaddObject:str];
06.NSLog(@"%@%d",str,[str retainCount]);
07.[strretain];
08.[strrelease];
09.[strrelease];
10.NSLog(@"%@%d",str,[str retainCount]);

[cpp] view plaincopy
01.=======================================================
02.NSMutableArray* ary = [[NSMutableArray array] retain];
03.NSString *str = [NSString stringWithFormat:@"test"];
10. [name release];
11. name = t;
12.}
5.对于语句NSString*obj = [[NSData alloc] init]; obj在编译时和运行时分别时什么类型的对象?
编译时是NSString的类型;运行时是NSData类型的对象
9.内存管理的几条原则时什么?按照默认法则.那些关键字生成的对象
需要手动释放?在和property结合的时候怎样有效的避免内存泄露?
谁申请,谁释放
遵循Cocoa Touch的使用原则;
内存管理主要要避免“过早释放”和“内存泄漏”,对于“过早释放”需要注意@property设置特性时,一定要用对特性关键字,对于“内存泄漏”,一定要申请了要负责释放,要细心。
4.写一个setter方法用于完成@property (nonatomic,retain)NSString *name,写一个setter方法用于完成@property(nonatomic,copy)NSString *name
[cpp] view plaincopy
01.- (void) setName:(NSString*) str
Object-c的类不可以多重继承;可以实现多个接口,通过实现多个接口可以完成C++的多重继承;Category是类别,一般情况用分类好,用Category去重写类的方法,仅对本Category有效,不会影响到其他类与原有类的关系。
2.#import 跟#include 又什么区别,@class呢, #import<> 跟 #import”"又什么区别?
3
retain+1,release-1,release-1
2
数组删除所有对象,所有数组内的对象自动-1
1
12. Object C中创建线程的方法是什么?如果在主线程中执行代码,方法是什么?如果想延时执行代码、方法又是什么?
线程创建有三种方法:使用NSThread创建、使用GCD的dispatch、使用子类化的NSOperation,然后将其加入NSOperationQueue;在主线程执行代码,方法是performSelectorOnMainThread,如果想延时执行代码可以用performSelector:onThread:withObject:waitUntilDone:
13.描述一下iOS SDK中如何实现MVC的开发模式
MVC是模型、试图、控制开发模式,对于iOS SDK,所有的View都是视图层的,它应该独立于模型层,由视图控制层来控制。所有的用户数据都是模型层,它应该独立于视图。所有的ViewController都是控制层,由它负责控制视图,访问模型数据。
随着iOS平台开发的职位的增加,笔试、面试也越来越有“套路”,这里我总结了一些面试题,多数是Objective-C的基础知识,适合于面试新人,答案是我自己答的,不准确的地方,欢迎指出。
1. Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么?
#import是Objective-C导入头文件的关键字,#include是C/C++导入头文件的关键字,使用#import头文件会自动只导入一次,不会重复导入,相当于#include和#pragma once;@class告诉编译器某个类的声明,当执行时,才去查看类的实现文件,可以解决头文件的相互包含;#import<>用来包含系统的头文件,#import””用来包含用户头文件。
7.id 声明的对象有什么特性?
Id 声明的对象具有运行时的特性,即可以指向任意类型的objcetive-c的对象;
8.Objective-C如何对内存管理的,说说你的看法和解决方法?
Objective-C的内存管理主要有三种方式ARC(自动内存计数)、手动内存计数、内存池。
6.常见的object-c的数据类型有那些, 和C的基本数据类型有什么区别?如:NSInteger和int
object-c的数据类型有NSString,NSNumber,NSArray,NSMutableArray,NSData等等,这些都是class,创建后便是对象,而C语言的基本数据类型int,只是一定字节的内存空间,用于存放数值;而object-c的NSNumber包含有父类NSObject的方法和NSNumber自己的方法,可以完成复杂的操作。
3. 属性readwrite,readonly,assign,retain,copy,nonatomic 各是什么作用,在那种情况下用?
readwrite 是可读可写特性;需要生成getter方法和setter方法时
readonly 是只读特性 只会生成getter方法 不会生成setter方法 ;不希望属性在类外改变
02.{
03. [str retain];
04. [name release];
05. name = str;
06.}
07.- (void)setName:(NSString *)str
08.{
09. id t = [str copy];
关键字alloc 或new 生成的对象需要手动释放;
设置正确的property属性,对于retain需要在合适的地方释放,
10.如何对iOS设备进行性能测试?
Profile-> Instruments ->Time Profiler
11.看下面的程序,第一个NSLog会输出什么?这时str的retainCount是多少?第二个和第三个呢? 为什么?
assign 是赋值特性,setter方法将传入参数赋值给实例变量;仅设置变量时;
retain 表示持有特性,setter方法将传入参数先保留,再赋值,传入参数的retaincount会+1;
copy 表示赋值特性,setter方法将传入对象复制一份;需要完全一份新的变量时。
nonatomic 非原子操作,决定编译器生成的setter getter是否是原子操作,atomic表示多线程安全,一般使用nonatomic
相关文档
最新文档