[置顶] iOS开发经典笔试面试题汇总(持续更新中)

1.单例类NSNotificationCenter提供信息广播通知,它采用的是观察者模式的的通知机制(正确)

理解:NSNotificationCenter使用了KOV,即Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接收到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了。


2.判断:从通讯录数据库查询联系人数据,可通过ABAddressBookCopyArrayOfAllPeople和ABAddressBookCopyPeopleWithName函数来获得。

理解:从通讯录数据库查询联系人数据是无法使用SQL语句,只能通过ABAddressBookCopyArrayOfAllPeople、ABAddressBookCopyPeopleWithName来获得。ABAddressBookCopyArrayOfAllPeople函数是通过人名查询通讯录中的联系人,其中的name参数是查询的前缀关键字。


3.NSURLConnection类的同步请求方法是?(A)

A.+sendSynchronousRequest:returningResponse:error:

B.-initWithRequest:delegate:

C.-initWithRequest:delegate:startImmediately:

理解:B和C都是异步方法,需要设置delegate属性。


4.genstrings命名的基于语法:genstrings[-a] [-q] [-o]sourcefile (正确)

理解:下面是genstrings命名的基本语法:
genstrings [-a] [-q] [-o <outputDir>] sourcefile

其中参数:

-a:在存在的文件后面追加内容;

-q:关闭多个键值对的警告;

-o:指定输出目录

因此如果我们想输出到en.lproj目录,则代码如下:

genstrings -o en.lproj *.m


5.树形结构导航模式是在内容上有层次的,从上到下或者分类包含等关系。例如黑龙江包含哈尔滨的关系,哈尔滨又包含了道里区等。(正确)

理解:树形导航就是指的是从属关系。


6.NSXML框架中核心的是NSXMLParser和它的委托协议NSXMLParserDelegate,NSXMLParserDelegate常用的方法有哪些?(ABCDE)

A. parserDidStartDocument

B. parser:foundCharacters

C. parser:didStartElement:namespaceURI:qualifiedName:attributes

D. parser:didEndElement:namespaceURI:qulificedName

E. parserDidEndDocument


7.NSXMLParser构造方法有哪些?(ABC)

A. initWithContentsOfURL

B. initWithData

C. initWithStream

D. initWithContentsOfFile


8.判断是否为iPad设备语句是?(C)

A. if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){....}

B. if([[UIDevice currentDevice] userInterfaceIdiom] != UIUserInterfaceIdiomPhone){....}

C.  if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad){....}


9.NSAssert类似的宏有哪些?(ABCD)

A. NSAssert1

B. NSAssert2

C.NSAssert3

D.NSAssert4

理解:查阅官方文档:NSAssert1,NSAssert2,NSAssert3,NSAssert4,NSAssert5


10.Objective-C有哪几种内存管理方法?(ABCD)、

A. MRR(Manual Retain Release)

B. MRC(Manual Reference Counting )

C.ARC(Automatic Reference Counting)

D.GC(Garbage Collection)

理解:MRR是MRC的官方名字;

MRC是手动引用计数;

ARC是自动引用计数;

GC是垃圾回收(在开发OS X中使用);


11. AddressBook框架中常用类?(ABCD)

A. ABAddressBook;

B. ABPerson;

C. ABGroup;

D. ABRecord;


12. AddressBookUI框架中的视图控制器?(ABCD)

A. ABPeoplePickerNavigationController;

B. ABPersonViewController;

C. ABNewPersonViewController;

D.ABUnknownPersonViewController;


13.创建联系人使用的函数有哪些?(ABCD)

A. ABPersonCreate

B. ABRecordSetValue

C. ABMultiValueCreateMutable

D. ABAddressBookSave


14.修改联系人使用的函数有哪些?(CD)

A. ABPersonCreate

B. ABRecordSetValue

C. ABAddressBookGetPersonWithRecordID

D. ABAddressBookAddRecord


15.AddressBook高级API是在AddressBookUI框架中定义的,它为我们访问通讯录数据提供了UI界面。该框架提供了哪些试图控制器和委托协议?

A. ABPeoplePickerNavigationController

B. ABPersonViewController

C. ABUnknownPersonViewController

D. ABNewPersonViewController


16.iOS中持久化方式有哪些?(ABCD)

A. 属性列表文件

B. 对象归档

C. SQLite数据库

D. CoreData


17.NSURL的构造函数有?(CD)

A. + requestWithURL:

B  - initWithURL:

C + URLWithString:

D  - initWithString:


18.表视图的相关类有哪些?(AB)

A. UITableView

B. UITableViewController

C. UITableViewDelegate

D.UITableViewDataSource

理解:注意CD是委托和数据源。


19.下面属于表视图内置的扩展视图常量如下?(ABCD)

A. UITableViewCellAccessoryNone

B. UITableViewCellAccessoryDiscloureIndicator

C. UITableViewCellAccessoryDetailDisclosureButton

D.UITableViewCellAccessoryCheckmark


20.下面与导航相关的试图控制器有那哪些?(BC)

A. UIViewController

B. UINavigationController

C. UITableBarController

D. UITableViewController


21.delegate中的property使用以下哪个属性?(A)

A. assign

B. retain 

C. copy

D. strong

理解:assign防止循环引用;


22.关于Objective-C中属性的说明,错误的是(D)

A. readwrite是可读可写特性,需要生成getter方法和setter方法;

B. readonly是只读特性,只有getter方法,没有setter方法;

C.assign是赋值属性,setter方法将传入参数赋值给实例变量;

D.retain表示持有特性,copy属性表示拷贝属性,都会建立一个相同的对象;

理解:

copy是创建一个新对象。

retain是创建一个指针,引用对象计数+1.

copy属性表示两个对象内容相同,新的对象retain为1,与旧有对象的引用计数无关。旧有对象没有变化。copy减少对象对上下文的依赖。

retain属性表示两个对象地址相同(建立一个指针,指针拷贝),内容就是同一个内容,这个对象的retain+1。

也就是说,copy是内容拷贝,retain是内容拷贝。


23.下面对category类别描述不正确的是(B)

A.category可以添加新的方法;

B.category可以删除修改之前的方法;

C.将类的实现分散到多个不同文件或多个不同框架中;

D.创建对私有方法的前向引用;

理解:类别是一种为现有的类添加新方法的方式。利用Objective-C的动态运行时分配机制,Category提供了一种比继承更为简洁的方法来对class进行扩展,无需创建对象类的子类就能为现有的类添加新方法,可以为任何已经存在的class添加方法,包括那些没有源代码的类(比如某些框架类),但不能删除修改之前的方法。

类别主要有3个作用:

(1)可以将类的实现分散到多个不同文件或多个不同框架中,方便代码管理。也可以对框架提供类的扩展(没有源码,不能修改)。

(2)创建对私有方法的前向引用。如果其他类中的方法未实现,在你访问其他类的私有方法时编译器报错。这时使用类别,在类别中声明这些方法(不必提供方法实现),编译器就不会产生警告。

(3)向对象添加非正式协议:创建一个NSObject的类别成为“创建一个非正式协议”,因为可以作为任何类的委托对象使用。


24.NSRunLoop的以下描述错误的是(C)

A. RunLoop并不是由系统自动控制的;

B.有3类对象可以被run loop监控:sources,timer,observers

C.线程是默认启动run loop的;

D.NSTimer可手动添加到新建的NSRunLoop中。

理解:

A:Runloop的作用在于当有事情要做时它使当前的thread工作,没有事情做时又使thread休眠。Runloop并不是由系统自动控制的,尤其是对那些新建的次线程需要对其进行显示的控制。

B:有三类对象可以被run loop监控,source,timer,observers。

C:每一个线程都有自己的runloop,主线程是默认开启的,创建的子线程是要手动开启的,因为NSApplication 只启动main application thread.

D:NSTimer默认添加到当前NSRunLoop中,也可以手动指定添加到自己新建的NSRunLoop中。


25.(判断)平铺导航模式是在内容组织上没有层次关系,展示的内容都放置在一个主屏幕上,采用分屏或分页控制器进行导航,可以左右或者上下滑动屏幕查看内容。(正确)

理解:平铺导航模式是指内容间没有从属关系,主要涉及的控件UIPageControl和UIScrollView。


26. UIPopoverController控制器的常用方法和属性(ABCD)

A. presentPopoverFromBarButtonItem:permittedArrowDirections:animated: 呈现Popover视图方法;

B.dismissPopoverAnimated:关闭Popover视图方法;

C.popoverVisible,判断Popover视图是否可见;

D.popoverArrawDirection,判断Popover视图箭头的方向;

理解:貌似UIPopoverController在iOS9之后被Deprecated了。


27.模态视图专用属性有哪些?(ABCD)

A. UIModalPresentationFullScreen,全屏状态,是默认呈现样式,iPhone只能全屏呈现。

B.UIModalPresentationPageSheet,它的宽度是固定的768点,在iPad竖屏情况下则全屏显示。

C.UIModalPresentationFormSheet,它的是固定的540*620点,无论是横屏还是竖屏情况下呈现尺寸都不会变化。

D.UIModalPresentationCurrentContext,它与父视图控制器有相同的呈现方式。


28.iOS单元测试框架有哪些?(ABC)

A. OCUnit

B. GHUnit

C. OCMock

D. NSXML

理解:OCUnit和XCTest都是官方的测试框架,OCUnit过时已经被XCTest取代。

GHUnit和OCMock都是第三方的测试框架。


29.NSURLRequest的构造函数有(ABCD)

A. +requestWithURL:

B. -initWithURL;

C. requestWithURL:cachePolicy:timeoutInterval;

D.initWithURL:cachePolicy:timeoutInterval;


30.iOS 应用导航模式有哪些?(ABC)

A.平铺导航模式;

B. 标签导航模式;

C.树形结构导航模式;

D.模态视图


31.在UIViewController类中与模态视图相关方法有哪些?(AB)

A. presentViewController:animated:completion:

B, dismissViewControllerAnimated:complation:

C.addChildViewController:

D.removeFromParentViewController.


32.iOS 中导航设计模式有几种?(ABC)

A. 平铺视图;

B. 标签视图;

C.树形视图;

D.模态视图导航;

理解:

平铺导航:UITabBarController

标签导航:UINavigationController

树形导航:UIPageViewController


33.实现多线程都有哪些方法(BC)

A. 使用@synchronized(self)

B. 使用GCD

C. 使用NSOperationQueue

D.使用@thread


34.为什么说OC是runtime language?(ABD)

A. 将数据类型的确定由编译时,推迟到了运行时;

B.运行时机制使我们直到运行时才去决定一个对象的类别,以及调用该类别对象指定方法;

C.如果A继承了B,那么在编译时就已经生成了A的实例;

D.多态是指不同对象以自己的方式响应相同消息的能力;



github主页:https://github.com/chenyufeng1991  。欢迎大家访问!



































你可能感兴趣的:(面试题)