我正准备进行技术面试,并想知道如何在不涉及不必要的细节的情况下,简单地向采访者简要介绍设计以下程序的方法
1. Program that lets people play tic tac toe with each other over the internet?
2. A suitable data structure for a photo editor or text editor? Why?
3. Implementing code to operate the elevators?
4. Implementing the rendering engine of a web browser?
我可以拿出以下内容:
该计划主要有两个部分。一个处理板显示的渲染。另一个是实际的引擎,包含找到获胜动作,AI,游戏完成等的方法。然后,将有与网络相关的代码。
字符串的链接列表似乎适用于文本编辑器,因为主要元素是文本和相关操作。链接的对象列表是否适合照片编辑器?
这再次涉及电梯的显示渲染以及资源同步。
关于如何处理这个问题,没有太多线索。
足够了吗?在解决这些问题时,我是否遗漏了一些重要细节。
答案 0 :(得分:4)
照片编辑器非常有趣。
您需要考虑照片编辑器的要求:
我建议一次在内存中保持较低分辨率和位深度(如mipmap)的多个缩放级别,以便在不同的缩放级别进行高效操作,将更改编码为基本图像的补丁,而不是直接编辑基础(即图层)每个变化单独)。这些补丁可以编码为一个网格,只有绘制的正方形,分配给它们的内存。编辑可以在渲染为像素之前编码为动作(例如工具,鼠标按下,移动,鼠标向上) - 这允许在当前mipmap级别上作为补丁进行廉价绘制并快速显示,而后台线程创建补丁在其他mipmap级别。