小言_互联网的博客

2021年iOS高级工程师最新面试题大全_图形处理和图文混排

420人阅读  评论(0)

1. 一张100*100,RGBA的png图像解压之后占多大内存空间?

套用公式,RGBA是32100*100*32/8 = 40000(字节)
40000/1024 = 39KB

2. Metal是什么?

3. 加载图片几种方式?

 [UIImage imageNamed:@“xxx”] 系统缓存到cache中

[UIImage imageWithContentsOfFile:path] 不缓存

[UIImage imageWithData:data]  不缓存

4. imageWithName什么时候发生编解码,在什么线程?

5. 是否使用过CoreText或者CoreImage等?

6. 图像显示原理(UI渲染机制)?

CPU  和 GPU通过总线连接

CPU( Central Processing Unit, 中央处理器)就是机器的“大脑”,也是布局谋略、发号施令、控制行动的“总司令官”。

CPU的结构主要包括运算器(ALU, Arithmetic and Logic Unit)、控制单元(CU, Control Unit)、寄存器(Register)、高速缓存器(Cache)和它们之间通 讯的数据、控制及状态的总线。

GPU全称为Graphics Processing Unit,中文为图形处理器,就如它的名字一样,GPU最初是用在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上运行绘图运算工作的微处理器。

CPU和GPU两个组件都是通过总线连接起来的,在CPU中输出的结果是一个位图 然后在合适的时机上传位图给GPU  GPU获取位图后会做图层的渲染 纹理的合成 把结果放到帧缓冲区中 由视频控制器根据Vsync信号 提取帧缓冲区中的图形 然后在显示器中显示

CPU:

layout  display  Prepare  Commit

UIView中的CAlayer负责图形的内容 系统通过drawRect:方法进行内容的绘制 绘制好的内容会经Core Animation 提交给GPU中的OpenGL(ES)进行位图的渲染 然后显示到屏幕上

对象的创建和销毁、对象属性的调整、布局计算、文本的计算和排版、图片的格式转换和解码、图像的绘制(Core Graphics)

GPU:

顶点着色 图元装配 光栅化 片段着色 片段处理 纹理的渲染

在iOS中是双缓冲机制,有前帧缓存、后帧缓存

7. UIView绘制原理及异步绘制?

当我们调用[UIView setNeedsDisplay]这个方法时,其实并没有立即进行绘制工作,系统会立刻调用CALayer的同名方法,并且会在当前layer上打上一个标记,然后会在当前runloop将要结束的时候(下一个绘制周期)调用[CALayer display]这个方法,然后进入我们视图的真正绘制过程

在[CALayer display]这个方法的内部实现中会判断这个layer的delegate是否响应displayLayer:这个方法,如果响应这个方法,就会进入到系统绘制流程中;如果不响应这个方法,那么就会为我们提供异步绘制的入口

在异步绘制中,会先判断代理是否有实现协议的drawLayer:inContext方法,如果有实现,就会创建一个空的寄宿图和Core Craphics的绘制上下文,为绘制寄宿图做准备,然后会在一个合适的时候调用一个我们非常熟悉的方法[UIView drawRect:]来获取寄宿图内容。[UIView drawRect:]这个方法默认是什么都不做,系统给我们开这个口子是为了让我们可以再做一些其他的绘制工作

无论是哪个分支,最终都会由CALayer上传对应的backing store(寄宿图,也即位图bitmap)给GPU,然后就结束了本次绘制流程

8. 如何用Core Graph画圆?

9. iOS屏幕刷新机制?

10. 视频丢帧丢哪个好点?


转载:https://blog.csdn.net/wangqifei111/article/details/115705857
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场