阿里笔试后的总结--15年移动客户端开发在线笔试
2015-04-03 10:30
369 查看
前二十道选择题设计到了基本的数据结构,有概率题,智力题,还有数学题,java的堆栈问题,c++中的指针等等,这些都是基础题,先不说这些题目了,重点分析最后的三道附加题。
题目一:
倒数第三道题:app启动慢,如何优化。
倒数第二道题:android碎片化是一个问题,app开发无法覆盖所有的平台,有的只适配主流机型,有的约束开发使用的API,有的干脆只适配ios平台,请结合用户体验和研发成本做出你的对策。
最后一道:任选一个平台,android,wp,ios分析app卡顿的原因,并针对屏幕切换卡顿和滑动卡顿给出典型的优化思路
以上的题目应该是常见的,但是由于自己没有经常的总结所以感觉答的不好,这里总结一下,为其他公司的笔试做一下准备。(。。。。我甚至都直接放弃挣扎阿里了)
好了,废话少说,先来解决第一题,堆栈
二是用于动态分配的内存空间。C/C++定义了4个内存区间:代码区,全局变量与静态变量区,局部变量区即栈区,动态存储区,即堆(heap)区或自由存储区(free store)。
栈,stack,也是两个意义。一是一类数据结构,后进先出的线性表,但是随着元素的增长向低地址生长。而堆是向高地址生长的。二是上述的局部变量区。
(1)在c/c++中。静态区:保存自动全局变量和static 变量(包括static 全局和局部变量)。静态区的内容在总个程序的生命周期内都存在,由编译器在编译的时候分配。
栈:保存局部变量。栈上的内容只在函数的范围内存在,当函数运行结束,这些内容也会自动被销毁。其特点是效率高,但空间大小有限。
堆:由malloc 系列函数或new 操作符分配的内存。其生命周期由free 或delete 决定。
网上找的一个例子:
二:Java中(只谈内存分配,数据结构不赘述)
栈中存放基本类型,int,float等和对象的引用变量,堆中存放new出的对象和数组。在产生新的对象时,在堆中分配空间存放对象的实例,在栈中分配空间存放该对象的引用变量,即指针。堆内存的分配由虚拟机来管理。当对象或者数组在没有引用变量指向他们时成为垃圾,并在不确定的时间被垃圾回收器回收。而回收之前,“垃圾”仍然占据着内存。
其中,堆中保存对象实例并不保存对象方法,只是保存对象实例的属性类型,属性值,对象本身的类型标记。方法是指令,保存在stack中。
关于String对象以及包装类在堆栈中的内存分配情况,有一片文章写得很好。
http://blog.csdn.net/songjie521/article/details/3368386
To be continued…
参考文章:
http://baike.baidu.com/view/536145.htm#2
http://www.cnblogs.com/whgw/archive/2011/09/29/2194997.html
题目一:
倒数第三道题:app启动慢,如何优化。
倒数第二道题:android碎片化是一个问题,app开发无法覆盖所有的平台,有的只适配主流机型,有的约束开发使用的API,有的干脆只适配ios平台,请结合用户体验和研发成本做出你的对策。
最后一道:任选一个平台,android,wp,ios分析app卡顿的原因,并针对屏幕切换卡顿和滑动卡顿给出典型的优化思路
以上的题目应该是常见的,但是由于自己没有经常的总结所以感觉答的不好,这里总结一下,为其他公司的笔试做一下准备。(。。。。我甚至都直接放弃挣扎阿里了)
好了,废话少说,先来解决第一题,堆栈
一:堆栈
堆,heap,有两个意义。一是一类数据结构的统称。逻辑定义为: n个元素序列{k1,k2…ki…kn},当且仅当满足下列关系时称之为堆:(ki <= k2i,ki <= k2i+1)或者(ki >= k2i,ki >= k2i+1), (i = 1,2,3,4…n/2)。二是用于动态分配的内存空间。C/C++定义了4个内存区间:代码区,全局变量与静态变量区,局部变量区即栈区,动态存储区,即堆(heap)区或自由存储区(free store)。
栈,stack,也是两个意义。一是一类数据结构,后进先出的线性表,但是随着元素的增长向低地址生长。而堆是向高地址生长的。二是上述的局部变量区。
(1)在c/c++中。静态区:保存自动全局变量和static 变量(包括static 全局和局部变量)。静态区的内容在总个程序的生命周期内都存在,由编译器在编译的时候分配。
栈:保存局部变量。栈上的内容只在函数的范围内存在,当函数运行结束,这些内容也会自动被销毁。其特点是效率高,但空间大小有限。
堆:由malloc 系列函数或new 操作符分配的内存。其生命周期由free 或delete 决定。
网上找的一个例子:
[code]//main.cpp **#include<iostream.h> **#include<string.h>**** //#include<malloc.h> //malloc的头文件可以为#include<malloc.h>也可以为#include<stdlib.h> **#include<stdlib.h>** int a = 0; 全局初始化区 char *p1; 全局未初始化区 main() { const char* m = "123456"; int b; 栈 char s[] = "abc"; 栈 char *p2; 栈 char *p3 = "123456"; 123456在常量区,p3在栈上。 static int c =0; 全局(静态)初始化区 p1 = (char *)malloc(10); p2 = (char *)malloc(20); 分配得来得10和20字节的区域就在堆区。 strcpy(p1, "123456"); 123456放在常量区,编译器可能会将它与p3所指向的"123456"优化成一个地方。 cout<<(m == p3?1:0)<<endl;//结果为1 cout<<(p1 == p3?1:0)<<endl;//结果为0 cout<<p1<<" "<<p3<<" "<<endl;//结果为123456 123456 }
二:Java中(只谈内存分配,数据结构不赘述)
栈中存放基本类型,int,float等和对象的引用变量,堆中存放new出的对象和数组。在产生新的对象时,在堆中分配空间存放对象的实例,在栈中分配空间存放该对象的引用变量,即指针。堆内存的分配由虚拟机来管理。当对象或者数组在没有引用变量指向他们时成为垃圾,并在不确定的时间被垃圾回收器回收。而回收之前,“垃圾”仍然占据着内存。
其中,堆中保存对象实例并不保存对象方法,只是保存对象实例的属性类型,属性值,对象本身的类型标记。方法是指令,保存在stack中。
关于String对象以及包装类在堆栈中的内存分配情况,有一片文章写得很好。
http://blog.csdn.net/songjie521/article/details/3368386
To be continued…
参考文章:
http://baike.baidu.com/view/536145.htm#2
http://www.cnblogs.com/whgw/archive/2011/09/29/2194997.html
相关文章推荐
- 阿里开发测试工程师在线笔试
- 腾讯笔试--移动客户端软件开发工程师
- 腾讯2015春招pc客户端开发练习卷/腾讯2016研发工程师在线模拟笔试题
- 阿里客户端在线笔试
- 2014uc笔试总结——软件开发(客户端)
- 阿里巴巴2015秋季校招(客户端开发工程师岗位)在线笔试题
- 2016年腾讯校招在线笔试UI开发总结
- 2015 阿里校招 Web前端开发 在线笔试总结
- 腾讯研发工程师B笔试卷/腾讯2015春招移动客户端开发练习卷
- 51CTO移动客户端可以在线下载安装啦 - 51CTO博客开发 - 51CTO技术博客
- 移动平台前端开发总结(针对iphone,Android等手机)
- 移动互联网服务客户端开发技巧
- 【.Net Compact Framework开发】 使用 Visual Studio 对移动项目进行Unit Testing的方法总结
- HTML5:网易博客Android客户端 — native+html5移动应用混合开发实践
- 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之60---BREW 在线 工具
- tsingtao项目移动开发总结
- 在线考试系统开发进行时——未完成的总结
- 创享 共赢 戴尔2010在线游戏开发与CPU及GPU研讨会归来【总结】【图】
- Android客户端 — native+html5移动应用混合开发
- 阿里_一道备受关注的前端开发笔试题