关闭

Android笔试之JAVA笔试题总结

192人阅读 评论(0) 收藏 举报
分类:

1.静态块  main() 构造块 构造方法的执行顺序

首先看一道题

publicclassB
{
    publicstaticB t1 = newB();
    publicstaticB t2 = newB();
    {
        System.out.println("构造块");
    }
    static
    {
        System.out.println("静态块");
    }
    publicstaticvoidmain(String[] args)
    {
        B t = newB();
    }
}
这段代码打印的结果是:
构造块 构造块 静态块 构造块
分析:JVM加载类的时候,会先执行静态的代码块,静态的对象创建,当静态对象的创建和静态块同时出现时,会按照语句的先后顺序执行,这里先执行 t1 t2的构造,会调用2次构造块代码,然后执行静态块。当类加载完成后,执行main方法中的代码。
总结:静态块只会执行一次,构造块在对象每次创建的时候都会执行。
静态块>main>构造块>构造方法
2.异常的继承关系图


3.下列哪个选项是Java调试器?如果编译器返回程序代码的错误,可以用它对程序进行调试。
java.exe
javadoc.exe
jdb.exe
javaprof.exe

java,exe是java虚拟机
javadoc.exe用来制作java文档
jdb.exe是java的调试器
javaprof,exe是剖析工具
4.Java中用正则表达式截取字符串中第一个出现的英文左括号之前的字符串。比如:北京市(海淀区)(朝阳区)(西城区),截取结果为:北京市。正则表达式为()
".*?(?=\\()"

什么是正则表达式的贪婪与非贪婪匹配

  如:String str="abcaxc";

    Patter p="ab*c";

  贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。如上面使用模式p匹配字符串str,结果就是匹配到:abcaxc(ab*c)。

  非贪婪匹配:就是匹配到结果就好,就少的匹配字符。如上面使用模式p匹配字符串str,结果就是匹配到:abc(ab*c)。

编程中如何区分两种模式

  默认是贪婪模式;在量词后面直接加上一个问号?就是非贪婪模式。

  量词:{m,n}:m到n个

     *:任意多个

     +:一个到多个

     ?:0或一个

参考:http://www.cnblogs.com/xudong-bupt/p/3586889.html
4.类集合之间的继承实现关系图

5.有关Activity生命周期描述正确的是
设置Activity的android:screenOrientation="portrait"属性时,切换屏幕横纵方向时不会重新调用各个生命周期,只会执行onConfigurationChanged方法
未设置Activity的android:configChanges属性,切换屏幕横纵方向时会重新调用onCreate()方法
当再次启动某个launchMode设置为singletask的Activity,它的onNewIntent()方法会被触发
用户正在操作某个Activity,这时如果其他应用程序需要内存,系统会将用户当前操作的Activity强制关闭

A 设置Activity的android:screenOrientation="portrait"属性时,无法切换横竖屏,因此不但不会重新调用各个生命周期方法,而且onConfigurationChanged()方法也不会执行。
 
B 未设置Activity的android:configChanges属性,API上这样说"the activity will be restarted if any of these configuration changes happen in the system.";如何配置有改变,就会重启activity
 
C launchMode为singleTask的时候,通过Intent启到一个Activity, 如果系统已经存在一个实例,系统就会将请求发送到这个实例上,但这个时候,系统就不会再调用通常情况下我们处理请求数据的onCreate方法,而是调用onNewIntent方法
 
D 用户正在操作某个Activity,这时如果其他应用程序需要内存。 此时的Activity是Foreground process,应该按照Empty process,Background process,Service process,Visible process顺序kill,最后才是前台进程。
6.以下哪几种方式可用来实现线程间通知和唤醒:( ) 正确答案: A C   你的答案: A D (错误) Object.wait/notify/notifyAll ReentrantLock.wait/notify/notifyAll Condition.await/signal/signalAll Thread.wait/notify/notifyAll 解答:A. wait/notify/notifyAll是Object类的方法,而不是Thread类的。Thread类对线程执行控制的的方法是sleep。
7.遇到下列哪种情况时需要把进程移到前台?
进程正在运行一个与用户交互的Activity ,它的onResume()方法被调用
进程有一正在运行的BroadcastReceiver,它的onReceive()方法正在执行
进程有一个Service,并且在Service的某个回调函数(onCreate()、onStart()、或onDestroy())内有正在执行的代码
所有选项均正确
进程有一个Service,该Service对应的Activity正在与用户交互

8.使用SimpleAdapter作为 ListView的适配器,行布局中支持下列哪些组件?

正确答案: A C D

TextView
ProgressBar
CompoundButton
ImageView
根据SimpleAdapter的源码可以知道,使用SimpleAdapter作为适配器是,会按照如下顺序判断View:
 
1、该view是否实现checkable接口
 
2、该view是否是TextView
 
3、该view是否是ImageView
public abstract class CompoundButton extends Button implements Checkable
9.下列哪个说法是正确的:

正确答案: D   你的答案: A (错误)

ConcurrentHashMap使用synchronized关键字保证线程安全
HashMap实现了Collection接口
Arrays.asList方法返回java.uti.ArrayList对象
SimpleDateFormat对象是线程不安全的
ConcurrentHashMap使用segment来分段和管理锁,segment继承自ReentrantLock,因此ConcurrentHashMap使用ReentrantLock来保证线程安全。
10.JAVA中,下列语句哪一个正确()

正确答案: C   你的答案: B C (错误)

class中的constructor不可省略
constructor必须与class同名,但方法不能与class同名
constructor在一个对象被new时执行
一个class只能定义一个constructor

public class Main {

	public Main(){
		
	}
	public  void Main(){
		
	}
	public static void main(String[] args) {
		
	}
}

10.

packageWangyi;
classBase
{
    publicvoidmethod()
    {
        System.out.println("Base");
    
}
classSon extendsBase
{
    publicvoidmethod()
    {
        System.out.println("Son");
    }
     
    publicvoidmethodB()
    {
        System.out.println("SonB");
    }
}
publicclassTest01
{
    publicstaticvoidmain(String[] args)
    {
        Base base = newSon();
        base.method();
        base.methodB();
    }
}

正确答案: D   你的答案: B (错误)

Base SonB
Son SonB
Base Son SonB
编译不通过
11.

list是一个ArrayList的对象,哪个选项的代码填到//todo delete处,可以在Iterator遍历的过程中正确并安全的删除一个list中保存的对象?()
1
2
3
4
5
6
7
8
9
10
11
Iterator it = list.iterator();
intindex = 0;
while(it.hasNext())
{
    Object obj = it.next();
    if(needDelete(obj))  //needDelete返回boolean,决定是否要删除
    {
        //todo delete
    }
    index ++;
}
  • it.remove();
  • list.remove(obj);
  • list.remove(index);
  • list.remove(obj,index);
正确答案:A

list是一个ArrayList的对象,哪个选项的代码填到//todo delete处,可以在Iterator遍历的过程中正确并安全的删除一个list中保存的对象?()
1
2
3
4
5
6
7
8
9
10
11
Iterator it = list.iterator();
intindex = 0;
while(it.hasNext())
{
    Object obj = it.next();
    if(needDelete(obj))  //needDelete返回boolean,决定是否要删除
    {
        //todo delete
    }
    index ++;
}
12.程序运行结果:
publicvoidtest()
    {
        Byte a = 127;
        Byte b = 127;
        add(++a);
        System.out.print(a + " ");
        add(b);
        System.out.print(b + "");
    }
publicvoidadd(Byte b)
    {
        b = b++;
    }

-128 127.
解析:add()方法不是引用传递,因此只需要计算++a,因为Byte的值范围是在-128~+127之间,当127+1之后就相当于 0111 1111 加1变成
1000 0000 这个补码的二进制是 -128 。
13.有如下一段代码,请选择其运行结果()
1
2
3
4
5
6
7
8
9
10
publicclass StringDemo{
  privatestatic final String MESSAGE="taobao";
  publicstatic void main(String [] args) {
    String a ="tao"+"bao";
    String b="tao";
    String c="bao";
    System.out.println(a==MESSAGE);
    System.out.println((b+c)==MESSAGE);
  }
}
答案:点此链接


14.重写equals方法为什么要重写hashcode方法?
答:因为equals默认判断的是对象的地址,当然系统已经将某些个复合类型的equals方法重写了。我们自己重写的话
必须重写hashcode,因为equals说明了这两个对象的hashcode也必须相等。所以必须重写。


0
0
查看评论

java笔试+面试总结——web篇

1、forward和redirect的区别 1.从地址栏显示来说 forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址. redirect是服务端根据...
  • u014206526
  • u014206526
  • 2016-08-19 16:13
  • 3227

【面试笔试】Java常见面试笔试总结

Java常见面试笔试总结 1、有哪些数据类型 2、面向对象的语言特征 3、有几种访问机制? 4、面向对象的多态性在JAVA中怎么实现的 ? .......
  • jianyuerensheng
  • jianyuerensheng
  • 2016-04-22 13:59
  • 7283

Android 面试题总结之Android 基础(二)

Android 面试题总结之Android 基础(二) 上一篇面试总结,主要讲了Activity 和Intent ,这篇主要讲剩下的四大组件,面试中基础较多的就是四大组件,需要了解的知识点也很多。上一篇文章 Android 面试题总结之Android 基础(一) Service Serv...
  • vfush
  • vfush
  • 2016-05-23 15:55
  • 8326

Android笔试和面试常见题目(四)

自己整理的一些Android常见面试题,欢迎各位参考。 有错误或有更好的题目答案可以联系修改。31、两个Activity之间跳转必定会执行的是那几个方法 1.一般情况下比如说有两个activity,分别叫A,B,当在A里面启动B组件的时候, A会调用 onPause()方法,然后 B 调用 onC...
  • wen0801
  • wen0801
  • 2017-11-28 16:39
  • 175

Android Java笔试题(带大部分答案)

请将试题答在答题卡上,不要在试卷中做任何标记 一、 基础题: 1. 请写出输出结果 public class Test1 { public static void changeStr(String str){ str=”welcome”; } public static voi...
  • XSL1990
  • XSL1990
  • 2013-11-09 00:13
  • 8193

Java 笔试:常见题目总结

1. 下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d";答案:题目中的第一行代码被编译器在编译时优化后,相当于直接定义了一个”abcd”的字符串,所以,上面的代码应该只创建了一个Stri...
  • u014136472
  • u014136472
  • 2015-10-25 14:37
  • 665

Java笔试面试题整理第四波

1、HashMap、HashTable、ConcurrentHashMap的区别     【参考:http://www.cnblogs.com/carbs/archive/2012/07/04/2576995.html】     (关于HashMap的分析,在...
  • shakespeare001
  • shakespeare001
  • 2016-04-28 15:40
  • 10085

Java和Android笔试题

3. 笔试题之Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io 的语法,虚拟机方面的语法,其他。有些题来自网上搜集整理,有些题来自传智播客学员面试后的反馈,说真的,少数一些网上的面试题,我真怀疑其是否还有存在价值! ...
  • dengqichao2012
  • dengqichao2012
  • 2016-05-23 15:23
  • 2053

Android开发面试经——2.常见Android基础笔试题

正值跳槽的热季,整理一下Android面试中最常考的笔试题,为下次找工作时做好充分准备,这是Android的基础部分: 1、Android四大组件是什么?作用以及应用场景? Android 的四大组件分别是是Activity,Service,BroadcastReceiver和ContentPro...
  • finddreams
  • finddreams
  • 2015-03-12 15:04
  • 10395

Java笔试面试题整理第一波

1、Java变量 Java中主要有如下几种类型的变量 局部变量类变量(静态变量)-- 属于类成员变量(非静态变量)-- 属于对象 2、关于枚举 package com.scu.lly; public class EnumTest { ...
  • shakespeare001
  • shakespeare001
  • 2016-04-14 15:04
  • 13206
    个人资料
    • 访问:10161次
    • 积分:332
    • 等级:
    • 排名:千里之外
    • 原创:24篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章分类