美文网首页
IOS技能树总结

IOS技能树总结

作者: 流星飞鱼 | 来源:发表于2020-03-18 16:12 被阅读0次

    最近记录一下iOS面试题,只做笔记,方便随时查看,如有不当之处感谢大牛指点。目录如下,持续更新。

    技能要求

    UI视图

    OC语言

    Runtime

    内存管理

    Block

    多线程

    RunLoop

    网络

    设计模式

    架构/框架

    算法

    第三方

    面试总结

    1.技能要求

         初级:

    精通Objective-C语言基础

    精通UIKit等Cocoa Framework

    熟悉网络通信机制以及常用数据传输协议

    具备主流开源框架的使用经验

         中级:

    扎实的编程基础、能够设计出良好的数据结构、能用一些算法解决一些实际的问题

    能够深入的理解一些OC语言的机制(比如Runtime实际是OC语言的一个基石)、内存管理、网络、多线程、GUI

    精通常用设计模式、框架、架构

    良好的分析、解决问题的能力(源码的学习可以深入的了解一些解决问题的思路和逻辑,包括学习系统的设计方案和思想)

         高级:

    解决研发过程中的关键问题和技术难题(创造性的提出一些解决方案)

    调优设备流量、性能、电量等

    较强的软件设计能力

    对iOS内部原理有深刻理解

          资深:

    精通高性能编程以及性能调优(ps: 对象的创建--前期就考虑用多线程处理这些问题  、大量字符串的遍历--选择一个较优的算法,在前期解决掉)

    灵活运用数据结构、算法解决复杂程序设计问题

    提供性能优化、日志搜集、统计分析等方案

    架构、模块设计

    2.UI视图

    UITableView相关(重用机制的理解和运用方面,包括我们在UITableView的使用过程中,会涉及到对数据源的一个多线程的操作,这里面就涉及到了一个数据源同步的问题)

    事件响应&视图响应

    图像显示原理(UI视图的图像显示原理是怎样的?我们创建了一个控件,最后是如何转化到屏幕上的每一个像素点的呢?)

    UI卡顿、掉帧

    UI绘制原理/异步绘制原理

    离屏渲染

    3.OC语言

    分类(分类的实现机制、原理是怎样的?我们应该怎样为一个分类提供实例变量呢?涉及到关联对象的考察)

    关联对象

    扩展、代理怎么使用

    KVO、KVC( 系统的实现机制、原理、包括涉及到了哪些设计思想)

    NSNotification

    属性关键字

    4.Runtime

    对象、类对象、元类对象是怎么理解的?以及他们之间的关系是怎样的?

    消息的传递机制是怎样的?

    消息转发流程是怎样的?

    方法缓存  (我们进行方法查找的过程当中,会使用到系统或者说Runtime中一个方法缓存的机制,这个机制又是怎样运行的呢?)

    Methood-Swizzling是Runtime的一种运用,可能会结合实际的场景,比如说通过时长统计框架这样的考察来了解对于Runtime的Methood-Swizzling技术的一个实际的运用

    动态添加方法

    5.内存管理

    ARC

    MRC

    引用计数机制

    弱引用表

    AutoReleasePool的实现机制和原理是怎样的

    循环引用

    6.Block

    Block的本质(什么是block,你对block的理解)

    截获变量特性

    __block修饰符的本质(在什么情况下使用)

    Block的内存管理

    循环引用(Block经常会产生的循环引用)

    7.多线程

    GCD(讲述多线程的各种技术方案GCD、NSOperation/NSOperationQueue、NSThread)

    NSOperation/NSOperationQueue

    NSThread

    线程同步、资源共享(在我们实际运用多线程运用技术过程中,所产生或者引发的线程同步、资源共享问题)

    互斥锁、自旋锁、递归锁等相关锁的一些技术内容

    8.RunLoop

    什么是RunLoop?(剖析RunLoop的源码)

    Mode/Source/Timer/Observer

    事件循环机制(RunLoop有事做事,没事休息是由事件循环机制来维护的)

    RunLoop与NSTimer之间的关系是怎样的?(我们在使用NSTimer的时候,应该怎样考虑和RunLoop的关系,包括RunLoop所带来的影响)

    RunLoop与线程之间有什么关系?

    如何通过RunLoop来实现常驻线程?

    9.网络

    HTTP协议(什么是HTTP,HTTP当中的get和post有什么区别)

    HTTPS与网络安全(HTTPS连接建立流程是什么,它与安全又有怎么的关系呢)

    TCP/UDP(TCP连接建立的三次握手,四次挥手以及UDP和长链接之间都有怎样的关系和含义呢)

    DNS解析

    Session/Cookie

    10.设计模式

    六大设计原则(设计模式所遵从的六大设计原则)

    责任链

    桥接

    适配器

    单例

    命令

    11.架构/框架

    图片缓存框架

    时长统计框架

    复杂页面架构设计

    客户端整体架构

    12.算法

    字符串反转

    链表反转

    有序数组合并

    Hash算法

    查找两个子视图的共同父视图

    求无序数组当中的中位数

    13.第三方库

    AFNetworking

    SDWebImageView

    Reactive Cocoa

    AsyncDisplayKit

    14.章节结构

       真题入手-->技术原理-->企业级实践

    ————————————————

    版权声明:本文为CSDN博主「ochenmengo」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

    原文链接:https://blog.csdn.net/ochenmengo/article/details/104527860/

    相关文章

      网友评论

          本文标题:IOS技能树总结

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