比较好的一份面试题

一、单项选择题:


1.Java中Short数据类型的长度是( )bits 
A.2 B.8 C.16 D.32 
2.下列代码中,哪个选项对应代码不会产生错误 ( ) 
A.String A = “hello”; 
 String B = “world”; 
 String C = A+B; 
B.String A = “hello world”; 
 String B = “world”; 
 String C = A-B; 
C.String A = “hello world;” 
 String B = A.toUpperCase(); 
 String C = A+B[3]; 
D.String A = “abc”; 
 String B = new String(“def”); 
 String C = A*B; 
3.以下选项中哪个不是java的原始类型(primitive type) ( ) 
A.int B.Boolean C.short D.float 
4.main方法的返回类型是 ( ) 
A.void B.int C.Boolean D.float 
5.关于垃圾收集的哪些叙述是对的 ( ) 
A.程序开发者必须自己创建一个线程进行内存释放的工作。 
B.垃圾收集允许程序开发者明确指定并立即释放该内存 
C.垃圾收集将检查并释放不再使用的内存 
D.垃圾收集能够在期望的时间释放被java对象使用的内存 
6.以下代码段,在内存中创建了几个对象 ( ) 
String A=“hi”; String B=“java”; String C = new String(A+B) 
A.4 B.5 C.6 D.7 
7.方法resume()负责恢复哪些线程的执行 ( ) 
A.通过调用stop()方法而停止的线程 
B.通过调用sleep()方法而停止运行的线程 
C.通过调用wait()方法而停止运行的线程 
D.通过调用suspend()方法而停止运行的线程 
8.下面的哪些答案可以正确表示一个十六进制数字10 ( ) 
A.0xA B.0x16 C.0A D.016 
9.有关线程的哪些叙述是对的 ( ) 
A.一旦一个线程被创建,它就立即开始运行 
B.使用start()方法可以使一个线程成为可运行的,但是它不一定立即开始运行 
C.当一个线程因为抢先机制而停止运行,它被放在可运行队列的前面 
D.一个线程可能因为不同的原因停止并进入挂起状态 
10.如下代码: 
1) 
2) { success = connect(); 
3) if (success==-1) { 
4) throw new TimedOutException(); 
5) } 
6) } 
若TimedOutExcetion并非RuntimException的子类,第一行代码method方法
签名该选用以下哪个选项 ( ) 
A.public void method() 
B.public void method() throws Exception 
C.public void method() throw TimedOutException 
D.public throw TimedOutException void method() 
11.下面哪行代码会产生编译错误 ( ) 
1) public void modify() { 
2) int i, j, k; 
3) i = 100; 
4) while ( i > 0 ) { 
5} j = i * 2; 
6) System.out.println (" The value of j is " + j ); 
7) k = k + 1; 
8) i--; 
9) } 
10} } 
A. 4 B. 6 C. 7 D. 没有错误 
12.Android应用中对一些资源以及状态的操作保存,最好是保存在生命周期的哪个函数中
进行 ( ) 
A.onPause() B.onCreate() C.onResume() D.onStart() 
13.Android应用中下列属于Intent的作用的是 ( ) 
A.实现应用程序间的数据共享 
B.是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为
切换页面而消失 
C.可以实现界面间的切换,可以包含动作和动作数据,连接四大组件的纽带 
D.处理一个应用程序整体性的工作 
14.我们都知道Hanlder是线程与Activity通信的桥梁,如果线程处理不当,你的机器就会
变得越慢,那么线程销毁的方法是 ( ) 
A.onDestroy() B.onClear() C.onFinish() D.onStop() 
15.下面关于Android dvm的进程和Linux的进程,应用程序的进程说法正确的是 ( ) 
A. DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,不一定
拥有一个独立的Dalvik虚拟机实例.而每一个DVM都是在Linux中的一个进程,所以说可
以认为是同一个概念 
B. DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,不一定
拥有一个独立的Dalvik虚拟机实例.而每一个DVM不一定都是在Linux中的一个进程,
所以说不是一个概念 
C. DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有
一个独立的Dalvik虚拟机实例.而每一个DVM不一定都是在Linux中的一个进程,所以说
不是一个概念 
D. DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有
一个独立的 Dalvik虚拟机实例.而每一个DVM都是在Linux中的一个进程,所以说可以认
为是同一个概念 
16.Android项目工程下面的assets目录的作用是什么 ( ) 
A.放置应用到的图片资源。 
B.主要放置多媒体等数据文件 
C.放置字符串,颜色,数组等常量数据 
D.放置一些与UI相应的布局文件,都是xml文件 
17.下面在AndroidManifest.xml文件中注册BroadcastReceiver方式正确的 ( ) 
A. <receiver android:name="NewBroad"> 
<intent-filter> 
<action android:name="android.provider.action.NewBroad"/> 
</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"/> 
</receiver> 
D.<intent-filter> 
<receiver android:name="NewBroad"> 
<action android:name="android.provider.action.NewBroad"/> 
</receiver> 
</intent-filter> 
18.关于Android进程,以下描述错误的是 ( ) 
A.当一个程序第一次启动的时候,Android会启动一个LINUX进程和一个主线程。默
认的情况下,所有该程序的组件都将在该进程和线程中运行 
B.前台进程是用户当前正在使用的进程 
C.通过startService()启动的进程虽然对用户不是直接可见的,但是他们执行了用户非
常关注的任务,所以不会被系统进行回收 
D.运行着一个对用户不可见的activity(调用过 onStop() 方法).这些进程对用户体验
没有直接的影响,可以在服务进程、可见进程、前台进程需要内存的时候回收 
19.以下哪个不是Android的五种默认布局 ( ) 
A.FrameLayout B.LinearLayout 
C.TableLayout D.BorderLayout 
20.以下JSON数据能够被正确解析的是 ( ) 
A.[{“1”:1;“abc”:123},{1:1}] 
B.[{“2”:222,”3”:true,”4”:”789”}] 
C.{[“age”:”15”, gender:”male”]} 
D.{“age”:15; gender:male} 


 
二、判断题:


1.Java的Integer是有符号的数据类型 ( ) 
2.equals()方法判断的是对象的引用(类似C语言的句柄) ( ) 
3.代码中明确调用了System.gc()方法后,JVM在执行过程中会立即进行垃圾回收,进行内
存垃圾清理 ( ) 
4.对原始数据类型例如boolean,byte的变量的声明不会为该变量分配内存空间 ( ) 
5.Android应用中ContenValues的key必须是String,value必须是原始类型 ( ) 
6.Android的res/raw文件是原封不动的存储到设备上不会转换为二进制的格式 ( ) 
7.Android应用的四大组件分别是Activity、Service、ContentProvider 和 
BroadcastReciver ( ) 
8.Android的 nine patch 图片中四条边都是可拉伸区域 ( ) 
9.Android和JAVA一样,其代码无法调用底层的C/C++编写的代码库,所有内容必须通
过虚拟机编译执行 ( ) 
10.Android的系统架构中分为AP和BP两类处理器,分别进行Android应用的后台应用
处理和前台界面应用处理 ( ) 
 


三、问答题: 


1.请描述JVM中基本的内存结构模型,以及相应的作用 
2.请用Java代码编写一个冒泡排序法的method
3.请用Java代码编写单例模式(Singleton)的实现代码
4.请描述Android的底层架构情况及其作用
5.请描述以下行为情况下Activity的生命周期情况
 1) 父Activity A 启动子Activity B 
 2) 运行中Activity的横竖屏切换 
 3) 用户按下Home键 
6.Fragment的主要作用是什么,有哪些好处?
7.现有一Android App想实现10秒的progressBar的处理,请根据如下代码内容进行相
应代码段补齐,以完成所需功能。


public class ProgressBarStu extends Activity { 
private ProgressBar progressBar = null; 
protected void onCreate(BundlesavedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.progressbar); 
 //请填写此处内容 
 } 





四、附加题:


1.Android代码中,广播注册有几种方法,有什么区别,相应优先级情况如何(请试写相
应代码片段)。
2.简要描述Android ListView 中getViewType的作用和使用场景。
3.请描述一下android App 扫描二维码后实现用户登录并跳转到特定页面的实现过程(可
以使用时序图或流程图,并描述具体实现方法)。
4.请描述一下HTTP协议中关于服务器返回状态码的分类和表示的含义
String a="hello world"; //在java中有一个常量池,当创建String 类型的引用变量给它赋值时,java会到它的常量池中找"hello world"是不是在常量池中已存在。如果已经存在则返回这个常量池中的"hello world"的地址(在java中叫引用)给变量a 。注意a并不是一个对象,而是一个引用类型的变量。它里面存的实际上是一个地址值,而这个值是指向一个字符串对象的。在程序中凡是以"hello world"这种常量似的形式给出的都被放在常量池中。 String b=new String("hello world"); //这种用new关键字定义的字符串,是在堆中分配空间的。而分配空间就是由new去完成的,由new去决定分配多大空间,并对空间初始化为字符串"hello world" 返回其在堆上的地址。 通过上面的原理,可以做如下实验: String a="hello world"; String b="hello world"; String c=new String("hello world"); String d=new String("hello world"); if(a==b) System.out.println("a==b"); else System.out.println("a!=b"); if(c==d) System.out.println("c==d"); else System.out.println("c!=d"); //输出结果: a==b c!=d 为什么会出现上面的情况呢? String a="hello world"; String b="hello world"; 通过上面的讲解可以知道,a和b都是指向常量池的同一个常量字符串"hello world"的,因此它们返回的地址是相同的。a和b都是引用类型,相当于c语言里面的指针。java里面没有指针的概念,但是实际上引用变量里面放的确实是地址值,只是java为了安全不允许我们对想c语言中的那样对指针进行操作(如++ 、--)等。这样就有效的防止了指针在内存中的游离。 而对于 String c=new String("hello world"); String d=new String("hello world"); 来说是不相等的,他们是有new在堆中开辟了两块内存空间,返回的地址当然是不相等的了。如果我们要比较这两个字符串的内容怎么办呢?可以用下面的语句: if(c.equals(d)) System.out.println("c==d"); else System.out.println("c!=d"); //输出 c==d
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值