Android面试题一

面试题大赛题库

 

题目1: 请介绍下Android中常用的五种布局?

答案:Linearlayout,RelativeLayout,Tablelayout,Gridlayout,Framelayout

题目2:启用Service有几种方式,分别对应于何种停用Service方式?

答案:

开启方式startservicebindservice

停止方式stopservice,unbindservice

题目3: AIDL的全称是什么?

答案:Android InterfaceDefinition Languageandroid接口描述语言)

题目4: ANR的全称是什么?

答案:Appcation  Not  Response(应用程序无响应)

题目5: AIDL是用于什么通信?

答案:远程服务通信

题目6: android 的核心组件是?

答案:activityservicebroadcast,contentprovide

题目7:关于res/raw目录说法正确的是(a)

A这里的文件是原封不动的存储到设备上不会转换为二进制的格式

B、 这里的文件是原封不动的存储到设备上会转换为二进制的格式

C、 这里的文件最终以二进制的格式存储到指定的包中

D、 这里的文件最终不会以二进制的格式存储到指定的包中

题目8: Intent意图传递数据时, 能不能传递实体类?

题目9: Intent意图传递数据时, 传递实体类需不需要序列化?

需要

题目10:当手机界面横竖屏切换的时候,可以通过哪个属性控制?

答案: android:configChanges

题目11: Activity的生命周期有哪些?

答案:onCreateonStartonResumeonPasueonStoponDestoryonRestart

题目12: Service的生命周期有哪些?

答案:onCreateonStartCommandonbindonUnbindonDestory

题目13:当启动一个activity,完全显示后,接着点击home键,回到桌面,最后再点击该应用程序,完全显示该界面,请问整个过程会执行哪些方法,请说出执行顺序。

Oncreate—onstart—onresume—onpause—onstop—onrestart—onstart—onresume

题目14:当启动一个activityA,点击该activity的button控件,弹出一个对话框形式的activityB,点击返回键,退出activityB,回到activityA。请问activityA,activityB在这个过程中的执行顺序。

答案:activityAoncreate—onstart—onresume—onpasue  activityB:oncreate—onstart—onresume—onpasue—onstop

ActivityAonResume   ActivityB:ondestory

题目15:在Android SDK中,存在两个OnClickListener实现点击事件的接口类,请问分别用于哪两种控件的点击事件?

答案:基础控件以及对话框按钮的点击事件

题目16:关于Button控件的点击事件,请问有多少种方式可以实现Button控件的点击事件?分别是哪几种?

答案:5种。Onclick属性实现,匿名内部类,内部类,外部类,activity本身实现

题目17: simplerAdapter的父类是什么,它的父类是接口还是抽象类?

BaseAdapter,抽象类

题目18: SpinnerAdapter的父类是什么,它的父类是接口还是抽象类?

Adapter,接口

题目19:在TabHost组件中,有几种方式实现TabHost选项卡功能?而其MainActivity分别可以继承至什么类

3种,分别继承至Activity,TabactivityActivitygroup;

题目20:在TabHost组件中,其MainActivity继承至activity能不能实现多个activity的切换?为什么?

不能,需要实现加载多个activity切换,需要继承之activityGroup

题目21:在Broadcastreceiver(广播接收者)中,请问有几种注册方式?

两种,分别为静态注册和动态注册

题目22:在Broadcastreceiver(广播接收者)使用中,必须要重写的方法是哪个方法?

onReceiver()

题目23:请说出convertView的作用?

答案:用于listView列表缓存

题目24:请说出layoutInfalte的作用?

答案:用于加载布局文件

题目25: Android中常见的解析方式有哪几种

答案:json,pull,Sax,dom

题目26: Dom解析xml文件的优缺点是什么?

答案:以树状结构方式解析xml文件,便于理解,解析大数据速度缓慢,需事先加载整个文档

题目27: SAX解析xml文件的优点是什么?

答案:不需事先加载整个文档,解析速度快

题目28:在android中使用选项菜单需要重写哪个方法?

答案: onCreateOptionsMenu() onOptionsItemSelected()

题目29:在android中使用SQLiteOpenHelper这个辅助类时,需要重写哪两个方法?

答案:oncreate(第一次创建数据库时执行)onUpgrade(版本更新时,执行)

 题目30: Android项目工程下面的assets目录的作用是什么

A、放置应用到的图片资源。
B、主要放置多媒体等数据文件
C、放置字符串,颜色,数组等常量数据
D、放置一些与UI相应的布局文件,都是xml文件
题目31:关于res/raw目录说法正确的是()

A这里的文件是原封不动的存储到设备上不会转换为二进制的格式

这里的文件是原封不动的存储到设备上会转换为二进制的格式

C、这里的文件最终以二进制的格式存储到指定的包中

D、这里的文件最终不会以二进制的格式存储到指定的包中

题目32: java.io包中主要用于对对象(Object)的读写的流是哪两个?

objectOutputStreamObjectInputStream

题目33: Android中常见的数据存储方式有哪几种?

SharedPreferencesfile SQLiteDatabaseContentPrivoder,网络存储

题目34:从一个activityA启动新的activityB时,需要使用什么方法启动新的activity?

StartActivity();

题目35:从一个activityA启动新的activityB,并且需要activityB回调数据给activityA时,需要使用什么方法启动新的activity?

StartActivityForResult();

题目36:请问Android系统结构分为哪几个部分?

 LinuxKernel(Linux内核)

Libraries(系统运行库或者是c/c++核心库)

Application  Framework(开发框架包)

Applications  (核心应用程序)
题目37:如何安全退出已调用多个Activity的应用程序?有几种常见方式?

广播退出,appcation退出

题目38:下列选项哪个不是Activity启动的方法?A

a.goToActivity 

b. startActivity

c. startActivityFromChild

d. startActivityForResult

 

题目39:解析 xml 的方式有(CD)

a. 字符器类型

b. 流方式

c. dom 

d. SAX 

 

题目40:下列哪一个不属于Activity的生命周期方法?A

a. onInit( ) 

b. onStart( )

c. onStop( )

d. onPause( )

 

题目41:对于XML布局文件中的视图控件,layout_width属性的属性值不可以是什么?d

a. match_parent

b. fill_parent

c. wrap_content

d.match_content 


题目42:在Android中,设置文本字体大小的单位是什么?

Sp

题目43:在Android中,设置控件大小的单位是什么?

Dp

题目44:下列哪一个选项不属于AdapterView类的子选项?d

a. ListView

b. Spinner

c. GridView

d.ScrollView 

 

题目45:下列哪一款移动设备搭载的是Android平台?b

a. NOKIA手机 

b. 小米手机

c. iPhone手机

d. iPad

 

题目46:在手机开发中常用的数据库是?a

a. SQLite 

b. Oracle

c. Sql Server

d. MySQL

 

题目47: android 是如何组织 Activity 的?a

a. 以栈的方式组织Activity 

b. 以队列的方式组织 Activity

c. 以树形方式组织 Activity

d. 以链式方式组织 Activity

 

题目48:删除记录的数据库语句是什么?

Delete  from 表名 where 删除条件

题目49:修改记录的数据库语句是什么?

Update 表名 set 修改的属性值 where 修改的属性条件

 

题目50: android 中下列属于Intent的作用的是?d

a. 处理一个应用程序整体性的工作

b. 是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失

c. 实现应用程序间的数据共享

d. 可以实现界面间的切换,可以包含动作和动作数据,连接四大组件的纽带 

题目51: ScrollView 中,可以直接包含多少个组件?c

a. 3个

b. 2个

c. 1 

d. 无数个

 

题目52:结构化程序设计所规定的三种基本控制结构是 (  C  )

A.输入、处理、输出                    B.树形、网形、环形

C.顺序、选择、循环                     D.主程序、子程序、函数

题目53:下列哪一个关键字用于实现接口来定义类? (  B  )

A、extends        Bimplements  C、abstract                    D、interface

题目54:下面哪一个操作符的优先级最高?  (  D  )

       A、&&                               B、||

       C、!                             D( )

题目55:编译Java程序的命令是:                         (  B  )

       A、appletviewer               Bjavac

       C、java                      D、javadoc

题目56:编译Java源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为(  B  )。

       A、.byte                      B.class

       C、.html                      D、.exe

题目57:在Java中用什么关键字修饰的方法可以直接通过类名来调用?(  A  )

  Astatic         B、final       C、private              D、void

 

题目58: Activity在内存中是以哪种方式存储?

栈的方式存储

题目59:栈的存取顺序是怎样的?

先进后出,后进先出

题目60: Android中设置启动模式的属性是?

Android:lauchmode

题目61: Android中启动模式有哪几种?简单叙述一下。

standradsingletopsingletasksingleinstance

题目62:下列语句中,不正确的是:(c)

A.int $e,a,b=10;(整型赋值给整型)

B.char c,d=’a’;(字符型赋值)

C.float e=0.0d;(双精度型不能转换成单精度型,转换需要强制类型转换)

D.double c=0.0f;(单精度型可以赋值给双精度型)

题目63:下面哪一个是JAVA最基本元素:(D)

接口

方法

对象(java是面向对象编程)

 

题目64:下面关于抽象类的理解,错误的是:(A)

A.构造方法可以声明为抽象类型

B.抽象方法必须被子类的方法覆盖

C. 不允许实现抽象方法

D.方法申明中,static和abstract不能同时存在

 

题目65: java面向对象的特征有哪些方面

答案:1.继承2.多态 3.封装

 

题目66: Java的基本数据类型有哪些

答案:基本数据类型包括byteintcharlongfloatdoublebooleanshort

题目67:在数据库中,创建表的语句是什么?

Create table 表名 (字段名……)

题目68:查询记录的数据库语句是什么?

Select * from 表名 where 查询条件

 

题目69:构造器Constructor是否可被override

答:构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading

 

题目70: string类是否能被继承

答:String类是final类故不可以继承

 

题目71: service是否在mainthread中执行, service里面是否能执行耗时的操作?

默认情况,如果没有显示的指定service所运行的进程,Serviceactivity是运行在当前app所在进程的mainthread(UI主线程)里面  

service里面不能执行耗时的操作(网络请求,拷贝数据库,大文件)

题目72:拥有service的进程是否具有高优先级?

题目73:我们常见的http通信有哪几种?

Httpurlconnectionhttpclient

题目74: http通信常用的请求方式有哪几种?

Getpost

题目75: Get请求与post的请求有什么区别?

Get请求向后台传输数据是拼接在url地址上,因为url地址长度有限,所以只能携带少量的数据信息,而且不安全,对用户明文显示。

Post请求向后台传输数据安全,而且能传输大量的数据信息

题目76: http协议是基于UDP协议还是基于TCP协议?

Tcp协议

题目77:广播有哪几种?

有序广播和无序广播

题目78:在数据库中,创建表的语句是什么?

Create table 表名 (字段名……)

题目79:查询记录的数据库语句是什么?

Select * from 表名 where 查询条件

 

题目80: UI线程能不能执行耗时操作?

不能

题目81: fragment碎片是否需要注册?

不需要

题目82: &和&&的区别。

&是位运算符,表示按位与运算,&&是逻辑运算符

题目83: Java有没有goto?

java中的保留字,现在没有在java中使用

题目84:接口是否可继承接口?

可以

题目85:抽象类是否可实现(implements)接口?

可以

题目86:抽象类是否可继承实体类(concrete class)?

可以,但是前提是实体类必须有构造函数

题目87: abstract的method是否可同时是static

不能

题目88: UML是什么?

标准建模语言UML。用例图,静态图(包括类图、对象图和包图),行为图,交互图(顺序图,合作图),实现图。

题目89:在数据结构中,有哪些常见的结构?

链表结构,树状结构,网状结构

题目90:完全二叉树是不是二叉树?

题目91:说出至少三种java设计模式?

工厂模式,单例模式,建造模式,原型模式,迭代器模式,121,命令模式等等

 

题目92:什么叫C/S?

应用程序与服务端通讯结构框架

题目93:什么叫B/s?

网页程序与服务端通讯结构框架

题目94: abstract class Name {

private String name;

public abstract boolean isStupidName(String name) {}

}

这段代码是否有错?错在哪?

错,抽象方法以分号结束,并且没有大括号。

题目95: public class Something {

void doSomething () {

private String s = "";

int l = s.length();

}

}

有错吗?错在哪?

错误,局部变量不能带有修饰符

题目96: abstract class Something {

private abstract String doSomething ();

}

这好像没什么错吧?

抽象方法不能修饰成私有

题目97: public class Something {

public int addOne(final int x) {

return ++x;

}

}

是否有错,错在哪?

答案: 错。int x被修饰成final,意味着x不能在addOnemethod中被修改。

题目98: class Something {

int i;

public void doSomething() {

System.out.println("i = " + i);

}}

正确

题目99:插入记录的数据库语句是什么?

Insert  into  表名(字段名)  values(字段值);

题目100:进行模糊查询,所要用到的关键字是什么?

Like

题目101:配置jdk环境变量,需要配置哪几个变量?

答案:JAVA_HOME, CALSSPATH, PATH;

题目102:Android:layout_gravity是控件相对于容器的位置还是内容相对于控件的位置?

控件相对于容器的位置

题目103:Android:padding是控件与控件的间距大小还是内容相对于控件的间距大小?

内容相对于控件的间距大小

题目104:单选按钮实现单选功能,需要使用哪个控件包含?

RadioGroup

题目105:补间动画中有几种动画效果?

透明,缩放,平移,旋转

题目106:Sharedpreference是以何种方式存储数据的?

键值对的形式

题目107:获得操作文件存储的文件输入输出流时,可以申明为哪几种操作模式?

Mode_private,

mode_append,

mode_world_readable,

mode_world_writeable

题目108:下面在AndroidManifest.xml文件中注册BroadcastReceiver方式正确的(a)

A、<receiver android:name="NewBroad">

           <intent-filter>

                     <actionandroid:name="android.provider.action.NewBroad"/>

               <action>

                </intent-filter>

           </receiver>

     B、<receiver android:name="NewBroad">

                <intent-filter>

                  android:name="android.provider.action.NewBroad"/>

                </intent-filter>

           </receiver>

     C、<receiver android:name="NewBroad">

                  <action 

                 android:name="android.provider.action.NewBroad"/>

            <action>

           </receiver>

     D、<intent-filter>

        <receiver android:name="NewBroad">

                     <action>

                  android:name="android.provider.action.NewBroad"/>

               <action>

                </receiver>

</intent-filter>

题目109:android动画分类有几种?区别是?

Tween 补间动画   Frame 帧动画


 

 

题目110:下列哪些语句关于内存回收的说明是正确的?(B

A、 程序员必须创建一个线程来释放内存

  B、 内存回收程序负责释放无用内存

  C、 内存回收程序允许程序员直接释放内存

  D、 内存回收程序可以在指定的时间释放内存对象

题目111: Math.round(11.5)等于多少(). Math.round(-11.5)等于多少:

12  -11

题目112:属于Runtime Exception异常的有

ArithmeticException IllegalArgumentException

NullPointerException BufferUnderflowException

题目113:对一些资源以及状态的操作保存,最好是保存在生命周期的哪个函数中进行

onStart()

题目114:android 关于service生命周期的onCreate()和onStart()说法正确的是(ad)(多选题)

A、当第一次启动的时候先后调用onCreate()和onStart()方法

B、当第一次启动的时候只会调用onCreate()方法

C、如果service已经启动,将先后调用onCreate()和onStart()方法

D、如果service已经启动,只会执行onStart()方法,不在执行onCreate()方法


 

 

题目115:请介绍下ContentProvider是如何实现数据共享的

创建一个属于你自己的Content provider或者将你的数据添加到一个已经存在的Content provider中,前提是有相同数据类型并且有写入Content provider的权限。

题目116:请解释下在单线程模型中Message、Handler、Message Queue、Looper之间的关系

andriod提供了 Handler Looper 来满足线程间的通信。Handler先进先出原则。Looper类用来管理特定线程内对象之间的消息交换。

1)Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的MessageQueue(消息队列)

2)Handler: 你可以构造Handler对象来与Looper沟通,以便push新消息到MessageQueue;或者接收LooperMessage Queue取出)所送来的消息。

3) Message Queue(消息队列):用来存放线程放入的消息。

4)线程:UI thread 通常就是main thread,而Android启动程序时会替它建立一个MessageQueue

题目117:请解释下Android程序运行时权限与文件系统权限的区别

运行时权限Dalvik( android授权)

文件系统 linux 内核授权

题目118:IntentService有何优点?

1 Acitivity的进程,当处理Intent的时候,会产生一个对应的Service

2Android的进程处理器现在会尽可能的不kill掉你

3、非常容易使用

题目119:如何将SQLite数据库(dictionary.db文件)与apk文件一起发布?

解答:可以将dictionary.db文件复制到EclipseAndroid工程中的res aw目录中。所有在res aw目录中的文件不会被压缩,这样可以直接提取该目录中的文件。

题目120:如何将打开res raw目录中的数据库文件

解答:在Android中不能直接打开res aw目录中的数据库文件,而需要在程序第一次启动时将该文件复制到手机内存或SD卡的某个目录中,然后再打开该数据库文件。复制的基本方法是使用getResources().openRawResource方法获得res aw目录中资源的InputStream对象,然后将该InputStream对象中的数据写入其他的目录中相应文件中。在AndroidSDK中可以使用SQLiteDatabase.openOrCreateDatabase方法来打开任意目录中的SQLite数据库文件。

题目121:Android引入广播机制的用意?

a:MVC的角度考虑(应用程序内)

 其实回答这个问题的时候还可以这样问,android为什么要有那4大组件,现在的移动开发模型基本上也是照搬的web那一套MVC架构,只不过是改了点嫁妆而已。android的四大组件本质上就是为了实现移动或者说嵌入式设备上的MVC架构,它们之间有时候是一种相互依存的关系,有时候又是一种补充关系,引入广播机制可以方便几大组件的信息和数据交互。

b:程序间互通消息(例如在自己的应用程序内监听系统来电)

c:效率上(参考UDP的广播协议在局域网的方便性)

d:设计模式上(反转控制的一种应用,类似监听者模式)

题目122:Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念

DVMdalivk的虚拟机。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。而每一个DVM都是在Linux 中的一个进程,所以说可以认为是同一个概念。

题目123:sim卡的EF 文件有何作用

sim卡的文件系统有自己规范,主要是为了和手机通讯,sim本身可以有自己的操作系统,EF就是作存储并和手机通讯用的

题目124:什么是嵌入式实时操作系统, Android 操作系统属于实时操作系统吗?

嵌入式实时操作系统是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的嵌入式操作系统。主要用于工业控制、军事设备、航空航天等领域对系统的响应时间有苛刻的要求,这就需要使用实时系统。又可分为软实时和硬实时两种,而android是基于linux内核的,因此属于软实时。

题目125:java中如何引用本地语言

可以用JNIjava native interface  java 本地接口)接口


 

 

题目126:谈谈Android的IPC(进程间通信)机制

IPC是内部进程通信的简称,是共享"命名管道"的资源。Android中的IPC机制是为了让ActivityService之间可以随时的进行交互,故在Android中该机制,只适用于ActivityService之间的通信,类似于远程方法调用,类似于C/S模式的访问。通过定义AIDL接口文件来定义IPC接口。Servier端实现IPC接口,Client端调用IPC接口本地代理。

题目127:NDK是什么

NDK是一些列工具的集合,NDK提供了一系列的工具,帮助开发者迅速的开发C/C++的动态库,并能自动将sojava 应用打成apk包。

NDK集成了交叉编译器,并提供了相应的mk文件和隔离cpu、平台等的差异,开发人员只需简单的修改mk文件就可以创建出so

题目128:Switch能否用string做参数?

Java 7  之前, switch 只能支持byte,short,char,int 或者其对应的封装类以及 Enum 类型。在JAVA 7,String 支持被加上了。  

题目129:equals与==的区别:

==是判断两个变量或实例是不是指向同一个内存空间

equals是判断两个变量或实例所指向的内存空间的值是不是相同


 

 

题目130:Object有哪些公用方法?

1、方法equals测试的是两个对象是否相等

2、方法clone进行对象拷贝

3、方法getClass返回和当前对象相关的Class对象

4、方法notify,notifyall,wait都是用来对给定对象进行线程同步的

题目131:Java的四种引用,强弱软虚,用到的场景

1、强引用:如果一个对象具有强引用,它就不会被垃圾回收器回收。即使当前内存空间不足,JVM也不会回收它,而是抛出 OutOfMemoryError 错误,使程序异常终止。如果想中断强引用和某个对象之间的关联,可以显式地将引用赋值为null,这样一来的话,JVM在合适的时间就会回收该对象

2、软引用:在使用软引用时,如果内存的空间足够,软引用就能继续被使用,而不会被垃圾回收器回收,只有在内存不足时,软引用才会被垃圾回收器回收。

3、弱引用:具有弱引用的对象拥有的生命周期更短暂。因为当 JVM 进行垃圾回收,一旦发现弱引用对象,无论当前内存空间是否充足,都会将弱引用回收。不过由于垃圾回收器是一个优先级较低的线程,所以并不一定能迅速发现弱引用对象

4、虚引用:顾名思义,就是形同虚设,如果一个对象仅持有虚引用,那么它相当于没有引用,在任何时候都可能被垃圾回收器回收。

使用场景:

利用软引用和弱引用解决OOM问题:用一个HashMap来保存图片的路径和相应图片对象关联的软引用之间的映射关系,在内存不足时,JVM会自动回收这些缓存图片对象所占用的空间,从而有效地避免了OOM的问题

通过软可及对象重获方法实现Java对象的高速缓存:比如我们创建了一Employee的类,如果每次需要查询一个雇员的信息。哪怕是几秒中之前刚刚查询过的,都要重新构建一个实例,这是需要消耗很多时间的。我们可以通过软引用和 HashMap 的结合,先是保存引用方面:以软引用的方式对一个Employee对象的实例进行引用并保存该引用到HashMap 上,key 为此雇员的 idvalue为这个对象的软引用,另一方面是取出引用,缓存中是否有该Employee实例的软引用,如果有,从软引用中取得。如果没有软引用,或者从软引用中得到的实例是null,重新构建一个实例,并保存对这个新建实例的软引用

题目132:Hashcode的作用,与 equal 有什么区别

同样用于鉴定2个对象是否相等的,java集合中有 list set 两类,其中 set不允许元素重复实现,那个这个不允许重复实现的方法,如果用 equal 去比较的话,如果存在1000个元素,你 new 一个新的元素出来,需要去调用1000 equal 去逐个和他们比较是否是同一个对象,这样会大大降低效率。hashcode实际上是返回对象的存储地址,如果这个位置上没有元素,就把元素直接存储在上面,如果这个位置上已经存在元素,这个时候才去调用equal方法与新元素进行比较,相同的话就不存了,散列到其他地址上


 

题目133:String、StringBuffer与StringBuilder的区别

1String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象

2StringBufferStringBuilder底层是 char[]数组实现的

3StringBuffer是线程安全的,而StringBuilder是线程不安全的

题目134:Override和Overload的含义和区别

Overload顾名思义是重新加载,它可以表现类的多态性,可以是函数里面可以有相同的函数名但是参数名、返回值、类型不能相同;或者说可以改变参数、类型、返回值但是函数名字依然不变。

就是ride(重写)的意思,在子类继承父类的时候子类中可以定义某方法与其父类有相同的名称和参数,当子类在调用这一函数时自动调用子类的方法,而父类相当于被覆盖(重写)了

题目135:抽象类和接口的区别

一个类只能继承单个类,但是可以实现多个接口

接口强调特定功能的实现,而抽象类强调所属关系

抽象类中的所有方法并不一定要是抽象的,你可以选择在抽象类中实现一些基本的方法。而接口要求所有的方法都必须是抽象的


 

题目136:wait()和sleep()的区别

1sleep来自Thread类,和wait来自Object

2、调用sleep()方法的过程中,线程不会释放对象锁。而调用 wait 方法线程会释放对象锁

3sleep睡眠后不出让系统资源,wait让出系统资源其他线程可以占用CPU

4sleep(milliseconds)需要指定一个睡眠时间,时间一到会自动唤醒

题目137:JAVA 中堆和栈的区别,说下java 的内存机制

1、基本数据类型比变量和对象的引用都是在栈分配的

2、堆内存用来存放由new创建的对象和数组

3、类变量(static修饰的变量),程序在一加载的时候就在堆中为类变量分配内存,堆中的内存地址存放在栈中

4、实例变量:当你使用java关键字new的时候,系统在堆中开辟并不一定是连续的空间分配给变量,是根据零散的堆内存地址,通过哈希算法换算为一长串数字以表征这个变量在堆中的"物理位置”,实例变量的生命周期--当实例变量的引用丢失后,将被GC(垃圾回收器)列入可回收“名单”中,但并不是马上就释放堆中内存

5、局部变量: 由声明在某方法,或某代码段里(比如for循环),执行到它的时候在栈中开辟内存,当局部变量一但脱离作用域,内存立即释放

题目138:JAVA多态的实现原理

1、抽象的来讲,多态的意思就是同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)

2、实现的原理是动态绑定,程序调用的方法在运行期才动态绑定,追溯源码可以发现,JVM 通过参数的自动转型来找到合适的办法。

题目139:JAVA 垃圾回收机制

1、什么是垃圾回收机:释放那些不再持有引用的对象的内存

2、怎么判断一个对象是否需要收集?

     ·引用计数(最简单古老的方法):指将资源(可以是对象、内存或磁盘空间等等)的被引用次数保存起来,当被引用次数变为零时就将其释放的过程

     ·对象引用遍历(现在大多数 jvm 使用的方法):对象引用遍历从一组对象开始,沿着整个对象图上的每条链接,递归确定可到达(reachable)的对象。如果某对象不能从这些根对象的一个(至少一个)到达,则将它作为垃圾收集

3、几种垃圾回收机制

     ·标记回收法:遍历对象图并且记录可到达的对象,以便删除不可到达的对象,一般使用单线程工作并且可能产生内存碎片

     ·标记-压缩回收法:前期与第一种方法相同,只是多了一步,将所有的存活对象压缩到内存的一端,这样内存碎片就可以合成一大块可再利用的内存区域,提高了内存利用率

     ·复制回收法:把现有内存空间分成两部分,gc运行时,它把可到达对象复制到另一半空间,再清空正在使用的空间的全部对象。这种方法适用于短生存期的对象,持续复制长生存期的对象则导致效率降低。

     ·分代回收发:把内存空间分为两个或者多个域,如年轻代和老年代,年轻代的特点是对象会很快被回收,因此在年轻代使用效率比较高的算法。当一个对象经过几次回收后依然存活,对象就会被放入称为老年的内存空间,老年代则采取标记-压缩算法

题目140:ArrayList、LinkedList、Vector的区别

ArrayList Vector底层是采用数组方式存储数据,Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差,LinkedList使用双向链表实现存储,随机存取比较慢

题目141:HashMap和 HashTable 的区别:

1HashTable比较老,是基于Dictionary 类实现的,HashTable 则是基于 Map接口实现的

2HashTable 是线程安全的, HashMap 则是线程不安全的

3HashMap可以让你将空值作为一个表的条目的keyvalue

题目142:谈谈 HTTP 中Get 和 Post 方法的区别?

POST的安全性要比GET的安全性高。比如:通过GET提交数据,用户名和密码将明文出现在URL上,因为(1)登录页面有可能被浏览器缓存,(2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,除此之外,使用GET提交数据还可能会造成Cross-site request forgery攻击

题目143:TCP的三次握手过程,四次挥手过程?

第一次握手:

客户端发送一个TCPSYN标志位置1的包指明客户打算连接的服务器的端口,以及初始序号X,保存在包头的序列号(Sequence Number)字段里。

第二次握手:

服务器发回确认包(ACK)应答。即SYN标志位和ACK标志位均为1同时,将确认序号(Acknowledgement Number)设置为客户的I S N1.X+1

第三次握手:

客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN+1

 

四次挥手:

1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送。

2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。

3)服务器B关闭与客户端A的连接,发送一个FIN给客户端A

4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值