【此系列优先解决自己经历的面试题】

2018.11.16 面试题一:你如何获取浏览器URL中查询字符串中的参数?

题目代码:

  测试地址为

 https://www.sogou.com/tx?query=javascript&ie=utf8&_ast=1542338688&_asf=null&w=01029901&hdq=sogou-clse-f507783927f2ec27&duppid=1&cid=&cid=&s_from=result_up&sut=3994&sst0=1542345989626&lkt=0%2C0%2C0&sugsuv=00B66944761A10BC5B28AFF86BBCB412&sugtime=1542345989626

考点分析:

location对象

字符串转对象格式

 getSearch(location.search.substring(1))
function getSearch(str){
str = str || undefined;
let obj = {};
if(str){//没有查询字符串返回空数组
let arr = str.split('&');
arr.forEach((el)=>{
let item = el.split('=')
obj[item[0]] = item[1];
})
console.log(obj)
}
return obj;
}

解决思路:

1、location对象的search属性拿到url中的查询字符串。传到我们提前封装好的getSearch数组中(或者这一步可以也封装到函数中,但那样函数就只能获取location的查询字符串了,不方便以后的扩展。所以将获取字符串这一步提了出来)。

substring(1)是为了删掉拿到的字符串中,第一位的'?'字符。

2、getSearch函数思路

先利用“&”关键字将字符串分割成包含所有键值对字符串的数组。

然后遍历数组,利用“=”关键字将数组的每一项再进行分割成新的多个数组。

每个数组的第0项作为对象的键,第1项作为数组的值。即可。

解决方案s:

见上图和getSearch()函数

 

2018.11.17 面试题二:从输入url到浏览器中显示页面,中间发生了什么?

百度是个好东西,哈哈哈哈哈。。。

看完这些后我总结的篇幅过长,已另开新土地整理。请跳转至【面试题 - 从输入url到浏览器中显示页面,中间发生了什么?

2018.11.18 面试题三:get 和 post 的区别有哪些?

粗略总结如下:

get和post的区别是什么

作用:

  get从服务器上获取数据

  post向服务器上传输数据

方式:

  get是把参数数据队列加到提交表单的ACTION属性说指的URL中。值和表单内各个字段一一对应,在url中能够看到。简而言之就是get将传输信息以key=value的方式拼接在url的后边进行传输。可以在url中明文查看传输数据

  post方法通过http的post机制,将表单内的各个字段与其内容放置在html header内,一起传送到表单的ACTION所执行的url地址。除非专业人时用户是看不到的。简而言之就是post将数据以key:value的对象形式在http header的请求头中一起传送。

安全

  get低

  post高

缓存【

  get请求类似于查找过程,用户获取数据,可以不用每次都与数据库链接,所以可以使用缓存。

  post做的多是修改和删除的工作,所以必须与数据库交互,所以不能使用缓存。

大小

  get传送数据量不能大于2kb。但是这个长度限制不是http协议规定的,get的最大长度是因为浏览器和web服务器限制url的长度导致的。而因为不同的web服务器和浏览器对于url长度的限制不一样。所以对于get的限制也就不一。

  post传送数据量lls4中最大量为80kb,lls5中为100kb。默认为不受限制

服务端处理方式

  服务端用Rquest.QueryString获取get方式变量的值

  post方式提交的数据,服务端用Request.Form获取提交的数据

最新文章

  1. web学习之开发环境的搭建
  2. 如何自适应网页的协议(http/https/……)
  3. Hibernate 缓存机制
  4. [LeetCode]题解(python):102 Binary Tree Level Order Traversal
  5. quartz集群调度机制调研及源码分析---转载
  6. java se 6在solaris的可观察性特征分析
  7. mysql 监控长事务
  8. uva 482 - Permutation Arrays
  9. Vlc基础数据结构记录
  10. 转 EXPDP ORA-39095 ORA-3909 错误
  11. CentOS7安装配置vncserver
  12. Scala入门系列(十):函数式编程之集合操作
  13. [题解]邮递员寄信(luoguP1629)
  14. 爬虫系列二(数据清洗--->xpath解析数据)
  15. raid 搭建
  16. CSS控制字体在一行内显示不换行
  17. 理解Spring定时任务的fixedRate和fixedDelay
  18. POJ 1797 Heavy Transportation(最短路&Dijkstra变体)题解
  19. Win10 Notebook
  20. SpringMVC 的 切面

热门文章

  1. Android Studio下添加assets目录
  2. 使用SpringBoot Admin监控SpringCloud微服务
  3. Microsoft/Git-Credential-Manager-for-Mac-and-Linux
  4. oracle本地编译问题
  5. Java日志框架(Commons-logging,SLF4j,Log4j,Logback)
  6. HTTP Status 500 - Unable to create directory
  7. 专访图书作者祁宇:C++11让程序更简洁、更现代、更强大
  8. 【九天教您南方cass 9.1】01 安装Cad和Cass9.1
  9. java中的数据加密2 对称加密
  10. Spring Security 认证流程