• java面试问题收集(1)


    cookiee session区别
      1 客户端服务端
      2 session浏览器关闭时无效,cookiee有效期可以设置

    db脏读,在spring中托管事务可以配置/代码 SQL标准定义了4类隔离级别

      1 脏读,一个事务独到了另外一个事务未commit的但已经保存的数据

      2 Read Commited,一个事务只能读取到所有已经commit的数据  MVCC MySQL InnoDB的可重复读并不保证避免幻读,需要应用使用加锁读来保证。而这个加锁度使用到的机制就是next-key locks。      

             SELECT * FROM child WHERE id < 100 FOR UPDATE;可以锁住100以内的数据,让其他事务排队等候

      3 Repeatable Read(可重复读),select始终返回事务开始时候的数据,适合并发读取,但是可能产生幻读,当更新的时候,发现和查到的数据时不一致的

      4 Serializable强制事务排序,使之不可能相互冲突会有效率问题

    异常分类

           1 Throwable 类是 Java 语言中所有错误或异常的超类(这就是一切皆可抛的东西)。它有两个子类:Error和Exception。 Exception又分为两类:一种是CheckedException,一种是UncheckedException。

             这两种Exception的区别主要是CheckedException需要用try...catch...显示的捕获,而UncheckedException不需要捕获。

           2 Error类对象由Java虚拟机生成并抛出,Exception类对象由应用程序处理或抛出 error表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。

           3 如果是运行时异常,我们可以不用方在 try catch 块中,因为我们根本就不知道该 如何去处理这个异常来保障程序的正常运行。如果是 检查异常,我们就要对这个异常进行处理,既然 是检查异常,

             我们应该已经有了处理这个异常的方案,所以就要用 try catch 处理这个异常来保障 程序运行。

    IO NIO
      http://blog.csdn.net/showwair/article/details/7488523
      http://furturestrategist.iteye.com/blog/1463369

      NIO和I/O不同
      IO基于流,NIO基于块,NIO最重要的两个组件缓冲Buffer和通道Channel,Channel是双向的,Stream是单向的,Channel的读写操作必须通过Buffer来进行

    sendRedirect response.redirect 跳转
         1 sendRedirect 客户端跳转,客户端发送两次请求,最终地址显示跳转地址
         2 response.redirect 服务端跳转,客户端发送一次请求,最终显示地址为初始请求地址
        RequestDispatcher reqDispatcher=request.getRequestDispacher("");
        reqDispatcher.forward(request,response)

    比较

      “==”比较两个变量本身的值,即两个对象在内存中的首地址。
      “equals()”比较字符串中所包含的内容是否相同。

    struts 防止重复提交

           1 原理,<s: token />产生一个GUID值的隐藏输入框,将GUID放到会话(session)中;在执行action之前,“token”拦截器将会话token与请求token比较,如果两者相同,

        则将会话中的token删除并往下执行,否则向actionErrors加入错误信息 主要用到的是

               <%@ tag-lib uri="/struts-tags" prefix="s" %>

               <s:form action="tokenAction"> <s:textfield name=""/>  <s:token />  <input type="submit" value="发送"/> </s:form>

             2 struts2在防止表单重复提交的拦截中有2个,分别是:token,tokenSession。tokenSession继承token而来。 通常情况下,使用tokenSession客户端感觉会比较友好,

        因为tokenSession如果重复提交,不会跳转到error.jsp页面

               <action name="tokenAction" class="">  <interceptor-ref name="defaultStack" />  <interceptor-ref name="token" />  

                     <result name="invalid.token">/WEB-INF/notfirstsubmit.jsp</result> 

                </action>

    Map Set Collection区别 
       1 Java所有“存储及随机访问一连串对象”的做法,array是最有效率的一种。缺点是,无法判断其中实际存有多少元素,length只是告诉我们array的容量
         2 Collection包含List、Set,List以特定次序存储数据,Set数据不可重复;set只能通过itorator遍历元素,List可以使用get();
       3 List包含ArrayList、LinkedList、Vector(包含栈),对于需要快速插入,删除元素,应该使用LinkedList
      4 Map 包含HashMap、HashTable、TreeMap,HashMap最快,HashMap和Hashtable类似,不同之处在于HashMap是非同步的,并且允许null

    servlet是什么
          将 Servlet 包装成 Context 容器中的 StandardWrapper,这里 StandardWrapper 是 Tomcat 容器中的一部分,它具有容器的特征,
    而 Servlet 为了一个独立的 web 开发标准,不应该强耦合在 Tomcat 中。 StandardWrapper 并作为子容器添加到 Context 中,
    其它的所有 web.xml 属性都被解析到 Context 中,所以说 Context 容器才是真正运行 Servlet 的 Servlet 容器。
    如果 Servlet 的 load-on-startup 配置项大于 0,那么在 Context 容器启动的时候就会被实例化,前面提到在解析配置文件时会读取默认的 globalWebXml,
    在 conf 下的 web.xml 文件中定义了一些默认的配置项,其定义了两个 Servlet,分别是:org.apache.catalina.servlets.DefaultServlet
    和 org.apache.jasper.servlet.JspServlet 它们的 load-on-startup 分别是 1 和 3,也就是当 Tomcat 启动时这两个 Servlet 就会被启动。
    创建 Servlet 实例的方法是从 Wrapper. loadServlet 开始的。loadServlet 方法要完成的就是获取 servletClass 然后把它交给 InstanceManager
    去创建一个基于 servletClass.class 的对象。如果这个 Servlet 配置了 jsp-file,那么这个 servletClass 就是 conf/web.xml 中定义的
    org.apache.jasper.servlet.JspServlet 了。
    Servlet 的确已经能够帮我们完成所有的工作了,但是现在的 web 应用很少有直接将交互全部页面都用 servlet 来实现,而是采用更加高效的 MVC 框架来实现。
    什么JSP呢?和Servlet的关系又是什么呢?JSP是Servlets技术的一个扩展。JSP可以做的任何事情,Servlet都可以完成。但是JSP允许你将Java代码轻松地和HTML语言混合在一起使用,并完成强大的功能。可以使你容易的阅读代码并在浏览器中浏览到程序执行的结果。
    当第一次访问一个JSP文件时,它会被转换为Java servlet源码,接着被编译成Java字节码,work 存放jsp编译后产生的class文件

    REST(Representational State Transfer)的名称"表现层状态转化"中,省略了主语。"表现层"其实指的是"资源"(Resources)的"表现层"。
    所谓"资源",就是网络上的一个实体,或者说是网络上的一个具体信息。
    你可以用一个URI(统一资源定位符)指向它,每种资源对应一个特定的URI。
    综合上面的解释,我们总结一下什么是RESTful架构:
      (1)每一个URI代表一种资源;
      (2)客户端和服务器之间,传递这种资源的某种表现层;
      (3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。
    最常见的一种设计错误,就是URI包含动词。
    另一个设计误区,就是在URI中加入版本号:

    http://www.oracle.com/technetwork/java/javase/downloads/index.html
  • 相关阅读:
    bootstrap表头固定
    JS:二维数组排序和获取子级元素
    JavaScript 变量声明提升
    一道经典面试题-----setTimeout(function(){},0)
    排序
    基础知识:Promise(整理)
    几个兼容相关的重要函数
    JSON
    关于由ajax返回的数据在for循环中只能取到最后一个数的问题
    如果要遍历除了for循环,你还知道什么?——JavaScript的各种遍历方式
  • 原文地址:https://www.cnblogs.com/ai464068163/p/3028707.html
Copyright © 2020-2023  润新知