iOS面经

算法

回文串数量 --- dp

最大回文子串 --- dp

两数之和 --- 哈希表

三数之和 --- 排序(分类讨论)

快速排序 --- 递归

二叉树最小深度 --- 分类,递归

反转链表

前中遍历还原树

后中遍历还原树

K个一组反转

水塘抽样算法

考点

iOS:

struct和class的区别

struct是值类型 class是引用类型
 struct有写时复制机制
 class可以被继承 所以它有引用计数

struct有自动的初始化器 class没有

class可以进行类型转换 struct不可以
 struct在栈上 class在堆上(指针在栈上)

闭包的本质

闭包的本质是结构体 有isa指针 当作对象处理 会捕获外界的变量到结构体中 在堆上开辟空间保存(局部变量捕获 复制值到结构体中 静态变量 传递指针进去 全局变量 什么都不传)

响应链传递链机制

hitTest和pointInside

nextResponse self.next

触摸点在视图外怎么进行处理

渲染

离屏渲染

layout prepare display commit

渲染管线

事务的提交 标记为待处理 在runloop循环末尾统一处理

光栅化

抗锯齿 --- 位图 平滑插值处理

动画

CABaseAnimation长时间动画

多线程

死锁条件 互斥 持有等待 循环等待 不可抢占(非剥夺)

看OC代码 说输出顺序

GCD NSOperation NSThread

线程与runloop一一对应(字典方式)

锁 自旋锁 互斥锁 递归锁 读写锁 条件锁

内存

ARC机制

MRC机制

循环引用

自动释放池 ---双向链表

栈结构所构成的

优化---基本都考虑 懒加载 预加载 复用池 缓存 多线程

内存优化

卡顿检测与优化 tableView卡顿优化处理 复用池机制

图片渲染优化 --- 上下文(缩小图片尺寸)或者进行下采样处理 数据缓冲区 --->(解码) 图像缓冲区 位图缓冲区

runloop

怎么实现卡顿检测

runloop和线程的关系

点击屏幕会发生什么(还涉及到响应链和传递链) 手势识别的过程(touchesCancel)

runtime

KVC 可以实现运行时获取属性

KVO isa-swizzling(生成一个新的子类 重写父类方法实现监听)

为类拓展存储属性---关联对象

消息传递

网络:

TCP和UDP的区别(可靠传输和非可靠传输)

流量控制 ------ 滑动窗口协议
 拥塞控制 ------ 慢开始 拥塞避免 快重传 快恢复

序号 确认机制

HTTPS连接方式

三次握手四次挥手

握手为什么三次而不是两次

挥手为什么四次而不是三次

签名证书 SSL/TLS 对称加密非对称加密

状态码
 Http1.0 1.1 2.0 3.0有什么变化 头部压缩 多路复用 服务器推送 二进制传输

六大设计原则

单一职责原则

里氏替换原则

接口隔离原则

开放封闭原则

依赖倒置原则

合成复用原则

设计模式

结构型模式

创造型模式

行为模式

操作系统:

进程和线程的区别

进程间通信方式

线程间通信方式

虚拟内存

调度算法

分页、分段、存储管理

中断和异常处理

并行与并发的概念

内核态和用户态

内核级线程和用户级线程 (协程、线程)

内核级线程由内核统一调度可以利用多核CPU

用户级线程不能利用多核CPU

同一个进程的不同线程可以在不同的核心上运行

超线程技术 一个核心同时运行两个线程
 假设A、B两个线程 A需要整数寄存器 B需要浮点寄存器 就能够并行 都需要整数寄存器 那就是并发 ---超线程

并发并行都有

图灵机 冯诺依曼模型---总线 输入设备 输出设备 处理器 内存 控制单元 算术逻辑单元

64位比32位机器好在哪

for循环中jump后面要跟随一条nop指令---------因为CPU会预读和预处理一些指令 为了防止下一条指令被执行 采用CPU空转的方法

进程 重定向 管道(命名管道------mkfifo pipes ls-l > pipes ls-l &> pipes将错误输出重定向到标准输出然后存到pipes) ls-l |

Linux用户和组 最小权限原则

可执行文件是如何运行的 加载---解析和链接---初始化---执行---运行时---结束

数据库:

脏读 幻读 不可重复读

事务的特性

算法与数据结构:

怎么判断一个四边形是正方形

怎么判断一个点在三角形内部 差积

渲染 离屏渲染 图片加载 
tableView的优化 复用池
内存优化 自动释放池 循环引用 闭包 sidetables

相关推荐
AI信息风向12 小时前
iOS 15推出后利用邮件打开率的7种方法
ios
2401_8581205313 小时前
深入理解 Swift 中的隐式解包可选类型(Implicitly Unwrapped Optionals)
开发语言·ios·swift
TheLittleBoy17 小时前
iPhone 16分辨率,屏幕尺寸,PPI 详细数据对比 iPhone 16 Plus、iPhone 16 Pro、iPhone 16 Pro Max
ios·iphone·iphone16·苹果分辨率
SchneeDuan20 小时前
iOS的传递链与响应链机制
ios
安和昂21 小时前
【iOS】push和present的区别
macos·ios·cocoa
AdSet聚合广告平台1 天前
Android app广告变现广告预算来源有哪些?
大数据·搜索引擎·ios·小程序·uni-app
我码玄黄1 天前
原生 iOS 引入 Flutter 报错 kernel_blob.bin 找不到
flutter·ios
温正实1 天前
ios 用JXCategoryView 库实现tab滑动切换viewController
ios
安和昂1 天前
【iOS】UIViewController的生命周期
ios·xcode·swift
AI科技新知1 天前
苹果发布新款iPhone 16,与Apple Intelligence配套:查看功能和价格
ios·iphone