Java面试手册——J2EE

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> Java面试手册——J2EE

1、B/S与C/S的联系与区别。

  • C/S是Client/Server的缩写。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、InFORMix或 SQL Server。客户端需要安装专用的客户端软件。
  • B/S是Brower/Server的缩写,客户机上只要安装一个浏览器(Browser),如Netscape Navigator或Internet Explorer,服务器安装Oracle、Sybase、InFORMix或 SQL Server等数据库。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现。浏览器通过Web Server 同数据库进行数据交互。
  • 硬件环境不同:
    • C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务.
    • B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S更强的适应范围, 一般只要有操作系统和浏览器就行
    • 对安全要求不同

    • C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强. 一般高度机密的信息系统采用C/S 结构适宜(银行,金融等). 可以通过B/S发布部分可公开信息.
    • B/S 建立在广域网之上, 对安全的控制能力相对弱, 可能面向不可知的用户。
    • 对程序架构不同

    • C/S 程序可以更加注重流程, 可以对权限多层次校验, 对系统运行速度可以较少考虑.
    • B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上. 比C/S有更高的要求 B/S结构的程序架构是发展的趋势, 从MS的.Net系列的BizTalk 2000 Exchange 2000等, 全面支持网络的构件搭建的系统. SUN 和IBM推的JavaBean 构件技术等,使 B/S更加成熟.
    • 软件重用不同

    • C/S 程序可以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好.
    • B/S 对的多重结构,要求构件相对独立的功能.能够相对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石头桌子

      系统维护不同

    • C/S 程序由于整体性, 必须整体考察, 处理出现的问题以及系统升级. 升级难. 可能是再做一个全新的系统
    • B/S 构件组成,方面构件个别的更换,实现系统的无缝升级.系统维护开销减到最小.用户从网上自己下载安装就可以实现升级.

      处理问题不同

    • C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与操作系统相关. 应该都是相同的系统
    • B/S 建立在广域网上, 面向不同的用户群, 分散地域, 这是C/S无法作到的. 与操作系统平台关系最小.

      用户接口不同

    • C/S 多是建立的Window平台上,表现方法有限,对程序员普遍要求较高
    • B/S 建立在浏览器上, 有更加丰富和生动的表现方式与用户交流. 并且大部分难度减低,减低开发成本.

      信息流不同

    • C/S 程序一般是典型的中央集权的机械式处理, 交互性相对低
    • B/S 信息流向可变化, B-B B-C B-G等信息、流向的变化, 更像交易中心。  

      2、应用服务器与WEB SERVER的区别?

    • 应用服务器处理业务逻辑,web服务器主要是让客户可以通过浏览器进行访问。其中应用服务器处理业务逻辑,web服务器是用于处理html文件的。那么下面就让我们详细介绍一下两种的区别:
    • Web 服务器通常比应用服务器简单,如apache就是web服务器,jboss就是ejb应用服务器。
    • 应用服务器:BEA weblogic Server,IBM WebSphere Application Server,Oracle9i Application Server,jBoss,Tomcat.
    • web服务器:Weblogic、Tomcat、Jboss WEB SERVER:IIS、 Apache
    • web服务器:
      • Web服务器可以解析http协议。当服务器接收到一个http请求(request),会返回一个http响应(response)。
      • 例如送回一个HTML页面。为了处理一个请求(request),Web服务器可以响应(response)一个静态页面或图片,进行页面跳转(redirect),或者把动态响应(dynamic response)的产生委托(delegate)给一些其它的程序例如CGI脚本,JSP(JavaServer Pages)脚本,servlets,ASP(Active Server Pages)脚本,服务器端(server-side)JavaScript,或者一些其它的服务器端(server-side)技术。
      • 无论它们(译者注:脚本)的目的如何,这些服务器端(server-side)的程序通常产生一个HTML的响应(response)来让浏览器可以浏览。
      • 要知道,Web服务器的代理模型(delegation model)非常简单。当一个请求(request)被送到Web服务器里来时,它只单纯的把请求(request)传递给可以很好的处理请求(request)的程序(译者注:服务器端脚本)。Web服务器仅仅提供一个可以执行服务器端(server-side)程序和返回(程序所产生的)响应(response)的环境,而不会超出职能范围。
      • 服务器端(server-side)程序通常具有事务处理(transaction processing),数据库连接(database connectivity)和消息(messaging)等功能。
      • 虽然Web服务器不支持事务处理或数据库连接池,但它可以配置(employ)各种策略(strategies)来实现容错性(fault tolerance)和可扩展性(scalability),例如负载平衡(load balancing),缓冲(caching)。集群特征(clustering—features)经常被误认为仅仅是应用程序服务器专有的特征。
      • 应用服务器(The Application Server):

      • 根据我们的定义,作为应用服务器,它通过各种协议,包括http,把商业逻辑暴露给客户端应用程序。
      • Web服务器主要是处理向浏览器发送html以供浏览,而应用程序服务器提供访问商业逻辑的途径以供客户端应用程序使用。应用程序使用此商业逻辑就像你调用对象的一个方法(或过程语言中的一个函数)一样。
      • 应用程序服务器的客户端(包括有图形用户界面(GUI)的)可能会运行在一台PC、一个web服务器或者甚至是其它的应用程序服务器上。
      • 在应用程序服务器与其客户端之间来回穿梭(traveling)的信息不仅仅局限于简单的显示标记。相反,这种信息就是程序逻辑(program logic)。正是由于这种逻辑取得了(takes)数据和方法调用(calls)的形式而不是静态html,所以客户端才可以随心所欲的使用这种暴露的商业逻辑。
      • 在大多数情形下,应用程序服务器是通过组件(component)的应用程序接口(API)把商业逻辑暴露(expose)(给客户端应用程序)的,例如基于J2EE应用程序服务器的EJB组件模型。
      • 此外,应用程序服务器可以管理自己的资源。例如,看大门的工作(gate-keeping duties)包括安全(security),事务处理(transaction processing),资源池(resource pooling),和消息(messaging)。就像web服务器一样,应用服务器配置了可扩展(scalability)和容错(fault tolerance)技术。
      • 3、J2EE是什么?

      • J2EE是Sun公司提出的多层(multi-diered),分布式(distributed),基于组件(component-base)的企业级应用模型(enterpriese application model)。
      • 在这样的一个应用系统中,可按照功能划分为不同的组件,这些组件又可在不同计算机上,并且处于相应的层次(tier)中。所属层次包括客户层(clietn tier)组件,web层和组件,Business层和组件,企业信息系统(EIS)层。
      • 一个另类的回答:j2ee就是增删改查。
      • 4、J2EE是技术还是平台还是框架? 什么是J2EE

      • J2EE本身是一个标准,一个为企业分布式应用的开发提供的标准平台。
      • J2EE也是一个框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技术。
      • 5、请对以下在J2EE中常用的名词进行解释(或简单描述)

      • **web容器**:
        • 给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET直接更容器中的环境变量接口交互,不必关注其它系统问题。
        • 主要有WEB服务器来实现。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。该容器提供的接口严格遵守J2EE规范中的WEB APPLICATION 标准。
        • 我们把遵守以上标准的WEB服务器就叫做J2EE中的WEB容器。
        • EJB容器

        • Enterprise java bean 容器。更具有行业领域特色。
        • 他提供给运行在其中的组件EJB各种管理功能。
        • 只要满足J2EE规范的EJB放入该容器,马上就会被容器进行高效率的管理。并且可以通过现成的接口来获得系统级别的服务。
        • 例如邮件服务、事务管理。
        • JNDI

        • (Java Naming & Directory Interface)JAVA命名目录服务。
        • 主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能。
        • JMS

        • (Java Message Service)JAVA消息服务。
        • 主要实现各个应用程序之间的通讯。包括点对点和广播。
        • JTA

        • (Java Transaction API)JAVA事务服务。
        • 提供各种分布式事务服务。应用程序只需调用其提供的接口即可。
        • JAF

        • (Java Action FrameWork)JAVA安全认证框架。
        • 提供一些安全控制方面的框架。让开发者通过各种部署和自定义实现自己的个性安全控制策略。
        • RMI/IIOP:

        • (Remote Method Invocation /internet对象请求中介协议)他们主要用于通过远程调用服务。
        • 例如,远程有一台计算机上运行一个程序,它提供股票分析服务,我们可以在本地计算机上实现对其直接调用。
        • 当然这是要通过一定的规范才能在异构的系统之间进行通信。RMI是JAVA特有的。
        • 6、如何给weblogic指定大小的内存?

        • 在启动Weblogic的脚本中(位于所在Domian对应服务器目录下的startServerName),增加set MEM_ARGS=-Xms32m -Xmx200m,可以调整最小内存为32M,最大200M。
        • 7、如何设定的weblogic的热启动模式(开发模式)与产品发布模式?

        • 可以在管理控制台中修改对应服务器的启动模式为开发或产品模式之一。
        • 或者修改服务的启动文件或者commenv文件,增加set PRODUCTION_MODE=true。**8、如何启动时不需输入用户名与密码?**
        • 修改服务启动文件,增加 WLS_USER和WLS_PW项。也可以在boot.properties文件中增加加密过的用户名和密码。
        • 8、在weblogic管理制台中对一个应用域(或者说是一个网站,Domain)进行jms及ejb或连接池等相关信息进行配置后,实际保存在什么文件中?

        • 保存在此Domain的config.xml文件中,它是服务器的核心配置文件。
        • 9、说说weblogic中一个Domain的缺省目录结构?比如要将一个简单的helloWorld.jsp放入何目录下,然的在浏览器上就可打入http://主机:端口号//helloword.jsp就可以看到运行结果了?又比如这其中用到了一个自己写的javaBean该如何办?  

        • Domain目录服务器目录applications,将应用目录放在此目录下将可以作为应用访问
        • 如果是Web应用,应用目录需要满足Web应用目录要求
        • jsp文件可以直接放在应用目录中
        • Javabean需要放在应用目录的WEB-INF目录的classes目录中,设置服务器的缺省应用将可以实现在浏览器上无需输入应用名。
        • 10、在weblogic中发布ejb需涉及到哪些配置文件

        • 不同类型的EJB涉及的配置文件不同,都涉及到的配置文件包括ejb-jar.xml,weblogic-ejb-jar.xmlCMP实体Bean一般还需要weblogic-cmp-rdbms-jar.xml。**12、如何在weblogic中进行ssl配置与客户端的认证配置或说说j2ee(标准)进行ssl的配置?**
        • 缺省安装中使用DemoIdentity.jks和DemoTrust.jks  KeyStore实现SSL。
        • 需要配置服务器使用Enable SSL,配置其端口,在产品模式下需要从CA获取私有密钥和数字证书,创建identity和trust keystore,装载获得的密钥和数字证书。可以配置此SSL连接是单向还是双向的。
        • 11、如何查看在weblogic中已经发布的EJB?

        • 可以使用管理控制台,在它的Deployment中可以查看所有已发布的EJB 。
        •  

          原文始发于微信公众号(Java大联盟):

  • 本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

    本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

    原文链接:blog.ouyangsihai.cn >> Java面试手册——J2EE


     上一篇
    【加精】java面试遇到的坑【第四期】 【加精】java面试遇到的坑【第四期】
    //本文将收录到公众号菜单栏:《面试官来了》专栏中 //上期: 年底了,大家都忙着做收尾工作了,笔者上周一直忙着写年度工作总结以及开各种年度总结会。上周遇见朋友说要回老家了,我觉得很奇怪干嘛不等到放年
    2021-04-05
    下一篇 
    Java面试手册——Linux高频考点 Java面试手册——Linux高频考点
    Linux下线程,GDI类的解释。 Linux实现的就是基于核心轻量级进程的”一对一”线程模型,一个线程实体对应一个核心轻量级进程,而线程之间的管理在核外函数库中实现。  GDI类为图像设备编程接口类库。 绝对路径用什么符号表示?当前目录、
    2021-04-05