Java面试题3(jsp)

1.JSP的常用指令?
    1)page指令
功能: 设置整个JSP网页的静态属性
 <!-- 将html文件转换为jsp文件 -->
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
   2) include指令
         功能: include 指令用来向当前页面插入一个静态文件内容,
                   这个文件可以是JSP.HTML文本或者是java程序
         语法:<%@ include file=“filename” %> 比如 <%@ include file=“111.txt” %>
                       标签元素: file
  3) taglib指令
  功能: 使用标签库定义新的自定义标签,
          在JSP页面中启动定制行为页面引用了用户自定义标签时,
           taglib指令应用引用自定义标签库,并指定标签的前缀
<!-- 导入jsp标签库-->
<%@ taglib prefix="s" uri="/struts-tags"%>
 
  <!-- spring提供的标签库 -->
 <%@taglib prefix="spring" uri="http://www.springframework.org/tags" %>
2. == 与 equals有什么区别?
               ==: 比较两个数据内存地址是否相等
           equals: 比较两个数据值是否相等
3.  ++i 和 i++ 的区别?
              ++i: 先赋值,后迅运算
               i++: 先运算,后赋值
4. final,finally, finalize的区别?  final关键字的用法?
      final: 修饰符(关键字)
               如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承
                一个类不能即被声明为abtract,又被声明为final
               被声明为final的方法也同样只能使用,不能重载
     finally: 异常处理时,提供finally块来执行操作
                  finally块是无论异常是否发生,都会执行finally块的内容
     finalize:方法名
                  finalize()方法是在垃圾收集器删除对象之前对这个对象调用的
                 它是在object 类中定义的,所有的类都继承它
  final用法:
        1.修饰类: 表示该类不能被继承
        2.修饰方法: 表示方法不能被重写
        3.修饰变量: 表示变量这只能一次赋值以后值不能被修改(常量)
4.一个汉字几个字节? 一个char类型的变量,能存储一个汉字吗?
             两字字节.  前提是汉字必须是Unicode编码
5.谈谈你对MVC的理解?
       MVC:是一个框架设计模式
         M: 模型,表示业务数据和业务处理.
               属于数据模型,如: entity, jdbc, hibernate, mybatis
         V:视图, 视图向用户显示相关数据,并接受用户的输入,视图不进行任何业务逻辑处理
                如: JSP, HTML等
        C: 控制器 接收响应用户信息
              如: servlet    action  controller
6.用户在浏览器中输入URL之后,发生了什么?写出请求和响应流程?
        1)域名解析
        2)TCP三次握手
        3)浏览器向服务器发送hTTP请求
        4)浏览器发送请求头信息
        5)服务器处理请求
        6)服务器做出应答
        7)服务器发送应答头信息
        8)服务器发送数据
        9)TCP连接关闭
7.JSP的作用域有哪些?
          page: 当前页面有效
          request: 一次会话请求有效
          session: 浏览器进程,只要浏览器不关闭,则一直有效
          application: 服务器只要运行,则有效
8.  sleep和wait的区别?
    sleep: 
          1.属于Thread类,表示让一个线程进入睡眠状态,
              等待一定时间之后,自动醒来进入可运行状态
         2.sleep方法没有释放锁
         3.sleep必须捕获异常
    wait:
        1.属于object,一旦一个对象调用了wait方法,必须采用notify()和notifyAll()方法后本线程进入对象锁定池准备获取对象锁进入运行状态
       2.wait方法释放了锁
       3.wait不需要捕获 异常  
9.java接口的修饰符有哪些?
         public   final   abstract
10.构造器(constructor)是否可被重写(Override)?是否可被重载?是否可被继承?
    构造器不能被继承,因此不能重写Overvide,但可以被重载Overload
11.关系型数据库和非关系型数据库的区别?
            关系型数据库(Mysql和Oracle):
                   表和表,表和字段,数据和数据库存在着关系
       优点: 
             1.数据之间有关系,进行数据的增删改查时非常方便
             2.关系型数据库时有事务存在的,保证数据的完整性和一致性
      缺点:
            1.因为数据和数据之间是有关系的,底层是运行了大量的算法
               大量的算法会降低系统的效率,会降低性能
           2.面对海量的数据的增删改查变得无能为力
           3.海量数据对数据进行维护变得非常的无力
    使用场景: 适合处理一般量级的数据(银行转账和钱)
       非关系型数据库:(redis和MangDB):
        优点:
              1.海量数据的增删改查是可以的
             2.海量数据的维护和处理非常轻松
       缺点:
             1.数据和数据之间没有关系,它们之间是单独存在的
             2.没有强大的事务关系,没有保证数据的完整性和安全性
   使用场景:统计数据,例如微博数据
                   适合处理海量数据,保证效率,不一定安全
12.Git和SVN的区别?
     1.Git是分布式的,SVN不是
       分布式好处:
           (1)跟其他同事不会有太多的冲突,自己写的代码放在自己的电脑上,
               一段时间后在提交合  并,也可以不用联网的本地提交
           (2)GIT和SVN有自己的集中式版本库或服务器.
              GIT更倾向于分布式模式,每个开发人员从中心版本库/服务器上
              chect out代码后会在自己的机器上克隆一个自己的版本库.
              当没有网络时,仍然可以提交文件,查看历史记录,创建项目分支等
    2.GIT把内容按照元数据方式存储,而SVN是按文件
             Git是处于你的机器上的一个克隆版的版本库,
             它拥有中心伴版本库上的所有东西,例如:标签,分支,版本记录等
    3.Git没有一个全局版本号,而SVN有
    4.Git的内容完整性要优于SVN:
       GIT的内容存储使用的是SHA-1哈希算法,确保代码内容的完整性,
       确保在遇到磁盘故障和网络问题时降低对版本库的破坏
   5.Git下载下来后,在OffLine状态下可以看到所有的Log,SVN不行
   6.SVN必须先Update才能Commit,忘记合并就会出问题.Git出现这种情况很很少
   7.提交(Commit)在SVN,当你提交你的完成品时,它将直接记录都中央版本库,
      当发现完成品出现问题,你无法阻止事情的发生.如果网络中断,没办法提交!
     Git的提交完全属于本地版本库的活动,只需"推"(Git push)到主要版本库即可.
     Git的"推"其实是在执行"同步"(Sync)
 8.SVN特点:简单,只需要一个放代码的地方时用是OK的
    Git特点: 版本控制可以不依赖网络做任何事情,对分支和合并有更好的支持.
13. SVN
        项目上有*号,代表有sVN操作未做
               ?代表文件未提交
      提交 commit   将本地没有在SVN上的资源上传到svn服务器上
     更新 update   将服务器上新的资源更新到本地
     检出  checkout(co)  将服务器上的项目导出到本地仓库
     添加  add  一般是? 先add 再提交
     删除  delete 从服务器删除资源
    1.公共资源交个一个人管理(配置文件,静态资源)
    2.在修改公共资源之前,进行更新操作,在小组中告诉其他成员,你要做的操作
    3.提交后及时通知同组人员更新
    4.删除某些资源之后,先不要提交,确定之后再提交
    5.产生冲突之后,将冲突的资源备份一份,接着还原,更新。
    6.每天走之前,将项目备份一份。
       6.1.主干:目前正在开发的版本
       6.2分支:要添加新功能,在分支中添加功能完成,合并到主干
       6.3标记:项目某个版本已经开发完成(发布),将此项目放在标记位置
14.端口被只能用解决方案(mac):
              lsof  -i:8080                   [查看8080端口被什么进程占用]

               kill  -9  18747                  [结束进程,18747为占用8080端口的进程号]

         cmd命令里输入: netstat -ano|findstr 8080  找到相应的8080进程数字串 
              taskkill /pid  数字串 /f   就ok了。

15.设置数据库访问权限
       use mysql
       update user set host = '%' where  user='root';
       flush privileges;
       select user,host from user;
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章