美文网首页
每日流程图

每日流程图

作者: 天道灬酬勤 | 来源:发表于2018-12-13 21:10 被阅读7次

    面试题


    1.throw 和 throws 的区别?

    • throw:是用在语句抛出异常
      throw特点:
      1) throw 语句用在方法体内,表示抛出异常,由方法体内的语句处理。throw 是具体 向外抛异常的动作,所以它是抛出一个异常实例,执行 throw 则一定抛出了某种异常
      2) throws 是用在声明方法时,表示该方法可能要抛出异常
    • throws特点:
      1)throws 语句用在方法声明后面,表示再抛出异常,由该方法的调用者来处理
      2) throws 主要是声明这个方法会抛出这种类型的异常,使它的调用者知道要捕获这个异常
      3) throws 表示出现异常的一种可能性,并不一定会发生这些异常
      注意:抛出的异常可以使系统定义,也可以是自定义;使用 try,catch,finally 捕获异常。

    2.final、finally、 finalize 的区别

    • 1)final:用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,被其修饰的类不可继承。
    • 2)Finally:异常处理语句结构的一部分,表示总是执行。
    • 3)finalize:Object 类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。

    3.IO 流

    流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在
    两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。

    4.break 和continue 的区别?

    • break 和 continue 都是用来控制循环,主要是终止循环;
    • break 用于完全结束一个循环,跳出循环体执行循环后面的语句;
    • continue 用于跳过本次循环,执行下次循环;

    5.如何实现对象克隆?

    1). 实现 Cloneable 接口并重写 Object 类中的 clone()方法;
    2). 实现 Serializable 接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深克隆

    6.获得一个类的类对象有哪些方式?

    1):类型.class,例如:String.class
    2):对象.getClass(),例如:”hello”.getClass()
    3):Class.forName(),例如:Class.forName(“java.lang.String”)

    7.MyBatis编程步骤是什么样的?

    ① 创建SqlSessionFactory
    ② 通过SqlSessionFactory创建SqlSession
    ③ 通过sqlsession执行数据库操作
    ④ 调用session.commit()提交事务
    ⑤ 调用session.close()关闭会话

    8.JDBC编程有哪些不足之处,MyBatis是如何解决这些问题的?

    ① 数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题。
    解决:在SqlMapConfig.xml中配置数据链接池,使用连接池管理数据库链接。
    ② Sql语句写在代码中造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码。
    解决:将Sql语句配置在XXXXmapper.xml文件中与java代码分离。
    ③ 向sql语句传参数麻烦,因为sql语句的where条件不一定,可能多也可能少,占位符需要和参数一一对应。
    解决: Mybatis自动将java对象映射至sql语句。
    ④ 对结果集解析麻烦,sql变化导致解析代码变化,且解析前需要遍历,如果能将数据库记录封装成pojo对象解析比较方便。
    解决:Mybatis自动将sql执行结果映射至java对象。

    9.简单的说一下MyBatis的一级缓存和二级缓存?

    • Mybatis首先去缓存中查询结果集,如果没有则查询数据库,如果有则从缓存取出返回结果集就不走数据库。Mybatis内部存储缓存使用一个HashMap,key为hashCode+sqlId+Sql语句。value为从查询出来映射生成的java对象
    • Mybatis的二级缓存即查询缓存,它的作用域是一个mapper的namespace,即在同一个namespace中查询sql可以从缓存中获取数据。二级缓存是可以跨SqlSession的。

    流程图

    1.程序之间通信json数据转换.png 2.用户注册--发送短信--流程分析.png 3.用户登录和登录过滤器--流程分析.png 4.鉴权中心--用户登录--流程图.png
    jmyp.png

    相关文章

      网友评论

          本文标题:每日流程图

          本文链接:https://www.haomeiwen.com/subject/rrcihqtx.html