2021面试准备-JAVA_WEB

88 阅读9分钟

二、Java Web

1. jdbc 技术

1.1 说一下原生 JDBC 操作数据库流程?

​ 第一步:Class.forName()加载数据库连接驱动;

​ 第二步:DriverManager.getConnerction() 获取数据连接对象;

​ 第三步: 根据SQL 获取sql回话对象,有两种,Statement.PreparedStatement;

​ 第四步: 执行SQL处理结果集,执行SQL前如果有参数值就设置参数值setXXX();

​ 第五步: 关闭结果集,关闭回话,关闭连接。

1.2 说说事务的概念,在JDBC编程中处理事务步骤

​ 1.事务是作为单个逻辑单元执行的一系列操作

​ 2.一个逻辑工作单元必须有四个属性,称作原子性,一致性,隔离性和持久性(ACID)属性,只有这样才能一个事务处理步骤:

​ 3.conn.setAutoComit(false) 设置提交方式为手动提交

​ 4.conn.commit()提交事务

​ 5.出现异常,回滚 conn.rollback();

1.3 JDBC的脏读是什么?哪种数据库隔离级别能够防止脏读?

​ 当我们使用事务时,有可能会出现这样的情况,有一行数据刚更新,与此同 时另一个查询读到了这个刚更新的值。这样就导致了脏读,因为更新的数据还没 有进行持久化,更新这行数据的业务可能会进行回滚,这样这个数据就是无效的。 数据库的 TRANSACTIONREADCOMMITTED ,TRANSACTIONREPEATABL EREAD 和 TRANSACTION_SERIALIZABLE 隔离级别可以防止脏读。

2 网络通讯部分
2.1 TCP 与 UDP 的区别?

​ UDP:

​ a.是面向无连接,将数据及源的封装成数据包中,不需要建立连接

​ b.每个数据包的大小限制在64k内

​ c.因无连接,是不可靠协议

​ d.不需要建立连接,速度快

​ TCP:

​ a.建立连接,形成传输数据的通道

​ b.在连接中进行大数据量传输,以字节流方式

​ c.通过三次握手完成连接,是可靠协议

​ d 必须建立连接效率会稍低.聊天.网络视频会议就是UDP

2.2 说一下什么是Http协议?

​ 客户端和 服务器端之间数据传输的格式规范,格式简称为“超文本传输协 议”。是一个基于请求与响应模式的.无状态的.应用层的协议,基于TCP的连接 方式

2.3 get与post请求区别?

区别1:

get重点在从服务器上获取资源,post重点在向服务器发送数据;

区别2:

get传输数据是通过URL请求,以field(字段)= value的形式,置于URL 后,并用"?"连接,多个请求数据间用"&"连接,如http://127.0.0.1/Test/LogI n.action?name=admin&password=admin,这个过程用户是可见的; post传输数据通过Http的post机制,将字段与对应值封存在请求实体中 发送给服务器,这个过程对用户是不可见的;

区别3:

Get传输的数据量小,因为受URL长度限制,但效率较高; Post可以传输大量数据,所以上传文件时只能用Post方式;

区别4:

Get是不安全的,因为URL是可见的,可能会泄露私密信息,如密码等; Post较get安全性较高; 区别5: get方式只能支持ASCII字符,向服务器传的中文字符可能会乱码。 post支持标准字符集,可以正确传递中文字符

  1. 3 http中重定向和请求转发的区别?

    本质区别:转发是服务器行为,重定向是客户端行为。

    重定向特点:两次请求,浏览器地址发生变化,可以访问自己 web 之外的 资源,传输的数据会丢失。

    请求转发特点:一次请求,浏览器地址不变,访问的是自己本身的 web 资 源,传输的数据不会丢失

  2. 4 Cookie 和 Session

    Cookie 是 web 服务器发送给浏览器的一块信息,浏览器会在本地一个文 件中给每个 web 服务器存储 cookie。以后浏览器再给特定的 web 服务器发 送请求时,同时会发送所有为该服务器存储的 cookie。

    Session 是存储在 web 服务器端的一块信息。session 对象存储特定用户 会话所需的属性及配置信息。当用户在应用程序的 Web 页之间跳转时,存储 在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。

    Cookie 和 session 的不同点:

     	1.无论客户端做怎样的设置,session 都能够正常工作。当客户端禁用 cookie 时将无法使用 cookie。
    
     	2.在存储的数据量方面:session 能够存储任意的 java 对象,cookie 只 能存储 String 类型的对象。
    
  3. 5 Servlet的执行流程
     	Servlet的执行流程也就是servlet的生命周期,当服务器启动的时候生 命周期开始,然后过init()《启动顺序根据web.xml里的startup-on-load来确定加载顺序》方法初始化servlet,再根据不同请求调用doGet或doPost方 法,最后再通过destroy()方法进行销毁。 
    
  4. 6 Jsp和Servlet的区别

    ​ 你可以将JSP当做一个可扩充的HTML来对待。 虽然在本质上JSP文件会被服务器自动翻译为相应的Servlet来执行。 可以说Servlet是面向Java程序员而JSP是面向HTML程序员的,除此之 外两者功能完全等价

2.7 JSP九大内置对象

pageContext :只对当前 jsp 页面有效,里面封装了基本的 request 和 session的对象

Request :对当前请求进行封装

Session :浏览器会话对象,浏览器范围内有效

Application :应用程序对象,对整个web工程都有效

Out :页面打印对象,在jsp页面打印字符串 Response :返回服务器端信息给用户

Config :单个servlet的配置对象,相当于servletConfig对象

Page :当前页面对象,也就是this

Exception :错误页面的exception对象,如果指定的是错误页面,这个就 是异常对象

2.8 JSP的三大指令

​ Forward:执行页面跳转,将请求的处理转发到另一个页面

  Param :用于传递参数 

​ Include :用于动态引入一个jsp页面

​ Plugin :用于下载javaBean或applet到客户端执行

​ useBean :使用javaBean

​ setProperty :修改javaBean实例的属性值

​ getProperty :获取javaBean实例的属性值

2.9 谈谈你对 Ajax 的认识?

​ Ajax 是一种创建交互式网页应用的的网页开发技术;“Asynchronous JavaScript and XML”的缩写。

2.10 Ajax创建的过程?

​ 1.创建 XMLHttpRequest 对象,也就是创建一个异步调用对象

​ 2.创建一个新的 HTTP 请求,并指定该 HTTP 请求的方法、URL 及验证信 息 ​ 3.设置响应 HTTP 请求状态变化的函数

​ 4.发送 HTTP 请求

​ 5.获取异步调用返回的数据

​ 6.使用 JavaScript 和 DOM 实现局部刷新

2.11 阐述一下异步加载 JS

​ 1.异步加载的方案: 动态插入 script 标签

​ 2.通过 ajax 去获取 js 代码,然后通过 eval 执行

​ 3.script 标签上添加 defer 或者 async 属性

​ 4.创建并插入 iframe,让它异步执行 js

2.12 ajax 请求时,如何解释 json 数据

​ 使用 eval() 或者 JSON.parse() 鉴于安全性考虑,推荐使用 JSON.parse() 更靠谱,对数据的安全性更好.

2.13 Ajax 提交请求 默认是 异步还是同步,怎么改成同步

​ 控制 ajax 请求参数 async 属性的值可以切换成同步请求或异步请求。 同步请求:(false)同步请求即是当前发出请求后,浏览器什么都不能做,必 须得等到请求完成返回数据之后,才会执行后续的代码,相当于是排队,前一个 人办理完自己的事务,下一个人才能接着办。也就是说,JS 代码加载到当前 AJAX 的时候会把页面里所有的代码停止加载,页面处于一个假死状态,当这个 AJAX 执行完毕后才会继续运行其他代码页面解除假死状态。 异步请求:(true) 异步请求就当发出请求的同时,浏览器可以继续做任何 事,Ajax 发送请求并不会影响页面的加载与用户的操作,相当于是在两条线上, 各走各的,互不影响。

例子: 
$.ajax({ 
url:"url", 
type:"post", 
async:false, 
success:function(){代码}});
2.14 如何解决 ajax 跨域问题

​ 跨域问题来源于 JavaScript 的"同源策略",即只有 协议+主机名+端口号 (如存在)相同,则允许相互访问。也就是说 JavaScript 只能访问和操作自己域 下的资源,不能访问和操作其他域下的资源。跨域问题是针对 JS 和 ajax 的, html 本身没有跨域问题

跨域问题解决方案

1.响应头添加 Header 允许访问 跨域资源共享(CORS)Cross-Origin Resource Sharing 这个跨域访问的解决方案的安全基础是基于"JavaScript 无法控制该 HTTP 头"它需要通过目标域返回的 HTTP 头来授权是否允许跨域访问 具体如下: response.addHeader(‘Access-Control-Allow-Origin:*’);//允许所有来 源访问 response.addHeader(‘Access-Control-Allow-Method:POST,GET’);// 允许访问的方式

2、jsonp (只支持 get 请求不支持 post 请求) 用法:

①dataType 改为 jsonp

②jsonp : "jsonpCallback"(发送到后端实际例子: a.a.com/a/FromServl… Queryxxx)

③后端获取 get 请求中的 jsonpCallback ④构造回调结构

3、httpClient 内部转发 实现原理例子:若想在 B 站点中通过 Ajax 访问 A 站点获取结果,固然 有 ajax 跨域问题,但在 B 站点中访问 B 站点获取结果,不存在跨域问题, 这种方式实际上是在 B 站点中 ajax 请求访问 B 站点的 HttpClient,再通过 HttpClient 转发请求获取 A 站点的数据结果。但这种方式产生了两次请求, 效率低,但内部请求,抓包工具无法分析,安全 4、使用接口网关——nginx、springcloud zuul (互联网公司常规解决方案)

2.15 Ajax 的优势

​ 通过异步模式,提升了用户体验。 优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占 用。 Ajax 引擎在客户端运行,承担了一部分本来由服务器承担的工作,从而减 少了大用户量下的服务器负载。

2.16 请介绍下 Jsonp 原理

​ jsonp 的最基本的原理是:动态添加一个