学习笔记 - 面试题Checklist

本文主要探讨Objective-C的面试常见问题,包括@property关键字、内存管理、消息发送、runtime机制、KVC/KVO、runloop、GCD以及IBOutlet的使用等核心概念。详细解析了对象内存布局、weak属性、类方法与实例方法的区别、runloop的工作原理以及解决BAD_ACCESS错误的方法等。
摘要由CSDN通过智能技术生成
  • [※]@property中有哪些属性关键字?

  • [※]weak属性需要在dealloc中置nil么?

  • [※※]@synthesize和@dynamic分别有什么作用?

  • [※※※]ARC下,不显式指定任何属性关键字时,默认的关键字都有哪些?

  • [※※※]用@property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?如果改用strong关键字,可能造成什么问题?

  • [※※※]@synthesize合成实例变量的规则是什么?假如property名为foo,存在一个名为_foo的实例变量,那么还会自动合成新变量么?

  • [※※※※※]在有了自动合成属性实例变量之后,@synthesize还有哪些使用场景?

  • [※※]objc中向一个nil对象发送消息将会发生什么?

  • [※※※]objc中向一个对象发送消息[obj foo]和objc_msgSend()函数之间有什么关系?

  • [※※※]什么时候会报unrecognized selector的异常?

  • [※※※※]一个objc对象如何进行内存布局?(考虑有父类的情况)

  • [※※※※]一个objc对象的isa的指针指向什么?有什么作用?

  • [※※※※]下面的代码输出什么?

@implementation Son : Father
- (id)init
{
    self = [super init];
    if (self) {
        NSLog(@"%@", NSStringFromClass([self class]));
        NSLog(@"%@", NSStringFromClass([super class]));
    }
    return self;
}
@end
  • [※※※※]runtime如何通过selector找到对应的IMP地址?(分别考虑类方法和实例方法)

  • [※※※※]使用runtime Associate方法关联的对象,需要在主对象dealloc的时候释放么?

  • [※※※※※]objc中的类方法和实例方法有什么本质区别和联系?

  • [※※※※※]_objc_msgForward函数是做什么的,直接调用它将会发生什么?

  • [※※※※※]runtime如何实现weak变量的自动置nil?

  • [※※※※※]能否向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实例变量?为什么?

  • [※※※]runloop和线程有什么关系?

  • [※※※]runloop的mode作用是什么?

  • [※※※※]以+ scheduledTimerWithTimeInterval…的方式触发的timer,在滑动页面上的列表时,timer会暂定回调,为什么?如何解决?

  • [※※※※※]猜想runloop内部是如何实现的?

  • [※]objc使用什么机制管理对象内存?

  • [※※※※]ARC通过什么方式帮助开发者管理内存?

  • [※※※※]不手动指定autoreleasepool的前提下,一个autorealese对象在什么时刻释放?(比如在一个vc的viewDidLoad中创建)

  • [※※※※]BAD_ACCESS在什么情况下出现?

  • [※※※※※]苹果是如何实现autoreleasepool的?

  • [※※]使用block时什么情况会发生引用循环,如何解决?

  • [※※]在block内如何修改block外部变量?

  • [※※※]使用系统的某些block api(如UIView的block版本写动画时),是否也考虑引用循环问题?

  • [※※]GCD的队列(dispatch_queue_t)分哪两种类型?

  • [※※※※]如何用GCD同步若干个异步调用?(如根据若干个url异步加载多张图片,然后在都下载完成后合成一张整图)

  • [※※※※]dispatch_barrier_async的作用是什么?

  • [※※※※※]苹果为什么要废弃dispatch_get_current_queue?

  • [※※※※※]以下代码运行结果如何?

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSLog(@"1");
    dispatch_sync(dispatch_get_main_queue(), ^{
        NSLog(@"2");
    });
    NSLog(@"3");
}
  • [※※]addObserver:forKeyPath:options:context:各个参数的作用分别是什么,observer中需要实现哪个方法才能获得KVO回调?

  • [※※※]如何手动触发一个value的KVO

  • [※※※]若一个类有实例变量NSString *_foo,调用setValue:forKey:时,可以以foo还是_foo作为key?

  • [※※※※]KVC的keyPath中的集合运算符如何使用?

  • [※※※※]KVC和KVO的keyPath一定是属性么?

  • [※※※※※]如何关闭默认的KVO的默认实现,并进入自定义的KVO实现?

  • [※※※※※]apple用什么方式实现对一个对象的KVO?

  • [※※]IBOutlet连出来的视图属性为什么可以被设置成weak?

  • [※※※※※]IB中User Defined Runtime Attributes如何使用?

  • [※※※]如何调试BAD_ACCESS错误

  • [※※※]lldb(gdb)常用的调试命令?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
华为-原理图绘制评审规范-checklist是华为公司为了确保原理图绘制质量和准确性而制定的指南。以下是一份可能的评审规范-checklist: 1. 原理图符号准确性:检查原理图中的各个元件符号是否正确,包括器件、连接线、电源等。确保符号与实际元件相对应,并且没有错误或遗漏。 2. 连接线规范:检查连接线的走向是否符合设计要求,并且没有交叉、断开或不必要的交叉。确保连接线的长度合适且整齐,以提高信号传输的质量。 3. 电源规划:检查电源的布局和规划是否符合设计要求,包括电源线的位置和连接方式。确保每个器件都能得到足够的电源供应,以避免电源噪声或干扰。 4. 阻抗匹配:检查原理图中的阻抗匹配电路是否正确,并且与设计规格相符。确保各个信号路径的阻抗匹配良好,以提高信号传输的稳定性和可靠性。 5. 信号完整性:检查原理图中的信号传输路径是否正确,并且没有信号路径交叉、误接或不必要的延迟。确保信号的传输路径短、直接,并且能够保持信号的完整性和稳定性。 6. 地线和功率线分离:检查原理图中的地线和功率线是否分离,并且没有交叉或干扰。确保地线和功率线的分离可以减少干扰和噪声,提高系统的稳定性和性能。 总之,华为-原理图绘制评审规范-checklist旨在确保原理图的准确性、规范性和可靠性,以提高华为产品的质量和性能。通过逐项检查每个要素,可以及时发现和纠正潜在的问题,确保原理图符合设计规格,并满足客户的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值