【1】简述http协议?
超文本传输协议(Hyper Text Transfer Protolcol,Http)是一个简单的请求-响应协议,它通常运行在TCP智商,属于应用层协议。http协议由两部分组成,一部分是请求协议,一部分是响应协议。其中请求协议包含:请求行、请求头、请求体。响应协议包含:响应行、响应头、响应体。http路径规范如下:例如http://www.baidu.com/item/item.html?id=1;第一部分http://代表采用协议;第二部分www.baidu.com代表域名也就是ip和端口部分;第三部分/item/item.html资源路径;第四部分?id=1 ?是分隔符 id=1是向服务器提交的数据,也称为提交参数。
【2】简述B/S系统和C/S系统
B/S Browser/Server浏览器与服务器 网站;C/S Client/Server客户端与服务器 王者荣耀
【3】请说明什么是静态资源?什么是动态资源?
静态资源:提供固定不变的数据html css js图片 多媒体;动态资源:在Java中指的是servlet和jsp。
【4】请说一下Servlet的三大组件是什么?
servlet、过滤器、监听器。
Servlet:处理浏览器与服务器的请求与响应
过滤器(Filter):对Request请求起到过滤的作用,作用在Servlet之前,如果配置为/*可以对所有的资源访问(servlet、js/css静态资源等等)进行过滤处理。
监听器(Listener):实现了javax.servlet.ServletContext.listener接口的服务器端组件,它随Web应用的启动而启动,只初始化一次,然后会一直运行监视,随Web应用的停止而销毁
作用一:做一些初始化工作,web应用中spring容器启动ContextyLoaderListener
作用二:监听web中的特定事件,比如HttpSession,ServletRequest的创建和销毁;变量的创建、销毁和修改等。可以在某些动作前后端增加处理,实时监控,比如统计在线人数,利用HttpSessionListener等。
【5】Servlet生命周期
- 执行Servlet的构造方法。
- 执行init()方法
- 当接收到浏览器相应请求时执行service()方法
- 服务器关闭时执行destory()方法
【6】请简述Get请求与Post请求
只要浏览器端没有指定post请求,默认都是get请求,浏览器端可以通过form表单指定post请求方式。
- get请求与post请求区别如下:
- get请求的请求参数在请求头,post请求请求参数在请求体
- get请求可以被缓存,post请求不能被缓存
- get请求数据时2048个字符,post请求数据无限制
- get请求只能提交字符数据,post请求可以提交字符和字节数据
【7】请简述请求转发与重定向的区别
请求转发是指一个Servlet跳转到另一个Servlet或者jsp的过程;请求转发具有以下特点:
- 请求转发服务器内部跳转,不是浏览器端跳转,访问前后网址不变
- 所以转发前后的request作用域不变
- 转发前后的request属性数据共享
- 请求转发代码req.getRequestDispatcher("服务器端访问路径").forward(req,resp);
- 转发前后保证提交方式一致
重定向是指服务器端或者客户端跳转到客户端过程;重定向的本质是结束本次访问过程,跳转到客户端为下一次访问做准备。重定向特点如下:
- 是浏览器端跳转,网址改变。并且开启下一个请求。
- 本质上和a标签,form表单、location.href这些重定向没有区别
- Request对象数据不在共享。
- 可以通过resp.sendRedirect("index.html")代码完成重定向。
【8】说一下Servlet的三大域对象
request、session、ServletContext;request作用域是一次请求范围内,session是一次会话范围内,ServletContext整个上下文范围内。
【9】说一下会话技术
会话技术指的是cookie技术与session技术。cookie是浏览器端缓存技术,可以保存一小段文本到浏览器中,session是服务器技术,它的作用范围一个浏览器访问服务器的全过程,服务器为每一个客户端在服务端都保存一个session对象来记录客户端信息。而来浏览器端每次请求都会携带cookie数据到服务器端,其中cookie就记录自己的session的id值,用于告诉服务器自己的身份,而这个cookie也是服务器端创建session颁发给浏览器端的。
【10】聊一下websocket技术
Http协议是一种无状态、无连接的、单向的应用协议。它采用了请求/响应模型。通信请求只能由客户端发起,服务器对请求作出响应处理。
Http通信模型有一个弊端:HTTP协议无法实现服务器主动向客户端发起消息。只能通过ajax循环发送请求解决聊天类通讯问题,这对服务的性能消耗非常大。websocket从根本上解决了问题
websocket是一种基于NIO实现的网络通信协议,webservlet是HTML5开始提供的一种在单个TCP连接上进行的全双工通讯协议:websocket是一种异步的消息通信技术。我们可以通过websocket完成聊天功能。
【11】说一下git的常用操作命令
本地库的命令有:
- git init初始化
- git add添加暂存区
- git commit 提交本地库
分支命令:
- git branch 查看分支
- git branch 分支名 创建分支
- git checkout 分支名 切换分支
- git merge 分支名 合并分支
远程库命令:
- git remote add 添加远程库
- git remote 查看远程库
- git push 推送远程库
- git pull 远程库拉取到本地
- git clone 克隆远程库到本地
【12】说一下linux的常用操作命令
- cd 切换目录
- mkdir 目录名 创建目录
- ls 查看目录
- find 搜索目录
- mv 修改剪切目录
- cp -r 递归拷贝目录
- rm -r 强制删除文件和目录
- touch 创建文件
- cat/more/less/tail查看文件
- vim 文件 修改文件内容
- tar -zcvf 打包压缩
- tar -xvf 解压缩包
- pwd 显示当前位置
- | 管道命令
- ps -ef 查看进程
- kill -9 进程id 杀死进程
- ip add 查看网卡信息
- netstat -an 查看端口信息
【13】说一下maven的依赖范围
maven的依赖范围包含:compile(默认的依赖范围,在编译、测试、运行三种classpath都是有效的)、runtime(运行时的依赖范围,对测试和运行的classpath有效)、test(只对测试的classpath有效)、system(依赖范围与compile完全一致,区别在于需要使用systempath绑定本地的系统磁盘路径)、provided(对编译和测试的classpath是有效的,在运行时无效;例如servlet-api,在tomcat中是存在,只需要用来进行编译或测试,那么就需要设置为provided)
【14】说一下maven的依赖传递
当项目中出现多个相同名,不同版本号的传递性依赖时,maven采用的原则有两个:
依赖路径短者优先
例如:一个项目依赖于A和B,A依赖于C,C依赖于D(1.0),而B依赖于D(1.1),此时的依赖依赖路径为:
| --> A -->C(1.0)
| --> B -->C(1.1)
此时的依赖路径长度相同,故在pom文件中生命哪一个依赖,会优先引入其传递的依赖
【15】说一下maven的生命周期
Maven中有三种标准的生命周期:
clean:应用中目标目录中文件的清理周期
default:应用从源代码构建成可执行的构建的周期
site:项目站点文档创建的周期
三个生命周期是相互独立,并且每个周期中包含很多的阶段,每个阶段的现实都是由插件完成的。
其中最常用的default默认的生命周期,它包含compile(编译)、test(测试)、package(打包)install(安装)、deploy(部署)等阶段
【16】简单描述一下nginx服务器
Nginx是高性能的HTTP和反向代理的服务器,处理高并发能力是十分强大的,能经受高负载的考验,有报告表明能支持50,000个并发连接数。nginx服务器主要包含:反向代理、负载均衡、动静分离等技术。