java初中级工程师面试笔试题目及心得(全部实战经验)(答案)

JAVA WEB部分

21.在servlet中怎么获取页面传过来的 name=”a” 或者 id=”b” 的输入框的值?

name:
    <input type="text" name="request_name" value="name_test">
    String name = arg0.getParameter("request_name");
id:

22.jsp和servlet有哪些相同点和不同点,他们之间的联系是什么?为什么要用jsp做显示而不用servlet?

**区别:**
    1.jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代
    码,Web容器将JSP的代码编译成JVM能够识别的java类)
    2.jsp更擅长表现于页面显示,servlet更擅长于逻辑控制.
    3.Servlet中没有内置对象,Jsp中的内置对象都是必须通过HttpServletRequest对象,
      HttpServletResponse对象以及HttpServlet对象得到.

    Jsp是Servlet的一种简化,使用Jsp只需要完成程序员需要输出到客户端的内容,Jsp中的Java脚本如何镶
    嵌到一个类中,由Jsp容器完成。而Servlet则是个完整的Java类,这个类的Service方法用于生成对客户
    端的响应。

**联系:**  
     JSP是Servlet技术的扩展,本质上就是Servlet的简易方式。JSP编译后是“类servlet”。Servlet和
     JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离来。
     而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控
     制逻辑。

23.说一下servlet的生命周期,在执行servlet的过程中分别执行了哪些方法?每个方法具体负责什么?可以实现一些什么内容?

执行servlet的过程,它首先会编译成.class文件,由jvm加载到web容器中(如tomcat,resin)
当有人调用它的时候,首先会执行它自己的构造方法,接着初始化调用init()方法,之后根据页面的请求方式
(get or post) 调用它的doGet()或者 doPost()方法。(当Servlet中有doGet()或者doPost()
方法时,那么service()方法就可以省略,默认为调用这两个方法)最后当servlet终止的时候调用它的destory()方法

24,你知道easyUI吗?

jQuery EasyUI 是一个基于 jQuery 的框架,集成了各种用户界面插件。
这个我没学过,也不好多说,想了解可以自行百度。

25.<div><span>1</span><span>2</span><span>3</span></div>如何获取第二个span的值?

以下我列出五种方法:(重要的是eq()这个方法)
<html>
     <head> 
      <title>Document</title>
      <script src="jquery-1.9.1.min.js"></script>
    <script>
        $(function(){
           alert($("#test span").eq(1).html());

           alert($("div span:eq(0)").html());

           alert($("#test").children().eq(0).html());

           alert($("div").children("span").eq(1).html());

           alert($("div span:nth-child(2)").html())
        });


    </script>

     </head>
     <body>
        <div id="test">
            <span>1</span>
            <span>2</span>
            <span>3</span>
        </div>
     </body>
    </html>

26.用js或者jquery获取页面上name=”a” 或者 id=”b” 输入框的值.

js: 

window.onload=function(){
    var a = document.getElementsByName("a")[0].value;
    var b = document.getElementById("b").value;
    }
jQuery:

 $(function(){
        var a = $("input[name='a']").val();
        var b = $("#b").val();
    });

27.两种跳转方式分别是什么?有什么区别?

1.forward:服务器跳转  <jsp:forward page=跳转页面地址> 地址栏不变
2.response跳转 response.sendRedirect(跳转页面地址)   地址栏改变

28.get和post有什么区别?

GET和POST方式的区别如下:

(1)GET通常用于从服务器上获取数据,POST用于向服务器传送数据。

(2)GET请求提交的数据放置在URL中,而POST提交的数据则放在BODY体中。

(3)GET传送的数据量较小,POST传送的数据量较大,主要受限于服务器的处理能力。

(在FORM提交的时候,如果不指定Method,则默认为GET请求(.net默认是POST),Form中提交的数据将会附加
在url之后,以?分开与url分开。字母数字字符原样发送,但空格转换为“+”号,其它符号转换为%XX,其中XX为

29.jsp常用指令?

   page:是一个全局指令,针对当前页面。

  forward: 执行页面转向,将请求的处理转发到下一个页面。

  param: 用于传递参数,必须与其他支持参数标签一起使用。

  include: 用于动态引入一个 JSP 页面。

  plugin: 用于下载 JavaBean 或 Applet 到客户端执行。

  useBean: 使用 JavaBean。

  setProperty: 修改 JavaBean 实例的属性值。

30.jsp的内置对象是什么?尽量说全一点。

   JSP中一共预先定义了9个这样的对象,分别为:request、response、session、application、out、pagecontext、config、page、exception

    1、request对象

    request 对象是 javax.servlet.httpServletRequest类型的对象。
    该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信
    息、请求方式以及请求参数等)。request对象的作用域为一次请求。

    2、response对象

    response代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。response对象也具有
    作用域,它只在JSP页面内有效。

    3、session对象

    session对象是由服务器自动创建的与用户请求相关的对象。服务器为每个用户都生成一个session对象,
    用于保存该用户的信息,跟踪用户的操作状态。session对象内部使用Map类来保存数据,因此保存数据的格
    式为“Key/value”。 session对象的value可以使复杂的对象类型,而不仅仅局限于字符串类型。

    4、application对象

     application对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在
     整个应用中都有效。与session对象相比,application对象生命周期更长,类似于系统的“全局变量”。

    5、out 对象

    out 对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用 out对象输出数据
    时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完
    毕后,要及时关闭输出流。

    6、pageContext 对象

    pageContext 对象的作用是取得任何范围的参数,通过它可以获取JSP页面的out、request、
    reponse、session、application等对象。pageContext对象的创建和初始化都是由容器来完成的,在
    JSP页面中可以直接使用 pageContext对象。

    7、config 对象

    config 对象的主要作用是取得服务器的配置信息。通过 pageConext对象的 getServletConfig()
    方法可以获取一个config对象。当一个Servlet 初始化时,容器把某些信息通过 config对象传递给这个 
    Servlet。开发者可以在web.xml 文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。

    8、page 对象

    page 对象代表JSP本身,只有在JSP页面内才是合法的。 page隐含对象本质上包含当前Servlet接口引用
    的变量,类似于Java编程中的 this 指针。

    9、exception 对象

    exception 对象的作用是显示异常信息,只有在包含 isErrorPage="true"的页面中才可以被使用,在
    一般的JSP页面中使用该对象将无法编译JSP文件。excepation对象和Java的所有对象一样,都具有系统提
    供的继承结构。exception对象几乎定义了所有异常情况。在Java程序中,可以使用try/catch关键字来
    处理异常情况;如果在JSP页面中出现没有捕获到的异常,就会生成 exception 对象,并把 exception
    对象传送到在page指令中设定的错误页面中,然后在错误页面中处理相应的 exception 对象。

31.请使用jQuery将页面上的所有元素边框设置为2px宽的虚线。

<!DOCTYPE HTML>
<html>
<head>
<title>yugi</title>
<meta charset=UTF-8 />
<style type="text/css">
</style>
<script type="text/javascript" src="jquery-1.8.0.min.js"></script>
<script type="text/javascript">
    jQuery (function ($)
    {
        $ ("*").css ("border", "2px dashed");
    })
</script>
</head>
<body>
</body>
</html>

32.如何用jQuery禁用浏览器的前进后退按钮?

<script type="text/javascript" language="javascript">

$(document).ready(function() {

    /*原理:用户点击后退时产生一个前进的动作,然后就能抵消啦*/
     window.history.forward(1);

     //OR

     window.history.forward(-1);

});

</script>

33.请写出手机号的正则表达式。

/^[1][3-8]\\d{9}$/
1./^ 开始标记;
2.[1]匹配[]号中包含的一个数字
3.[3-8]匹配[]范围内任意一个数字
4.\d{9}输入任意9个数字
js Demo:
    var reg = /^[1][3-8]\\d{9}$/;
    boolean b = reg.test(str);

Java Demo:
     String str = "13945678956";
     String regEx = "^[1][3-8]\\d{9}$";
     // 编译正则表达式
     Pattern pattern = Pattern.compile(regEx);
     Matcher matcher = pattern.matcher(str);
     // 字符串是否与正则表达式相匹配
     boolean rs = matcher.matches();
     System.out.println(rs);

34.请写出邮箱的正则表达式。

^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$

详细参考

35.alert();中怎么控制换行?

\r  或者  \r\n

36.至少说三个IE和Firefox的兼容问题。

详细参考

37.说几个jquery种常用的方法。

这里写图片描述

38.ajax是如何传递数据的?他是同步的还是异步的?怎么实现同步?

常见的可以选择以纯文本和XML作为数据格式(您可以参考jquery下的ajax),现在还有一种比较流行的方式:
JSON(JavaScript Object Notation)
默认是异步
可以通过修改async属性设置为false实现同步

39.mvc的各个部分都有哪些技术实现?如何实现?

MVC是Model-View-Controller的简写。
Model 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现);
View 是应用的表示面(由JSP页面产生);
Controller 是提供应用的处理过程控制(一般是一个Servlet);
通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。 

40.我们在web应用开发过程中经常遇到输出某种编码字符,如iso8859-1,如何输出一个某种编码的字符串?

     tempStr = new String(str.getBytes("ISO-8859-1"), "GBK");//把"ISO-8859-1"转化为“GBK”编码  

41.mybatis一对多关系怎么实现?

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zdp.domain.Person">

    <resultMap type="Person" id="personBean">
        <id column="personId" property="id"/>
        <result column="personName" property="name"/>
        <result column="personAddress" property="address"/>
        <result column="personTel" property="tel"/>

        <!-- 一对多的关系 -->
        <!-- property: 指的是集合属性的值, ofType:指的是集合中元素的类型 -->
        <collection property="orders" ofType="Order">
            <id column="orderId" property="id"/>
            <result column="orderNumber" property="number"/>
            <result column="orderPrice" property="price"/>
        </collection>
    </resultMap>

    <!-- 根据id查询Person, 关联将Orders查询出来 -->
    <select id="selectPersonById" parameterType="string" resultMap="personBean">
        select p.*, o.* from person p, orders o where p.personId  = o.pid and p.personId = #{id}
    </select>

</mapper>

43.说一下缓存,你用过那些缓存框架,为什么要用缓存。

本地缓存 > 集群缓存 > 分布式缓存(数据网格)

ehcache
redis

访问本地缓存中的一个对象比直接访问远端数据存储引擎(例如数据库)要快很多.减少对数据库的访问。

直接访问一个已经存在的对象比从数据创建一个对象要快.

44.什么是ejb?

**取自百科**

EJB是sun的服务器端组件模型,设计目标与核心应用是部署分布式应用程序。凭借java跨平台的优势,用EJB技
术部署的分布式系统可以不限于特定的平台。EJB (Enterprise JavaBean)是J2EE的一部分,定义了一个用于
开发基于组件的企业多重应用程序的标准。其特点包括网络服务支持和核心开发工具(SDK)。 在J2EE里,
Enterprise Java Beans(EJB)称为Java 企业Bean,是Java的核心代码,分别是会话Bean(Session 
Bean),实体Bean(Entity Bean)和消息驱动Bean(MessageDriven Bean)。

45.什么是JPA?

JPA(Java Persistence API)是Sun官方提出的Java持久化规范。它为Java开发人员提供了一种对象/关系映
射工具来管理Java应用中的关系数据。它的出现主要是为了简化现有的持久化开发工作和整合ORM技术,结束现在
Hibernate、TopLink,JDO等ORM框架各自为营的局面。值得注意的是,JPA是在充分吸收了现有Hibernate、
TopLink,JDO等ORM框架的基础上发展而来的,具有易于使用、伸缩性强等优点。从目前的开发社区的反应上
看,JPA受到了极大的支持和赞扬,其中就包括了Spring与EJB3.0的开发团队。着眼未来几年的技术走向,JPA
作为ORM领域标准化整合者的目标应该不难实现。 JPA的总体思想和现有Hibernate、TopLink、JDO等ORM框架
大体一致。总的来说,JPA包括以下3方面的技术:ORM映射元数据JPA支持XML和JDK5.0注解两种元数据形式,元
数据描述对象和表之间的映射关系,框架据此将实现对象持久化到数据库表中。Java持久化API用来操作实体对
象,执行CRUD操作,框架在后台替我们完成所有的事情,开发者可以从繁琐的JDBC和SQL代码中解脱出来。查询
语言这是持久化操作中很重要的一个方面,通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语
句紧密耦合

46.你用过webservice吗?怎么用的?它的原理是什么?webservice和http有什么区别?webservice是怎么处理安全问题的。

它是一种构建应用程序的普遍模型,可以在任何支持网络通信的操作系统中实施运行;它是一种新的web应用程序分
支,是自包含、自描述、模块 化的应用,可以发布、定位、通过web调用。Web Service是一个应用组件,它逻
辑性的为其他应用程序提供数据与服务.各应用程序通过网络协议和规定的一些标准数据格式(Http,XML,
Soap)来访问Web Service,通过Web Service内部执行得到所需结果.Web Service可以执行从简单的请求到
复杂商务处理的任何功能。一旦部署以后,其他Web Service应用程序可以发现并调用它部署的服务.

PS:简单的说
Webservices 就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。这就是说,你能够用编程
的方法通过Web来调用这个应用程序。我们把调用这个Webservices 的应用程序叫做客户在构建和使用Web 
Service时,主要用到以下几个关键的技术和规则:
Http传输信道  
XML( Extensible Markup Language ):描述数据的标准方法.
  SOAP( Simple Object Access Protocol ):表示信息交换的协议.
  WSDL( Web Services Description Language ):Web服务描述语言.
  UDDI(Universal Description, Discovery and Integration):通用描述、发现与集成,它是
    一种独立于平台的,基于XML语言的用于在互联网上描述商务的协议
    
**webservice和http有什么区别?**

httpservice通过post和get得到你想要的东西
webservice就是使用soap协议得到你想要的东西,相比httpservice能处理些更加复杂的数据类型


http协议传输的都是字符串了,webservice则是包装成了更复杂的对象。

hessian类似于webservice,但是它采用的是二进制RPC协议(Binary),具有轻量、传输量小、平台无关的
特点,特别适合于目前网络带宽比较小的手机网络应用项目。

以hessan的java实现为例,它可以传输Map、List、以及自定义的各种数据接口;比http的纯字符串也方便的
多,省却了解析http返回值的步骤。

**webservice是怎么处理安全问题的**

WebService有很完善的安全机制,WS-Security是其安全标准之一,其原理就是往soap里加东西,然后服
务器再解析soap。最常用的安全策略是用户令牌和数字签名,使用证书,webservice还可以对请求方的身份进行
认证

要想webservice安全首先要确保webservice传输过程中数据的安全和数据的正确性,数据可以使用特定的加密
格式,然后在获取到请求时进行解密比对。

47.你知道那些java的前段插件,用过那些?

jquery插件网站

48.你知道那些java的后端插件,用过那些?

eclipse常用插件
49.在SSM框架中,用什么处理事务。

在Spring中庸注解配置事务,xml中配置transactionManager,需要处理事务的方法上加上注解@Transactional

52.SpringMvc如何统一设置编码。

注意:  jsp页面编码设置为UTF-8
form表单提交方式为必须为post,get方式下面spring编码过滤器不起效果
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
<form action="${ctx}/user/addUser" name="userForm" method="post"> 
    修改web.xml,增加编码过滤器,如下(注意,需要设置forceEncoding参数值为true)

    <filter>  
        <filter-name>characterEncodingFilter</filter-name>  
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
        <init-param>  
            <param-name>encoding</param-name>  
            <param-value>UTF-8</param-value>  
        </init-param>  
        <init-param>  
            <param-name>forceEncoding</param-name>  
            <param-value>true</param-value>  
        </init-param>  
    </filter>  
    <filter-mapping>  
        <filter-name>characterEncodingFilter</filter-name>  
        <url-pattern>/*</url-pattern>  
    </filter-mapping> 

53.图片上传用的是前台上传还是后台上传,前台用的是什么js上传,怎么上传的。后台是怎么上传的。

前台用file控件,后台springmvc里面好像是有图片上传的功能,我解释不太清楚,自行百度吧。

54.spring用什么连接欸数据库?用什么处理事务?

Spring连接数据库的几种方式

55.接口传输数据有没有加密,怎么加密。

有加密

加一个访问token。
例如你的api地址是http://www.example.com/api.php
需要接受的参数有a,b,c三个
那么可以加一个验证token(通过约定的key加密生成)。

例如
$a=1;
$b=2;
$c=3;
$key='abcdef';

$token=sha1($a.$b.$c.$key);

然后访问使用http://www.example.com/api.php?a=1&b=2&c=3&token=xxxx
api.php接收到a,b,c,token参数后,根据a,b,c与约定好的key,计算sha1($a.$b.$c.$key);是否等于接
收到的token,如果相同则返回数据,否则返回没有权限。

56.一个大文件,上传到一半的时候网断了,想在接下来继续从断点开始上传,怎么做?

断点续传指的是在下载或上传时,将下载或上传任务(一个文件或一个压缩包)人为的划分为几个部分,每一个部
分采用一个线程进行上传或下载,如果碰到网络故障,可以从已经上传或下载的部分开始继续上传下载以后未上传
下载的部分

57.你知道那些设计模式,说一下单例什么时候用到,原理是什么?手写一个单例。

23种设计模式及其讲解

只要说几个用过的就好了 比如  单例模式、代理模式、工厂方法模式、抽象工厂模式...
单例
    一个程序中只能有一个它的实例。(比如多次点击弹出框,只显示一个)

package com.zzy.demo;

public class Singleton {
    //懒汉式单例类,在第一次调用的时候实例化自己
    private Singleton(){}
    private static Singleton singleton = null;
    //静态工厂方法
    public static Singleton getInstance(){
        if(singleton==null){
            singleton = new Singleton();
        }
        return singleton;
    }
}

class Singleton1{
    //饿汉式单例类,在类初始化时,就自行实例化。
    private Singleton1(){}
    private static final Singleton1 SINGLETON1 = new Singleton1();
    //静态工厂方法
    public static Singleton1 getInstance(){
        return SINGLETON1;
    }
}

58.你会用socket吗?怎么写socket服务端。

简单的 java socket 服务端

  • 3
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值