搜档网
当前位置:搜档网 › Java面试题选30题.doc

Java面试题选30题.doc

Java面试题选30题.doc
Java面试题选30题.doc

Java面试题选30题

1.J2EE是什么?

J2EE是Sun公司提fli的多层(multi-diered),分布式(distributed),基于组件(component-base)的企业级应用模型(enterpriese application model).在这样的一个应用系统屮,可按照功能划分为不同的组件,这些组件又可在不同计算机上,并且处于相应的层次(tier)中。所属层次包括客户层(clietn tier)组件,web层和组件,Business 层和组件,企业信息系统(EIS)层。

2.J2EE是技术还是平台还是框架?

J2EE本身是一个标准,一个为企业分布式应用的开发提供的标准平台。

J2EE 也是一个框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA 等技术。

3 .请对以下在J2ER巾常川的名词进行解释(或简单描述):

web 容器、EJB 容器、JNDI、JMS、JTA、JAF、RMI/IIOP。

web容器:给处于其屮的应用程序组件(JSP, SERVLET)提供一个环境,使JSP,SERVLET直接和容器屮的环境变量接接口互,不必关注其它系统问题。

EJB 容器:Enterprise java bean 容器。

JNDT: (Java Naming & Directory Interface) JAVA 命名目录服务。

JMS: (Java Message Service) JAVA 消息服务。

JTA: (Java Transaction API) JAVA 事务服务。

JAE: (Java Action EramcWork) JAVA 安全认证框架。

RMI/IIOP: (Remote Method Invocation /internet 对象请求中介协议)

JNDT的全称是什么,简单描述它的用途。

JNDI = Java Naming and Directory Interface

JND1是J2EE提供的命名服务,命名服务用来确定网络屮可以访问的对象,在一个命名服务屮,

把一个名称和对象绑定在一起,并且可以通过给定的名称找到对应的对象。

命名服务在分布式应用程序中是不可缺少的,它不仅提供了方便,更主要的是提供了一层间接引用。

JNDT是接LI,由J2EE服务器实现,应用程序使用。

4.你是否使用过数据库连接池?请简要描述数裾库连接池的工作原理。

连接池就是在内存中缓存一定数量的数据库连接,毎次需要数据库操作的时候,从连接池中去取出连接,

使用完之后,放回连接池。这样,不用每次需要连接数据库的吋候都建立物理连接。可以提高数据库访问性能。

5.说出数据连接池的工作机制是什么?

J2EE服务器启动时会建立一定数■的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返冋一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。

6.JDBC中Statement和PreparedStateraent有什么不同?简要说明PreparedStatement对性能的影响。

Statement对象代表一个静态SQL语句,只能执行一次.

PreparedStatement对象代表一个预编译的SQL语句,可以被多次执行,效率更高.

7.—般在JDBC中对于数据库的操作分为创建数据库连接、执行SQL语句、操作结果集对象等几步,简述各步的实现方法并写出实现各步操作的程序段。

创建数据库连接,分为以下两步:

首先注册数据库驱动程序:Class. forName (〃sun. jdbe. odbe. JdbcOdbcDriver〃);

然后根据具体的JDBC URL地址,调川DriverManager对象的getConnection()來获収一个代表数据挥连接的

java. sql. connection 对象。

Connection con=DriverManager. getConnection( “url”,“帐号”,“密码”)

执行SQL语句:

可以使用Statement对象或PreparedStatement对象执行SQL语句

Statement对象将SQL语句发送到DBMS,巾Connection对象的createStatement ()方法创建Statement对象。

Statement接口提供的执行SQL语句的常用方法:executeQuery ():用于产生单个ResultSet的语句。

executeUpdateO:用来创建和更新表,用于执行INSERT、UPDATE或DELETE语句以及SQL DDL语句。

Statement stmt = con. createStatement();

包含于PreparedStatement对象巾的SQL语句可具有一个或多个IN参数。IN参数的值在SQL语句创建时未被指定。相反的,该语句为每个IN参数保留一个问号(“?”)作为占位符。每个问号的值必须在该语句执行之前通过适当的setXXXO方法来提供。

PreparedStatement pStmt = conn. PreparedStatement(

"insert into emp (empno , ename) values(?,?)〃);

操作结果集对象:

ResultSet对象包含SQL语句的执行结果。它通过一套get方法提供了对这些行中数据的访问,即使用getXXX 方法检索数据,使用next ()等方法控制游标的移动。

8.jdbc相关知识,其中Class. forName的作用

答,Class. forName(〃...〃);//加载类驱动

Connection conn = DriverManager. getConnection(sUrl, sUscrNamc, sPassword);

Statement stmt = conn. createStatement();

ResultSet rs = stmt. executeQuery(sSQL);

9.Hibernate工作原理及为什么要用?

原理:

1.读取并解析配置文件

2.读取并解析映射信息,创建SessionPactory

3.打开Sesssion

4.创建事务Transation

5.持久化操作

6.提交事务

7.关闭Session

8.关闭SesstionFactory

为什么要用:

1.对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。

2.Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作

3.hibernate使用Java反射机制,而不是字节码增强程序來实现透明性。

4.hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很岀色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。

10.Hibernate是如何延迟加载?

1.Hibernate2延迟加载实现:a)实体对象b)集合(Col lection)

2.IIibernate3提供了属性的延迟加载功能

当Hibernate在查询数裾的时候,数据并没有存在与N存屮,当程序真正对数裾的操作时,对象才存在与N存屮,就实现了延迟加载,他节省了服务器的A存开销,从而提高了服务器的性能。

11.Hibernate巾怎样实现类之间的关系?(如:一对多、多对多的关系)

类与类之间的关系主要体现在表与表之间的关系进行操作,它们都市对对象进行操作,我们程序中把所有的表与类都映射在一起,它们通过配置文件中的many-to-one、one-to-many A many-to-many、

12.说下Hibernate的缓存机制

1.内部缓存存在Hibernate中又叫一级缓存,属于应用事物级缓存

2.二级缓存:

a)应用及缓存

b)分布式缓存

条件:数据不会被第三方修改、数据大小在可接受范围、数据更新频率低、同一数据被系统频繁使用、非关键数据

c)第三方缓存的实现

13.Hibernate的杏询方式

Sql、Criteria, object comptosition

Hql:

1、属性查询

2、参数查询、命名参数查询

3、关联查询

4、分页查询

5、统计函数

14.如何优化Hibernate?

1.使用双向一对多关联,不使用单向一对多

2.灵活使用单向一对多关联

3.不用一对一,用多对一取代

4.配置对象缓存,不使用集合缓存

5.一对多集合使川Bag,多对多集合使用Set

6.继承类使用显式多态

7.表字段要少,表关联不要怕多,有二级缓存撑腰

15.Struts工作机制?力什么要使用Struts?

工作机制:

Struts的丄作流程:

在web应用启动时就会加载初始化ActionServlet, ActionServlet从

struts-config. xml文件中读取配置信息,把它们存放到各种配置对象

当ActionServlet接收到一个客户请求时,将执行如下流程.

-(1)检索和用户清求匹配的ActionMapping实例,如果不存在,就返冋请求路径无效信息;

-(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中;

-(3)根?配賈信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validateO方法;

-(4)如果ActionForm的val idateO方法返回null或返冋一个不包含Act ionMessage的ActuibErrors对象,就表示表单验证成功;

-(5)ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的Action实例不存在,就先创建这个实例,然后调用Action的execute()方法;

-(6) Act ion 的execute ()方法返回一个ActionForward 对象,ActionServlet 在把客户诘?求砖发给Act ionForward 对象指向的JSP组件;

-(7)ActionForward对象指向JSP组件生成动态网页,返冋给客户;

为什么要用:

JSP、Servlet, JavaBean技术的出现给我们构建强大的企业应用系统提供了可能。但用这些技术构建的系统非常的繁乱,所以在此之上,我们需要一个规则、一个把这些技术组织起来的规则,这就是框架,Struts便应运而生。基于Struts开发的应用由3类组件构成:控制器组件、模型组件、视图组件

16.S truts的validate框架是如何验证的?

在struts配置文件中配置具体的错误提示,再在FormBean中的validate()方法具体调用。

17.说卜Struts的设计模式

MVC模式:web应用程序启动时就会加载并初始化ActionServler。用户提交表单时,一个配置好的ActionForm对象被创建,并被填入表单相应的数掘,ActionServler根? Struts-config. xml文件配賈好的设賈决定是否需要表单验证,如果需要就调用ActionForm的Validate ()验证后选择将请求发送到哪个Action,如果Action不存在,ActionServlet 会先创建这个对象,然后调用Action的execute ()方法。Execute ()从ActionForm对象中获取数据,完成业务逻辑,返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指定的jsp组件,ActionForward 对象指定的jsp生成动态的网页,返回给客户。

18.s pring工作机制及为什么要用?

1.spring mvc请所有的诺求都提交给DispatcherServlet,它会委托应用系统的其他模抉负责负责对请求进行真正的处理工作。

2.DispatcherServlet 查询一个或多个HandlerMapping,找到处理请求的Controller.

3.DispatcherServlet.请请求提交到目标Controller

4.Controller进行业务逻辑处理后,会返回一个ModelAndVicw

5.Dispathcher查询-、个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象

6.视图对象负责渲染返回给客户端。

为什么用:

{A0P让开发人员可以创建非行为性的关注点,称为横切关注点,并将它们插入到应用程序代码屮。使用A0P后,

公共服务(比如U志、持久性、事务等)就可以分解成方面并应用到域对象上,同时不会增加域对象的对象模型的复杂性。I0C允许创建一个可以构造对象的应用环境,然后向这些对象传递它们的协作对象。正如单词倒置所表明的,TOC 就像反过来的JNDI。没有使用一堆抽象工厂、服务定位器、单元素(singleton)和直接构造(straight construction),每一个对象都是用其协作对象构造的。因此是由容器管理协作对象(collaborator)。

Spring即使一个AOP框架,也是一I0C容器。Spring最好的地方是它有助于您替挽对象。有了Spring,只要用JavaBean 属性和配置文件加入依赖性(协作对象)。然后可以很容易地在需要吋替换具有类似接口的协作对象。}

19.什么是EJB, EJB与JAVA BEAN的区别?EJB的几种类型?

会话(Session) Bean ,实体(Entity) Bean 消息驱动的(Message Driven) Bean 会话Bean又可分为有状态(Stateful)和无状态(Stateless)两种实体Bean可分为Bean管理的持续性(BMP)和容器管理的持续性(CMP)两种

20.EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。

EJB 色括Session Bean、Entity Bean、Message Driven Bean,基于JNDI、R\1I、JAT 等技术实现。

SessionBean在J2RR应川程序巾被川來完成一些服务器端的业务操作,例如调用其他EJB组件、实现一些简单的业务逻辑。EntityBean被用來代表应用系统中用到的数据。

对于客户机,SessionBean是一种非持久性对象,它实现某些在服务器上运行的业务逻辑。而EntityBean是一种持久性对象,它代表一个存储在持久性存储器屮的实体的对象视阁,或是一个由现有企业应用程序实现的实体。

Session Bean 还可以再细分为Stateful Session Bean 与Stateless Session Bean ,这两种的Session Bean 都可以将系统逻辑放在method之中执行,不同的是Stateful Session Bean可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应的Stateful Session Bean 的实体。Stateless Session Bean虽然也是逻辑组件,但是他却不负贵记录使用者状态,也就是说当使用者呼叫Stateless Session Bean 的时候,EJB Container 并不会找寻特定的Stateless Session Bean 的实体来执行这个method。换言之,很可能数个使用者在执行某个Stateless Session Bean 的methods时,会是同一个Bean 的Instance 在执行。从内存方面来看,Stateful Session Bean 与Stateless Session Bean 比较,Stateful Session Bean 会消耗J2EE Server较多的内存,然而Stateful Session Bean的优势却在于他可以维持使用者的状态。

21.设计一个会话Bean或实体Bean至少包括的四个步骤是什么,简述各步开发出的EJB组件的作用。

设计一个会话Bean或实体Bean至少包括四个步骤:开发Bean实现类,开发主接口,开发组件接口,编写部署文件。EJB实现类包含真正实现商业方法的代码,主接口表示组件的生命周期方法(创建、查找、破坏)。商业接口表示EJB的商业方法。客户机使用EJB的主接口来获取对EJB商业接口的引用从而执行商业方法。一个完整的ejb是由java类和一个描述其特性的ejb-jar.xml文件组成,部署工具将根据这些文件部署到容器中,并自动生成容器所需的残根类。

22.EJB的角色和三个对象

一个完整的基于EJB的分布式计算结构由六个角色组成,这六个角色可以由不同的开发商提供,每个角色所作的工作必须遵循Sim公司提供的EJB规范,以保证彼此之间的兼容性。这六个角色分别是EJB组件开发者(Enterprise Bean Provider)、应用组合者(Application Assembler)、部署者(Deployer)、EJB 服务器提供者(EJB Server Provider )、EJB 容器提供者(EJB Container Provider ) > 系统管理员(System Administrator)

三个对象是Remote (Local)接口、Home (LocalHome)接口,Bean 类

23.EJB容器提供的服务

主要提供声明周期管理、代码产生、持续性管理、安全、事务管理、锁和并发行管理等服务。

24.说说你所熟悉或听说过的j2ee屮的儿种常用模式?及对设计模式的一些看法

Session Facade Pattern:使用SessionBean 访问EntityBean

Message Facade Pattern:实现异步调用

EJB Command Pattern:使川Command JavaBeans 収代SessionBean,实现较量级访|'U J

Data Transfer Object Factory:通过DTO Factory 简化EntityBean 数据提供特性

Generic Attribute Access:通过AttibuteAccess 接口简化EntityBean 数掘提供特性

Business Interface:通过远程(本地)接口和Bean类实现相同接口规范业务逻辑一致性

EJ B架构的设计好坏将直接影响系统的性能、可扩展性、可维护性、组件可重用性及开发效率。项0越复杂,项目队伍越庞大则越能体现良好设计的重要性。

25.j2ee常用的设计模式?说明工厂模式。

Java中的23种设计模式:

Factory (工厂模式),Builder (逮造模式),Factory Method (工厂方法模式),

Prototype

(原始模型模式),Singleton (单例模式), Bridge (桥梁模式), Flyweight (享元模式), Interpreter (解释器模式),

Mediator (调停者模式),

State (状态模式),

Template Method (模板方法模式),Chain Of Responsibleity (责狂链模式)

工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个 类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同 的操作。首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工 厂类可以根据条件生成不同的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返 回的是哪一个子类的实例。 26. 编程题:写一个Singleton 出來。

Singleton 模A 主要作用是保证在Java 应用程序屮,一个类Class 只有一个实例存在。

一般Singleton 模式通常有儿种种形式:

祐一种形式:定义一个类,它的构造函数力private 的,它有一个static 的private 的该类变量,在类初始化时 实例i 舌,通过一个public 的getTnstance 方法获取对它的引用,继而调用其中的方法。 public class Singleton { private Singleton 0 {}

//在自己闪部定义自己一个实例,是不是很奇怪?

//注意这是private 只供内部调用

private static Singleton instance = new Singleton ();

//这里提供了一个供外部访问本class 的静态方法,可以直接汸问

public static Singleton getlnstanceO {

return instance;

>

}

第二种形式:

public class Singleton {

private static Singleton instance = null;

public static synchronized Singleton getlnstanceO {

//这个方法比上面有所改进,不川每次都进行生成对象,只是第一次 //

使用时生成实例,提高了效率!

if (instance==nul1)

instance = new Singleton ();

return instance; }

}

其他形式:

定义一个类,它的构造函数为private 的,所有方法为static 的。

一般认为第一种形式要更加安全些

27. 没计4个线程,其中两个线程每次对j 增加1,另外两个线程对j 每次减少1。写出程序。 以

下程序使用A 部类实现线程,对j 增减的时候没有考虑顺序问题。 public class ThreadTestl{

private int j;

publie static void main (String args 口){

Facade (门面模式),

Composite (合成模式), Proxy (代理模式), Visitor (访问者模式), Memento (备忘录模A ), Strategy (策略模式), Adapter (适配器模式),

Decorator (装饰模式), Command (命令模式), Iterator (迭代子模式), Observer (观察者模式),

Threadiest 1 tt=new ThreadTest1();

Inc inc二tt. new Tnc ();

Dec dec=tt. new Dec ();

for(int i=0;i<2;i++) {

Thread t=new Thread (inc);

t. start ();

t=new Thread (dec);

t. start ();

}

}

private synchronized void inc(){

j++;

System, out. print In (Thread. currentThread (). getName()+”—inc://+j);

}

private synchronized void dec(){ j-

System, out. print In(Thread. currentThread(). getName()+〃-dec:〃十j);

}

class Inc implements Runnable { public

void run() { for (int i=0;i<100;i++) { inc

();

cl ass Dec implements Runnable

{ public void run() { for (int

i=0;i<100;i++) { dec 0 ;

28.编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,如“我ABC” 4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+ 汉的半个”。

答:代码如下:

package test;

class SplitString

String SplitStr;

int SplitByte;

public SplitString(String str, int bytes)

{

Split.Str=st.r;

SplitByte=bytes;

System, out. println(,z The String is" 〃+SplitStr+〃' ;SplitBytes=〃+SplitByte);

}

public void SplitTt ()

{

int loopCount;

loopCount=(SplitStr. length()%SplitByte==0)?(SplitStr. length()/SplitByte):(SplitStr. length()/Split Byte+l);

System, out. println("Will Split into 〃十loopCount);

for (int i=l;i<=loopCount ;i++ )

{

if (i==loopCount) {

System, out. print In(SplitStr. substring((i~l)*SplitByte, SplitStr. length()));

} else {

System, out. printIn(SplitStr. substring((i~l)*SplitByte, (i^SplitByte)));

> } public static void main(String[] args)

SplitString ss = new SplitStringCtest 中dd 文dsaf 中男大3443n 中国43 中国人

0ewldfls=103〃,4);

ss. Splitlt ();

29.Servlet执行时一般实现哪几个方法?

public void init (ServletConfig config)

public ServletConfig getServletConf ig()

public String getServletlnfoO

public void service (ServletRequest request,ServletResponse response)

public void destroy()

initO方法在servlet的生命周期屮仅执行一次,在服务器装载servlet时执行。缺省的init()方法通常是符合要求的,不过也可以根据需要进行override,比如管理服务器端资源,一次性装入GTF图像,初始化数据库连接等,缺省的inti ()方法设置了servlet的初始化参数,并用它的ServeltConfig对象参数来启动配置,所以覆盖initO方法时,应调用super, init()以确保仍然执行这些任务。

service ()方法是servlet的核心,在调用service ()方法之前,应确保己完成init ()方法。对于HttpServlet, 每当客户请求一个HttpServlet对象,该对象的service()方法就要被调用,HttpServlet缺省的serviceO方法的服务功能就是调用与HTTP清求的方法相应的do功能,doPostO和doGetO,所以对于HttpServlet,一般都是重写doPostO 和doGetO方法。

destroy ()方法在servlet的生命周期屮也仅执行一次,即枉服务器停止卸载servlet时执行,把servlet作为服务器进程的一部分关闭。缺哲的destroy ()方法通常是符合要求的,但也可以override,比如在卸载servlet 时将统计数字保存在文件中,或是关闭数据库连接。

getServletConfigO方法返冋一个servl etConf i g对象,该对象用來返冋初始化参数和servl etContext。servletContext接口提供有关servlet的环境信息。

getServletlnfoO方法提供有关servlet的信息,如作者,版本,版权。

30.常见会话跟踪技术有哪几种?

Cookie

URL重写

使用IlttpSession对象跟踪会i舌

Java面试题带答案

J a v a面试题带答案 Document number:BGCG-0857-BTDO-0089-2022

湖南世杰Java工程师面试题 选择题: 单选题 1,以下java程序代码,执行后的结果是( ) map= ("name",null); ("name","Jack"); 0 B: null C: 1 D: 2 答案:C 2,执行以下程序后的输出结果是( ) Public class Test { Public static void main(String[] args) { StringBuffer a = new StringBuffer("A"); StringBuffer b = new StringBuffer("B"); operator(a, b);

+","+ b); } Public static void operator(StringBuffer x, StringBuffer y) { (y); y = x; } } A: A,A B: A,B C: B,B D: AB,B 答案:D 3,关于依赖注入,下列选项中说法错误的是( ) A:依赖注入能够独立开发各组件,然后根据组件间关系进行组装 B:依赖注入使组件之间相互依赖,相互制约 C:依赖注入提供使用接口编程 D:依赖注入指对象在使用时动态注入 答案:B

4,关于spring说法错误的是( ) A: spring是一个轻量级JAVA EE的框架集合 B: spring是“依赖注入”模式的实现 C: 使用spring可以实现声明事务 D: spring提供了AOP方式的日志系统 答案:D 5,要在session对象中保存属性,可以使用以下哪个语句( ) A: (“key”,”value”) B: (“key”,”value”) C: (“key”) D: (“key”) 答案:B 6,关于以下程序代码的说明正确的是( ) Public class HasStatic{ Private static int x = 100; Public static void main(String args[]){

Java面试题大全(答案版)

1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以,但是只能有一个类用public修饰,并且用public修饰的类名与文件名要一致 2、&和&&的区别。 &和&&都可以用作逻辑与; &&还具有短路功能,即如果第一个表达式的结果为false,则不再计算第二个表达式; &还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作。 3、Java有没有goto? java中的保留字,现在没有在java中使用。 4、在JAVA中,如何跳出当前的多重嵌套循环? break+变量控制与return 5、switch是否能作用在byte(拜特)上,是否能作用在long上,是否能作用在String上? Switch可以作用在int上,而byte可以隐式转换为int 所以能作用在byte上 不能作用在long上,也不能作用在String上 6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 1在java中为int数据类型,short+int=int,大类型转为小类型,编译时,会报告需要强制转换类型的错误。s1+=1不会报,因为JVM会对它特殊处理(自动强转) 7、char型变量中能不能存贮一个中文汉字?为什么? 可以,char型变量是用来存储unicode(依妮Q特)编码的,而unicode编码包含了中文,所以是可以保存的 8、编程题: 用最有效率的方法算出2乘以8等於几? 2<<3,表示将2左移3位;一个数左移几位就表示这个数乘以了2的几次方,左移运算,CPU直接支持,所以是最有效率的 9、请设计一个一百亿的计算器 思路:用两个数组分别保存两个操作数,再新建一个数组保存结果。 10、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 引用变量不能变 11、"=="和equals方法究竟有什么区别? ==和equals方法都可以用来比较两个对象是否是同一个对象。 ==还可以比较两个变量的值是否相等。 equals是Object类中的方法,可以由子类重写此方法,实现内容相等。 12、静态变量和实例变量的区别? 语法上不同: 静态变量前要加static关键字,实例变量不需要 程序运行时不同: 实例变量是属于某个对象的,只有创建了对象,才会为这个对象的实例变量分配空间。静态变量是属于类的,当程序加载了这个类的字节码文件,就会为静态变量分配空间,并且所有对象共享这个变量 13、是否可以从一个static方法内部发出对非static方法的调用? 不可以,非static方法需要与对象关联在一起的,而static方法调用时不需要对象,可以直接调用,也就是说调用static方法时,可能还没有创建任何实例 14、Integer与int的区别 int是java中的8种基本数据类型之一,默认值是0,Integer是int的包装类,默认值是null,即Integer可以表示未赋值和赋值为0 15、(麦死)Math.round(乱的)(11.5)等於多少? Math.round(-11.5)等於多少?

java笔试题及答案.doc

java笔试题及答案 有了下面java笔试题及答案,进行java笔试时就容易多了,请您对下文进行参考: 1、作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域当前类同一package子孙类其他package public 7 7 7 7 protected 7 7 7 X friendly 7 7 X X private 7 X X X 不写时默认为friendly 2、Anonymouslnner Class (匿名内部类)是否可以exte nd s (继承)其它类,是否可以imple ment s (实现)i nterf ace (接口) 答:匿名的内部类是没有名字的内部类。不能exte n ds (继承)其它类,但一个内部类可以作为一个接口,由另一个内部类实现 3、Sta ti cNestedC las s 和Inner Clas s 的不同答: Nes tedC lass (一般是C+ +的说法),In ne rClass (—般是JAVA的说法)。J ava内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。注:静态内部类(I

nn erClass)意味着1创建一个st atic内部类的对象,不需要一个外部类对象,2不能从一个st atic内部类的一个对象访问一个外部类对象 4、和的区别 答:是位运算符,表示按位与运算,是逻辑运算符,表示遷辑与(and ) 5、Coll ect ion 和Col lect ions 的区别 答:Coll ect ion是集合类的上级接口,继承与他的接口主要有Set和List. Col lections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作 6、什么时候用assert 答:asserti on (断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,a ssertion 就是在程序中的一条语句,它对一个boolea n表 达式进行检查,一个正确程序必须保证这个bool ean表达 式的值为tr ue;如果该值为fal se,说明程序己经处于不正确的状态下,系统将给出警告或退出。一般来说,

Java经典面试题大全_带答案

Java经典面试题带答案一、单项选择题 1.Java是从()语言改进重新设计。 A.Ada B.C++ C.Pasacal D.BASIC 答案:B 2.下列语句哪一个正确() A.Java程序经编译后会产生machine code B.Java程序经编译后会产生byte code(字节码) C.Java程序经编译后会产生DLL D.以上都不正确 答案:B 3.下列说法正确的有() A.class中的constructor不可省略 B.constructor必须与class同名,但方法不能与class同名C.constructor在一个对象被new时执行(构造器) D.一个class只能定义一个constructor 答案:C 4.提供Java存取数据库能力的包是() A.Java.sql /sql/数据库还有Oracle 也是一种数据库 B.java.awt C.https://www.sodocs.net/doc/5f9146314.html,ng D.java.swing 答案:A 5.下列运算符合法的是() A.&& B.<> C.if D.:= 答案:A 6.执行如下程序代码 a=0;c=0; do{ --c; a=a-1; }while(a>0); 后,C的值是() A.0 B.1 C.-1 D.死循环

答案:C 7.下列哪一种叙述是正确的() A.abstract修饰符可修饰字段、方法和类 B.抽象方法的body部分必须用一对大括号{}包住 C.声明抽象方法,大括号可有可无 D.声明抽象方法不可写出大括号 答案:D 8.下列语句正确的是() A.形式参数可被视为localvariable B.形式参数可被字段修饰符修饰 C.形式参数为方法被调用时,真正被传递的参数 D.形式参数不可以是对象 答案:A 9.下列哪种说法是正确的() A.实例方法可直接调用超类的实例方法 B.实例方法可直接调用超类的类方法 C.实例方法可直接调用其他类的实例方法 D.实例方法可直接调用本类的类方法 答案:D 二、多项选择题 1.Java程序的种类有() A.类(Class) B.Applet C.Application D.Servlet 2.下列说法正确的有() A.环境变量可在编译sourcecode时指定 B.在编译程序时,所能指定的环境变量不包括class path C.javac一次可同时编译数个Java源文件 D.javac.exe能指定编译结果要置于哪个目录(directory)答案:BCD 3.下列标识符不合法的有() A.new B.$Usdollars C.1234 D.car.taxi 答案:ACD 4.下列说法错误的有() A.数组是一种对象 B.数组属于一种原生类 C.intnumber=[]={31,23,33,43,35,63} D.数组的大小可以任意改变 答案:BCD 5.不能用来修饰interface的有()

java笔试题含答案

班级:_______________ 学号:______________ 姓名:___________ Java 笔试题 (可多选) 1. 下面哪些是Thread类的方法( ABD) A start() B run() C exit() D getPriority() 2. 下面关于类的说法正确的是(A) A 继承自Throwable B Serialable C 该类实现了Throwable 接口 D 该类是一个公共类 3. 下面程序的运行结果是( false ) String str1 = "hello"; String str2 = "he" + new String("llo"); == str2); 4. 下列说法正确的有( C) A. class中的constructor不可省略

B. constructor必须与class同名,但方法不能与class同名C. constructor在一个对象被new时执行 D.一个class只能定义一个constructor 5. 指针在任何情况下都可进行>, <, >=, <=, ==运算( true ) 6. 下面程序的运行结果:(B) public static void main(String args[]) { Thread t = new Thread() { public void run() { pong(); } }; (); "ping"); } static void pong() { "pong"); } A pingpong

B pongping C pingpong和pongping都有可能 D 都不输出 7. 下列属于关系型数据库的是(AB) A. Oracle B MySql C IMS D MongoDB 8. GC(垃圾回收器)线程是否为守护线程( true ) 9. volatile关键字是否能保证线程安全( false ) 10. 下列说法正确的是(AC) A LinkedList继承自List B AbstractSet继承自Set C HashSet继承自AbstractSet D WeakMap继承自HashMap 11. 存在使i + 1 < i的数吗(存在) 12. 的数据类型是(B) A float B double C Float D Double

百一测评——Java经典面试题 带答案

职业技能题库&在线云笔试平台https://www.sodocs.net/doc/5f9146314.html, 试卷名称:Java经典面试题带答案 试卷描述:java笔试题目、招聘笔试、微信考试、在线考试 试卷链接:https://www.sodocs.net/doc/5f9146314.html,/store/open/paperInfo/41651 试卷限时:50分 一.单项选择题 每题分值:2.5分 是否题目乱序:是 是否选项乱序:是 是否可回溯:是 难度:中 1.[单选]Java是从()语言改进重新设计。 A.Ada B.C++ C.Pasacal D.BASIC 答案:B 2.[单选]下列语句哪一个正确() A.Java程序经编译后会产生machine code B.Java程序经编译后会产生byte code C.Java程序经编译后会产生DLL D.以上都不正确

职业技能题库&在线云笔试平台https://www.sodocs.net/doc/5f9146314.html, 答案:B 3.[单选]下列说法正确的有() A.class中的constructor不可省略 B.constructor必须与class同名,但方法不能与class同名 C.constructor在一个对象被new时执行 D.一个class只能定义一个constructor 答案:C 4.[单选]提供Java存取数据库能力的包是() A.java.sql B.java.awt C.https://www.sodocs.net/doc/5f9146314.html,ng D.java.swing 答案:A 5.[单选]下列运算符合法的是() A.&& B.<> C.if D.:= 答案:A 6.[单选]执行如下程序代码 a=0;c=0;

职业技能题库&在线云笔试平台https://www.sodocs.net/doc/5f9146314.html, do{ --c; a=a-1; }while(a>0); 后,C的值是() A.0 B.1 C.-1 D.死循环 答案:C 7.[单选]下列哪一种叙述是正确的() A.abstract修饰符可修饰字段、方法和类 B.抽象方法的body部分必须用一对大括号{}包住 C.声明抽象方法,大括号可有可无 D.声明抽象方法不可写出大括号 答案:D 8.[单选]下列语句正确的是() A.形式参数可被视为localvariable B.形式参数可被字段修饰符修饰 C.形式参数为方法被调用时,真正被传递的参数 D.形式参数不可以是对象

Java开发工程师笔试题(带答案)

Java开发工程师笔试试题 (请不要在试题上留任痕迹,所有答案均写在答题纸上) 一.编程题(共26分) 1.任意写出一种排序算法。(6分) public void sort(int [] array){ //代码区 } 2.求1+2+3+..n(不能使用乘除法、for 、while 、if 、else 、switch 、case 等关键字 以及条件判断语句)(8分) public int sum(int n){ //代码区 return 0; } 3.完成下面法,输入一个整数,输出如下指定样式图案。(12分) 输入:3, 输出: 1*2*3 7*8*9 4*5*6

输入:4 输出: 1*2*3*4 9*10*11*12 13*14*15*16 5*6*7*8 public void drawNumPic(int n){ //代码区 } 二.选择题(定项选择每题3分,不定项选择每题4分,共63分) 1.在基本JAVA类型中,如果不明确指定,整数型的默认是__类型,带小数的默认是__类型?( B ) A.int float B.int double C.long float D.long double 2.只有实现了__接口的类,其对象才能序列化( A ) A.Serializable B.Cloneable https://www.sodocs.net/doc/5f9146314.html,parable

D.Writeable 3.代码System. out. println(10 % 3 * 2);将打印出?( B ) A. 1 B.2 C.4 D.6 4.以下程序运行的结果为( A ) public class Example extends Thread{ @Override public void run(){ try{ Thread.sleep(1000); }catch (InterruptedException e){ e.printStackTrace(); } System.out.print("run"); } public static void main(String[] args){ Example example=new Example(); example.run(); System.out.print("main"); } } A.run main B.main run C.main D.run E.不能确定 5.下面有关java实例变量,局部变量,类变量和final变量的说法,错误的是?( B ) A.实例变量指的是类中定义的变量,即类成员变量,如果没有初始化,会有默认值

最新最新java笔试题及答案

一.选择题(1-10题每题2分,11-15题每题4分) 1.下面关于Java语言说法错误的是:() A.java语言是完全面向对象的 B。java语言支持多继承 C.java语言支持多线程 D。java语言最早是为消费电子产品领域设计的 2.下面标识符中正确的是:() A.*123 B。12java C.continue D。java$next 3.下列关于注释语句的描述中,正确的一项是() A。以//开始的是多行注释语句 B。以/*开始,*/结束的是单行注释语句 C。以/**开始,*/结束的是可以用于生成帮助文档的注释语句 D。以/**开始,*/结束的是单行注释语句 4.为了区分重载多态中同名的不同方法,要求()。 A)形式参数个数或者类型不同 B)返回值类型不同 C)调用时用类名或对象名做前缀 D)形式参数名称不同 5.下面定义数组的格式中正确的是:() A.int a[10] B。int a=new int[10] C.int []a=new int[5] D.int a[] 6.下面说法中不正确的是:() A.类是对象的抽象,对象是类的实例 B。类是组成java程序的最小的单位 C.java语言支持多继承 D。java一个程序中只能有一个public类 7.定义类时,不可能用到的保留字是()。 A) private B) class C) extends D) implements 8.为 AB 类的定义一个公共的构造函数,该方法头的形式为()

A.void AB( ) B。public void method( ) C.public method ( ) D。public AB( ) 9.下面说法中不正确的是:() A.java中一个类只允许实现一个接口 B。抽象类中允许有非抽象方法的存在 C.类变量(实例变量)可以直接用类名调用 D。通过super可以调用基类的构造函数 10.容器JFrame 默认使用的布局编辑策略是() A.BorderLayout B。FlowLayout C。GridLayout D。CardLayout 11.以下哪个表达式是不合法的() A.String x=”Hello”; int y=9; x+=y; B.String x=”Hello”; int y=9; if(x= =y) { } C.String x=”Hello”; int y=9; x=x+y; D.String x=null; int y=(x!=null)&&(x.length()>0) 12.class person { public int addvalue(int a,int b) { int s; s=a+b; return s; } }

北大青鸟推荐:Java精选笔试题(含答案解析)

北大青鸟推荐:Java精选笔试题(含答案解析)如果你是计算机专业出生,但是还没有找到工作的话,你就得补补技术了,一些关于面试、笔试的题要多刷一刷。有可能你知道答案,但是由于语言组织能力有所欠缺,所以面试官的印象不是很好,下面分享一些Java精选的鄙视题,希望对面试这者有帮助。 1,volatile关键字是否能保证线程安全?() 答案:否 volatile关键字用在多线程同步中,可保证读取的可见性,JVM只是保证从主内存加载到线程工作内存的值是最新的读取值,而非cache中。但多个线程对volatile的写操作,无法保证线程安全。 假如线程1,线程2 在进行read,load 操作中,发现主内存中count的值都是5,那么都会加载这个最新的值,在线程1对count进行修改之后,会write到主内存中,主内存中的count变量就会变为6;线程2由于已经进行read,load操作,在进行运算之后,也会更新主内存count的变量值为6;导致两个线程及时volatile关键字修改之后,还是会存在并发的情况。 2,下面哪个流类属于面向字符的输入流( ) A、BufferedWriter B、FileInputStream C、ObjectInputStream D、InputStreamReader 答案:D Java的IO操作中有面向字节(Byte)和面向字符(Character)两种方式。

面向字节的操作为以8位为单位对二进制的数据进行操作,对数据不进行转换,这些类都是InputStream和OutputStream的子类。 面向字符的操作为以字符为单位对数据进行操作,在读的时候将二进制数据转为字符,在写的时候将字符转为二进制数据,这些类都是Reader和Writer的子类。 3,Java能不能不通过构造函数创建对象() A、能 B、不能 答案:A Java创建对象的几种方式: (1) 用new语句创建对象,这是最常见的创建对象的方法。 (2) 运用反射手段,调用https://www.sodocs.net/doc/5f9146314.html,ng.Class或者https://www.sodocs.net/doc/5f9146314.html,ng.reflect.Constructor类的newInstance()实例方法。 (3) 调用对象的clone()方法。 (4) 运用反序列化手段,调用java.io.ObjectInputStream对象的readObject()方法。 (1)和(2)都会明确的显式的调用构造函数;(3)是在内存上对已有对象的影印,所以不会调用构造函数;(4)是从文件中还原类的对象,也不会调用构造函数。 4,下列哪个叙述是正确的() A.子类继承父类的构造方法。 B.abstract类的子类必须是非abstract类。 C.子类继承的方法只能操作子类继承和隐藏的成员变量。 D.子类重写或新增的方法也能直接操作被子类隐藏的成员变量。 答案:C 子类是不继承父类的构造方法的,而是必须调用其父类的构造方法。

Java面试题(带答案)

湖南世杰Java工程师面试题选择题: 单选题 1,以下java程序代码,执行后的结果是( ) java.util.HashMap map=newjava.util.HashMap(); map.put("name",null); map.put("name","Jack"); System.out.println(map.size()); A: 0 B: null C: 1 D: 2 答案:C 2,执行以下程序后的输出结果是( ) Public class Test { Public static void main(String[] args) { StringBuffer a = new StringBuffer("A"); StringBuffer b = new StringBuffer("B"); operator(a, b); System.out.println(a +","+ b); } Public static void operator(StringBuffer x, StringBuffer y) { x.append(y); y = x; }

} A: A,A B: A,B C: B,B D: AB,B 答案:D 3,关于依赖注入,下列选项中说法错误的是( ) A:依赖注入能够独立开发各组件,然后根据组件间关系进行组装 B:依赖注入使组件之间相互依赖,相互制约 C:依赖注入提供使用接口编程 D:依赖注入指对象在使用时动态注入 答案:B 4,关于spring说法错误的是( ) A: spring是一个轻量级JAVA EE的框架集合 B: spring是“依赖注入”模式的实现 C: 使用spring可以实现声明事务 D: spring提供了AOP方式的日志系统 答案:D 5,要在session对象中保存属性,可以使用以下哪个语句( ) A: session.getAttribute(“key”,”value”) B: session.setAttribute(“key”,”value”) C: session.setAttribute(“key”) D: session.getAttribute(“key”) 答案:B 6,关于以下程序代码的说明正确的是?( ) Public class HasStatic{ Private static int x = 100;

华为java笔试面试题

华为Java笔试题+数据库题 一、单项选择题 1.Java是从( B)语言改进重新设计。 A.Ada B.C++ C.Pasacal D.BASIC 2.下列语句哪一个正确(B ) A. Java程序经编译后会产生machine code B. Java程序经编译后会产生byte code C. Java程序经编译后会产生DLL D.以上都不正确 3.下列说法正确的有(C ) A. class中的constructor不可省略 B. constructor必须与class同名,但方法不能与class同名C. constructor在一个对象被new时执行 D.一个class只能定义一个constructor 4.提供Java存取数据库能力的包是( A) A.java.sql B.java.awt C.https://www.sodocs.net/doc/5f9146314.html,ng D.java.swing 5.下列运算符合法的是( A) A.&& B.<> C.if D.:= 6.执行如下程序代码 a=0;c=0; do{ --c; a=a-1; }while(a>0); 后,C的值是(C ) A.0 B.1 C.-1 D.死循环 7.下列哪一种叙述是正确的( D) A. abstract修饰符可修饰字段、方法和类 B.抽象方法的body部分必须用一对大括号{ }包住 C.声明抽象方法,大括号可有可无 D.声明抽象方法不可写出大括号 8.下列语句正确的是( C) A.形式参数可被视为local variable B.形式参数可被字段修饰符修饰 C.形式参数为方法被调用时,真正被传递的参数 D.形式参数不可以是对象 9.下列哪种说法是正确的(A ) A.实例方法可直接调用超类的实例方法 B.实例方法可直接调用超类的类方法 C.实例方法可直接调用其他类的实例方法 D.实例方法可直接调用本类的类方法 二、多项选择题 1.Java程序的种类有(BCD ) A.类(Class) B.Applet C.Application D.Servlet 2.下列说法正确的有( BCD) A.环境变量可在编译source code时指定

java笔试题大集合及答案Java基础方面

Java基础方面: 1、作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域当前类同一package 子孙类其他package public √√√√ protected √√√× friendly √√×× private √××× 不写时默认为friendly 2、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口) 答:匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现 3、Static Nested Class 和Inner Class的不同 答:Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。注:静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象 4、&和&&的区别 答:&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and) 5、Collection 和 Collections的区别 答:Collection是集合类的上级接口,继承与他的接口主要有Set 和List. Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作 6、什么时候用assert 答:assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。一般来说,assertion用于保证程序最基本、关键的正确

Java企业面试题填空题及标准答案

Java企业面试题填空题及答案

————————————————————————————————作者:————————————————————————————————日期:

Java填空题 1 一个Java源程序是由若干个类组成。 2 class 是Java的关键字,用来定义类。 3 Java应用程序中有多个类时,java命令后的类名必须是包含了main 方法的那个类的名字。 4 一个Java应用程序必须且只有一个类含有main 方法。 5 在一个Java应用程序中main方法必须被说明为public static void 。 6 Java中所有程序都使用方法,应用程序以main 方法开始。 7 Java源文件中有多个类,但只能有一个类是public 类。 8 Java源程序编译后生成的字节码文件扩展名为class 。 9 用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符。 10 Java语言规定标识符由字母、下划线、美元符号和数字组成,并且第一个字符不能是数字。 11 关键字就是Java语言中已经被赋予特定意义的一些单词,不可以把这类词作为名字来用。 12 使用关键字boolean 来定义逻辑变量。 13 关键字就是Java语言中已经被赋予特定意义的一些单词。 14 结构化程序设计的基本数据类型包括逻辑类型、整数类型、字符类型、浮点类型。 15 Java中byte型数组在内存中的存储形式是补码。 16 对于int型变量,内存分配 4 个字节。 17 对于byte型变量,内存分配 1 个字节。 18 对于long型变量,内存分配8 个字节。 19 对于short型变量,内存分配 2 个字节。 20 结构化程序设计的基本数据类型包括整数类型、逻辑类型、字符类型、浮点类型。 21 使用关键字char 来定义字符变量。 22 结构化程序设计的基本数据类型包括字符类型、逻辑类型、整数类型、浮点类型。 23 java中,浮点型变量的类型有float和double 两种。 24 对于float型变量,内存分配 4 个字节。 25 对于double型变量,内存分配8 个字节。 26 结构化程序设计的基本数据类型包括浮点类型、逻辑类型、整数类型、字符类型。 27 Java使用Unicode 字符集。 28 混合运算中不同类型的数据先转化为同一类型,然后运算,其中不包括逻辑类型和字符类型。 29 混合运算中不同类型的数据先转化为同一类型,然后运算,其中不包括字符类型、逻辑类型。 30 当把级别高的变量的值赋予级别低的变量时,必须使用强制类型转换。 31 Java中关系运算符的运算结果是boolean 型。 32 Java中逻辑运算符的操作元必须是boolean 型数据。 33 整数类型数据在内存中以二进制的方式表示。 34 Java语言的控制语句有3种类型,即条件语句、循环语句、和转移语句。 35 Java中有两种类型的控制语句即if和switch 。 36 Java语言的控制语句有3种类型,即条件语句、循环语句、和转移语句。

2017年最新Java经典笔试面试题笔试题目及答案

2017年最新Java经典笔试面试题 2017年最新Java经典笔试面试题 想要成为java程序员可不是容易的事情,下面YJBYS小编为大家精心搜集了关于Java 经典笔试的面试题,欢迎大家参考借鉴,希望可以帮助到大家! 一.选择题(共50题,每题1.5分,共75分。多选题选不全或选错都不得分。) 1. 以下属于面向对象的特征的是(C,D)。(两项) A) 重载 B) 重写 C) 封装 D) 继承 2. 以下代码运行输出是(C) public class Person{ private String name=”Person”; int age=0; } public class Child extends Person{

public String grade; public static void main(String[] args){ Person p = new Child(); System.out.println(https://www.sodocs.net/doc/5f9146314.html,); } } A) 输出:Person B) 没有输出 C) 编译出错 D) 运行出错 3. 在使用super 和this关键字时,以下描述正确的是(A) A) 在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译不通过 B) super()和this()不一定要放在构造方法内第一行 C) this()和super()可以同时出现在一个构造函数中

D) this()和super()可以在static环境中使用,包括static方法和static语句块 4. 以下对封装的描述正确的是(D) A) 只能对一个类中的方法进行封装,不能对属性进行封装 B) 如果子类继承了父类,对于父类中进行封装的方法,子类仍然可以直接调用 C) 封装的意义不大,因此在编码时尽量不要使用 D) 封装的主要作用在于对外隐藏内部实现细节,增强程序的安全性 5. 以下对继承的描述错误的是(A) A) Java中的继承允许一个子类继承多个父类 B) 父类更具有通用性,子类更具体 C) Java中的继承存在着传递性 D) 当实例化子类时会递归调用父类中的构造方法 6. 以下程序的运行结果是(D) class Person{ public Person(){ System.out.println(“this is a Person”);

常见的java面试笔试题大汇总

1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3.封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性: 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 5、String是最基本的数据类型吗? 基本数据类型包括byte、int、char、long、float、double、boolean和short。 https://www.sodocs.net/doc/5f9146314.html,ng.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 6、int 和Integer 有什么区别 Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 boolean Boolean char Character byte Byte short Short int Integer long Long float Float double Double 引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的

Java面试经典试题和答案

Java面试经典试题和答案 Java面试经典试题和答案 常见的Java问题 1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。 Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。 2.JDK和JRE的区别是什么? Java运行时环境(JRE)是将要执行Java程序的Java虚拟机。它同时也包含了执行applet需要的浏览器插件。Java开发工具包(JDK)是完整的Java软件开发包,包含了JRE,编译器和其他的工具(比如:JavaDoc,Java调试器),可以让开发者开发、编译、执行Java应用程序。 3.”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法? “static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。 Java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的。static方法跟类的任何实例都不相关,所以概念上不适用。 4.是否可以在static环境中访问非static变量?

static变量在Java中是属于类的,它在所有的实例中的值是一 样的。当类被Java虚拟机载入的时候,会对static变量进行初始化。如果你的代码尝试不用实例来访问非static的变量,编译器会 报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。 5.Java支持的数据类型有哪些?什么是自动拆装箱? Java语言支持的8中基本数据类型是: byte short int long float double boolean char 自动装箱是Java编译器在基本数据类型和对应的对象包装类型 之间做的一个转化。比如:把int转化成Integer,double转化成double,等等。反之就是自动拆箱。 6.Java中的方法覆盖(Overriding)和方法重载(Overloading)是 什么意思? Java中的方法重载发生在同一个类里面两个或者是多个方法的 方法名相同但是参数不同的情况。与此相对,方法覆盖是说子类重 新定义了父类的方法。方法覆盖必须有相同的方法名,参数列表和 返回类型。覆盖者可能不会限制它所覆盖的方法的访问。 7.Java中,什么是构造函数?什么是构造函数重载?什么是复制 构造函数?

java笔试题目及答案分析

Java上市公司笔试题目及答案分析 一、选择题(不定项选题) 1下面说法正确的是( C ) A.Java中包的主要作用是实现跨平台功能 B.package语句只能放在import语句后 C.包(package)是由一组类(class) 和接口(inter'face)组成 D.无 2不能用来修饰interface的有(ACD ) Aprivate Bpublic Cprotected Dstatic 3在Java语言中,下列关于字符编码和国际化的叙述,哪些是正确的(CD) A每个中文字符占用2个字节,每个英文字符占用1个字节 B假设数据库中的字符是以GBK编码的,那么显示数据库数据的网页也必须是GBK编码的。 CJava的char类型,通常以UTF-16 Big Endian的方式保存一个字符。 D实现国际化应用常用的手段是利用ResourceBundle类 解析: 1.不同的编码格式,字符所占用的字节数是不一样的。如GBK中每个中文占用2个字 节,UTF-8中则是变长编码,可能占用3个字节或者4个字节。因此A不正确。 2.不同的编码方式之间是可以转换的,如果数据库GBK编码,页面上可以使用任意 支持汉字编码的编码方式显示都可以,只要在向页面传输的数据过程中进行编码的转换即可。如:数据库是GBK,页面上是UTF-8,那么可以这样转换:实例代码以java语法编写 4下面代码的执行结果是(C ) public class TestDemo { public static void main(String[] args) { System.out.println(test1());

Java经典面试笔试题及答案

1.什么是对象序列化,为什么要使用? 所谓对象序列化就是把一个对象以二进制流的方式保存到硬盘上。好处:方便远程调用。 2.值传递与引用传递的区别? 所谓值传递就是把一个对象的值传给一个新的变量,但是系统会给这个新的变量开辟一个新的内存空间。不会改变原有的值所谓引用传递就是把一个对象在堆中保存的数据传递给一个变量,此时新的变量与原有的变量对应同一个内存存储空间,当新的变量修改对象的属性时,内存中的数据也会修改。 3.接口与抽象类的区别? 1:接口里面不可以实现方法体,抽象类可以实现方法体。 2:接口可以多继承接口,抽象类不可以。 3:接口需要被子类实现,抽象类是要被子类继承(单一继承)。 4:接口中只能有公有的方法和属性而且必须赋初始值,抽象类中可以有私有方法和属性. 5: 接口中不能存在静态方法,但属性可以和final,抽象类中方法中可以有静态方法,属性也可以。 4.谈谈继承,为什么要使用继承? 所谓继承就是找出几个类中共同的部分,提取出来作为父类。而子类只需要继承父类,就可以共享父类的方法。 使用继承能够减少重复的代码。 5.方法重载的好处?

所谓重载就是在一个类中可以定义多个相同的方法,但是方法的参数类型和参数的个数以及顺序要不同。 重载的好处就是能够让我们很快的掌握该方法的功能,我们只要要记住该方法就能很快的理解该方法的参数以及参数的作用 6.项目中印象最深的部分? 我觉得在该项目中我体现到了反射技术的强大之处,原来我一直不清楚反射是一种什么样的技术,只知道一些概念上的知识,经过这个项目之后,终于知道该怎样灵活运用反射,以及在什么时候运用。 谈谈你对面向对象的理解与认识? 我觉得使用面向对象这种思维的方式比较符合我们人类的思想,不需要去学习一些什么新的思考方式,就按照现实生活做的一些故事就能让人理解该内容的知识以及他们的作用。 我的看法就是: 1:当加入新的功能的时候不会修改原有的代码。(面向接口编程) 2: 当我们写的一个类可以重复的运用在其他项目中。(代码的复用性) 3:当写一个新类的时候要考虑到他的可扩展性。(灵活性) 7.谈谈集合框架? 集合框架分为三部分,第一部分是collection接口,第二部分是Map接口、第三部分是collections帮助类 首先说一下collection接口,collection接口下面的接口分为set 接口、list接口,在往下面就是他们一些实现类。

相关主题