您的位置:首页 > 其它

阿里笔试后的总结--15年移动客户端开发在线笔试

2015-04-03 10:30 369 查看
前二十道选择题设计到了基本的数据结构,有概率题,智力题,还有数学题,java的堆栈问题,c++中的指针等等,这些都是基础题,先不说这些题目了,重点分析最后的三道附加题。

题目一:

倒数第三道题: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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: