Android面试知识
来源:互联网 发布:苹果平板装windows 编辑:程序博客网 时间:2024/04/29 06:07
2016-03-14,第一次开始准备面试,虽然之前面试过三家但是都是水水的,尤其是我的表现,这次面试的cvte的Android开发,所以我要好好准备下,无奈是后天,而且明天早上还有点事情,好了开始准备吧。
方法:从网上截取几个曾到那里面试过的人的记录,然后根据记录先对可能出现的问题进行回答,最后整理下个人的自我介绍,尤其是最近的毕业设计。
tcp,udp都是OSI的传输层,不同的是:
tcp是面向字节,可靠的传输协议,而udp是面向报文的不可靠的传输协议,;
tcp面向字节的,所以应用层和TCP的交互是一次一个数据块,而tcp有缓冲块,会根据数据块大小而进行调整,比如数据块大了则分开,小了则储存等多了发送;
udp是面向报文,指应用层每次传递下来一个个的报文,udp不经过任何修改直接交付网络层,由网络层负责调整;
tcp是可靠的协议,主要是因为tcp需要三次来建立连接,四次老释放连接,并且tcp有拥塞控制和滑动窗口。常用tcp协议的有,FTP,HTTP,SMTP;
udp不需要任何连接就可以直接发送;
采用tcp和udp分别实现socket有以下差别:
二、java的四种引用类型:
1、强引用,如通过new实例化一个对象a,引用该对象a则称为强引用;当对象a不在被引用时才有可以被JVM回收,否则当内存不足时,程序会选择报OOM而不是回收该对象;
2、软引用,创建软引用对象,目的是为了告诉JVM当内存不足时哪些对象可以被暂时回收;
3、弱引用,该对象可以被JVM随时回收,;HashMap例子HaspMap键值可以存放一个对象,当该对象为强引用,且多次被添加到HashMap的时候,就会过多的暂用内存,所这个时候可以采用WeakHashMap来解决这个问题;
4、虚引用:
1、单例:永远只有一个实例化的对象,单例的类如下:
public class instance
{
private instance myInstance;
private instance()
{ };
public instance getInstance()
{
if(myInstance==null)
{
myInstance=newinstance();//实例化对象
}
return myInstance
}
}//在单线程情况下,只会有一个实例
//若要保证单例安全,则要加上锁:
public class instance
{
private instance myInstance;
private instance()
{ };
public **synchronized** instance getInstance()
{
if(myInstance==null)
{
myInstance=newinstance();//实例化对象
}
return myInstance
}
}
2、工厂模式
四、二分查找代码
public boolean sort(int[]a,int result)
{
int start=0;
int end=a.length;
while(start<=end)
{
int middle=(end-start)/2;
if(a[middle]==result)
{retrun true;}
else
if(a[middle]>result)
{
end=middle-1;
}
else
{
start=middle+1;
}
}
return flase;
}
五、斐波那契数列:(统计手机流量的时候方法类似)
递推定义:
Fib(n)=0;当n=0;
Fib(n)=1;当n=1;
Fib(n)=Fib(n-1)+Fib(n-2),当n>1
利用该递归的时间复杂度为2的n次方;
改成循环:
int Fib(int n)
{
int one,two,now;
if(n==0||n==1)
{
return n;
}
else
{
one =0;
two=1;
for(int i=2;i<n;i++)
{
current=one+two;
one=two;
two=current;
}
return current;
}
}
六、多线程同步:(监测中对数据库的互斥操作)
线程同步,指的是线间协调合作,因为多线程的本意是提高程序并发性从而提高CPU利用率,当多个线程对同一资源进行操作,使得结果和预期结果不同,便会出现线程不安全的问题。解决的办法是:加上锁,即线程互斥,对方法或者类加上锁,使得当该资源被某个线程引用时,其他使用线只等待;或者使用通知的方式,利用PV操作和信号量,典型的是消费者生产模式;
七、抽象类和接口
抽象类:可以有抽象和非抽象的方法属性;
public stract class animal
{
public abstrart void cry();
public abstract void eat();
pulblic abstract void speak();
}
接口:特殊抽象类,只能有常量和抽象方法组成;
public interface animal
{
public static final type=100;
public abstract void speak();
}
两者都是为指定实现某一功能而做的方法,但不关心具体的操作,比如说对数据库增删改查操作,可以用接口;
八、Java反射机制
指的是:在运行的过程中,对于任何一个类都可以获得该类的属性和方法,对于任何一个对象都可以调用其属性和方法;这种动态获取信息和调用对象的方式,就是Jva的反射机制;
九、StringBuffer和StringBuilder比较
1. 在执行速度方面的比较:StringBuilder > StringBuffer
2. StringBuffer与StringBuilder,他们是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的,不像String一样创建一些对象进行操作,所以速度就快了。
3. StringBuilder:线程非安全的
StringBuffer:线程安全的
当我们在字符串缓冲去被多个线程使用是,JVM不能保证StringBuilder的操作是安全的,虽然他的速度最快,但是可以保证StringBuffer是可以正确操作的。当然大多数情况下就是我们是在单线程下进行的操作,所以大多数情况下是建议用StringBuilder而不用StringBuffer的,就是速度的原因。
0 0
- Android面试知识分类
- android 面试小知识
- Android面试知识
- android 面试知识总结
- android面试相关知识
- Android面试知识树
- Android面试知识整理
- Android构建面试知识
- Android面试知识整理
- Android 面试知识集2
- android面试---JVM必备知识
- Android面试知识(1)
- Android面试知识(2)
- Android面试知识(3)
- Android面试知识(4)
- android 内存优化面试知识
- android 面试知识个人积累1
- android 面试知识个人积累2
- Android之Adapter用法总结
- 机器学习实战教程(第一章 准备工作)
- HDUACM2049-错排
- iOS-Block和变量的内存管理(二)
- Wooden Sticks(贪心)
- Android面试知识
- java内部类详解
- stl之空间配置器Allocator
- 安卓开发常用方法集合
- maven 仓库
- JDBC事务处理
- 取火柴--三峡大学蓝桥杯训练题目
- 【机房重构】——七层登录
- Win8.1设置登录小键盘锁定