java、android经典题库

1.java中,String、StringBuffer和StringBuilder的区别;

    String指java编程语言的字符串常量;String的值是不可变的,对String类的任何改变都会返回一个新的String类对象;

   StringBuffer指java编译语言的字符串变量;即值是可变的,如果对StringBuffer对象进行改变,每次结果都会对StringBuffer对象进行操作,而不是生成新的对象;

  StringBuilder也是指java编译语言的字符串变量,它与StringBuffer的区别就在于StringBuffer是线程安全的,而StringBuilder是线程不安全的,在处理上StringBuilder的速度会较StringBuffer快一点。

 使用场景:

  不需要频繁的拼接字符串的时候,使用String类就可以了,如果需要频繁拼接字符串,推荐使用Stringbuilder;如果多个线程都需要对这个字符进行拼接操作,则要选择线程安全的StringBuffer。

2.线程安全的概念;

 线程安全是指在多线程的时候,多个线程都需要对一个对象进行修改时,增加加锁机制,当一个线程在修改数据的时候,其他线程不可访问数据,直到这个线程修改完数据后;

3.android activity生命周期的经典问题;

 a.activity在后台被系统回收时,应该在什么方法里进行数据保存;

    应该通过onSaveInstanceState方法进行UI的状态或者临时数据的保存;

    onSaveInstanceState通常在非正常结束的情况下(内存不足被回收),进行数据保存;onPause通常在正常结束的情况下(用户通过back键退出app),所以一些重要的数据最佳策略是在俩个方法中都进行保存,在正常和非正常的情况下都能保存这些重要的数据。

 b.onNewIntent的作用和调用机制;

      是指在多个入口去调用一个activity的时候,而activity设置的模式是singleTask,singleTop(在顶部的时候),singleTask时,因为activity不会重新创建实例,这个时候的intent传递的新的值就需要在onNewIntent中重新获取;

 c.activity与fragment的数据交互;

   fragment获取activity的数据或调用方法时,通常有通过getActivity方法获取activity的对象,然后通过该对象去调用方法或获取变量数据;其他获取数据的方法,handler,接口,广播;如果是在activity启动fragment的时候,可以通过setArgument(bundle)传递值到子fragment中;

   activity获取fragment的数据和调用方法时,官方推荐使用接口的方式,当然也能通过广播等方式实现,只是广播的开销会更大一些。

4.OSI参考模型的分为哪几层,每层的功能?

   由底层往上:

   1.物理层:物理层处于OSI的最底层,是整个开放系统的基础。物理层涉及通信信道上传输的原始比特流(bits),它的功能主要是为数据端设备提供传送数据的通路以及传输数据。
   2.数据链路层:数据链路层的主要任务是实现计算机网络中相邻节点之间的可靠传输,把原始的、有差错的物理传输线路加上数据链路协议以后,构成逻辑上可靠的数据链路。需要完成的功能有链路管理、成帧、差错控制以及流量控制等。其中成帧是对物理层的原始比特流进行界定,数据链路层也能够对帧的丢失进行处理。
   3.网络层:网络层涉及源主机节点到目的主机节点之间可靠的网络传输,它需要完成的功能主要包括路由选择、网络寻址、流量控制、拥塞控制、网络互连等。
   4.传输层:传输层起着承上启下的作用,涉及源端节点到目的端节点之间可靠的信息传输。传输层需要解决跨越网络连接的建立和释放,对底层不可靠的网络,建立连接时需要三次握手,释放连接时需要四次挥手。
   5.会话层:会话层的主要功能是负责应用程序之间建立、维持和中断会话,同时也提供对设备和结点之间的会话控制,协调系统和服务之间的交流,并通过提供单工、半双工和全双工3种不同的通信方式,使系统和服务之间有序地进行通信。
   6.表示层:表示层关心所传输数据信息的格式定义,其主要功能是把应用层提供的信息变换为能够共同理解的形式,提供字符代码、数据格式、控制信息格式、加密等的统一表示。
   7.应用层:应用层为OSI的最高层,是直接为应用进程提供服务的。其作用是在实现多个系统应用进程相互通信的同时,完成一系列业务处理所需的服务。

5.TCP协议和UDP协议的区别?
   TCP协议是传输控制协议,UDP协议是用户数据报协议,两者都是传输层的协议,主要区别在于前者是可靠的,面向连接的协议,后者是不可靠的,无连接的协议。其它的区别还有,TCP协议传输速度慢,UDP常用于一次性传输比较少量数据的网络应用。

6.HTML标准对HTTP协议的get,post请求约定有什么区别?

   1. GET使用URL或Cookie传参。而POST将数据放在BODY中。
   2. GET的URL会有长度上的限制,则POST的数据则可以非常大。
 3. POST比GET安全,因为数据在地址栏上不可见。

7.在浏览器中输入网址到显示出页面的整个过程?
   第一步:输出包含域名的网址 

   第二步:浏览器向DNS请求解析域名对应的IP地址 

   第三步:域名系统DNS解析出域名对应的IP地址 

   第四步:浏览器与该服务器建立TCP连接

   第五步:浏览器发送HTTP请求

   第六步:服务器通过HTTP响应把页面文件发送给浏览器 

   第七步:TCP连接释放 

   第八步:浏览器解释文件,并显示

8.线程和进程的区别。

   进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。狭隘的理解,一个程序就是一个进程。

    线程是轻量级的进程,颗粒度比进程更小,是程序执行流的最小单元。一个进程往往拥有多个线程。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值