面试准备:计算机网络常见面试题
文章目录
- 1. jsp 和 servlet 有什么区别?*
- 2.session 和 cookie 有什么区别?
- 3.如果客户端禁止 cookie 能实现 session 还能用吗?*
- 4.什么是SQL注入?如何避免 ?
- 5.什么是XSS攻击?如何避免?
- 6.什么是 CSRF 攻击?如何避免?
- 7. 限流算法有哪些?
- 8.http 响应码有哪些?
- 9.说明 forward 和redirect的区别?*
- 10.简述 tcp 和 udp的区别?
- 11.tcp 为什么要三次握手,两次不行吗?为什么?
- 12.为什么连接的时候是三次握手,关闭的时候却是四次挥手?(或者为什么是四次而不是三次?)
- 13.OSI七层模型?TCP/IP四层模型?
- 14.get 和 post 请求有哪些区别?
- 15.什么是跨域?如何实现跨域?*
- 16.什么是Http无状态协议?怎么解决Http无状态协议?
- 17.Http协议中有哪些请求方式?*
- 18.Http请求的流程?
- 19.域名解析过程?
- 20.Http与Https区别?
- 21.TCP 协议如何保证可靠传输?*
- 22.HTTP长连接,短连接?
- 23.HTTP 1.0和HTTP 1.1的主要区别是什么?Http1.1和Http2.0的主要区别是什么?
- 24. URI和URL的区别是什么?
- 25. 什么是JWT?*
- 26. 什么是OAuth 2.0?*
- 27. 单点登陆SSO如何实现?*
- 28. RPC原理是什么?既有 HTTP ,为啥用 RPC 进行服务调用?*
- 29. HTTP的Keep-Alive和TCP的Keep-Alive有什么区别?
- 30. 理解Thrift和Protobuf*
- 31. 什么是SYN Flood攻击和ACK Flood攻击?*
- 32. 拥塞控制算法?
- 33. 滑动窗口协议?
- 补充:流量控制与拥塞控制的主要区别?
- 34. ipv4和ipv6是什么?
- 35. 为什么要划分子网,子网掩码有什么作用?
- 36. 列举TCP和IP报文头部?*
- 37. 路由选择协议 RIP、OSPF、BGP ?*
- 38. DNS劫持概念?
- 39. 为什么要进行URL编码?*
- 40. 什么是无效链接?
- 41. HTTPS协商过程?
- 42. 什么是中间人攻击?如何避免?
1. jsp 和 servlet 有什么区别?*
JSP是为了简化Servlet的工作出现的替代品,JSP侧重于视图,Servlet更侧重于控制逻辑。
- Servlet在Java代码中使用doGet(),doPost()中做相应的处理,通过HttpServletResponse对象动态输出HTML内容。
- JSP在静态HTML内容中嵌入Java代码,Java代码被动态执行后生成HTML内容。
本质上说,Tomcat访问任何的资源都是用了Servlet实现的!JSP也不例外!JSP本身就是一种Servlet,它 在第一次被访问的时候(先部署后编译) 会被编译为HttpJspPage类(该类是HttpServlet的一个子类)。
对于静态资源,Tomcat最后会交由一个叫做DefaultServlet的类来处理
对于Servlet ,Tomcat最后会交由一个叫做 InvokerServlet的类来处理
对于JSP,Tomcat最后会交由一个叫做JspServlet的类来处理
所以Tomcat又叫Servlet容器嘛,什么都交给Servlet来处理。
参考:Java架构直通车——DispatcherServlet详解
2.session 和 cookie 有什么区别?
- 存储位置不同,服务器压力不同。
cookie存储在客户端浏览器上,session存储在服务器上(sso session一般会存在redis上)。cookie不占用服务器资源,而对于并发高的项目,会产生十分多的session,耗费大量的内存。 - 有效期不同。
开发可以通过设置cookie的maxAge属性,达到使cookie长期有效的效果。
session依赖于名为JSESSIONID的cookie,而cookie JSESSIONID的过期时间默认为-1,只需关闭窗口该session就会失效,因而session不能达到长期有效的效果。 - 存储容量和方式不同。
单个cookie保存的数据<=4KB,一个站点最多保存20个Cookie。
对于session来说并没有上限,但出于对服务器端的性能考虑,session内不要存放过多的东西,并且设置session删除机制。 - 隐私策略不同
cookie对客户端是可见的,可以通过分析存放在本地的cookie或者拦截来进行cookie欺骗,所以它是不安全的。
session存储在服务器上,对客户端是透明对,不存在敏感信息泄漏的风险。
3.如果客户端禁止 cookie 能实现 session 还能用吗?*
一般默认情况下,在会话中,服务器存储 session 的 sessionid 是通过 cookie 存到浏览器里。
如果浏览器禁用了 cookie,浏览器请求服务器无法携带 sessionid,服务器无法识别请求中的用户身份,session失效。
request.getSession()
方法中在创建session的时候,同时也创建了一个cookie:new Cookie("JSESSIONID",session.getId())
。
但是,可以通过其他方法在禁用 cookie 的情况下,可以继续使用session。
- 通过url重写,把 sessionid 作为参数追加的原 url 中,后续的浏览器与服务器交互中携带 sessionid 参数。
4.什么是SQL注入?如何避免 ?
sql注入是通过将SQL代码注入到查询参数中,从而破坏SQL语句的结构,并且之后传递到sql服务器解析并执行的一种攻击手法。
比如:
select * from carousel where id = <?>
,问号中是要传入的值。
当要传入的值是1的时候:select * from carousel where id = 1
,没什么问题。
当传入如下:select * from carousel where id = -1 OR 1=1
,把数据库的结果全部都显示出来了。此时执行代码中id值带入了我们传参数的sql代码, 1=1 为真,OR 1=1便会查出表中所有的内容,达到攻击目的。
我们只需要知道数据库中的某一个用户的用户名,比如peter,在表单输入时,在用户名列输入 “peter’#”,密码随意输入,点击登陆后便会显示登陆成功,输出的sql语句为:
另外常用的SQL注入钥匙如链接所示。
所以,防止注入的方式有:
- 严格检查输入变量的类型和格式:比如使用正则表达式
- 过滤和转义特殊字符
- 使用PreparedStatement 预编译机制。
- 不能使用管理员身份连接数据库。
mybatis中的#和$的区别:
1、#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。
如:where username=#{username},如果传入的值是111,那么解析成sql时的值为where username=“111”, 如果传入的值是id,则解析成的sql为where username=“id”.
2、$将传入的数据直接显示生成在sql中。
如:where username=${username}
,如果传入的值是111,那么解析成sql时的值为where username=111;
如果传入的值是;drop table user;,
则解析成的sql为:select id, username, password, role from user where username=;drop table user;
3、#方式能够很大程度防止sql注入,$方式无法防止Sql注入。
5.什么是XSS攻击?如何避免?
XSS 攻击,即跨站脚本攻击(Cross Site Scripting),它是 web 程序中常见的漏洞。
原理:攻击者往 web 页面里插入恶意的 HTML 代码(Javascript、css、html 标签等),当用户浏览该页面时,嵌入其中的 HTML 代码会被执行,从而达到恶意攻击用户的目的。如盗取用户 cookie 执行一系列操作,破坏页面结构、重定向到其他网站等(DOM型XSS)。 又比如在用户输入的地方插入一段代码,导致后端服务器或者数据库被攻击(存储型、反射型XSS)。
比如:(还有其他类型的XSS攻击,参考XSS攻击
面试准备:计算机网络常见面试题相关推荐
- 【面试系列】计算机网络常见面试题(一)
[面试]计算机网络常见面试题
- 计算机网络常见面试题,一网打尽!
计算机网络常见面试题 一 OSI与TCP/IP各层的结构与功能,都有哪些协议? 学习计算机网络时我们一般采用折中的办法,也就是中和 OSI 和 TCP/IP 的优点,采用一种只有五层协议的体系结构,这 ...
- 算法面试必备-----数据分析常见面试题
算法面试必备-----数据分析常见面试题 算法面试必备-----数据分析常见面试题 1.统计学问题 问题:贝叶斯公式复述并解释应用场景 问题:朴素贝叶斯的理解 问题:参数估计 问题:极大似然估计 问题 ...
- 算法面试必备-----数据仓库常见面试题
算法面试必备-----数据仓库常见面试题 算法面试必备-----数据仓库常见面试题 问题:什么叫数据仓库? 问题:数据仓库建模 为什么需要数据仓库建模? 数据仓库建模方法? 1.ER模型 2.维度建模 ...
- SAS程序员面试经历及常见面试题
最近很多小伙伴都在看机会,我也分享一下最近的面试经历,并附上一些常见的面试题. 面试过程: 1.自我介绍,进行简要自我介绍 2.职业技能,会什么,简历上的实践经历 3.英语水平,简要介绍自己最喜欢学科 ...
- 操作系统和网络(一):计算机网络常见面试题
计算机网络常见面试题总结 1. OSI , TCP/IP ,五层协议的体系结构 OSI分层(7层) :物理层.数据链路层.网络层.传输层.会话层.表示层.应用层. TCP/IP分层(4层) ...
- [Java面试]六:常见面试题之设计模式
我的博客首页:http://blog.csdn.net/m0_37116405 我的GitHub首页:https://github.com/KissLouis 设计模式六大原则 开闭原则:对扩展开放, ...
- 【网络】计算机网络常见面试题 - 前端面试必备 - 吐血整理
文章目录 1. 参考模型 1. OSI 参考模型 七层 2. TCP/IP参考模型 四层 2. 在浏览器中输入网址之后执行 会发生什么? 3.URL和URI的区别? 4. 关于HTTP协议 4.1 为 ...
- 计算机考研复试计算机网络常见面试题
本文是我2021年考研时准备的复试面试题,现在拿出来给大家分享一下 觉得好的点个赞哦,毕竟当初我也是整理了好久,改了好几次版本呢 祝大家都上岸!!!! 计算机网络 目录 1.TCP三次握手建立连接 1 ...
- vue component created没有触发_面试!面试!面试!vue常见面试题。
"金三银四"的时候到了,一大批准备跳槽的程序员蠢蠢欲动,小编最近也在投简历,找工作.现在很多公司都要求vue.react.ng三大主流框架中的一两个.小编在此总结一下vue常见的面 ...
最新文章
- Linux下用 lsof 命令查找指定端口被哪个进程占用
- 判断整数小数_《除数是整数的小数除法》教学设计
- 访问其他程序中的数据(ContentResolver的CRUD操作)
- 字符串GZIP压缩解压
- Win7+Ubuntu双系统结构下,Ubuntu克隆至新硬盘,启动成功
- Saltstack的pillar组件(6)
- 干货!Redis集群工作原理解析
- python设计模式15-解释器模式
- Visual Studio [即时窗口] [命令窗口] (Immediate Window Command Window) 转
- Packet Tracer 思科模拟器入门教程 之九 路由器的基本配置
- JAVA版村庄哨塔种子_我的世界:5个稀有的地图种子,我在里面居然发现了圆形村庄!...
- Fabric.js 文档
- part3_模块五作业
- ceph---ceph osd DNE状态对集群的影响
- Email营销相关名词解释:PEM,UCE,Opt-in,Double Opt-In,Opt-out
- 【数字图像处理】二值图像行程编码
- 关于SVN:cleanup失败提示:failed to run the WC DB work queue associated with ‘E:XXX’
- css3复习P2(文本属性+列表属性+其他样式)
- python3.4勾股定理代码_用于解答算法题目的Python3代码框架
- 原生图片预览实现及由此引出的图片自适应宽高问题探索