去哪网Android开发面试题

1.sleep()与wait()函数的区别?

   1)sleep()是Thread类的静态函数,wait()是Object对象的函数;

   2)最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法;

   3)wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在
      任何地方使用
   synchronized(x){
      x.notify()
     //或者wait()
   }

  4)sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常

2.String是最基本的数据类型么?

不是,基本数据类型包括byte、int、char、long、float、double、boolean和short。String是对象

3.try{ }里面有一个return语句,那么紧跟在try后面的finally里面的code会不会被执行?什么时候被执行,return前还是return后?

会,return前执行

4.数据连接池的工作机制是什么?

J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。

调用:客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为 忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。
释放:
当使用的池连接调用完成后,池驱动程序将此连接表记为空闲, 其他调用就可以使用这个连接。

http://blog.csdn.net/anglekill/article/details/6276257

5.List,Map,Set三个数据接口,存取元素时,各有什么特点?

list:存储:可重复的
        访问:可以for循环,foreach循环,iterator迭代器 迭代。
set:存储:无序的 不重复的
        访问:可以foreach循环,iterator迭代器 迭代
map:存储:存储的是一对一对的映射 ”key=value“,key值 是无序,不重复的。value值可重复
        访问:可以map中key值转为为set存储,然后迭代这个set,用map.get(key)获取value
                    也可以 转换为entry对象 用迭代器迭代

6.用最有效的方法,算出2乘以8等于几

System.out.println(2<<3);

7.Handler的工作原理

8.Handler、Message、Message Queue、Looper的关系

9.写一个Singeton出来

---http://blog.csdn.net/kaitlyn2011/article/details/32313573

10.简述syncronized和java.util.concurrent.locks.Lock的异同

11.列出你所知道的排序算法

  插入排序,选择排序,快速排序,冒泡排序

12.servlet的init方法和service方法的区别

13.请简述几种Java的设计模式,在Android中哪种设计模式用的比较多

Factory模式,builder模式,singleton模式,prototype模式

proxy模式,适配器模式。。。。用的较多的是builder和适配器模式(个人愚见)

14.http和Socket链接的区别

  http是基于tcp/ip协议的应用,它最大的特点是,客户端每建立一次链接都需要服务器端的响应,在请求结束后,会主动释放链接,从建立链接到关闭链接的过程称为一次连接。因为每次请求结束后都会释放连接,所以http连接也叫“短连接”。为了保持长时间的连接,通常的做法是每隔一段时间,客户端都向服务器发起一次“保持连接”的请求,服务器收到连接后作出响应,表示知道客户端在线。若服务器长时间接不到客户端的请求,则认为客户端下线;若客户端长时间收不到服务器 的响应,则认为网络已断开。

    建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket ,另一个运行于服务器端,称为ServerSocket 。套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。

由于通常情况下Socket连接就是TCP连接,因此Socket连接一旦建立,通信双方即可开始相互发送数据内容,直到双方连接断开。

而HTTP连接使用的是“请求—响应”的方式,不仅在请求时需要先建立连接,而且需要客户端向服务器发出请求后,服务器端才能回复数据。

很多情况下,需要服务器端主动向客户端推送数据,保持客户端与服务器数据的实时与同步。此时若双方建立的是Socket连接,服务器就可以直接将数据传送给客户端;若双方建立的是HTTP连接,则服务器需要等到客户端发送一次请求后才能将数据传回给客户端,因此,客户端定时向服务器端发送连接请求,不仅可以保持在线,同时也是在“询问”服务器是否有新的数据,如果有就将数据传给客户端。

15.socket服务器和客户端建立链接的步骤

套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。

服务器监听:服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态,等待客户端的连接请求。

客户端请求:指客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。

连接确认:当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,双方就正式建立连接。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。

16.什么是nio

    就是非阻塞IO 采用多路分发方式
举个例子吧,你服务器做一个聊天室,按照以前的阻塞式IO,你必须为每个连接创建一个线程 因为当你调用如 in.read(buf)时,线程会阻塞在这里。而采用nio,只要注册了事件,它内部采用反应模式,当有IO事件发生时,再调度它,而不用等待在那里

17.你对Android中缓存的理解

-------引用http://www.cnblogs.com/qianxudetianxia/archive/2012/02/20/2112128.html

  1)适用环境:网络应用;数据不需要实时更新;

  2)缓存管理:通过时间的设置来判断是否读取缓存或者重新下载;

  3)缓存机制的优点:缓解服务器压力,提高客户端响应速度(用户体验更好),提供一定程度的离线浏览功能,减少数据加载出错的几率;

  4)缓存方法:数据库法(下载数据库文件后,保存下载的URL、路径、下载时间、过期时间)文件法(读取文件的上次修改时间File.lastModified,比较过期时间);

  5)文件缓存注意:不同类型文件缓存时间不同(图片等不变的文件可以永久,配置文件需要更新);不同环境下缓存时间不同(wifi下短,移动网络下长,离线时只能读取缓存);

  6)提供刷新按钮

18.Activity的生命周期


19.ListView中某一个item数据变化时如何更新




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值