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

相关推荐
2401_8658548812 小时前
iOS应用想要下载到手机上只能苹果签名吗?
后端·ios·iphone
HackerTom1 天前
iOS用rime且导入自制输入方案
ios·iphone·rime
良技漫谈1 天前
Rust移动开发:Rust在iOS端集成使用介绍
后端·程序人生·ios·rust·objective-c·swift
2401_852403551 天前
高效管理iPhone存储:苹果手机怎么删除相似照片
ios·智能手机·iphone
星际码仔2 天前
【动画图解】是怎样的方法,能被称作是 Flutter Widget 系统的核心?
android·flutter·ios
emperinter2 天前
WordCloudStudio:AI生成模版为您的文字云创意赋能 !
图像处理·人工智能·macos·ios·信息可视化·iphone
关键帧Keyframe2 天前
音视频面试题集锦第 8 期
ios·音视频开发·客户端
pb82 天前
引入最新fluwx2.5.4的时候报错
flutter·ios
袁代码2 天前
Swift 开发教程系列 - 第4章:函数与闭包
ios·swift·ios开发
#摩斯先生3 天前
IOS 防截屏实现
ios·xcode