iOS面试题集合01

  • 1、 iOS为什么必须在主线程操作UI?
  • 2、Swift和OC的方法调用流程区别
  • 3、iOS性能优化实践:头条抖音如何实现OOM崩溃率下降50%+
  • 4、GCD
  • 5、runloop
  • 6、Weak的实现原理
  • 7、Block
  • 8、AutoreleasePool
  • 9、编译过程
  • 10、启动过程
  • 11、设计一个线程池、iOS 任务调度器:为 CPU和内存减负
  • 12、线程怎么保活
  • 13、内存满了之后如何处理
  • 14、如何使用 Runtime 给现有的类添加 weak 属性
  • 15、加载一个图片经历那些过程
  • 16、Performselector方法里到底干了啥
  • 17、C++虚函数我们一般哪里有用到啊,还有它开销了什么东西?为啥减少使用能优化启动速度?
  • 18、内存缓存优化
  • 19、autoreleasepool什么时候释放
  • 20、响应链机制
  • 21、instrment的Time profilter实现原理原理
  • 22、多线程之栅栏函数
  • 23、iOS 图像渲染过程、离屏渲染
  • 24、iOS 架构模式--浅析MVC, MVP, MVVM 和 VIPER
  • 25、iOS面试备战-多线程
  • 26、设计模式
  • 27、组件化
  • 28、组件化采坑
  • 29、md5实现原理
  • 30、NSTimer不准时
  • 31、WKWebVie与JS通信的几种方式
  • 32、什么是泛型?Swift的字符串string与OC的NSString差别?对于Swift协议的理解?
  • 33、APP启动时长监控
  • 34、https相关
  • 35、设计一个网络框架
  • 36、网络最大并发数
  • 37、分类和扩展区别
  • 38、load和initializet
  • 39、UIView的绘制过程
  • 40、layoutSubviews什么时候执行
  • 41、iOS-UIView异步绘制
  • 42、静态库和动态库的区别?怎么判断一个库是动态库还是静态库
  • 43、AutoLayout的原理
  • 44、iOS的Category添加 weak 属性
  • 45、Runloop
  • 46、Runtime
  • 47、WKWebView 那些坑
  • 48、NSString为用Copy和Strong有什么区别
  • 49、isKindOf和isMemberOf的区别,底层实现
  • 50、多线程-现有10个上传任务,最大并发数是3,每完成一个任务要告诉用户此时剩余的任务数
  • 51、自己实现isEqual方法(hash算法
  • 52、透彻理解block中weakSelf和strongSelf
  • 53、ios实现读写锁
  • 54、UIView Animation的Block谁持有
  • 55、watchdog 机制
  • 56、什么是依赖注入?
  • 57、ARC的原理,引用计数是怎么管理的,weak 关键字的原理
  • 58、autoReleasePool的原理 autoReleasePool 的哨兵、自己创建的 @autoReleasePool是怎样运行的,什么对象是autoRelease的
  • 59、RunLoop与AutoReleasepool的关系学习
  • 60、子线程默认不会开启 Runloop,那出现 Autorelease 对象如何处理?不手动处 理会内存泄漏吗?
  • 61、Atomic为什么不安全,怎么实现一个安全的存取、iOS中如何设计多线程的读写安全
  • 62、什么是@synchronized
  • 63、线程和进程的区别
  • 64、对于大图片加载引起的oom问题,怎么处理
  • 65、Crash堆栈和符号的对应解析符号化
  • 66、IPA包签名原理
  • 67、load的详细过程
  • 68、卡顿监测原理
  • 69、组件化过程中的坑
  • 70、Mach-O文件、深入iOS系统底层之程序映像
  • 71、深入理解Tagged Pointer
  • 72、iOS 的渲染机制以及 UIView 的自动布局流程
  • 73、MD5(哈希/摘要算法)、AES和DES(对称加密)、RSA(非对称加密)
  • 74、pod install和pod update的区别
  • 75、跨平台框架原理
  • 76、NSString的内部原理、taggedPointString
  • 77、Mian函数启动前的流程,是谁加载的动态库(dyld),runtime在何时加载
  • 78、解释一下段⻚式的内存管理,段⻚式虚拟内存的含义是什么,怎么进行换⻚
  • 79、KVO存在哪些⻛险
  • 80、大批量数据写入数据库怎么做
  • 81、从点击屏幕开始,runloop怎么进行工作的
  • 82、编译过程
  • 83、MVVM、MVC、MVP的区别
  • 84、iOS内存管理(MRC、ARC)深入浅出
  • 85、APNS
  • 86、AFN的二次封装
  • 87、聊聊CoreData、FMDB
  • 88、多线程相关
  • 89、http的header有什么字段?
  • 90、TimeProfile的详细使用
  • 91、卡顿的形成原因?什么是离屏渲染?
  • 92、Rac、SDWebImage、YYKit、AFN的原理
  • 93、Js与na交互的原理
  • 94、设计一个下载/断点续传框架
  • 95、NSCopy/NSCoder
  • 96、进程间通信的几种方式
  • 97、引用计数为0时,内存会立即释放吗?内存是什么时候释放的?
  • 98、iOS 底层 - dealloc 的底层实现
  • 99、git merge/rebase
  • 100、响应链的应用
  • 101、GCD Block会捕获self吗?
  • 102、Bounds和Frame的区别,改变Frame的Size会改变Bounds的size吗
  • 103、Swift和OC的区别?类和结构体的区别?
  • 104、pod install和pod pdate的区别
  • 105、哈希冲突问题的解决办法

网络

  • 1、http1.0->1.1->2.2->3区别
  • 2、HTTP1.1身份认证-摘要认证
  • 3、聊聊DNS劫持
  • 4、如何保障客户端与服务器交互中的数据安全
  • 5、iOS面试备战-网络篇
  • 6、在浏览器输入url后发生了什么
  • 7、TCP三次握手、四次挥手、https加密原理
  • 8、为什么TCP4次挥手时等待为2MSL?
  • 9、DNS的搜索过程
  • 10、tcp,为什么4次断开,tcp的拥塞机制,为什么这么设计
  • 11、TCP/UDP
  • 12、图解 | 什么是HTTP简史
  • 13、Charles抓包原理
  • 14、DNS的查找过程,什么是DNS劫持
  • 15、Get和Post
  • 16、http的响应状态码
  • 17、https抓包过程

算法

  • 1、最大子序和
  • 2、最大子矩阵
  • 3、乘积最大子数组
  • 4、爬楼梯
  • 5、快速排序
  • 6、整数反转
  • 7、链表反转
  • 8、链表是否循环
  • 9、两个有序数组合并
  • 10、删除链表的倒数第N个节点
  • 11、一个纯数字的字符串,调整顺序使之奇偶排列 “17485” ———>”14785 “
  • 12、实现一个LRU算法 不使用数组
  • 13、两个view的第一个公共父视图
  • 14、两个有序数组的中位数
  • 15、字符串的全排列
  • 16、二叉树的层级打印 计算层高
  • 17、用字符串实现大数加法
  • 18、二叉树 红黑树 二叉树的应用,以及数据库的数据结构以及优化
  • 19、找出无序数组中所有3个数字加起来是0 的数字(先排序,再双指针)
  • 20、最长回文子串
  • 21、找出无序数组中所有3个数字加起来是0 的数字
  • 22、8000W个字符串,每个长度在100以内,要求找到频率最高的前1000个
  • 23、利用栈结构实现队列结构
  • 24、验证是否是对称二叉树
  • 25、统计所有小于非负整数 n 的质数的数量
  • 26、硬币。给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算n分有几种表示法。

你可能感兴趣的:(iOS面试题集合01)