• 回答数

    7

  • 浏览数

    167

晃晃悠儿
首页 > 工程师考试 > java软件工程师面试题

7个回答 默认排序
  • 默认排序
  • 按时间排序

小可爱mmd22

已采纳

首先都是问工作经历,上一家公司的工作情况(应届生会问些学校表现、毕业设计之类的)。然后问些技术问题,JAVA基础的概念,线程、并发、网络、文件操作、数据库操作之类等等。现在JAVA都是WEB方向,所以还会问些WEB方面的问题,前端、服务器之类。还会问一些框架方面的问题,spring,springMVC,struts,hibernate,mybatis之类的。

java软件工程师面试题

251 评论(13)

小茉莉0906

面试题?不是笔试题?面试的时候问的问题都不一样的,笔试的题倒是差不多!

336 评论(10)

嘉嘉麻麻8866

java软件工程师面试题集 EJB方面 1、有哪些内容?分别用在什么场合? 和的区别? 答:规范内容包括Bean提供者,应用程序装配者,EJB容器,EJB配置工具,EJB服务提供者,系统管理员。这里面,EJB容器是EJB之所以能够运行的核心。EJB容器管理着EJB的创建,撤消,激活,去活,与数据库的连接等等重要的核心工作。JSP,Servlet,EJB,JNDI,JDBC,JMS..... 2、EJB与JAVA BEAN的区别? 答:Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。Enterprise Java Bean 相当于DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。 3、EJB的基本架构 答:一个EJB包括三个部分: Remote Interface 接口的代码 package Beans; import ; import ; public interface Add extends EJBObject { //some method declare } Home Interface 接口的代码 package Beans; import ; import ; import ; public interface AddHome extends EJBHome { //some method declare } EJB类的代码 package Beans; import ; import ; import ; public class AddBean Implements SessionBean { //some method declare } J2EE,MVC方面 1、MVC的各个部分都有那些技术来实现?如何实现? 答:MVC是Model-View-Controller的简写。"Model" 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现), "View" 是应用的表示面(由JSP页面产生),"Controller" 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。 2、应用服务器与WEB SERVER的区别? 希望大家补上,谢谢 3、J2EE是什么? 答:Je22是Sun公司提出的多层(multi-diered),分布式(distributed),基于组件(component-base)的企业级应用模型(enterpriese application model).在这样的一个应用系统中,可按照功能划分为不同的组件,这些组件又可在不同计算机上,并且处于相应的层次(tier)中。所属层次包括客户层(clietn tier)组件,web层和组件,Business层和组件,企业信息系统(EIS)层。 4、WEB SERVICE名词解释。JSWDL开发包的介绍。JAXP、JAXM的解释。SOAP、UDDI,WSDL解释。 答:Web Service描述语言WSDL SOAP即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML编码信息的轻量级协议。 UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。 5、BS与CS的联系与区别。 希望大家补上,谢谢 6、STRUTS的应用(如STRUTS架构) 答:Struts是采用Java Servlet/JavaServer Pages技术,开发Web应用程序的开放源码的framework。 采用Struts能开发出基于MVC(Model-View-Controller)设计模式的应用构架。 Struts有如下的主要功能: 一.包含一个controller servlet,能将用户的请求发送到相应的Action对象。 二.JSP自由tag库,并且在controller servlet中提供关联支持,帮助开发员创建交互式表单应用。 三.提供了一系列实用对象:XML处理、通过Java reflection APIs自动处理JavaBeans属性、国际化的提示和消息。 设计模式方面 1、开发中都用到了那些设计模式?用在什么场合? 答:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。主要用到了MVC的设计模式。用来开发JSP/Servlet或者J2EE的相关应用。简单工厂模式等。 2、UML方面 答:标准建模语言UML。用例图,静态图(包括类图、对象图和包图),行为图,交互图(顺序图,合作图),实现图, JavaScript方面 1、如何校验数字型? var re=/^d{1,8}$|.d{1,2}$/; var str=(i).value; var r=(re); if (r==null) { sign=-4; break; } else{ (i).value=parseFloat(str); } CORBA方面 1、CORBA是什么?用途是什么? 答:CORBA 标准是公共对象请求代理结构(Common Object Request Broker Architecture),由对象管理组织 (Object Management Group,缩写为 OMG)标准化。它的组成是接口定义语言(IDL), 语言绑定(binding:也译为联编)和允许应用程序间互操作的协议。 其目的为: 用不同的程序设计语言书写 在不同的进程中运行 为不同的操作系统开发 LINUX方面 1、LINUX下线程,GDI类的解释。 答:LINUX实现的就是基于核心轻量级进程的"一对一"线程模型,一个线程实体对应一个核心轻量级进程,而线程之间的管理在核外函数库中实现。 GDI类为图像设备编程接口类库。 1、面向对象的三个基本特征 2、方法重载和方法重写的概念和区别 3、接口和内部类、抽象类的特性 4、文件读写的基本类 **5、串行化的注意事项以及如何实现串行化 6、线程的基本概念、线程的基本状态以及状态之间的关系 7、线程的同步、如何实现线程的同步 8、几种常用的数据结构及内部实现原理。 9、Socket通信(TCP、UDP区别及Java实现方式) **10、Java的事件委托机制和垃圾回收机制 11、JDBC调用数据库的基本步骤 **12、解析XML文件的几种方式和区别 13、Java四种基本权限的定义 14、Java的国际化 二、JSP 1、至少要能说出7个隐含对象以及他们的区别 ** 2、forward 和redirect的区别 3、JSP的常用指令 三、servlet 1、什么情况下调用doGet()和doPost()? 2、servlet的init()方法和service()方法的区别 3、servlet的生命周期 4、如何现实servlet的单线程模式 5、servlet的配置 6、四种会话跟踪技术 四、EJB **1、EJB容器提供的服务 主要提供声明周期管理、代码产生、持续性管理、安全、事务管理、锁和并发行管理等服务。 2、EJB的角色和三个对象 EJB角色主要包括Bean开发者 应用组装者 部署者 系统管理员 EJB容器提供者 EJB服务器提供者 三个对象是Remote(Local)接口、Home(LocalHome)接口,Bean类 2、EJB的几种类型 会话(Session)Bean ,实体(Entity)Bean 消息驱动的(Message Driven)Bean 会话Bean又可分为有状态(Stateful)和无状态(Stateless)两种 实体Bean可分为Bean管理的持续性(BMP)和容器管理的持续性(CMP)两种 3、bean 实例的生命周期 对于Stateless Session Bean、Entity Bean、Message Driven Bean一般存在缓冲池管理,而对于Entity Bean和Statefull Session Bean存在Cache管理,通常包含创建实例,设置上下文、创建EJB Object(create)、业务方法调用、remove等过程,对于存在缓冲池管理的Bean,在create之后实例并不从内存清除,而是采用缓冲池调度机制不断重用实例,而对于存在Cache管理的Bean则通过激活和去激活机制保持Bean的状态并限制内存中实例数量。 4、激活机制 以Statefull Session Bean 为例:其Cache大小决定了内存中可以同时存在的Bean实例的数量,根据MRU或NRU算法,实例在激活和去激活状态之间迁移,激活机制是当客户端调用某个EJB实例业务方法时,如果对应EJB Object发现自己没有绑定对应的Bean实例则从其去激活Bean存储中(通过序列化机制存储实例)回复(激活)此实例。状态变迁前会调用对应的ejbActive和ejbPassivate方法。 5、remote接口和home接口主要作用 remote接口定义了业务方法,用于EJB客户端调用业务方法 home接口是EJB工厂用于创建和移除查找EJB实例 6、客服端调用EJB对象的几个基本步骤 一、 设置JNDI服务工厂以及JNDI服务地址系统属性 二、 查找Home接口 三、 从Home接口调用Create方法创建Remote接口 四、 通过Remote接口调用其业务方法 五、数据库 1、存储过程的编写 2、基本的SQL语句 六、weblogic 1、 如何给weblogic指定大小的内存? 在启动Weblogic的脚本中(位于所在Domian对应服务器目录下的startServerName),增加set MEM_ARGS=-Xms32m -Xmx200m,可以调整最小内存为32M,最大200M 2、 如何设定的weblogic的热启动模式(开发模式)与产品发布模式? 可以在管理控制台中修改对应服务器的启动模式为开发或产品模式之一。或者修改服务的启动文件或者commenv文件,增加set PRODUCTION_MODE=true。 3、 如何启动时不需输入用户名与密码? 修改服务启动文件,增加 WLS_USER和WLS_PW项。也可以在文件中增加加密过的用户名和密码. 4、 在weblogic管理制台中对一个应用域(或者说是一个网站,Domain)进行jms及ejb或连接池等相关信息进行配置后,实际保存在什么文件中? 保存在此Domain的文件中,它是服务器的核心配置文件。 5、 说说weblogic中一个Domain的缺省目录结构?比如要将一个简单的放入何目录下,然的在浏览器上就可打入http://主机:端口号//就可以看到运行结果了? 又比如这其中用到了一个自己写的javaBean该如何办? Domain目录\服务器目录\applications,将应用目录放在此目录下将可以作为应用访问,如果是Web应用,应用目录需要满足Web应用目录要求,jsp文件可以直接放在应用目录中,Javabean需要放在应用目录的WEB-INF目录的classes目录中,设置服务器的缺省应用将可以实现在浏览器上无需输入应用名。 6、 如何查看在weblogic中已经发布的EJB? 可以使用管理控制台,在它的Deployment中可以查看所有已发布的EJB 7、 如何在weblogic中进行ssl配置与客户端的认证配置或说说j2ee(标准)进行ssl的配置 缺省安装中使用和 KeyStore实现SSL,需要配置服务器使用Enable SSL,配置其端口,在产品模式下需要从CA获取私有密钥和数字证书,创建identity和trust keystore,装载获得的密钥和数字证书。可以配置此SSL连接是单向还是双向的。 8、在weblogic中发布ejb需涉及到哪些配置文件 不同类型的EJB涉及的配置文件不同,都涉及到的配置文件包括实体Bean一般还需要 9、EJB需直接实现它的业务接口或Home接口吗,请简述理由. 远程接口和Home接口不需要直接实现,他们的实现代码是由服务器产生的,程序运行中对应实现类会作为对应接口类型的实例被使用。 10、说说在weblogic中开发消息Bean时的persistent与non-persisten的差别 persistent方式的MDB可以保证消息传递的可靠性,也就是如果EJB容器出现问题而JMS服务器依然会将消息在此MDB可用的时候发送过来,而non-persistent方式的消息将被丢弃。 11、说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法 Session Facade Pattern:使用SessionBean访问EntityBean Message Facade Pattern:实现异步调用 EJB Command Pattern:使用Command JavaBeans取代SessionBean,实现轻量级访问 Data Transfer Object Factory:通过DTO Factory简化EntityBean数据提供特性 Generic Attribute Access:通过AttibuteAccess接口简化EntityBean数据提供特性 Business Interface:通过远程(本地)接口和Bean类实现相同接口规范业务逻辑一致性 EJB架构的设计好坏将直接影响系统的性能、可扩展性、可维护性、组件可重用性及开发效率。项目越复杂,项目队伍越庞大则越能体现良好设计的重要性 from java-cn

157 评论(13)

孤星马哥

1、说出Servlet 的生命周期,并说出Servlet 和CGI 的区别?答:Web 容器加载Servlet 并将其实例化后,Servlet 生命周期开始,容器运行其init方法进行Servlet的初始化,请求到达时运行其service 方法,service方法自动派遣运行与请求对应的doXXX 方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。与cgi 的区别在于servlet 处于服务器进程中,它通过多线程方式运行其service 方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI 对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。2、forward 和redirect 的区别?答:forward 是容器中控制权的转向,是服务器请求资源,服务器直接访问目标地址的URL,把那个URL 的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。redirect 就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request 参数都可以获取,并且从浏览器的地址栏中可以看到跳转后的链接地址。前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接;在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。3、JSP 中动态INCLUDE 与静态INCLUDE 的区别?答:动态INCLUDE 用jsp:include 动作实现它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数;静态INCLUDE 用include 伪码实现,它不会检查所含文件的变化,适用于包含静态页面<%@ include file="" %>。4、说出数据连接池的工作机制是什么?答:J2EE 服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。5、JSP的内置对象及方法?答:request 表示HttpServletRequest 对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header 和session 数据的有用的方法。response 表示HttpServletResponse 对象,并提供了几个用于设置送回浏览器的响应的方法(如cookies,头信息等)。out 对象是 的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。pageContext 表示一个 对象。它是用于方便存取各种范围的名字空间、servlet 相关的对象的API,并且包装了通用的servlet 相关功能的方法。session 表示一个请求的 对象。Session可以存贮用户的状态信息。application 表示一个 对象。这有助于查找有关servlet 引擎和servlet 环境的信息。config 表示一个 对象。该对象用于存取servlet 实例的初始化参数。page 表示从该页面产生的一个servlet 实例。6、JSP有哪些动作?作用分别是什么?答:JSP 共有以下6 种基本动作:· jsp:include:在页面被请求的时候引入一个文件;· jsp:useBean:寻找或者实例化一个JavaBean。;· jsp:setProperty:设置JavaBean 的属性。;· jsp:getProperty:输出某个JavaBean 的属性;· jsp:forward:把请求转到一个新的页面;· jsp:plugin:根据浏览器类型为Java 插件生成OBJECT 或EMBED 标记。7、JSP有哪些内置对象?作用分别是什么?答:JSP 共有以下9 种基本内置组件(可与ASP 的6 种内部组件相对应):· request:用户端请求,此请求会包含来自GET/POST 请求的参数;· response:网页传回用户端的回应;· pageContext:网页的属性是在这里管理;· session:与请求有关的会话期;· application:servlet 正在执行的内容;· out:用来传送回应的输出;· config:servlet 的构架部件;· page:JSP 网页本身;· exception:针对错误网页,未捕捉的例外。8、get 和post 的区别?答:Form 中的get 和post 方法,在数据传输过程中分别对应了HTTP 协议中的GET 和POST 方法。二者主要区别如下:. Get 是用来从服务器上获得数据,而Post 是用来向服务器上传递数据;. Get 将表单中数据按照variable=value 的形式,添加到action 所指向的URL 后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post 是将表单中的数据放在form 的数据体中,按照变量和值相对应的方式,传递到action所指向URL;. Get 是不安全的,因为在传输过程,数据被放在请求的URL 中;Post 的所有操作对用户来说都是不可见的;. Get 传输的数据量小,这主要是因为受URL 长度限制;而Post 可以传输大量的数据,所以在上传文件只能使用Post;. Get 限制Form 表单的数据集必须为ASCII 字符,而Post 支持整个ISO10646字符集;. Get 是Form 的默认方法。9、什么情况下调用doGet()和doPost()?答:Jsp 页面中的form 标签里的method 属性为get 时调用doGet(),为post时调用doPost()。10、如何从form 表单中得取checkbox 的值?答:可在页面把checkbox 的name 属性取同一个,value 属性取每个条目的id,后台用getParamter(“name”)能取到checkbox 的一组值。11、javascript 常用的方面?答:常用于数据输入校验和页面特殊效果等。12、常用的web 容器和开发工具?答:最常用的容器包括:tomcat、weblogic;开发工具有:eclipse,jbuilder。13、JSP和Servlet 有哪些相同点和不同点,他们之间的联系是什么?答:JSP 是Servlet 技术的扩展,本质上是Servlet 的简易方式,更强调应用的外表表达。JSP 编译后是"类servlet"。Servlet和JSP 最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML 里分离开来。而JSP 的情况是Java 和HTML 可以组合成一个扩展名为.jsp 的文件。JSP 侧重于视图,Servlet 主要用于控制逻辑。14、JSP的四种范围?. page 是代表与一个页面相关的对象和属性。一个页面由一个编译好的Java servlet 类(可以带有任何的include 指令,但是没有include 动作)表示。这既包括servlet 又包括被编译成servlet 的JSP 页面。. request 是代表与Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个Web 组件(由于forward 指令和include 动作的关系)。. session 是代表与用于某个Web 客户机的一个用户体验相关的对象和属性。一个Web 会话可以也经常会跨越多个客户机请求。. application 是代表与整个Web 应用程序相关的对象和属性。这实质上是跨越整个Web 应用程序,包括多个页面、请求和会话的一个全局作用域。15、页面间对象传递的方法?答:request,session,application,cookie等。16、详细描述MVC?答:基于Java的Web应用系统采用MVC架构模式,即model(模型)、view(视图)、control(控制)分离设计;这是目前WEB 应用服务系统的主流设计方向。· Model:即处理业务逻辑的模块,每一种处理一个模块;· View:负责页面显示,显示MODEL 处理结果给用户,主要实现数据到页面转换过程;· Control:负责每个请求的分发,把FORM 数据传递给MODEL 处理,把处理结果的数据传递给VIEW 显示。17、MVC 的各个部分都有那些技术来实现?如何实现?答:MVC 是Model-View-Controller 的简写。"Model" 代表的是应用的业务逻辑(通过JavaBean,EJB 组件实现), "View" 是应用的表示面(由JSP 页面产生),"Controller" 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。18、应用服务器有那些?答:BEA WebLogic Server, IBM WebSphere Application Server, Oracle9i Application Server, JBoss, Tomcat。19、Servlet 执行时一般实现哪几个方法?答:public void init(ServletConfig config)public ServletConfig getServletConfig()public String getServletInfo()public void service(ServletRequest request,ServletResponseresponse)public void destroy()20、struts 的入口类?答:是ActionServlet,所有的struts请求都经由该类转发处理。21、STRUTS的应用(如STRUTS 架构)?答:Struts 是采用Java Servlet/JavaServer Pages 技术开发Web 应用程序的开放源码的framework。采用Struts 能开发出基于MVC(Model-View-Controller)设计模式的应用构架。Struts 有如下的主要功能:. 包含一个controller servlet,能将用户的请求发送到相应的Action 对象;. JSP 自由tag 库,并且在controller servlet 中提供关联支持,帮助开发人员创建交互式表单应用;. 提供了一系列实用对象:XML 处理、通过Java reflection APIs 自动处理JavaBeans 属性、国际化的提示和消息。22、几种会话跟踪技术?答:cookie、URL 重写、设置表单隐藏域。23、过滤器有哪些作用?答:可以验证客户是否来自可信的网络,可以对客户提交的数据进行重新编码,可以从系统里获得配置的信息,可以过滤掉客户的某些不应该出现的词汇,可以验证用户是否登录,可以验证客户的浏览器是否支持当前的应用,可以记录系统的日志等等。24、简述HttpSession的作用、使用方法,可用代码说明。答:HttpSession 中可以跟踪并储存用户信息,把值设置到属性中,有2 个方法:setAttribute(),getAttrribute();例如:在一个方法中用(“student”,student);在session 中设置一个属性名为student,值为一个名为student 的对象。而后可在同一session 范围内用getAttribute(“student”)取出该属性,得到student对象。25、介绍在JSP 中如何使用JavaBeans?答:在JSP中使用JavaBean常用的动作有:1):用来创建和查找bean 对象;2):用来设置bean 的属性,即调用其setXxx()方法;3):用来获得bean 的属性,即调用其getXxx()方法。26、JSP和Servlet中的请求转发分别如何实现?答:JSP 中的请求转发可利用forward 动作实现:;Serlvet中实现请求转发的方式为:getServletContext().getRequestDispatcher(path).forward(req,res)。27、 的作用?答:用于配置web 应用的信息;如listener、filter 及servlet 的配置信息等。28、写出熟悉的JSTL标签答:。29、Javascript 的优缺点和内置对象· 优点:简单易用,与Java 有类似的语法,可以使用任何文本编辑工具编写,只需要浏览器就可执行程序,并且事先不用编译,逐行执行,无需进行严格的变量声明,而且内置大量现成对象,编写少量程序可以完成目标;· 缺点:不适合开发大型应用程序;· Javascript 有11 种内置对象:Array、String、Date、Math、Boolean、Number、Function、Global、Error、RegExp、Object。30、说出struts中的标签。答: “只要胆子大,失业就追不上我”……事实证明这是没有的事,所以还不好好准备面试题!!!

275 评论(12)

毛头猴子

题目在哪里呢???

81 评论(8)

派大海绵

下面是10道java基础面试题,后附答案

1.什么是 Java 虚拟机?为什么 Java 被称作是“平台无关的编程语言”?

Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程。Java 源文件被编译成能被 Java 虚拟机执行的字节码文件。

Java 被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java 虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。

2.“static”关键字是什么意思?Java 中是否可以覆盖(override)一个 private 或者是static 的方法?

“static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。

Java 中 static 方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而 static 方法是编译时静态绑定的。static 方法跟类的任何实例都不相关,所以概念上不适用。

和 JRE 的区别是什么?

Java 运行时环境(JRE)是将要执行 Java 程序的 Java 虚拟机。它同时也包含了执行 applet 需要的浏览器插件。Java 开发工具包 (JDK)是完整的 Java 软件开发包,包含了 JRE,编译器和其他的工具(比如:JavaDoc,Java 调试器),可以让开发者开发、编译、执行 Java 应用程序。

4.是否可以在 static 环境中访问非 static 变量?

static 变量在 Java 中是属于类的,它在所有的实例中的值是一样的。当类被 Java 虚拟机载入的时候,会对 static 变量进行初始化。如果你的代码尝试不用实例来访问非 static 的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。

支持的数据类型有哪些?什么是自动拆装箱?

Java 语言支持的 8 中基本数据类型是:

byte

short

int

long

float

double

boolean

char

自动装箱是 Java 编译器在基本数据类型和对应的对象包装类型之间做的一个转化。比如:把 int 转化成 Integer,double 转化成 double,等等。反之就是自动拆箱。

支持多继承么?

不支持,Java 不支持多继承。每个类都只能继承一个类,但是可以实现多个接口。

中,什么是构造函数?什么是构造函数重载?什么是复制构造函数?

当新对象被创建的时候,构造函数会被调用。每一个类都有构造函数。在程序员没有给类提供构造函数的情况下,Java 编译器会为这个类创建一个默认的构造函数。

Java 中构造函数重载和方法重载很相似。可以为一个类创建多个构造函数。每一个构造函数必须有它自己唯一的参数列表。

Java 不支持像 C++中那样的复制构造函数,这个不同点是因为如果你不自己写构造函数的情况下,Java 不会创建默认的复制构造函数。

中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?

Java 中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。与此相对,方法覆盖是说子类重新定义了父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型。覆盖者可能不会限制它所覆盖的方法的访问。

9.接口和抽象类的区别是什么?

Java 提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于:

接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。

类可以实现很多个接口,但是只能继承一个抽象类

类如果要实现一个接口,它必须要实现接口声明的所有方法。但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。

抽象类可以在不提供接口方法实现的情况下实现接口。

Java 接口中声明的变量默认都是 final 的。抽象类可以包含非 final 的变量。

Java 接口中的成员函数默认是 public 的。抽象类的成员函数可以是 private, protected 或者是 public。

接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是,如果它包含 main 方法的话是可以被调用的。

10.什么是值传递和引用传递?

对象被值传递,意味着传递了对象的一个副本。因此,就算是改变了对象副本,也不会影响源对象的值。

对象被引用传递,意味着传递的并不是实际的对象,而是对象的引用。因此,外部对引用对象所做的改变会反映到所有的对象上。

最后祝你面试顺利!

221 评论(15)

jiajia1994

异常机制的原理与应用答:每当程序出现异常之后,如果程序没有进行相应的处理,则程序会出现中断现象。实际上,产生了异常之后,JVM会抛出一个异常类的实例化对象,如果此时使用了try语句捕获的话,则可以进行异常的处理,否则,交给JVM进行处理。当try语句捕获异常之后,将与catch语句的异常类型进行匹配,如果匹配成功则执行catch内的语句。简单的应用:在所以throws语句的地方加入try-catch。标准应用:try-catch-finally-throw-throws一起使用。 2. 垃圾回收机制的优点答:释放无用的对象所占用的空间。方式:自动回收,手动回收。使用(),实际上调用().gc()3. Error与Exception区别答:Error是jvm进行处理,是jvm出错exception是可以由程序处理的,可以用try-catch捕获的4. final,finally,finallize答:final定义的变量的值不能改变,定义的方法不能被覆盖,定义的类不能被继承finally是异常的统一出口,finallize是垃圾回收前的收尾工作,是Object类定义的5. Anonymous Inner Class是否可以extends,是否可以implements Interface答:允许继承和实现,因为匿名内部类就是在抽象类和接口的基础上发展起来的6. Static Nested Class 与Inner Class的区别答:使用Static定义的Class就是外部类,可以通过外部类. 内部类直接访问而Inner Class是不能被外部访问的,只能通过外部类的实例再找到内部类实例。7. HashMap and HashTable?答:HashMap:1) released in jdk Class 2)采用异步处理方式,性能较高,是非线程安全的 3)允许nullHashTable:1)released in jdk ,old Class 2)采用同步处理方式,性能低,是线程安全的3)不允许null8. assert代表什么?答:asserts是jdk 之后发布的新关键字,表示断言,即程序执行到某个地方肯定是预计的值,一般开发很少使用。要使用assert,必须加上 -ea参数9. gc是什么?答:gc是garbage collection,垃圾回收,使用gc可以进行垃圾空间的释放10. String s = new String("xyz")产生了几个对象?答:一个匿名对象xyz,在栈空间内。一个new实例化的对象,在堆空间内。11. sleep() and wait()?答:sleep()是Thread类定义方法,表示线程的休眠,可以自动唤醒wait()方法是Object类定义的方法,需要手动notify()和notifyAll()//sleep()不释放资源,wait()释放资源12. Overload与Override的区别答:Overload:重载 |- 在一个类中定义的若干方法 |- 所有的方法名相同,但参数类型或个数不同 |- 只有参数有关,与返回类型无关Override:覆写 |- 在继承的关系中 |- 子类定义了父类同名的方法,参数类型或个数最好完全一样。 |- 访问权限不能更严格13. abstract class 和 interface有什么区别?答:抽象类: |-由抽象方法和常量、变量、全局常量、构造方法、普通方法组成 |-使用abstract声明 |-子类要通过extends继承抽象类,子类如果不是抽象类,则必须覆写抽象类的全部抽象方法 |-存在单继承的局限 |-抽象类可以实现若干个接口接口: |-由抽象方法和全局常量组成 |-使用interface关键字 |-子类要通过implements实现接口,子类如果不是抽象类,则必须覆写抽象类的全部抽象方法 |-一个子类可以实现多个接口 |-接口不能继承一个抽象类,但允许继承多个接口

112 评论(14)

相关问答