IOS 知识点考试题汇总(一)

知识点汇总

一,基础

  1. Runloop和线程的关系?

  2. 自动释放池什么时候释放?

  3. 什么情况下使用weak关键字,和assign的区别?

  4. 怎么用copy关键字?

  5. @property(copy) NSMutableArray * array;这写法会有什么问题?

  6. 如何让自己的类用copy修饰符?即让自己写的对象具备拷贝功能?

  7. @property的本质是什么? ivar,getter,setter如何生成并添加到这个类中的?

  8. 多线程

  9. @protocol和category中如何使用@property?

  10. @property中有哪些属性关键字?

  11. weak属性需要在dealloc中置nil么?

  12. @synthesize和@dynamic分别有什么作用?

  13. ARC下,不是显示指定任何属性关键字时,默认的关键字都有哪些?

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

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

  16. 在有了自动合成属性实例变量之后,@synthesize还有那些使用场景?

  17. objc中想一个nil对象发送消息将会发送什么?

  18. objc中想一个对象发送[obj foo]和objc_msgSend()函数直接有什么关系?

  19. 什么时候会包unrecognized selector的异常?

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

  21. 一个objc对象的isa指针指向什么?有什么作用?

  22. runtime如何通过selector找到对应的IMP地址?(分别考虑类方法和实例方法)

  23. 下面的代码输出什么?

  24. 使用runtime Associate方法关联的对象,需要在主对象dealloc的时候释放么?

  25. objc中的类方法和实例方法有什么本质的区别和联系?

  26. _objc_msgForward函数是做什么的,直接调用它将会发生什么?

  27. runtime如何实现weak变量的自动置nil?

  28. 能否想编译后得到的类中增加实例变量?能否想运行是创建的类中添加实例变量?为什么?

  29. runloop和线程有什么关系?

  30. runloop的mode作用是什么?

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

  32. 猜想runloop内部是如何实现的?

  33. objc使用什么机制管理对象内存?

  34. ARC通过什么方式帮助开发者管理内存?

  35. BAD_ACCESS在什么情况下出现?

  36. 使用block是什么情况会发生引用循环,如何解决?

  37. 在block内如何修改block外部变量?

  38. 苹果是符号实现autoreleasepool的?

  39. 不手动知道autoreleasepool的前提下,一个autorelease对象在什么时刻释放?(比如在一个vc的viewDidLoad中创建)

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

  41. GCD的队列(dispatch_queue_t)分哪两种类型?

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

  43. dispatch_barrier_async的作用是什么?

  44. 苹果为什么要废弃dispatch_get_current_queue?

  45. 以下代码运行结果如何?
    在这里插入图片描述
    只输出:1。 发送主线程锁死。

  46. addObserver:forKeyPath:options:context:各个参数的作用分别是什么,observer中需要实现哪个方法才能获得KVO回调?

  47. 如何手动触发一个value的KVO?

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

  49. KVC的keyPath中的集合运算符如何使用?

  50. KVC和KVO的keyPath一定是属性么?

  51. 如何关闭默认的KVO的默认实现,并进入自定义的KVO实现?

  52. apple用什么方式实现对一个对象的KVO?

  53. IBOutlet连出来的视图属性为什么可以被设置成weak?

  54. IB中User Defined Runtime Attributes如何使用?

  55. 如何调试BAD_ACCESS错误?

  56. lldb (gdb) 常用的调试命令?

  57. IOS容易引起”循环引用“的几种场景

  58. 类方法load和initialized的区别?

  59. HTTP和HTTPS

  60. 常见的Exception Type

  61. Category和Extension

  62. 响应者链(responder chain)

  63. UITableView的优化

  64. 离屏渲染(Offscreen-Render)

  65. UIView和CALayer

  66. TCP和UDP

  67. socket和http

  68. 远程推送APNS

  69. IOS应用程序生命周期

  70. View视图生命周期

  71. autorelease pool

  72. view layout

  73. 应用程序的架构MVC, MVVM

  74. FMDB,SQLite

  75. 简述内存分区情况

  76. 各属性作用

  77. 简述Notification,KVC,KVO,delegate?区别?

  78. id和nil代表什么

  79. nil,Nil,NULL, NSNull

  80. 向一个nil对象发送消息会发送什么?

  81. self. 和 self-> 的区别

  82. 如何访问并修改一个类的私有 属性

  83. 如何为class 定义一个对外只读,对内可读写的属性

  84. OC中,meta-class 指的是什么?

  85. NSString用copy和strong的区别

  86. 创建一个对象的步骤

  87. setter,getter

  88. id,instancetype是什么,区别?

  89. 内存管理

  90. KVC的底层实现?

  91. block的内存管理

  92. App的启动过程,从main说起

  93. tableview的cell里面如何嵌套collectionview

  94. awakeFromNib和viewDidLoad的区别

  95. 常见的Crash场景

  96. AFN断点续传

  97. 客户端的缓存机制

  98. 数据存储方式

  99. App需要加载超大量的数据,给服务器发送请求,但服务器卡住了,如何解决?

  100. 网络图片处理问题中怎么解决一个相同的网络地址重复请求的问题?

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

  102. NSOperation,CGD,NSThread的区别

  103. 是否可以把比较耗时的操作放在NSNotificationCenter中

内容概要:本文从关键概念、核心技巧、应用场景、代码案例分析及未来发展趋势五个维度探讨了Python编程语言的进阶之路。关键概念涵盖装饰器、生成器、上下文管理器、元类和异步编程,这些概念有助于开发者突破基础认知的核心壁垒。核心技巧方面,介绍了内存优化、性能加速、代码复用和异步处理的方法,例如使用生成器处理大数据流、numba库加速计算密集型任务等。应用场景展示了Python在大数据处理、Web开发、人工智能和自动化运维等多个领域的广泛运用,特别是在FastAPI框架中构建异步API服务的实战案例,详细分析了装饰器日志记录、异步数据库查询和性能优化技巧。最后展望了Python的未来发展趋势,包括异步编程的普及、类型提示的强化、AI框架的深度整合以及多语言协同。 适合人群:已经掌握Python基础语法,希望进步提升编程技能的开发者,特别是有意向从事数据科学、Web开发或AI相关工作的技术人员。 使用场景及目标:①掌握Python进阶概念和技术,如装饰器、生成器、异步编程等,提升代码质量和效率;②学习如何在实际项目中应用这些技术,如通过FastAPI构建高效的异步API服务;③了解Python在未来编程领域的潜在发展方向,为职业规划提供参考。 阅读建议:本文不仅提供了理论知识,还包含了丰富的实战案例,建议读者在学习过程中结合实际项目进行练习,特别是尝试构建自己的异步API服务,并通过调试代码加深理解。同时关注Python社区的发展动态,及时掌握最新的技术和工具。
内容概要:本文档《Rust系统编程实战》详细介绍了Rust在系统编程领域的应用,强调了其内存安全、零成本抽象和高性能的特点。文档分为三个主要部分:核心实战方向、典型项目案例和技术关键点。在核心实战方向中,重点讲解了unsafe编程、FFI(外部函数接口)和底层API调用,涉及操作系统组件开发、网络编程、设备驱动开发、系统工具开发和嵌入式开发等多个领域,并列出了每个方向所需的技术栈和前置知识。典型项目案例部分以Linux字符设备驱动为例,详细描述了从环境搭建到核心代码实现的具体步骤,包括使用bindgen生成Linux内核API的Rust绑定,定义设备结构体,以及实现驱动核心函数。 适合人群:对系统编程有兴趣并有定编程基础的开发者,尤其是那些希望深入了解操作系统底层机制、网络协议栈或嵌入式系统的工程师。 使用场景及目标:①掌握Rust在不同系统编程场景下的应用,如操作系统组件开发、网络编程、设备驱动开发等;②通过实际项目(如Linux字符设备驱动)的学习,理解Rust与操作系统内核的交互逻辑;③提高对unsafe编程、FFI和底层API调用的理解和运用能力。 阅读建议:由于文档内容较为深入且涉及多个复杂概念,建议读者在学习过程中结合实际操作进行练习,特别是在尝试实现Linux字符设备驱动时,务必按照文档提供的步骤逐步进行,并多加调试和测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值