经典回答
把自己放在一个面试官的角度,自己先实现一次这个 App ,然后自己总结一下你在这次实现中需要哪些能力、需要注意哪些事项。最后,再回过头来看,如果你是面试官,你希望面试者怎么回答才算是符合你的标准的?
实现案例
说一下我的思路。先把需求整理一下,“如何设计一个照片上传的 App”,虽然题目只有简单的一句话,但我们要将它细化一下来看。
即然能上传,那就一定能浏览对吧,不然不太好确定上传成功以否(弹出上传成功的提示,而没有跳到浏览的界面,显然是不太友好且也不符合用户的习惯)。
即然能浏览,那就要有一个列表或网格(如Gallery)的样式进行,那么需要一些滑动之类的动画效果。那么为了配得起这些效果,界面的UI设计就不能太糟糕吧?
即然有列表了,那么就得有专门查看一张图片详情的界面。
我们把这些主要的需求罗列一下:
- 可以浏览用户已经上传到服务器的图片;
- 可以查看某张图片的详情;
- 选择和编辑要上传的图片;(从本地或者摄像头获取图片)
- 工作线程上传一张图片到服务器;
陷性的需求:
- 框架的设计:UI和逻辑的分层设计,错误处理机制 (这点其实很重要)
- 性能要求:列表要滑动顺畅,不会出现OOM
- 应对需求变代的可扩展性:是否需要加入用户登录和注册?每张图片是否可以点赞或者添加评论?是否要加上保存和收藏图片功能?
相关的模块和涉及的技术点:
- Retrofit做网络请求和解析(Gson);
- Http文件上传的协义;
- 图片浏览的性能优化或者遇到的问题:如图片库的加载和ListView的展示配合,RecyclerView瀑布流展示页面跳动等问题;
- 框架的设计:UI和逻辑的分离问题;
- 无网或网络异常时的处理;
- …
你的朋友是不是也在准备面试呢?你可以把今天的题目分享给好友,或许你可以帮到他。