面试题

作者: 学呀学呀总得学会了吧 | 来源:发表于2019-03-23 22:36 被阅读0次

1.如何判断两对象相等?

isEqual:先判断指针两个对象的指针是否相同,若相同则为同一对象,若不同,比较class 所属类是否相同[self class],相同的话,比较对象中个属性是否相同,若属性相同,则返回相等。

NSArray 的检测方式需要先比较两个数组所包含的个数是否相同,若相同,则在每个对应未知的两个对象身上调用其“isEqual:"方法。如果对应位置上的对象均相等,那么这两个数组就相等。

2.字典中的key能为哪些类型的值?

(一个对象能不能作为字典的key,就取决于其有没有__hash__方法。)

Objective-C 中的字典 NSDictionary 底层其实是一个哈希表,实际上绝大多数语言中字典都通过哈希表实现。

NSDictionary是使用 hash表来实现key和value之间的映射和存储的, hash函数设计的好坏影响着数据的查找访问效率。数据在hash表中分布的越均匀,其访问效率越高。而在Objective-C中,通常都是利用NSString 来作为键值,其内部使用的hash函数也是通过使用 NSString对象作为键值来保证数据的各个节点在hash表中均匀分布。

字典每个条目存取是通过将字典的键(Key)计算出键的hash值,通过查hash表获取具体的value。所以作为NSDictionary 的键(Key)取值的时候,只要其key对象内容地址相同就可以取出相应的值。(PS:地址不同,对象相同的遵守<NSCopying>协议的key也可以取出对应的value)。

OC对象作为字典的Key需要遵守NSCopying协议并且实现hash和isEqual两个方法。

3.结构体内存,以及为什么?

内存对齐

相关文章

  • 面试材料

    面试经验 面试题1 面试题2 面试题3 面试题4 面试题5 面试题6――数据结构 面试题7――网络 面试题8――汇...

  • 高阶面试题

    webpack面试题 面试题:webpack插件 Git面试题 面试题:git常用命令 面试题:解决冲突 面试题:...

  • this的指向的面试题

    面试题1 面试题2 面试题3 面试题4

  • 面试所涉及的问题

    面试题参考1 : 面试题 面试题参考2 : 内存管理 面试题参考3 :面试题 ...

  • Android超实用最全面试大纲(三)

    文章目录: ANR面试题 OOM面试题 Bitmap面试题 UI卡顿面试题 内存泄漏面试题 内存管理面试题 一、A...

  • Android最全面试大纲(三)

    文章目录: ANR面试题 OOM面试题 Bitmap面试题 UI卡顿面试题 内存泄漏面试题 内存管理面试题 一、A...

  • 2022年web前端面试题

    web前端面试题分为:html/css面试题、javascript面试题、vue面试题、性能优化面试题、网络方面面...

  • ios面试题

    初级面试题 中级面试题 高级面试题 swift篇

  • Android超实用最全面试大纲(四)

    文章目录: 冷启动和热启动面试题 其他优化面试题 架构模式面试题 插件化面试题 热更新面试题 进程保活面试题 Li...

  • Android最全面试大纲(四)

    文章目录: 冷启动和热启动面试题 其他优化面试题 架构模式面试题 插件化面试题 热更新面试题 进程保活面试题 Li...

网友评论

      本文标题:面试题

      本文链接:https://www.haomeiwen.com/subject/qwvevqtx.html