`

大唐电信JAVA笔试题面试题-解答

 
阅读更多

转载:http://my.oschina.net/chape/blog/164762

 

目录[-]

1.    描述一下public,protected,private,final,native,synchronized  ,volatile,transient 关键字在Java中的用法?

1
2
3
4
5
类内部       package内        子类          其他
public            允许         允许             允许         允许
protected         允许         允许             允许         不允许
default           允许         允许             不允许       不允许
private           允许         不允许           不允许       不允许

被定义为final的类不允许出现子类,不能被覆盖,字段值不允许被修改

native与操作平台相关,定义时并不实现其方法,方法的实现被一个外部的库实现

synchronized对于一个静态的方法,在执行之前jvm把它所在的类锁定;对于一个非静态类的方法,执行前把某个特定对象实例锁定。

volatile异步线程可以访问字段时,于这个成员变量不能保存它的私有拷贝,而应直接与共享成员变量交互,volatile屏蔽掉了VM中必要的代码优化。所以在效率上比较低,因此一定在必要时才使用此关键字。 

transient,字段不是对象持久状态(序列化)的一部分,不应该把字段和对象一起串起

2.    Abstract class 和Interface 有什么区别?

1.抽象类可以有构造方法,接口中不能有构造方法。

2.抽象类中可以有普通成员变量,接口中没有普通成员变量

3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。

4. 抽象类中的抽象方法的访问类型可以是public,protected和默认类型,但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。

5. 抽象类中可以包含静态方法,接口中不能包含静态方法

6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型,不过在 interface中一般不定义数据成员

7. 一个类可以实现多个接口,但只能继承一个抽象类

3.    Vector 和 ArrayList 有什么区别?HashTable 和 HashMap有什么区别?

Vector和ArrayList一样是数组实现的,二者的差别在于:Vector是线程安全的,所以性能上不如ArrayList

1.HashTable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步HashMap这个区别就像Vector和ArrayList一样。
2.HashTable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以)。
3.HashTable有一个contains(Object value),功能和containsValue(Object value)功能一样。
4.HashTable使用Enumeration,HashMap使用Iterator
5.HashTable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。
6.哈希值的使用不同,HashTable直接使用对象的hashCode,代码是这样的:

1
2
int hash = key.hashCode();
int index = (hash & 0x7FFFFFFF) % tab.length;

而HashMap重新计算hash值,而且用与代替求模: 

4.    Java集合中的Iterator起什么作用?

     iterator迭代器,对集合进行遍历,有两个比较常用的方法:.hasNext();和.next();前者返回boolean后者返回结果。使用 Iterator 的好处在于可以使用相同方式去遍历集合(List 是有序集合)中元素,而不用考虑集合类的内部实现(只要它实现了 java.lang.Iterable 接口)。如果使用 Iterator 来遍历集合中元素,一旦不再使用 List 转而使用 TreeSet 来组织数据,那遍历元素的代码不用做任何修改,如果使用 for 来遍历,那所有遍历此集合的算法都得做相应调整。

5.    Java中创建一个对象有哪几种方法,区别是什么?

1.用new语句创建对象,这是最常用的创建对象的方式。
2.运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。
3.调用对象的clone()方法。
4.运用反序列化手段,调用java.io.ObjectInputStream对象的readObject()方法(对象的序列化与反序列化)。

6.    多线程有几种表示方法,都是什么?同步有几种实现方法,都是什么?

线程实现方法:
(1)继承Thread类,重写run函数,
 开启线程:对象.start() //启动线程,run函数运行

(2)实现Runnable接口,重写run函数

(3)实现Callable接口,重写call函数

        Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务。   Callable和Runnable有几点不同:

        1.Callable规定的方法是call(),而Runnable规定的方法是run(). 
        2.Callable的任务执行后可返回值,而Runnable的任务是不能返回值的
        3.call()方法可抛出异常,而run()方法是不能抛出异常的。 

        4.运行Callable任务可拿到一个Future对象,Future表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并检索计算的结果.通过Future对象可了解任务执行情况,可取消任务的执行,还可获取任务执行的结果

同步方法:

1  wait方法:
        该方法属于Object的方法,wait方法的作用是使得当前调用wait方法所在部分(代码块)的线程停止执行,并释放当前获得的调用wait所在的代码块的锁,并在其他线程调用notify或者notifyAll方法时恢复到竞争锁状态(一旦获得锁就恢复执行)。
        调用wait方法需要注意几点:
        第一点:wait被调用的时候必须在拥有锁(即synchronized修饰的)的代码块中。
        第二点:恢复执行后,从wait的下一条语句开始执行,因而wait方法总是应当在while循环中调用,以免出现恢复执行后继续执行的条件不满足却继续执行的情况。
        第三点:若wait方法参数中带时间,则除了notify和notifyAll被调用能激活处于wait状态(等待状态)的线程进入锁竞争外,在其他线程中interrupt它或者参数时间到了之后,该线程也将被激活到竞争状态。
        第四点:wait方法被调用的线程必须获得之前执行到wait时释放掉的锁重新获得才能够恢复执行。

2  notify方法和notifyAll方法:
        notify方法通知调用了wait方法,但是尚未激活的一个线程进入线程调度队列(即进入锁竞争),注意不是立即执行。并且具体是哪一个线程不能保证。另外一点就是被唤醒的这个线程一定是在等待wait所释放的锁。
        notifyAll方法则唤醒所有调用了wait方法,尚未激活的进程进入竞争队列。

3 synchronized关键字:
        第一点:synchronized用来标识一个普通方法时,表示一个线程要执行该方法,必须取得该方法所在的对象的锁,this
        第二点:synchronized用来标识一个静态方法时,表示一个线程要执行该方法,必须获得该方法所在的类的类锁,class
        第三点:synchronized修饰一个代码块。类似这样:synchronized(obj) { //code.... }。表示一个线程要执行该代码块,必须获得obj的锁。这样做的目的是减小锁的粒度,保证当不同块所需的锁不冲突时不用对整个对象加锁。利用零长度的byte数组对象做obj非常经济。

7.    描述一下Java中的异常机制,什么是Checked Exception, Unchecked Exception?

     

      当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullPointerException。另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。

1、任何的异常都是Throwable类,并且在它之下包含两个字类Error和Exception。RuntimeException是Exception的子类。
2、 除了Error与RuntimeException,其他剩下的异常都是你需要关心的,而这些异常类统称为Checked Exception,至于Error与RuntimeException则被统称为Unchecked Exception
3、Error:Error仅在当在Java虚拟机中发生动态连接失败或其它的定位失败的时候,Java虚拟机抛出一个Error对象。
4、Checked exception:这类异常都是Exception的子类 。异常的向上抛出机制进行处理,如果子类可能产生A异常,那么在父类中也必须throws A异常。可能导致的问题:代码效率低,耦合度过高。(SQLException)
5、Unchecked exception:  这类异常都是RuntimeException的子类,虽然RuntimeException同样也是Exception的子类,但是它们是特殊的,它 们不能通过client code来试图解决,所以称为Unchecked exception。(NullPointerException)
6、当程序执行过程中,遇到uncheck exception,则程序中止,不再执行之后的代码。

8.    描述一下Java ClassLoader 或者 J2EE ClassLoader的工作原理?

ClassLoader的工作原理 

      每个运行中的线程都有一个成员contextClassLoader,用来在运行时动态地载入其它类系统默认的contextClassLoader是 systemClassLoader,所以一般而言java程序在执行时可以使用JVM自带的类、$JAVA_HOME/jre/lib/ext/中的类 和$CLASSPATH/中的类可以使用Thread.currentThread().setContextClassLoader(...);更改当前线程的contextClassLoader,来改变其载入类的行为 

ClassLoader被组织成树形,一般的工作原理是: 
1) 线程需要用到某个类,于是contextClassLoader被请求来载入该类 
2) contextClassLoader请求它的父ClassLoader来完成该载入请求 
3) 如果父ClassLoader无法载入类,则contextClassLoader试图自己来载入 

Java中一共有四个类加载器,之所以叫类加载器,是程序要用到某个类的时候,要用类加载器载入内存。 
    这四个类加载器分别为:Bootstrap ClassLoader、Extension ClassLoader、AppClassLoader 
和URLClassLoader,他们的作用其实从名字就可以大概推测出来了。其中AppClassLoader在很多地方被叫做System ClassLoader 

9.    MVC的各个部分都有那些技术来实现?如何实现?

10.    描述一下Struts的工作方式?

11.    JSP中包含哪几个内置对象?

12.    JSP中两种跳转方式分别是什么?有什么区别?

13.    描述一下JSP中taglib的用法?

14.    Javascript中如何校验数字型?

15.    EJB2.0中包括哪些内容? 作用分别是什么?

16.    一个SessionBean包含哪几个组件?各个组件作用是什么?

17.    描述一下一个EJB应用中EJB部署文件,以及你所熟悉的App Server的部署文件的作用?

18.    列举一下你所知道的设计模式(包括EJB,J2EE的设计模式),以及他们应用的场合?

19.    解析XML主要方法有哪些? 各有什么区别?

20.    您了解Open Source的项目吗? 如果了解请描述几个,并讲述一下他们的作用?

21.    您看过哪些JAVA方面的书籍,能列举一下吗?

分享到:
评论

相关推荐

    JAVA笔试题----------大唐软件

    JAVA笔试题大唐软件 在这份笔试题中,我们可以看到涵盖了Java基础知识、Java集合框架、多线程、异常机制、Java ClassLoader、MVC模式、JSP、Struts、EJB、设计模式、XML解析和Open Source项目等多个方面的知识点。 ...

    大唐移动笔试题.pdf---- 珍藏版本

    大唐移动笔试题.pdf---- 珍藏版本,找工作的同学可以看看!

    大唐电信笔试面试题(含部分参考答案)

    【大唐电信笔试面试题解析】 1. 数列问题:这是一个等差数列,每次增加4,所以6后的数字依次为10,18,32,46。 2. 买卖计算:这是一道简单的计算题,通过计算买进卖出的价格差得知,这桩买卖盈利20元。 3. 月球绕...

    大唐电信笔试面试题

    【大唐电信笔试面试题】是针对求职者准备进入大唐电信公司可能会遇到的笔试和面试问题的集合,旨在帮助应聘者了解并准备相关技术知识。以下将详细解释其中涉及的计算机科学和技术概念: 1. **中断**:中断是计算机...

    大唐JAVA笔试题

    ### 大唐JAVA笔试题知识点解析 #### 1. 关键字public、protected、private、final的用法 - **public**: Java中最常用的访问修饰符之一,被声明为public的方法或类可以在任何地方被访问。 - **protected**: 表示受...

    大唐移动 面试笔试题

    【大唐移动面试笔试题】是针对求职者在应聘大唐移动通信设备有限公司时可能遇到的面试和笔试环节的题目集合。这些题目通常涵盖多种IT技术领域,包括但不限于C语言编程、计算机基础、网络通信、软件工程等方面。对于...

    C++ 笔试题 google 微软 华为 索尼 中兴 大唐 各种C++笔试题目

    香港电信笔试题 LORAL的笔试题 维尔VERITAS软件笔试题 百威啤酒(武汉公司) 星巴克 凹凸电子软件笔试题 友立资讯笔试题目 Avant! 微电子EE笔试题 德勤笔试题 扬智(科技)笔试题目 高通笔试题 威盛笔试试题 2003 EE...

    大唐电信笔试题,选择,填空,简答

    ### 大唐电信笔试题解析 #### 一、选择与填空题解析 **1. 数列6,10,18,32,?,问?是几?** 解析:观察数列规律,可以发现每一项都是前一项加上一个递增的数。具体来看: - 10 - 6 = 4 - 18 - 10 = 8 - 32 - ...

    大唐电信笔试题.pdf

    从给定的大唐电信笔试题的信息中,我们可以总结并深入探讨多个IT领域的知识点,包括数学逻辑、经济分析、操作系统原理、通信技术、软件工程、Unix系统操作等。 ### 数学逻辑与经济分析 1. **数列问题**:题目中的...

    2012大唐电信笔试题及答案

    - **JDBC**:Java Database Connectivity(JDBC)是Java中用来连接数据库的标准API。通过JDBC,Java程序可以与各种关系型数据库进行交互。 以上内容涵盖了异常处理、同步机制、转发与重定向以及数据库连接和SQL查询...

    华为+中兴+大唐名企Java面试题汇总

    华为+中兴+大唐名企Java面试题汇总,包含答案

    求职-大唐移动笔试题-C语

    以下将对大唐移动笔试题中涉及的C语言知识点进行详细的解释和扩展。 1. **字节序**:字节序是指多字节数据(如整数)在内存中的存储顺序。大字节序(Big-Endian)指的是数据的最高有效字节存放在最低地址,而小字节...

    大唐笔试招聘试题,面试题

    大唐面试试题  1.什么是中断?中断发生时CPU做什么工作?  2.CPU在上电后,进入操作系统的main()之前必须做什么工作?  3.简述ISO OSI的物理层Layer1,链路层Layer2,网络层Layer3的任务。

    大唐电信项目代码

    【大唐电信项目代码】是一个基于Struts和Hibernate框架的软件开发项目,这表明该工程主要采用了Java技术栈,用于构建企业级应用。Struts是Apache软件基金会的一个开源项目,它是一个MVC(Model-View-Controller)...

    java源代码大唐电信

    【大唐电信业务管理系统源代码+项目分析+数据库】是一个涵盖了软件开发全生命周期的资源集合,主要涉及的技术栈是Java编程语言。这个系统主要用于大唐电信的任务管理,提供了对工作任务的创建、分配、跟踪和报告等...

    大唐移动笔试题!!!!!

    【大唐移动笔试题】主要涵盖了通信技术、网络管理和协议、数据链路层、软件开发、操作系统、编程等领域的知识。以下是对题目涉及知识点的详细解释: 1. **传输方式对比**: - 在相同码元速率下,信息传输速率最高...

    大唐电信管理系统 很好的SSH2项目哦

    【大唐电信管理系统】是一个基于SSH2(Struts2、Spring、Hibernate)框架的综合性电信管理解决方案。SSH2是Java开发中的一个流行组合,用于构建高效、可维护的企业级应用程序。Struts2作为MVC(Model-View-...

    数据库笔试题

    该文档是大唐电信的笔试题,里面是关于oracle数据库的内容

    Java 大唐电信内部管理系统

    【大唐电信内部管理系统】是一个基于Java技术开发的企业级应用,主要目标是实现对大唐电信公司内部业务流程的有效管理和优化。这个项目充分展示了Java在企业级软件开发中的强大能力,包括但不限于数据管理、权限控制...

Global site tag (gtag.js) - Google Analytics