面试总结

面试题

技术

基础

  1. 为什么说Objective-C是一门动态的语言?

    Objective-C 运行时机制是在运行的时候才决定一个对象的类型,消息机制是在运行的时候通过发送消息来调用函数,也正因为运行时机制把编译时的工作转到运行时实现OC的动态特性。

  2. 讲一下MVC和MVVM,MVP?

    MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,Model 呈现数据,View 呈现用户界面,而 View Controller 调节它两者之间的交互。

    • 视图(View):构建UI的类;例如:按钮,标签,进度条等。
    • 模型(Model):视图类所需要的数据;例如:表格需要显示的文字。
    • 控制器(Controller):连接视图类和模型类,任务是使数据显示在屏幕上。

    MVVM全名是Model View View-Model,ViewModel将表示逻辑从 Controller 移出放到一个新的对象里,即 View Model。就是那些将 Model 数据转换为 View 可以呈现的东西的事情,例如将一个 NSDate 转换为一个格式化过的 NSString。

    MVP全名是Model-view-presenter,是使用者界面设计模式的一种。

    • Model 定义使用者界面所需要被显示的数据模型,一个模型包含着相关的业务逻辑。
    • View 视图为呈现使用者界面的终端,用以表现来自 Model 的数据,和使用者命令路由再经过 Presenter 对事件处理后的数据。
    • Presenter 包含着元件的事件处理,负责检索 Model 取得数据,和将取得的数据经过格式转换与 View 进行沟通。
    • MVP 设计模式通常会再加上 Controller 做为整体应用程序的后端程序工作。
  1. 为什么代理要用weak?代理的delegate和dataSource有什么区别?block和代理的区别?
  1. 属性的实质是什么?包括哪几个部分?属性默认的关键字都有哪些?@dynamic关键字和@synthesize关键字是用来做什么的?

    • @property 的本质是: @property = ivar + getter + setter;

    • 包括哪几个部分: iavr ; getter ; setter;``(实例变量 + 存取方法)

    • 属性默认的关键字都有哪些 atomic readwrite assign

    • @dynamic关键字和@synthesize关键字是用来做什么的?

      • 1)@property有两个对应的词,一个是@synthesize,一个是@dynamic。如果@synthesize和@dynamic都没写,那么默认的就是@syntheszie var = _var;
      • @synthesize的语义是如果你没有手动实现setter方法和getter方法,那么编译器会自动为你加上这两个方法。
      • @dynamic告诉编译器:属性的setter与getter方法由用户自己实现,不自动生成。
  2. 属性的默认关键字是什么?

    atomic readwrite assign

  3. *NSString为什么要用copy关键字,如果用strong会有什么问题?(注意:这里没有说用strong就一定不行。使用copy和strong是看情况而定的) *

    • 因为NString,NSArray,NSDictionary都有自己对应的子类:NSMutableString,NSMutableArray,NSMutableDictionary,而父类指针可以指向子类对象,使用copy可以让本对象不受外界(子对象)影响,无论给我传入的是一个可变对象还是一个不可变对象,都能保证自身持有的是一个不可变副本。
    • 使用strong时,如果这个属性指向一个可变对象,修改可变对象时,这个属性值也会被修改。
    • 引用借鉴:http://www.jianshu.com/p/1e1a6f9c26f8
  1. 如何令自己所写的对象具有拷贝功能?

若想令自己所写的对象具有拷贝功能,则需实现 NSCopying 协议。如果自定义的对象分为可变版本与不可变版本,那么就要同时实现 NSCopying 与 NSMutableCopying 协议。

具体步骤:

需声明该类遵从 NSCopying 协议
实现 NSCopying 协议。该协议只有一个方法:
- (id)copyWithZone:(NSZone *)zone;
注意:一提到让自己的类用 copy 修饰符,我们总是想覆写copy方法,其实真正需要实现的却是 “copyWithZone” 方法。
  1. 可变集合类 和 不可变集合类的 copy 和 mutablecopy有什么区别?如果是集合是内容复制的话,集合里面的元素也是内容复制么?

    • [immutableObject copy]是浅拷贝
    • [immutableObject mutableCopy]是深拷贝
    • [mutableObject copy]是深拷贝
    • [mutableObject mutableCopy]是深拷贝

    集合对象的深拷贝只是对象本身,而集合对象的元素还是地址的拷贝,即单层深拷贝

  2. 为什么IBOutlet修饰的UIView也适用weak关键字?

    通过加载xib得到的用户界面,在加载时就已经是view hierarchy(视图层次)的一部分了,后者中的指向都是strong的,因此IBOut指向的对象不该再被hold一次,从而不需要在viewDidUnload方法里再将IBOut指向的对象置为nil.

  3. nonatomic和atomic的区别?atomic是绝对的线程安全么?为什么?如果不是,那应该如何实现?

    atomic和nonatomic区别用来决定编译器生成的getter和setter是否为原子操作。atomic提供多线程安全,是描述该变量是否支持多线程的同步访问,如果选择了atomic 那么就是说,系统会自动的创建lock锁,锁定变量。nonatomic禁止多线程,变量保护,提高性能。
    * atomic:默认是有该属性的,这个属性是为了保证程序在多线程情况下,编译器会自动生成一些互斥加锁代码,避免该变量的读写不同步问题。
    * nonatomic:如果该对象无需考虑多线程的情况,请加入这个属性,这样会让编译器少生成一些互斥加锁代码,可以提高效率。
    * 不过atomic可并不能保证线程安全,atomic只是对setter和getter方法加锁;要想实现真正的线程安全,需要对对象进行加锁,读取操作结束的时候再开放给其他线程访问。

  1. UICollectionView自定义layout如何实现?

    自定义UICollectionViewLayout重写以下方法:

    - (void)prepareLayout
    准备方法被自动调用,以保证layout实例的正确。
    
    - (CGSize)collectionViewContentSize
    返回collectionView的内容的尺寸
    
    - (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect
     1.返回rect中的所有的元素的布局属性
     2.返回的是包含UICollectionViewLayoutAttributes的NSArray
     3.UICollectionViewLayoutAttributes可以是cell,追加视图或装饰视图的信息,
     通过不同的UICollectionViewLayoutAttributes初始化方法可以得到不同类型的UICollectionViewLayoutAttributes:
     1)layoutAttributesForCellWithIndexPath:
     2)layoutAttributesForSupplementaryViewOfKind:withIndexPath:
     3)layoutAttributesForDecorationViewOfKind:withIndexPath:
    
    - (UICollectionViewLayoutAttributes )layoutAttributesForItemAtIndexPath:(NSIndexPath )indexPath
    返回对应于indexPath的位置的cell的布局属性
    
    - (UICollectionViewLayoutAttributes )layoutAttributesForSupplementaryViewOfKind:    (NSString )kind 
    atIndexPath:(NSIndexPath *)indexPath
    返回对应于indexPath的位置的追加视图的布局属性,如果没有追加视图可不重载
    
    - (UICollectionViewLayoutAttributes * )layoutAttributesForDecorationViewOfKind: (NSString)decorationViewKind
    atIndexPath:(NSIndexPath )indexPath
    返回对应于indexPath的位置的装饰视图的布局属性,如果没有装饰视图可不重载
    
    - (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds
    当边界发生改变时,是否应该刷新布局。如果YES则在边界变化(一般是scroll到其他地方)时,将重新计算    需要的布局信息。
    

    选自:UICollectionViewLayout布局详解

  2. 3241

  3. 32424

  4. 34dsfsd

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容

  • 一、深复制和浅复制的区别? 1、浅复制:只是复制了指向对象的指针,即两个指针指向同一块内存单元!而不复制指向对象的...
    iOS_Alex阅读 1,364评论 1 27
  • 整理一些常见的Android面试题(针对于2~3年开发经验中所遇到的问题) synchronized锁静态方法和非...
    appzy阅读 2,279评论 4 18
  • 今日话题:你希望跟你共事的人什么特质,为什么?1.负责,也就是有责任心,团队合作精神2.执行力,不是直说不做的隐形人
    小惠_f2b8阅读 146评论 0 0
  • 小时候 豆豆是别人手里的零食 对面而立的我 只有羡慕的份儿 小时候 豆豆是别人地里的庄稼 看了又看 却与我无关 长...
    韩小冰阅读 321评论 14 10
  • 【目录】更多精彩等你哟 【第六章】蜘蛛精爱上鱼鳞 同样是在这一天,萧圣回到卧室那个时候,他把上了锁的抽屉打开,拿出...
    小北贝傲雪阅读 612评论 0 6