




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基础题目6. 关键字con st是什么含意?分别解释下列语句中const的作用?const int a;int const a;const int *a;int * const a;int const * a const;(1)欲阻止一个 变量被改变,可以使用const关键字。在定义该 const变量时,通常需要 对它进行初始化,因 为以后就没有机会再去 改变它了;(2)对指针来说,可以指定指 针本身为const,也可以指定指 针所指 的数据为const,或二者同 时指定为const ;(3) 在一个函数声明中,const可以修饰形参,表明它是一个 输入参 数,在函数内部不能改变其值;(4)对
2、于类的成员函数,若指定其 为const类型,则表明其是一个 常函数,不能修改类的成员变量;前两个的作用是一 样,a是一个常整型数。第三个意味着a是一个指向常整型数的指 针(也就是,整型数是不可修改的,但指针可以)。第四个意思a是一个指向整型数的常指 针(也就是说,指针指向的整 型数是可以修改的,但指 针是不可修改的)。最后一个意味着a是一个指向常整型数的常指 针(也就是说,指针指向的整型数是不可修改 的,同时指针也是不可修改的)。如果 应试者能正确回答 这些问题, 那么他就给我留下了一个好印象。block 与 delegate 的区别 ?delegate运行成本低。block成本很高的。而且
3、delegate是经典设计 模式也就是大部分的语言都可以实现的模式,相对block出现比较早。block出栈需要将使用的数据从栈内存拷贝到堆内存,当然对象的话 就是加计数,使用完或者block置nil后才消除。delegate只是保存了一个对象指针,直接回调,没有额外消耗。相对C的函数指针,只多做了一个查表动作1说所你了解以及日常使用的版本控制系统,以及它们的优缺点SVN优点:除包括了 CVS的大多数特点外,还有一些如:文件目录可 以方便的改名、基于数据库的版本库、操作速度提升、权限管理更完 善等功能非常好用。SVN缺点:代码库不是分布式,而是集中在一个地方,所以导致跨国 访问的时候速度很慢,
4、远程发开非常不利。其次由于代码库只有一 份,特别是元数据都存在服务器上,所以当服务器崩溃的时候损失严 重。GIT优点:是免费、开源、它采用了分布式版本库的方式,不必服务 器端软件支持,使源代码的发布和交流极其方便。每一个GIT克隆都是一个完整的文件库,含有全部历史记录和修订追踪能力。其最大特 色就是 分支”及 合并”操作快速、简便。支持离线工作,GIT是整个项目范围的原子提交,而且GIT中的每个工作树都包含一个具有完整项目历史的仓库。GIT缺点:对windows以及中文的支持不是很好。1、Objective-C的类可以多重继承么?可以采用多个协 议么?不可以多重继承,可以采用多个协议。2、#i
5、mport 和#include 的区别是什么?# import 跟 #import有什么区别?#import能避免头文件被重复包含的问题:1、一般来说,导入 objective c的头文件时用#import,包含c/c+头文 件时用#include。使用include要注意重复引用的问题:class A, class B都引用了 class C class D若引用 class A与 class B就会 报重复引用的错误。2、#import确定一个文件只能被导入一次,这使你在递 归包含中不会出现问题。所以,#import比起#include的好处就是它避免了重复引用的问题。 所以在0C中我们基
6、本用的都是import。# import包含iOS框架类库里的类,#import包含项目里自定义 的类。3、Category是什么?扩展一个类的方式用继承好还是 类目好?为什么?Category是类目。用类目好,因为继承要满足a is a b的关系,而类目只需要满足a has a b的关系,局限性更小,你不用定义子类就能扩展一个类的功能,还能将类的定义分开放在不同的源文 件里,用Category去重写类的方法,仅对本 Category有效,不会影响 到其他类与原有类的关系。4、延展是什么?作用是什么?延展(extension):在自己类的实现文件中添加类目来 声明私有方法。5、类实例(成员)变
7、量的protected ,private,public 声明各有什么含义?protected :受保护的,该实例变量只能在该类和其子类内访问,其 他类内不能访问。private :私有的,该实例变量只能在该类内访问,其他类内不能访问。public :共有的,该实例变量谁都可以访问。6、id声明的对象有什么特性??没有*号?动态数据类型?可以指向任何类的对象(设置是nil),而不关心其具体类型?在运行时检查其具体类型?可以对其发送任何(存在的)消息简单概括:任意对象的指针7、 委托是什么?委托和委托方双方的property声明用 什么属性?为什么?委托:一个对象保存另外一个对象的引用,被引用的对
8、象实现了事先 确定的协议,该协议用于将引用对象中的变化通知给被引用对象。委托和委托方双方的 property声明属性都是assign而不是retain为了避免循环引用造成的内存泄露。&浅拷贝和深拷贝区别是什么?浅层复制:只复制指向对象的指针,而不复制引用对象本身。深层复制:复制引用对象本身。9、内存管理的几条原则是什么?按照默认法则,哪些 关键字生成的对象需要手动释放?哪些情况下不需要手动释放,会直接进入自动释 放池??当使用new、alloc或copy方法创建一个对象时,该对象引用计数器为1。如 果不需要使用该对象,可以向其发送release或autorelease消息,在其使用完毕时被销毁
9、。?如果通过其他方法获取一个对象,则可以假设这个对象引用计数为1,并且被设置为 autorelease,不需要对该对象进行清理,如 果确实需要retain这个对象,则需要使用完毕后release。?如果retain 了某个对象,需要 release或autorelease该对象,保持retain方法和release方法使用次数相等。使用new、alloc、copy关键字生成的对象和 retain 了的对象需要手动 释放。设置为autorelease的对象不需要手动释放,会直接进入自动 释放池。简单回答:谁申请谁释放10、单例的概念,请写出单例,系统提供了我们那些单 例?Singleton (单
10、例模式),也叫 单子模式,是一种常用的 软件设 计模式。在 应用这个模式时,单例对象的类必须保证只有一个实例存 在。+ (instantClass *)sharedClient static instantClass *_sharedClient = nil;static dispatch_once_t onceToken;dispatch_once(&o nceToken, A_sharedClient = instantClass alloc init;);系统自带的单例UlApplication NSNotificationCenterNSFileManager NSUserDefaul
11、tsNSURLCacheNSHTTPCookieStorage11、class的作用是什么?在头文件中,一般只需要知道被引用的类的名称就可 以了。不需要知道其内部的实体变量和方法,所以在头文件中一般使 用class来声明这个名称是类的名称。而在实现类里面,因为会用到 这个引用类的内部的实体变量和方法,所以需要使用#import来包含这个被引用类的头文件。?class的作用是告诉编译器,有这么一个类,用吧,没有问题?class还可以解决循环依赖的问题,例如A.h导入了 B.h,而B.h导入了 A.h,每一个头文件的编译都要让对象先编译成功才行?使用class就可以避免这种情况的发生12、KVC是
12、什么?KV0是什么?有什么特点??KVC是键值编码,特点是通过指定表示要访问的属性名字的字符串标识符,可以进行类的属性读取和设置?KVO是键值观察,特点是利用键值观察可以注册成为一个对象的观察者,在该对象的某个属性变化时收到通知实现方法:watchPersonForChangeOfAddress:实现观察 observeValueForKeyPath:ofObject:change:context:在被观察的 key path的值变化时调用。dealloc停止观察13、MVC是什么?有什么特性?- MVC是一种设计模式,由模型、视图、控制器3部分组成。- 模型:保存应用程序数据的类,处理业务逻
13、辑的类- 视图:窗口,控件和其他用户能看到的并且能交互的元素- 控制器:将模型和试图绑定在一起,确定如何处理用户输入 的类14、 定义属性时,什么情况使用copy、assignretain ?使用assign:对基础数据类型(NSInteger, CGFIoat)和C数据类型(int, float, double,char, 等等)使用copy :希望获得源对象的副本而不改变源对象内容时,对NSString使用retain :希望获得源对象的所有权时,对其他NSObject和其子类1. 属性 readwrite , readonly, assign, retain , copy, nonato
14、mic 各是 什么作用,在那种情况下用?assign 用于简单数据类型,如NSInteger,double,bool,retain 和 copy用于对象,readwrite是可读可写特性;需要生成getter方法和setter方法时readonly是只读特性只会生成getter方法不会生成setter方法;不希望属性在类外改变assign是赋值特性,setter方法将传入参数赋值给实例变量;仅设置 变量时;retain表示持有特性,setter方法将传入参数先保留,再赋 值,传入参数的 retaincount会+1;copy表示赋值特性,setter方法将传入对象复制一份;需要完全一份 新的变
15、量时。nonatomic非原子操作,决定编译器生成的settergetter是否是原子操作,atomic表示多线程安全,一般使用nonatomic2.id声明的对象有什么特性?Id声明的对象具有运行时的特性,即可以指向任意类型的objcetive-c的对象;3.0bjective-C如何对内存管理的,说说你的看法和解决方 法?Objective-C的内存管理主要有三种方式ARC(自动内存计数)、手动内存计数、内存池。4.内存管理的几条原则时什么?谁申请,谁释放遵循Cocoa Touch的使用原则;内存管理主要要避免“过早释放”和“内存泄漏”,对于“过早释 放”需要注意 property设置特性
16、时,一定要用对特性关键字,对于“内存泄漏”,一定要申请了要负责释放,要细心。5.那些关键字生成的对象需要手动释放?关键字alloc或new生成的对象需要手动释放6在和property结合的时候怎样有效的避免内存泄露? 设置正确的property属性,对于retain需要在合适的地方释放 8.0bject c的类可以多重继承么?可以实现多个接口 么?Object-c的类不可以多重继承;可以实现多个接口,通过实现多个接 口可以完成C+的多重继承;9. Category是什么?重写一个类的方式用继承好还是分 类好?为什么?Category是类别,一般情况用分类好,用Category去重写类的方法,仅
17、对本Category有效,不会影响到其他类与原有类的关系。10. 描述一下iOS SDK中如何实现 MVC的开发模式MVC是模型、试图、控制开发模式,对于iOS SDK所有的View都是视图层的,它应该独立于模型层,由视图控制层来控制。所有的用 户数据都是模型层,它应该独立于视图。所有的ViewController都是控制层,由它负责控制视图,访问模型数据11. Object C中创建线程的方法是什么?如果在主线程 中执行代码,方法是什么?如果想延时执行代码、方法 又是什么?线程创建有三种方法:使用 NSThread创建、使用 GCD的dispatch、 使用子类化的 NSOperation,
18、然后将其加入NSOperationQueue;在主线 程执行代码,方法是 performSelectorOnMainThread,如果想延时执行 代码可以用 performSelector:onThread:withObject:waitUntilDone3.堆和栈的区别?管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制; 对于堆来说,释放工作由程序员控制,容易产生memory leak。申请大小:栈:栈是向低地址扩展的数据结构,是一块连续的内存的区 域,堆:是向高地址扩展的数据结构,是不连续的内存区域。分配方式:堆都是动态分配的,动态分配由alloca函数进行分配 栈的动态分配由编
19、译器进行释放,无需我们手工实现一简单来说:通俗的说,堆是全局变量(大概可以这么说),是由程序员释放,堆是动态分配的;栈是局部变量,是由系统释放。4.kvc和kvo的区别kvc:键值编码,是一种间接访问对象的属性,使用字符串来标示属 性kvo:键值观察机制,提供了观察某一属性变化的方法1. 线程和进程的区别?主要不同的是操作系统资源管理方式 线程是一个进程中不同的执行路径,线程有自己的堆、局部变量 进程有独立的地址空间,一个线程死掉,整个进程就会死掉1. #import 和#include 的区别,class代表什么?class 一般用于头文件中需要声明该类的某个实例变量的时候用到,在m文件中还
20、是需要使用 #import而#import比起#include的好处就是 不会引起重复包含1. 类别的作用?有时我们需要在一个已经定义好的类中增加一些方法,而不想去重写 该类。可以使用类别对该类扩充新的方法。注意:类别只能扩充方法,而不能扩充成员变量。2、委托是什么?委托的property声明用什么属性?为 什么?委托:一个对象保存另一个对象的引用,被引用的对象实现了事先确 定的协议,该协议用于将引用对象中的变化通知给被引用对象。委托和委托方双方的 property声明属性都是assign而不是retain为了避免循环引用造成的内存泄露循环引用的问题这样理解委托机制是一种设计模式。写一个委托的
21、in terface?protocol showNameDelegate -(void)showNameWithText;endinterface LoginClass : NSObjectproperty(nonatomic,assign)iddelegate;end简述响应链答案:事件响应链。包括点击事件,画面刷新事件等。在视图栈内从 上至下,或者从下之上传播。可以说点事件的分发,传递以及处理。具体可以去看下touch事件这块。因为问的太抽象化了UIViewController 的生命周期?当一个视图控制器被创建,并在屏幕上显示的时候。代码的执行顺序1、 alloc创建对象,分配空 间2、
22、init (initWithNibName) 初始化对象,初始化数据3、loadView从nib载入视图,通常这一步不需要去干涉。除非你没有使用xib文件创建视图4、 viewDidLoad载入完成,可以进行自定义数 据以及动态创建其他控件5、 viewWillAppear视图将出现在屏幕之前,马上这个 视图就会被展现在屏幕上了6、 viewDidAppear视图已在屏幕上渲染完成当一个视图被移除屏幕并且销毁的时候的执行顺序,这个顺2. 你通常以怎样的数据格式跟服务端做数据交换JSON XML,Sbjson/touchjson/ 开源库Gdata,http4. 你了解的第三方库,常用哪些Fra
23、meworkASIHTTPRrequest TXML、TouchJSON MBProgressHUD、EGOTableViewPullRefresh FMDB、ZBarSDK MinZIP5. 你了解的设计模式Classs Method、Abstract Factory、Singleton、Observer、Prototype、MVC iOS SDK:1.如何实现Push通知的机制(大致写下)1用网站把要发送的消息、目的iPhone的标识打包,发给 APNS2APNS在自身的已注册 Push服务的iPhone列表中,查找有相应标识的iPhone,并把消息发到iPhone。3iPhone把发来的
24、消息传递给相应的应用程序,并且按照设定弹出Push通知2. Key-Value Codi ng是什么?KVC是通过字符串标识符间接访问对象属性和关系的机制。5.说说 Auto Release Pool 内存管理模式,GC, retain countauto release pool内存自动释放池。放到池中的会在失效后自动释放 内存管理模式:可以手动申请释放,使用auto release pool,使用ARCGC: Gabbage Collector 垃圾回收iOS有没有GC Gabage Collector垃圾回收机制mac os x 有 ios 没有retain count :内存计数器8.
25、 如何实现滚动到底部自动加载,以及显示一个loadi ng cell用 scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate方法计算是否触底,调用异步刷新事 件9. 如何实现从外部打开程序在项目的Info.plist文件中 添加一个 URL types节点就可以了UlApplication sharedApplication openURL:NSURLURLWithString:;UIApplication sharedApplication
26、openURL:NSURLURLWithString:tel:UIApplication sharedApplication openURL:NSURLURLWithString:sms:10. 如何将图片添加到照片库UIImage *img = UIImage imageWithNamed: ” 120png ”;UllmageWriteToSavedPhotosAlbum (img, nil, nil, nil);11. copy 与 retain 的区别copy复制一个对象retain会让计数器+12 Protocol与performS
27、elector:的相同与区别,哪个更好(基础参数类型传递)Protocol是协议,同时也走了NSObject的协议 在NSObject协议中定义了很多基本的协议函数,其中包括performSelector。在项目什么时候选择使用GCD,什么时候选择 NSOperation ?异步请求和同步请求的区别?串行队列 和并行队列的区别?项目中使用NSOperation的优点是NSOperation是对线程的高度抽象,在项目 中使用它,会使项目的程序结构更好,子类化 NSOperation的设计思路,是具 有面向对象的优点(复用、圭寸装),使得实现是多线程支持,而接口简单,建 议在复杂项目中使用。项目中
28、使用GCD的优点是GCD本身非常简单、易用,对于不复杂的多线程 操作,会节省代码量,而Block参数的使用,会是代码更为易读,建议在简单 项目中使用。进程同步:一个操作没有完成则不返回,必须一件一件的做事情,一件事情返 回了才能做下一件事情。进程异步:多个操作交替进行,操作的返回时机不确定。串行队列的异步任务:使用一个子线程依次执行。并行队列的异步任务:使用多个子线程无序执行,一般任务较少时几个任务就 开几个线程,较多时则开部分线程。简单说说TCP/UDP区别?TCP-传输控制协议,提供的是面向连接、可靠的字节流服务。当客 户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能
29、传输数据。TCP提供超时重发,丢弃重复数据,检验数据, 流量控制等功能,保证数据能从一端传到另一端。UDP-用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传 输速度很快TCP ( Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连 接。一个TCP连接必须要经过三次对话”才能建立起来,我们来看看 这三次对话的简单过程:1
30、主机A向主机B发出连接请求数据包;2主 机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发 送,一个在接收,协调工作)的数据包;3.主机A再发出一个数据包确认主机B的要求同步:我现在就发,你接着吧!”,这是第三次对话。三次 对话”的目的是使数据包的发送和接收同步,经过三次对话”之后,主机A才向主机B正式发送数据。UDP( User Data Protocol ,用户数据报协议)是与 TCP相对应的协 议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数 据包发送过去!UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。tcp协议和udp协议的差别是否连接 面向连接 面
31、向非连接传输可靠性可靠不可靠应用场合传输大量数据少量数据速度慢快加分题目:谈谈你对CoreData、FMDB SQLite的理解?你作 为开发你该怎么选择?(自由发挥)Core Data面向对象1、Core Data 基于 model view controller (mvc ) 模式下,为 创建分解的cocoa应用程序提供了一个灵活和强大的数据模型框架2、 Core Data可以是你以图形界面的方式快速的定义app的数据模 型,同时在你的代码中容易获取到它好处能够合理管理内存,避免使用sql的麻烦,高效构成(NSManagedObjectContext(被管理的数据上下文)/NSPersis
32、tentStoreCoordinator(持久化存储助理)/NSManagedObject(被管理的数据记录)/NSFetchRequest (获取数据的请求)/NSEntityDescription(实体结构)等)SQLite:数据查询:SQLite3_exec()函数执行sql语句,在没有返回值的情况 下(比如创建表格、插入记录、删除记录等操作中)很好用。也会用到 SQLite3_stat 结构、SQLite3_prepare_v2()函数、 sqlte3_step() 函数和 SQLite3_finalize() 函数。查询分三个阶段:准备阶段:SQLite3_stat、SQLite3_
33、prepare_v2()执行阶段:sqlte3_step()终止阶段:SQLite3_finalize()FMDB:FMDB框架其实只是一层很薄的封装,主要的类也就两个:FMDatabase 和FMResultSet。在使用 FMDB的时候还需要导入 libSQLite3.0.dylib 。FMDB同时兼容ARC和非ARC工程,会自动根据工程配置来调整相关 的内存管理代码。FMDB常用类:FMDatabase : 一个单一的SQLite数据库,用于执行 SQL语句。 FMResultSet :执行查询一个 FMDatabase 结果集,这个和 android 的 Cursor 类似。FMDat
34、abaseQueue:在多个线程来执行查询和更新时会使用这个类。说说你对NSthread、NSOperation、GCD三者的理解?1) NSThread优点:NSThread比其他两个轻量级缺点:需要自己管理线程的生命周期,线程同步。线程同步对数据的加锁会有 一定的系统开销2) Cocoa NSOperation优点:不需要关心线程管理,数据同步的事情,可以把精力放在自己需要执行的操作上。Cocoa operati on 相关的类是 NSOperati on, NSOperati on Queue.NSOperation是个抽象类,使用它必须用它的子类,可以实现它或者使用它定义 好的两个子类
35、:NSInvocationOperation 和 NSBlockOperation.创建NSOperation子类的对象,把对象添加到NSOperationQueue队列里执 行。3) GCD (全优点)Grand Central dispatch(GCD)是Apple开发的一个多核编程的解决方案。在 iOS4.0开始之后才能使用。GCD是一个替代NSThread,NSOperatio nQueue,NS In vocatio nOperation等技术的很高效强大的技术。NSOperation 和 GCD的区别?1、GCD是底层的C语言构成的API,而NSOperationQueue及相关对
36、象是Objc的对象。在GCD中,在队列中执行的是由block构成的任务,这是一个轻量级的数据结构;而Operation作为一个对象,为我们提供了更多的选择;2、在NSOperationQueue中,我们可以随时取消已经设定要准备执行的任务(当然,已经开始的任务就无法阻止了),而GCD没法停止已经加入queue的block(其实是有的,但需要许多复杂的代码);3、NSOperation能够方便地设置依赖关系,我们可以让一个Operation依赖于另一个 Operation,这样的话尽管两个 Operation处 于同一个并行队列中,但前者会直到后者执行完毕后再执行;我们能将 KVO应用在NSOperation中,可以监听一个 Operation是否 完成或取消,这样子能比 GCD更加有效地掌控我们执行的后台任 务;4、在NSOperation中,我们能够设置 NSOperation的priority优先级,能够使同一个并行队列中的任务区分先后地执行,而在GCD中,我们只能区分不同任务队列的优先级,如果要区分block任务的优先级,也需要大量的复杂代码;我们能够对NSOperation进行继承,在这之上添加成员变量与
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大学办学模式创新与改革策略探讨
- 2025至2030年中国网络营销市场分析及竞争策略研究报告
- 2025至2030年中国纯棉剪花布数据监测研究报告
- 2025至2030年中国红檀香地板皮市场调查研究报告
- 2025至2030年中国红外测距仪市场分析及竞争策略研究报告001
- 2025至2030年中国粘尘地板垫行业发展研究报告
- 2025至2030年中国粉必治行业发展研究报告
- 2025至2030年中国管道防腐胶粘带市场分析及竞争策略研究报告
- 2025至2030年中国移动供气源数据监测研究报告
- 2025至2030年中国硬质合金音响专用Ⅴ型刀市场分析及竞争策略研究报告001
- 供应室护理安全管理课件
- 汽车租赁服务投标方案
- 安全生产重大事故隐患排查报告表
- 物业服务费用收支情况明细表
- 梅克尔憩室护理查房课件
- 六年级数学下册《连等式》专项练习
- 办公室防火制度
- 无锡诺宇医药科技有限公司生产、研发及销售放射性药物项目环境影响报告
- 计算机视觉40例从入门到深度学习OpenCV Python
- 铁路基础知识考试题库500题(单选、多选、判断)
- 07FK02 防空地下室通风设备安装
评论
0/150
提交评论