一、不一样编译环境下的long型长度不一致,使用long long类型解决。面试
日前遇到一个long型数据由C++传递到Android环境中发生数据错误的问题,缘由网络
在于不一样环境下long型数据的字节长度不一。架构
如下为不一样环境下对应的long型的字节长度框架
Lua脚本环境数值类型 8字节异步
32位系统VC下 4字节 函数
Android GCC下 4字节工具
Java 8字节布局
个人流程是Lua->C++->Jni Java,因此在中间丢失了4个字节的数据致使了奇怪的结果。性能
最终将C++代码中的 long定义为 long long,这样的写法能够同时经过VC以及GCC的编译,并得到测试
正确结果。
其实也能够直接使用double类型。
二、编写测试代码,建立测试
编写测试代码挺花时间,不过能够在系统正式运行前就进行测试,能够
提早解决隐藏的不少问题。
三、安卓定时推送的测试技巧
在Android中测试某个时刻,好比Alarm定时器服务的启动,能够经过设定系统时间来测试。
若是你须要严格根据系统时间来测试程序逻辑,又不想等待很长(如一个小时)的时间来观察的话,
可使用安卓系统上相似加速齿轮的工具来加速时钟周期(推荐烧饼加速器)
四、一套自定义UI须要具有的重要东西
在UI布局的设计过程当中,支持锚点对于提高工做效率和提升屏幕适配是有帮助的。
五、配置参数独立在一个配置文件中,便于查找、修改和维护
六、对于一些不须要实时排序或者计算但又耗费时间的任务。能够经过设置一个脏位标识,在一个定时周期
后检查脏位进行处理,提升性能。
七、网络数据显示的用户体验设计
显示网络数据的界面是先获取数据再打开,仍是先打开再获取数据?
用户体验上来讲,玩家但愿点击以后立刻有响应,立刻显示界面加loading动画再加载数据是大多数APP或者程序的实现选择。
前者间接把界面显示变成了异步,很差管理(好比要立刻对界面作一些操做或对象保存)。后者界面上是同步的,好管理,能
立刻获取到界面的UI进行管理。
八、MVC 在界面开发中的应用
Controller是根节点,Model 和 View 是其两个平行的子节点。
View只显示界面,把全部的按钮等用户交互事件经过事件机制或者回调函数传递到Controller中。
Model负责主要逻辑,好比网络读取、文件操做等,提供接口供Controller调用。
Controller做为View和Model通讯的中介,负责一些界面加载逻辑,经过View的回调访问Model,再将Model返回的数据调用对应
的View显示出来。同时它做为根节点的一个特性是,它能够和其余Controller进行交互,而View和Model是不行的,保持了他们的可重用性。
(PS:昨天给面试官问这不是也是一棵跟三层结构同样的垂直结构吗,当时脑壳不清晰没跟他说是由于Controller能够进行交互的缘由,因此
C是根节点,不一样于常见的三层架构)
九、若是一个列表,前边是可变长文本,右边是一个按钮,那么能够选择让按钮在父框架中靠右边框对齐,不须要根据变长文本的宽度来更改
它本身的位置。编码方便且运行更加高效。
十、在编码的过程当中先列好功能入口点,会避免粗心遗漏掉的地方致使产生潜在的BUG;