ios基础知识
小知识,大挑战!本文正在参与「程序员必备小知识」创作活动 本文已参与 「掘力星计划」 ,赢取创作大礼包,挑战创作激励金
底层
1.alloc&init底层探索
2.内存对齐原则及OC对像内存
3.结构体/联合体/位域
4.isa与类关联的原理
5.isa走位和类结构分析
6.dealloc流程分析
7.成员变量、实例变量和属性
8.isKindOfClass&isMemberofClass
9.方法的存储
10.isa走位图实例分析
11.Runtime介结
12.Objc_class中Cache原理分析
13.Objc_msgSend流程分析
14.消息转发机制
15.+load方法分析
16.应用程序的加载
17.dyld和objc的关联
18.类的加载
19.关联对像
20.atomic与nonatiomic区别
21.source0和source1区别
22.静态库与动态库的区别
23.启动优化分析
24.包体积优化
25.runtime方法交换
26.GET与POST区别
27.load与initialize区别
28.UIview与layer区别
29.KVO与KVC原理以及应用场景
30.响应者链
31.Frame与Bounds的区别
32.NSTime循环引用
33.GCD时间与NSTime与CADisplayLink区别
34.iOS系统的结构
35.线程相关问题
36.VC生命周期
37.APP生命周期
38.双击Home有什么问题
39.IOS与JS交互的方法有哪些。
40.webView优化都是怎么优化的
41.安全防护都是怎么防护的
42.通知中心的底层原理
43.推送的流程
44.什么情况下会调用layoutSubviews
45.什么情况下会调用draw rect方法
46.AFN底层原理
47.SDWEBimage原理
48.组件化相关问题
49.Autorelease底层原理
50.runLoop相关原理
51.iOS签名机制是怎样的
52.能否讲一下CocoaPods原理
53.实时卡顿检测的两种方案
54.iOS沙盒目录结构是怎样的?
55.block相关问题
57.UIScrollview的contentSize、contentOffset与contentInset属性
58.MVC、MVVM、MVP的区别
59.细数iOS中的那些锁
60.项目中数据存储都用了哪些?iOS都有哪些数据存储方法
61.进程间通信的方式
62.如何收集Crash日志
63.OC中对象的结构
64.ARC与MRC的本质区别是什么
65.项目采用64位,为什么要用64位?怎么修改成64位?i386是什么?他们有什么关系?
66.iOS应用程序有几种状态?追问,退到后台代码是否可以执行?双击HOME键,代码是否可以执行?
67.images.xcassets和直接用图片有什么不一样?
68.JSON转Model原理
69.自己设计一个缓存器
70.你知道哪些编码方式
71.为什么不可变对象要用copy
72.assign可以使用在对象中吗?
73.layoutifNeeded和setNeedsLayout的区别
74.bitmap的结构
75.可变数组的实现原理
76.如何hook一个对象的方法,而不影响其它对象。
77.如何避免if else
78.事务的特征
79.一张图片内存占用大小是由什么决定的
80.id和nill代表什么(nill和NULL的区别)
81.ipa都有哪些过程,期间都生成了什么文件
82.iOS是如何进行资源管理的
83.Block和Protocol的区别,Block是为了解决什么问题而使用
84.了解fishHook吗?说说为什么fishHook不能修改非动态连接库中的符号?
85.id、self、super它们从语法上有什么区别
86.isa是什么?是指向class对象对本的指针吗?
87.block修改捕获变量除了用block还可以怎么做?有哪些局限性?
88.NSDictionary与NSHashTable有什么区别
89.对象调用的原理
90.假设iphone上有一个与服务器的TCP连接,此时iphone突然断网,服务器能在短时间内知道iphone离线吗?
91.Runloop是一个不停歇在运行的死循环吗?为什么
92.看过runtime的源码吗?源码中常有的fastpath、flowpath是什么?
93.runtime中SideTable存在的意义是什么?
94.Objective-c是如何保证系统升线后的AB稳定性的?
95.线程之间如何进行通讯
96.介绍下字典转模型的设计+夜间模式的设计
97.夜间模式有什么缺点,能怎么优化?
98.线程安全错误是怎么出现的?
99.iOS的反身机制
100.UI的渲染步骤,视图打包流程,CPU与GPU工作,为什么要双缓冲区
101.图片是什么显示的,以及图片缓冲区
102.NSObject的内存布局
103.元类是什么
104.所有OC对象都继承NSObject吗,id是什么?
105.什么是hash,hash的具体实现,程序里面一个对象怎么通过hash定位到具体的内存区
106.hash数组扩容
107.fps是怎么计算的
108.leaks怎么实现的
109.如何代码实现监听僵尸对象
110.imageWithName什么时候发生编解码,在什么线程
120.函数里面的参数怎和以存储
121.OC一个空函数里面有参数吗
122.他们存在栈还是寄存器
123.如何实现dispatch once,要考虑什么问题
124.同一线程里面使用@synconize会怎么样,是递归锁还是非递归锁
125.如何增加按钮点击范围
126.说一下C++多态和虚函数表
127.TCP如何保证数据传输完整性
128.iOS对象指针大小
129.多线程可以访问同一个对象吗,多进程呢?
130.视频pts和dts
131.视频丟帧丢哪个好点
132.iOS各种锁的性能,锁是毫秒还是微秒级别的
133.怎么看待rn与flutter
134.property的作用是wfhtc,有哪些关键词,分别是什么含义
135.父类的property是如何查找的
136.说一下dispatch_group_t和dispatch_barrier_sync的区别
137.说一下你对OC程序编译和连接方面的理解?
138.hitTest有尝试过重写吗?
139.分类与扩展有什么区别?可以分别用来做什么,分类的结构体里面有哪些成员?
140.讲一下atomic的实现机制;为什么不能保证绝对的线程安全(最好结合场景来说)?
141.被weak修饰的对象在被释放的时候会发生什么?知道sideTable么?里面的结构可以画出来吗?
142.讲一下对象,类对象,元类,跟元类结构体的组成以及他们是如何相关联的?为什么对象方法没有保存对象结构体里,而是保存在类对象的结构体里?
143.APP无痕埋点的思路是什么?你认为理想的无痕埋点系统应当具备哪些特点?
144.你知道哪些情况会导致app崩溃,分别可以用什么方法拦截并化解
145.你知道有哪些情况会导致app卡顿,分别可以用什么方法来避免?
146.为什么只有主线程的Runloop是开启的?
147.performSelector和runloop的关系
148.如何使线程保活?
149.为什么设计metaClass
150.class_copyIvarList&class_copyPropertyList区别
151.IMP、SEL、Method的区别和使用场景
152.一个int变量被_block修饰与否的区别?block的变量截获
153.NSOperationQueue中的maxConcurrentOperationCount默认值
154.NSTimer、CADisplayLink、dispatch_source_t的优劣
155.如何做启动优化,如何监控;如何做卡顿优化,如何监控;如何做耗电优化,如何监控;如何做网络优化,如何监控
156.如何保证项目的稳定性
157.你们APP是如何处理本地数据安全的(比如用户名和密码)
158.什么是指针常量和常量指针?
159.说几个你在工作中使用到线程安全的例子。
160.说一下静态库和动态库之间的区别
161.Block实现原理;堆上和栈上的数据如何同步
162.简述weak实现的原理
163.实现多个网络请求ABC执行完再执行D
164.const关键字使用
165.static关键字使用
166.try catch能捕获到哪些异常
https相关系列
1.http的发展阶段
2.https与http的区别
3.SSL建立连接的过程
4.OSI七层模型
5.为什么会有三次握手与四次挥手
6.数字证书有什么用
7.断点续传怎么实现
8.抓包工具抓取HTTPS的原理
9.http中的同步和异步
10.MAC地址和ip地址的区别
11.https能防止中间人攻击吗?
12.TCP的慢启动、慢恢复介绍下
13.如果DNS解析的时候,某个ISP服务器没有了,这时候逻辑是怎样的?
14.为什么说http是无状态的?
15.APP风络层有哪些优化策略
16.https的握手流程?为什么密钥的传递需要使用非对称加密?双向认证了解么?
17.HTTP是如何实现验证身份和验证完整性的?
18.SSL与TLS的区别?
19.http与Socket?Socket长连接如何保持?以及连接如何关闭
20.IM即时通讯的原理
21.AFN源码:网络状态监听的实现、NSURLSection与NSURLConnection的区别?
22.三次握手,四次挥手的过程
23.TCP与UDP区别
24.TCP如何保证可靠性和有序性
25.滑动窗口最大值?
26.如何使用UDP实现可靠性
27.socket本地通信需要通过TCP/IP协议栈吗?
28.TCP的滑动窗口
29.DNS劫持是什么?怎么解决?
30.GET与POST的区别
31.POST能不能抱数据放到URL里面?
32.HTTP传输一个文件,下载一个文件流程是怎样的呢?
33.详细说一下SSL连接的过程
设计方面的问题
1.从业务方面思考--场景再现
2.基于业务分析问题
3.将问题抽象成技术问题
4.抽象技术问题具体落实到代码的API
5.提出至少三个解决方案 各个方案优缺点简单概括
6.问面试管公司能够提供那些资源,最后选最优方案
1.设计一个线程池?画出你的架构图
2.你的app架构是什么,有什么优缺点、为什么这么做
3.如何设计一个通知中心
4.如何设计一个方案去应对后端频繁更改字段接口?
算法方面的问题
1.二叉树、二叉平衡树,AVL,红黑树,B+tree的区别
2.二叉树公共结点
3.不用第三者,怎和以交换两个数
4.一个天平,4个砝码,能称出多少种重量
5.红黑树等查找时间复杂度
6.求只有三项元素的数组中的顺序排列,时间复杂度要求O(n)
7.冒泡,选择,插入,快排能写出那些?
8.整型字符串相加
9.输入一个字符串,判断这个字符串是否是有效的ip地址
10.大数加法怎么实现
11.如何从字符串中得到一个整数?
12.数组去重方式;
13.设计一个数据库;
14.二叉树最大宽度的题目
15,LRU与LFU是什么
16.二叉树和为某一值的路径
17.链表倒数第K个节点
18.MD5是多少位?MD5原理是什么?
19.戳气球 leetcode 312
20.输入一个字符串,判断这个字符串是否是有效的IP地址
21.大数加法怎和CPU现
计算机系统题
1.了解编译的过程么?分为哪几个步骤?
2.静态链接了解么?静态库和动态库的区别?
- static和const有什么区别
4.进程切换说一下,进程切换具体哪些资源?
5.线程的上下文切换呢?
6.进程状态,线程状态的切换呢?
7.进程通信的方式,说一下管道机制?一个进程进去了,其他的进程不让进去,怎么做
8.线程之间共享的有什么?
9.线程与进程的区别?
10.线程之间通信的方式?
11.用户态与内核态的区别
12.volatile与synchronzied的区别