http面试准备
从http的角度深入分析一次web请求:
1.在浏览器输入一个url地址如www.baidu.com
2.请求DNS把这个域名解析成对应的IP地址(DNS域名解析过程看上篇博客)
3.根据这个IP地址与默认端口80与远程服务器建立Socket连接,然后浏览器根据这个url组装成一个get类型的http请求头,通过outputStream.write发送到目标服务器,服务器等待inputStream.read将数据返回,最后断开这个连接
http本身的特点:
http采用无状态的短连接的通信方式。通常情况下,一次请求就完成了一次数据交互,通常也对应一个业务逻辑,然后这次通信连接就断开了。
采用这种方式主要是为了能够同时服务于更多的用户,因为当前互联网每天都会处理上亿的用户请求,不可能每个用户访问一次后就一直保持这个连接
引申:什么是http协议无状态协议?如何解决无状态协议?
无状态协议对于事务处理没有记忆能力。比如A发送一个http请求完成之后,在发送一次客户端不知道他还是A用户
解决:可以使用会话技术,如cookie,session,相当于一个通行证一样,第一次访问给A用户发送一个通行证,之后便知道是A用户了,再引申问你cookie的缺点
剩下的都是一些经典问题:
别人写的这两篇博客讲的比较详细
https://blog.csdn.net/zhangliangzi/article/details/51336564
https://juejin.im/post/5a8102e0f265da4e710f5910
1.常见的http方法有哪些?
2.get与post方法的区别?
3.常见的http状态码?
4.HTTP请求报文与响应报文的格式?
5.HTTP1.1版本新特性?
6.HTTP的缺点与HTTPS?
关于get请求与post请求:
网上查找到的与自己试验之后得到的结果一般是
1.get去服务器获取资源,参数在url地址栏后面,传输的数据量小,不同的浏览器对ur长度有限制,没有Post安全,只支持ASCII字符
2.post.....
上述是比较浅显的,看了有篇文章之后,别人做了深入了解,http是应用层协议,它还是基于ip/tcp协议的,get/post只是http发送数据的两种格式,get/post能做的事情都是一样的,你要给get带上request body,给post带上url参数,技术上是完全行的通的。这是一个行为规范,不按规范走让人觉得傻乎乎的。
get/post本质上就是TCP连接,并无差别。但是由于http的规定和浏览器\服务器的限制,导致在应用过程中体现的不同
真相是:他们之间的重大区别:详情参考原文:https://mp.weixin.qq.com/s?__biz=MzI3NzIzMzg3Mw==&mid=100000054&idx=1&sn=71f6c214f3833d9ca20b9f7dcd9d33e4#rd
GET产生一个TCP数据包;POST产生两个TCP数据包。
http面试准备的更多相关文章
- C++常见笔试面试要点以及常见问题
1. C++常见笔试面试要点: C++语言相关: (1) 虚函数(多态)的内部实现 (2) 智能指针用过哪些?shared_ptr和unique_ptr用的时候需要注意什么?shared_ptr的实现 ...
- [Java面经] 关于面试的二三事.
今天终于闲下来了, 那么也好总结下这几天面试的经历.四天的时间一共面了七家, 有一家是自己推迟了没有去.声明:如若转载请注明出处:http://www.cnblogs.com/wang-meng/p/ ...
- 在面试中忽然发现DateTime的一些...
今天说说我面试中碰到的一个小问题,在我问起DateTime为什么无法赋值NULL值,一般第一反应都认为它是值类型,不是引用类型,但随后我查阅了度娘自我学习到它是结构类型,那么随之而然就无法赋值NULL ...
- 2016年8月ios面试问题总结
1.app分发方式 所谓分发方式简单点讲就是你的app都可以通过哪些途径给用户使用. a:个人或者公司的开发者账号 可以上传appStore,用户通过appStore下载. b:企业账号:打包分发. ...
- 记2016腾讯 TST 校招面试经历,电面、笔试写代码、技术面、hr面,共5轮
(出处:http://www.cnblogs.com/linguanh/) 前序: 距离 2016 腾讯 TST 校招面试结束已经5天了,3月27日至今,目前还在等待消息.从投简历到两轮电面,再到被 ...
- Java集合专题总结(1):HashMap 和 HashTable 源码学习和面试总结
2017年的秋招彻底结束了,感觉Java上面的最常见的集合相关的问题就是hash--系列和一些常用并发集合和队列,堆等结合算法一起考察,不完全统计,本人经历:先后百度.唯品会.58同城.新浪微博.趣分 ...
- Android面试经验 -- 乐视
此次投的是三年经验的Android开发,最后反而因为自己的失误,没有准备充分而导致结果很悲剧,以此告诫自己千万不能疏忽大意. 面试过程 第一次去大公司面试,心里不是一般的激动和紧张,来到乐视大厦门口, ...
- Android面试一天一题(1Day)
写在前面 该博客思路源于在简书看到goeasyway博主写的Android面试一天一题系列,无copy之意,仅为让自己总结知识点,成长一点点.先感谢各位大神的无私分享~! 关于题目,大部分则出自And ...
- Java面试基础概念总结
面向对象软件开发的优点有哪些? 答:开发模块化,更易维护和修改:代码之间可以复用:增强代码的可靠性.灵活性和可理解性. 多态的定义? 答:多态是编程语言给不同的底层数据类型做相同的接口展示的一种能力. ...
- 【干货分享】前端面试知识点锦集04(Others篇)——附答案
四.Others部分 技术类 1.http状态码有哪些?分别代表是什么意思? (1).成功2×× 成功处理了请求的状态码.200 服务器已成功处理了请求并提供了请求的网页.204 服务器成功处理了请求 ...
随机推荐
- idea配github
下面步骤的三个前提条件:安装git 安装idea 注册github账号 步骤一.绑定我的github账号与我的计算机 绑定我的github账号与我的计算机之后,便能很方便地上传或者更新我的代码,这需要 ...
- 不一样的 SQL Server 日期格式化
不一样的 SQL Server 日期格式化 Intro 最近统计一些数据,需要按天/按小时/按分钟来统计,涉及到一些日期的格式化,网上看了一些文章大部分都是使用 CONVERT 来转换的,SQL Se ...
- ReactiveSwift源码解析(三) Signal代码的基本实现
上篇博客我们详细的聊了ReactiveSwift源码中的Bag容器,详情请参见<ReactiveSwift源码解析之Bag容器>.本篇博客我们就来聊一下信号量,也就是Signal的的几种状 ...
- notepad++ 快速运行PHP代码
notepad++ 运行PHP代码 1. 按下快捷键 F52. 将输入如下命令 cmd /k D:\xampp\php\php.exe "$(FULL_CURRENT_PATH)" ...
- Android框架式编程之RxJava(一):HelloWorld
Hello World 源码: import android.graphics.Bitmap; import android.graphics.BitmapFactory; import androi ...
- docker快速搭建几个常用的第三方服务
本次和大家分享的内容是使用docker快速搭建工作中常用的第三方的服务,对于有一些互联网背景的公司来说,以下几个服务都是很需要的:redis,rabbit,elasticsearch: 本篇涉及内容深 ...
- Python爬虫入门教程 42-100 爬取儿歌多多APP数据-手机APP爬虫部分
1. 儿歌多多APP简单分析 今天是手机APP数据爬取的第一篇案例博客,我找到了一个儿歌多多APP,没有加固,没有加壳,没有加密参数,对新手来说,比较友好,咱就拿它练练手,熟悉一下Fiddler和夜神 ...
- DotNetCore跨平台~Dapper的使用
回到目录 Dapper作为小型ORM的代表作品被我们应用到了dotnet core的项目中,下面将把自己在项目中使用dapper进行curd操作的过程写一下,后期可能会遇到一些问题,大叔也会在这个系列 ...
- 104 - kube-scheduler源码分析 - predicate整体流程
(注:从微信公众:CloudGeek复制过来,格式略微错乱,更好阅读体验请移步公众号,二维码在文末) 今天我们来跟一下predicates的整个过程:predicate这个词应该是“断言.断定”的意思 ...
- celery异步消息处理框架
Celery 1.什么是Clelery Celery是一个简单.灵活且可靠的,处理大量消息的分布式系统 专注于实时处理的异步任务队列 同时也支持任务调度 Celery架构 Celery的架构由三部分组 ...